歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

安裝Linux後的遺留問題

一些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音效驅動程式可在http://www.alsa-project.org/找到。到發稿時最新版本為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: [email protected]     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: [email protected]   MA: [email protected]     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吉比特以太網適配器的驅動程序。驅動程序的更多細節、 支持和更新可訪問:     http://cesdis.gsfc.nasa.gov/linux/drivers/yellowfin.Html     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,就可以進入美麗新世界了。




 



Copyright © Linux教程網 All Rights Reserved