安裝Linux後的遺留問題(轉)

subid發表於2007-08-15
安裝Linux後的遺留問題(轉)[@more@]一些Linux使用者經常詢問這樣的問題:Linux能相容XXX卡麼?其實,Linux是一個開放性的系統,只要透過Linux愛好者們的努力,Linux可以相容任何硬體。

一,音效卡

首先要知道音效卡的型別,或者是某種音效卡相容的。如果核心不能把這種音效卡檢測出來,那麼就需要安裝這
種音效卡的驅動模組,來安裝音效卡。
例如,市面上常見的音效卡Creative Vibra 128使用的驅動模組是es1371,Creative PCI 128使用的模組是
es1370等等。
redhatlinux中用sndconfig來設定音效卡,如果沒有某個模組,就需要重新編譯核心(編譯最新發布的linux
核心),如果還不行,只好用ALSA 音效驅動程式.

ALSA 音效驅動程式原本是寫來取代 Gravis UltraSound 卡的Linux核心驅動程式的. 當實證這取代得很成
功,它和OSS/Free 及OSS/Linux音效驅動程式相容(核心的驅動程式),但它有比OSS驅動程式更好的本身介面.

ALSA音效驅動程式可在找到。到發稿時最新版本為0.5.9d
ALSA 音效驅動程式是建為模組的.下面是ALSA支援的音效卡型別。


ALSA Supported SoundCards


Advanced Linux Sound Architecture - Supported SoundCards
==========================================================

ID: SoundCard chipset/type
SC: SoundCard name
IF: Supported interfaces (MIXER,PCM,SYNTH,SYNTH_MIDI,SEQ,OPL,MIDI,EMUL,HWDEP)
MA: Maintainer
CO: Coder

This file is maintained by Jaroslav Kysela .
Note: OPL -> Raw (native) OPL
Note: MIDI -> external MIDI port
Note: EMUL -> MIDI emulation
Note: SYNTH -> yeah, well ?
Note: SYNTH_MIDI -> internal synth that handles MIDI data
Note: SEQ -> kernel client for ALSA sequencer
Note: HWDEP -> various hardware-dependent interfaces/devices
=====

ID: AMD InterWave
SC: Gravis UltraSound Plug & Play
SC: Dynasonic 3-D
SC: STB Sound Rage 32
SC: UltraSound 32-Pro (STB)
SC: MED3210
IF: MIXER,PCM,MIDI,SYNTH
MA: Jaroslav Kysela

ID: Gravis UltraSound MAX
IF: MIXER,PCM,MIDI,SYNTH
MA: Jaroslav Kysela

ID: Gravis UltraSound Extreme
IF: MIXER,PCM,MIDI,SYNTH
MA: Jaroslav Kysela

ID: Gravis UltraSound Classic/ACE
IF: MIXER,PCM,SYNTH
MA: Jaroslav Kysela

ID: ESS AudioDrive ESx688
IF: MIXER,PCM,MIDI(1688)
MA: Jaroslav Kysela

ID: SoundBlaster 1.0/2.0/Pro
IF: MIXER (Pro only),PCM,MIDI
CO: Jaroslav Kysela
MA: Chris Butler

ID: SoundBlaster 16/AWE
IF: MIXER,PCM,MIDI
MA: Jaroslav Kysela

ID: Yamaha OPL3-SA2/SA3
IF: MIXER,PCM,MIDI
MA: Jaroslav Kysela

ID: OAK Mozart
IF: MIXER,PCM
CO: Jaroslav Kysela
MA: ???

ID: S3 SonicVibes PCI
SC: Schubert 32 PCI (PINE)
IF: MIXER,PCM,MIDI
MA: Jaroslav Kysela

ID: Ensoniq AudioPCI (ES1370,ES1371)
SC: SoundBlaster PCI 64
SC: SoundBlaster PCI 128
IF: MIXER,PCM,MIDI
MA: Jaroslav Kysela

ID: Cirrus Logic / Crystal Semiconductors CS4232/CS4232A
IF: MIXER,PCM,MIDI
MA: Jaroslav Kysela

ID: Cirrus Logic / Crystal Semiconductors CS4235/CS4236/CS4236B/CS4237B/CS4238B/CS4239
SC: Turtle Beach Malibu
IF: MIXER,PCM,MIDI
MA: Jaroslav Kysela

ID: Cirrus Logic / Crystal Semiconductors CS4610/CS4612/CS4615/CS4280
IF: MIXER,PCM
MA: Jaroslav Kysela

ID: ESS Solo-1 ES1938
IF: MIXER,PCM
MA: Jaromir Koutek

ID: ESS ES18XX
IF: MIXER,PCM,MIDI
MA: Abramo Bagnara

ID: OPTi 82C9xx
SC: Audio 16 Pro EPC-SOUN9301 (82C930 based)
SC: ExpertColor MED-3931 v2.0 (82C931 based)
SC: ExpertMedia Sound 16 MED-1600 (82C928 based - AD1848)
SC: Mozart S601206-G (OTI601 based - CS4231)
SC: Sound Player S-928 (82C928 based - AD1848)
IF: MIXER,PCM,OPL,MIDI
MA: Massimo Piccioni

ID: Trident 4DWave DX/NX
SC: Best Union Miss Melody 4DWave PCI
SC: HIS 4DWave PCI
SC: Warpspeed ONSpeed 4DWave PCI
SC: AzTech PCI 64-Q3D
SC: Addonics SV 750
SC: CHIC True Sound 4Dwave
SC: Shark Predator4D-PCI
SC: Jaton SonicWave 4D
SC: Hoontech SoundTrack Digital 4DWave NX
IF: MIXER,PCM,MIDI
MA: Jaroslav Kysela

ID: ForteMedia FM801
SC: DT-0398
IF: MIXER,PCM,MIDI
MA: perex@suse.cz

ID: SGI Indy (HAL2)
IF: PCM
MA: Ulf Carlsson

ID: Turtle Beach WaveFront
SC: Tropez Plus (Tropez+)
SC: Tropez
SC: Maui (models with CS4232; others use OPTi 16 which is not handled)
IF: MIXER,PCM,MIDI,OPL,SYNTH_MIDI,HWDEP
CO: pbd@op.net
MA: pbd@op.net

ID: C-Media CMI8330
IF: MIXER,PCM
MA: George Talusan

ID: C-Media CMI8338/8738
IF: MIXER,PCM,MIDI
MA: Takashi Iwai

ID: Avance Logic ALS100/ALS120
IF: MIXER,PCM,MIDI
MA: Massimo Piccioni

ID: Diamond Technologies DT-0197H
IF: MIXER,PCM,MIDI
MA: Massimo Piccioni

ID: Aztech Sound Galaxy
IF: MIXER,PCM,MIDI
MA: Christopher Butler

ID: MOTU MidiTimePiece AV multiport MIDI interface
IF: MIDI
MA: Michael T. Mayers

ID: EMU10K1
SC: Sound Blaster Live!
SC: Sound Blaster PCI 512
SC: E-mu APS
IF: MIXER,PCM,MIDI,SYNTH_MIDI
MA: Jaroslav Kysela

ID: RME Digi9652 (Hammerfall, Hammerfall light)
IF: PCM
MA: Paul Barton-Davis

ID: Intel i810/i820/i830/i840/MX440
IF: MIXER,PCM
MA: Jaroslav Kysela

ID: ESS Maestro 1/2/2E
IF: MIXER,PCM
MA: Matze Braun

ID: VIA 82C686A (South Bridge)
IF: MIXER,PCM,MIDI
MA: Jaroslav Kysela


請注意如果您想使用 ALSA 驅動程式, 那麼您不應該先載入任何其它音效驅動程式. 如果您的核心中內含音效驅動程式, 那麼有必要重編譯核心. 如果您正在使用舊的 sound.o 模組, 您必須解除它. 如果您使用 kerneld,這可能就是要您刪去 /lib/modules//misc 目錄下的 sound.o. 新的 RedHat 系統的音效驅動程式組織方式不太一樣, 要載入好幾個模組, 這種情況您需要解除全部的模組.

2.2 版核心對音效則採用了新的方式. 您應該要包含音效的支援! 是的, 沒有說錯, 您在核心中加入了對音效的支援, 但沒有包含任何音效卡的部份. 然後重編譯及安裝核心, 接著編譯 ALSA驅動程式.

編譯 ALSA驅動程式的步驟:

tar zxvf alsa-driver-0.3.5.9d.tar.gz
tar zxvf alsa-lib-0.3.5.9d.tar.gz
tar zxvf alsa-utils-0.3.5.9d.tar.gz

cd alsa-driver-0.3.5.9d
./configure
make
make install

cd ../alas-lib-0.3.5.9d
./configure
make
make install

cd ../alas-utils-0.3.5.9d
./configure
make
make install

驅動程式目錄下有個命令稿(script)可以把 ALSA 的音效裝置檔安裝進 /dev 目錄. 在驅動程式目錄下打入

./snddevices

有兩種使用 ALSA 音效模組的方法:

a,用 modprobe 安插驅動程式
如果您有 PnP 音效卡, 您首先要設定正確的(或至少是已知的) IO/IRQ/DMA.
舉兩個例子:

Gravis UltraSound (GUS) 及相容卡:

/sbin/modprobe snd-gusclassic

對完全 16 位元的 SoundBlaster 卡 (SoundBlaster 16 (PnP), SoundBlaster AWE 32 (PnP), Sound
BlasterAWE 64 (PnP):

/sbin/modprobe snd-sb16


b,使用 kerneld 來載入

kerneld 是個在需要時插入模組, 並在不再使用時卸除它們的服務程式(daemon).
編輯 /etc/conf.modules
執行 modprobe snd-card, 其中 snd-card 是您的音效卡名稱。

這是 Gravis UltraSound PnP 音效卡的 /etc/conf.modules:

alias char-major-14 snd
alias snd-minor-oss-0 snd-interwave
alias snd-minor-oss-3 snd-pcm1-oss
alias snd-minor-oss-4 snd-pcm1-oss
alias snd-minor-oss-5 snd-pcm1-oss
alias snd-minor-oss-12 snd-pcm1-oss
alias snd-card-0 snd-interwave
options snd snd_major=14 snd_cards_limit=1
options snd-interwave snd_index=1 snd_id="guspnp" snd_port=0x220 snd_irq=5
snd_dma1=5 snd_dma2=6

二,網路卡


對網路卡的支援取決於網路卡的晶片型別,跟網路卡的生產廠家無關。大多數的網路卡都會被XLinux自動檢測出來。
有些網路卡的型別在Linux中沒有driver,但是隻要知道它跟那一款網路卡相容,也可以使用它。

Linux可以有兩種方式支援網路卡,一種是在核心中直接支援,另一種是載入模組支援。在linux啟動的過程
中,檢視是否有這樣類似的一行:
Eth0: NE2000 Card found at 0x300 using IRQ 05
如果有,那麼您的網路卡已經被Linux識別了,然後使用netconfig程式就可以完成網路設定工作(IP地址、
閘道器、網路掩碼等)。如果沒有發現這一行,但是知道網路卡與某一型別網路卡相容,也可以使用模組驅動這塊網路卡,
方法是:修改/etc/rc.d/rc.modules檔案,加入這樣一行:

/sbin/modprobe ne (這裡應該設定成正確的相容型別)

這樣在每次系統啟動的時候,都會自動的載入網路卡驅動模組,使用者的網路卡就可以正常工作了。
如果上面的方法還不行,那麼就要重新編譯核心了,關於編譯核心的方法這裡不詳細介紹了,可以參看相關的技術文件。重要的是,要在編譯核心的時候,要選中相關的選項。

問題一:如何才能讓Linux執行兩塊乙太網卡?

這個問題的答案取決於驅動程式是否被用做可載入的模組或者直接編譯進 了核心。大多數Linux發行版本現在都使用模組化的驅動程式。這樣就不用 發行許多核心,每種核心設定一個不同的內建驅動程式。使用一個單
一的 基本核心,如果特定使用者系統需要,一旦系統啟動,就可以從驅動程式模 塊檔案(通常存放在/lib/modules/)
中載入個別的驅動程式。

方法一,把驅動程式作為模組使用: 對於PCI驅動程式,模組通常會自動檢測該品牌型別所有安裝的網路卡。
但對於ISA網路卡,探尋一個網路卡是不安全的操作,因此你需要提供網路卡的I/O地址以便模組知道去哪裡查詢。這一資訊
儲存在檔案 /etc/conf.modules中。

假設使用者有一塊在0x350的3c503網路卡和一塊在 0x280的SMC Elite16 (wd8013)網路卡。則應該這樣:

alias eth0 wd
alias eth1 3c503
options wd io=0x280
options 3c503 io=0x350

對於PCI網路卡,只要用alias語句把ethN介面和相應的驅動程式 名聯絡起來就行了,因為PCI網路卡的I/O地址
可以被安全地檢測到。

可用的模組一般存放在/lib/modules/`uname -r`/net下,這裡 uname -r命令可以得到核心的版本(比如
2.0.34)。你可以在這裡看 看哪一個驅動程式適合你的網路卡。一旦你在conf.modules檔案裡進行了正確的設定,就
可以用下面的方法檢查一下:

modprobe ethN
dmesg | tail

這裡“N”是你要檢測的乙太網卡的介面號。

方法二,使用編譯進核心的驅動程式: 如果你需要的驅動程式編譯進了核心,那麼處理多塊乙太網卡的介面已經存在了。但預設情況下只自動檢測一塊乙太網卡。這樣就避免了啟動 時檢測敏感網路卡可能引起的麻煩。

(注意:在2.1.x之後的核心中,啟動檢測被分為安全和不安全的兩類,所 有安全的檢測(如對PCI和EISA網路卡)可以自動找到所有相關的網路卡。在至少有一塊ISA網路卡的多網路卡系統中還需要進行以下的處理。)

如何啟動對第二塊(或第三塊等等)網路卡的自動檢測。最簡單的方法是向核心傳遞啟動引數,由LILO完成。
使用ether=0,0,eth1這 樣簡單的啟動引數就可以完成對第二塊網路卡的檢測。此時按照啟動時找到的網路卡順序分配eth0和eth1。假如你想讓0x300處的網路卡為eth0,而0x280處的網路卡為eth1,那麼可以使用

LILO: linux ether=5,0x300,eth0 ether=15,0x280,eth1

問題二:Linux支援吉位元乙太網嗎?

是的,目前至少已經有了兩個驅動程式。在v2.0和v2.2核心裡有一個Packet Engines G-NIC PCI吉位元乙太網介面卡的驅動程式。驅動程式的更多細節、 支援和更新可訪問:



v2.2核心提供的acenic.c驅動程式可用於Alteon的AceNIC吉位元以太 網路卡和其它如3Com的3c985一類的基於Tigon的網路卡。這個驅動程式還可以 用於NetGear的GA620,但還需要證實。

問題三:非同步傳輸模式(ATM)支援如何?

Werner Almesberger在進行Linux的ATM的支援工作。他使用的是Efficient Networks的ENI155p板( Efficient Networks)和
Zeitnet的ZN1221板 ( Zeitnet)。

Werner說ENI155p的驅動程式已經很穩定了,而ZN1221的驅動程式還沒有完成。


三,顯示卡


顯示卡的配置正確與否,主要影響X Window的使用。在Linux中,X window的主要配置檔案是/etc/X11/XF86Config,
這個檔案的內容很複雜,我們不打算詳細介紹,這裡只介紹在使用程式配置X window常注意的問題。想要X Window正常
工作的關鍵是使用的X Server與你的顯示卡相一致。在設定XWindow的時候,呼叫Xconfigurator、XF86Setup或x86config程
序,使用者可以利用這些程式方便的設定X Window,而不需要手工的修改XF86Config檔案。

Xconfigurator是個不錯的設定程式。使用Xconfigurator的時候,系統可以自動檢測出顯示卡的型別,並且正確的設定它,如果沒有檢測到,使用者可以在顯示卡列表中選擇自己的顯示卡,設定程式就會正確的設定X Server;如?br> 顯示卡型別沒有在列表中出現,那麼不妨就使用XF86_SVGA作為XWindow的Server,試驗一下X能否正常工作,因為這個
XServer相容最多型別的顯示卡,一般來講,目前市面上80%以上的顯示卡都可以被這個Server支援,包括TNT,TNT2系列(要求Xfree86在3.3.6或者以上版本)。如果仍然不能執行,那麼就要到網路上尋找最新的顯示卡驅動程式了。
除了設定X Server以外,設定顯示器的解析度對於X能否正常工作也是至關重要的。設定何種解析度取決於顯示器的型別。在設定程式中,如果顯示器型別在列表中出現,那麼選定它就可以了,如果沒有出現,那麼可以選擇custom項(自定義模式),在隨後的顯示器列表中選擇一款合適的顯示器型別就可以了。

以Xconfigurator設定程式為例,在它的列表中,就可以選擇解析度和重新整理率,使用者可以參照顯示器的技術指標來選擇正確的專案。如果使用者不知道顯示器的效能指標,不妨從最低的效能開始試驗,直到確定合適的顯示器型別。
在設定了顯示器型別後,就可以執行startx程式啟動X Window。


  許多新顯示卡一時得不到 XFree86的支援,配置 XWindow一直是個難題。但 Linux 2.2.x的 frame buffer裝置可透過 VESA VBE 2.0標準利用顯示卡的 Super VGA特性,然後配合 XFree86的 frame buffer Server(XF86_FBDev) 就可讓你的 XWindow用高解析度和高/真彩。現在市面上絕大部分新出的顯示卡都支援VESA 2.0標準。在你的顯示卡得不到支援之前,這不失為一個好的解決方法。

  具體實現涉及四方面:
  1.一個支援 VESA frame buffer的核心;
  2.建立 frame buffer裝置;
  3.配置 lilo 的啟動選項,使核心啟動時能切換到指定的顯示模式;
  4.XFree86的 frame buffer Server(XF86_FBDev),以及在 XF86Config中為其配置一個Screen。

  所需檔案:
  Linux 2.2.x kernel source (2.2.x核心原始碼,如果要自行編譯核心);
  XFree86 Framebuffer Server: XF86_FBDev (Turbo Linux中文版,RedHat6.0 CD,ftp.xfree86.org 等地方都能
找到);
  gcc 等編譯工具。

  編譯一個支援 VESA frame buffer的核心

  如果有現成的支援 VESA frame buffer的核心可跳過這一步。如 Madrake 6.0中就帶有支援 frame buffer的核心。

  配置核心編譯選項

  在/usr/src/linux中鍵入make xconfig(XWindow下),或make menuconfig(命令列下)。

  與 frame buffer device有關的選項有(其餘編譯選項請參考其它資料):

  Code maturity level opetions
  y Prompt for development and/or incomplete codes/drivers
  Console drivers
  y Video mode selection support
  ...
  y Support for frame buffer devices
  ...
  y VESA VGA graphics console
  ...
  y Advance low level driver options
  ...
  y 8 bpp packed pixels support
  y 16 bpp packed pixels support
  y 24 bpp packed pixels support

  編譯安裝核心:

  以 root身份登入,鍵入以下命令:

  # cd /usr/src/linux
  # make bzImage
  # make modules
  # make modules_install

  把編譯好的核心拷到 /boot目錄,檔名可自定,如 

  # cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.2.5-fb

  建立 frame buffer裝置

  frame buffer裝置的 major為 29,minor 為 0(fb0),32(fb1). . . 224(fb7)。

  建立fb裝置

  # mknod /dev/fb0 c 29 0
  ....

  配置 lilo 的啟動選項

  新增lilo啟動配置

  下面是典型的lilo.conf檔案(位於/etc目錄)

  boot = /dev/hda2
  timeout = 500
  prompt
  read-only
  image = /boot/vmlinuz-2.2.x
  label = linux
  root = /dev/hda2
  other = /dev/hda1
  label = dos

  新增一新配置需新增 image,label,root及配合VESA frame buffer的 vga等四項:

  boot = /dev/hda2
  timeout = 500
  prompt
  read-only
  image = /boot/vmlinuz-2.2.x
  label = linux
  root = /dev/hda2
  image = /boot/vmlinuz-2.2.5-fb (新編譯的核心)
  label = linuxfb (啟動標號,可自定)
  root = /dev/hda2 (著一句具體會有不同,照你自己的lilo.conf)
  vga = 0x314 (顯示模式,參照下表)
  other = /dev/hda1
  label = dos

  Linux_kernel_mode_number = VESA_mode_number + 0x200
  640x480 800x600 1024x768 1280x1024
  256 0x301 0x303 0x305 0x307
  32k 0x310 0x313 0x316 0x319
  64k 0x311 0x314 0x317 0x31A
  16M 0x312 0x315 0x318 0x31B

  更新啟動程式

  執行lilo

  重啟,出現 lilo: 時鍵入linuxfb (或自定的標號)。

  這時如果linux切換成圖形模式,並有一小企鵝logo出現,那就大功告成一半。

  配置frame buffer Server

  為 frame buffer Server配置Screen

  參照 XF86Config (位於/etc/X11、/usr/X11R6/lib)中 vga16的配置。

  例如:

  Section "Screen"
  Driver "vga16"
  Device "My Video Card"
  Monitor "MAG XJ500T"
  Subsection "Display"
  Modes "640x480" "800x600"
  ViewPort 0 0
  EndSubsection
  EndSection 

  改動Driver, Modes, Depth三項,其餘照抄

  Section "Screen"
  Driver "fbdev"
  Device "My Video Card"
  Monitor "MAG XJ500T"
  Subsection "Display"
  Depth 16 (色彩深度,必須與前面所選的顯示模式的色彩深度一致,必須!)
  Modes "default"
  ViewPort 0 0
  EndSubsection
  EndSection

  讓X 指向 XF86_FBDev

  把 XF86_FBDev檔案拷到 /usr/X11R6/bin目錄。

  在 /usr/X11R6/bin和 /etc/X11裡都有一個檔名為 X 的檔案,它其實是一個類似Windows的快捷方式的東西,它
指向一個實際的 X Server檔案,如XF86_VGA16。startx 指令碼呼叫 X 啟動 Server而不管具體是哪個 Server。因此,
一定要把上面兩個目錄中的 X 都指向 XF86_FBDev,不同版本可能呼叫其中任意一個。

  具體方法是改名(或刪除)原來的 X,

  cd /etc/X11
  mv X X.bat

  然後把 X 指向 XF86_FBDev,

  ln -snf /usr/X11R6/bin/XF86_FBDev X

  如果一切順利,這時startx,就可以進入美麗新世界了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10796304/viewspace-960066/,如需轉載,請註明出處,否則將追究法律責任。

相關文章