以文本方式查看主題 - 曙海教育集團論壇 (http://www.hufushizhe.com/bbs/index.asp) -- 硬件測試 (http://www.hufushizhe.com/bbs/list.asp?boardid=71) ---- Linux下硬件的自動檢測與配置 (http://www.hufushizhe.com/bbs/dispbbs.asp?boardid=71&id=2700) |
-- 作者:wangxinxin -- 發布時間:2010-12-17 10:34:13 -- Linux下硬件的自動檢測與配置 在我的關于硬件檢測與配置的兩篇文章《 如何在Linux下實現硬件的檢測》和《 如何在Linux下實現設備的配置》發表之后,陸續收到了一些讀者來信。他們問了很多關于硬件配置方面的問題,現在我把這些最典型的問題加以整理,寫成這篇文章。由于我不可能接觸到所有的硬件設備,所以對于內置MODEM和聲卡只能提供一些方法性的指導,而不能提供關于配置過程詳細到每一步的一個描述。我希望這篇文章會對大家學習和使用Linux有所幫助。 6V5b7nG8w\'A$c0 IT我最牛-程序員的技術討論與分享園地J s8l5pp K\\$[J*` 作者:于辰濤,聯想(北京)電腦公司軟件工程師。目前主要從事Linux系統安裝程序的開發工作,主要研究興趣是操作系統的工作機制和開發底層系統程序。您可以通過電子郵件 scu_yct@263.net 跟他聯系。IT我最牛-程序員的技術討論與分享園地4f9Z;q3Ru8t8d)T8z!q xO%Bf^w:Ce!| AQG0 1. 我用ALSA成功配置了我的聲卡,但每次啟動LINUX都必須重新用ALSA里的alsaconf-0.4.3b目錄里的命令alsaconf配置,這是為什么,極不方便,請問如何設置才能解決此問題? S-m8`S:_ _;`@T&l%}%ZK0 答:在缺省情況下ALSA驅動程序會靜音所有的音頻輸出。為了獲得聲音,必須解除主音量和PCM音量的靜音。下面的命令設置音頻輸出的主音量和編、解碼音量,一般而言,打開這兩個設置聲音輸出就可以了。IT我最牛-程序員的技術討論與分享園地%{Y0b hsH amixer -c 0 sset \'Master\',0 100%,100% unmuteIT我最牛-程序員的技術討論與分享園地xH_x*s0?%b+h/D amixer -c 0 sset \'PCM \',0 100% unmute %K:j2p;z&] [0 ~o4cTH"P5c-y$d0 為了在每次插入聲卡驅動模塊時,都解除靜音,您可以在/etc/modules.conf(對于老一些Linux版本,比如Redhat 6.2此文件為/etc/conf.modules)加入下列語句: T8{3Hf0{x/t0 post-install snd-card-xxxx amixer -c 0 sset \'Master\',0 100%,100% unmute && amixer -c 0 sset \'PCM \',0 100% unmute ?LN~)E6qK"xv0 snd-card-xxxx表示聲卡對應的alsa驅動程序模塊。IT我最牛-程序員的技術討論與分享園地Ph"IF&{*l j\'Y IT我最牛-程序員的技術討論與分享園地oG,v LQM W|(B{6z}$E 2. 如何在LINUX下改變顯示器的刷新率,我的眼睛實在受不了60HZ的刷新率了?IT我最牛-程序員的技術討論與分享園地b2w`3ZU 答:在Linux系統下,要配置X-Windows系統一般使用/usr/X11R6/bin/Xconfigurator命令進行配置。在配置之前,您最好能先了解顯卡的型號、顯示器型號等信息,然后再進行刷新頻率的配置。 !cK4h-^E0 p7iO)J%j d|(J%m5iG2T0 Xconfigurator程序會先進行顯示器類型自檢,根據檢測到的顯示器型號,在配置文件/etc/X11/XF86Config(對于XFree86 4.x版本,配置文件為/etc/X11/XF86Config-4)中設置顯示器支持的場頻范圍。這樣,在X系統啟動之后,垂直刷新率會自動設置為當前分辨率下支持的最高刷新率。IT我最牛-程序員的技術討論與分享園地*B!{;x0Mo i H;hu IT我最牛-程序員的技術討論與分享園地V C+r~p~7[ 但是,如果您的顯示器沒有類型信息或者是Xconfigurator不支持的顯示器類型,那么您就只能設置顯示器為一些通用的顯示模式了。這些顯示模式中比較高的刷新頻率為1024x768分辨率下70Hz垂直掃描頻率的模式。 `?F})U{I,s0 M7H:p1]"NU0 如果您想設置較高的刷新率(垂直掃描頻率85Hz),就只有手動進行了。每個Vesa定義的通用顯示模式所對應的刷新頻率,您可以在《如何在Linux下實現設備的配置》一文中找到。這時您需要修改文件XF86Config的Monitor節。Monitor節主要描述顯示器的信息,每個XF86Config文件至少包含一個顯示器節。在顯示器支持vbe和edid擴展時,它的所有信息包括顯示器大小、顯示器支持的刷新頻率范圍、顯示器制造商信息等都可以從顯示器上讀出。此節的一般格式如下:IT我最牛-程序員的技術討論與分享園地} XZjw Section "Monitor"IT我最牛-程序員的技術討論與分享園地2{ e9f*?O$Cw Identifier 1L]W4mn.Qw{2x3V0 Entries o!R#c*r3W s|3x0 EndSection .s|*{9s4eA0 IT我最牛-程序員的技術討論與分享園地(_[N*C0TH[ 它最關鍵的描述性信息是:IT我最牛-程序員的技術討論與分享園地d_whL%`rC+J IT我最牛-程序員的技術討論與分享園地E-x Au9q:W-t HorizSync horizsync-rangeIT我最牛-程序員的技術討論與分享園地-rVd S5@4a$W 監視器支持的水平刷新頻率范圍。單位是kHz,缺省范圍是28-33kHz。 ,m]+Q B:mU:vv7H0 Zu@ V L\'l^k0 VertRefresh vertrefresh-range 7}0Nd+m1h O!_J0 監視器支持的垂直刷新頻率范圍。單位是Hz,缺省范圍是43-72Hz。IT我最牛-程序員的技術討論與分享園地#?M3j]-F%l#P Tc4_ IT我最牛-程序員的技術討論與分享園地7O!uY S?d4pU2O3\\*e 要設置監視器到更高的刷新率,必須用vi修改/etc/X11/XF86Config文件下的這兩個字段,比如: !M"Fg#`6p;j.c3ga0v0 HorizSync 28-60 R{r ^Y,oq8V0 VertRefresh 60-100IT我最牛-程序員的技術討論與分享園地qkHe%qCn2Zkt :\\4g(t6H3Vk)I!W0 上面的設置可以設置顯示分辨率為800x600下的垂直刷新率為85Hz,分辨率為1024x768下的垂直刷新率為70Hz。 2e!e SD%S&?0NT0 IT我最牛-程序員的技術討論與分享園地.hd)Z"y Y$Jbqd 注意:如果顯示器達不到這么高的水平掃描頻率范圍,在顯示器上會出現黑屏的現象。如果出現黑屏,您可以先使用Ctrl + Alt + Backspace殺死當前X服務進程,并重新修改XF86Config文件,嘗試低一些的顯示刷新頻率即可。 !Z]z3_xz&I"}#E0 S\\3c|BW0 3. 請問一下,在LINUX 下開發工具為什么不能使用C++來開發設備驅動程序 ?我測試了一下使用g++編譯通不過,是否為g++編譯選項不對,正確的編譯選項是什么?IT我最牛-程序員的技術討論與分享園地V$LN:TWxm 答:在Linux下,C++編譯器的實現和C編譯器是不同的。因為涉及到函數重載和多態等問題,所以C++在編譯實現時,使用了虛表的機制。這和C語言編譯成目標代碼的直接訪問方式是有很大不同的。由于Linux內核大部分使用C語言編制,并且Linux驅動程序在事先是采用了類似函數調用表的機制,所以開發者使用gcc開發驅動程序應該是最直接也是最高效的。 h%xG^"e j4{0 IT我最牛-程序員的技術討論與分享園地4y8tk C7[V~(|*zh m 4. 我的是藍點1.0系統,安裝的內貓是Tplink ia5628v 型,它的芯片是ambient 5628d,無法驅動。我下載了intel的r-335-5驅動程序,按提示安裝不能用。在Windows ME下貓用的是com4口,我試了ttys0~ttys3.ttys10都無反應,請指教。 wW!k#[-A7\\8Y[0 答:對于內置式modem,無法正確配置的最大問題是設備沒有合適的驅動程序。大部分廠商都不愿意公開產品的內部技術細節,所以網上關于內貓的驅動程序很少,而能夠正常工作的驅動程序就更少了。如果要查找內貓的驅動程序,您需要先運行, 9JP9Ace&h*I _0 lspci -v g5}K0P\\c6j0 [#[O#W5F K8K0 查得內貓詳細的設備信息,包括設備標識和制造商標識,然后您再訪問站點www.linmodems.org,獲得內貓驅動程序的詳細信息。IT我最牛-程序員的技術討論與分享園地5PNgEr dv$a&W IT我最牛-程序員的技術討論與分享園地xVDfR J 你的芯片類型是ambient,那么你最好試試驅動程序http://linmodems.org/CLModem-0.3.0.tar.gz。下載此驅動之后,您需要手動解開tar包,并正確安裝此驅動程序。IT我最牛-程序員的技術討論與分享園地tN7kt9HE4o IT我最牛-程序員的技術討論與分享園地Pr~0t&N(Na 在成功安裝了驅動程序之后,內貓驅動程序一般都要生成一個仿真的串口設備。因為很多程序使用設備文件/dev/modem訪問modem,所以為了能夠正常使用modem設備,您可能還需要手動建立鏈接文件。比如,你的內貓仿真的設備是ttyS4,那么執行命令: [Z8e8\\u0 ln -sf /dev/ttyS4 /dev/modemIT我最牛-程序員的技術討論與分享園地W,PS#Yl j@ZLC ?(vC\'R~4J.jbbi0 使用哪個串口設備這主要是看它仿真哪個串口了。在執行上述步驟之后,您可以執行minicom,然后運行AT命令ATZ測試modem是否正常工作。如果顯示OK表示modem配置成功,否則失敗。IT我最牛-程序員的技術討論與分享園地t\'|U.e fu:Xa ~%Ak.SXGI0 5. 在LINUX下,我用DATE命令設置時間, 但它沒有寫入CMOS, 機器重起后時間沒有改變, 請問如何解決?IT我最牛-程序員的技術討論與分享園地&y O3U%m#z+R 答:您機器的bios恐怕與標準的bios不是完全一致(或者出了什么問題),date命令是調用系統函數stime,它是glibc的函數,它又把控制傳給了最底層的bios調用,由它們進行時間的設置。如果您的機器的時鐘機制不是這樣,那么時間設置不會工作。IT我最牛-程序員的技術討論與分享園地z l Z\'V8g/^ IT我最牛-程序員的技術討論與分享園地y\'[2Cj&|;m/G-\\ 6. 我想裝雙操作系統,linux和win98。但是我裝壞了,win98不能看見,一開機就直接進入了linux 而且是沒有圖形界面。Linux只能輸入命令,我裝的是linux radhat7.0。 機子的內存是64兆,cpu是奔三, 實達品牌機,在還沒有安裝linux前的win98系統可能已經被覆蓋掉了,或者格式化了,現在的情況是我想重新安裝win98 和linux,我想讓這兩個操作系統可以在開機時可以選擇進入。IT我最牛-程序員的技術討論與分享園地"s*d\'v|E9cj2LS)q!G Q 答:設置Linux系統的雙引導,您必須要在安裝Linux系統之后,修改lilo的配置文件/etc/lilo.conf。舉一個例子, x4f}:U}"l|Q}4l0 K;}/[5x g0 boot=/dev/hdaIT我最牛-程序員的技術討論與分享園地Z\'D(yfR^!c,ML%rs"B map=/boot/map j3L3D&w~d%u }0 install=/boot/boot.b -]$z{F3PV8]E4m0 vga=normalIT我最牛-程序員的技術討論與分享園地\'F#N.t zh(K;_3o/ya default=linux 7n Egy*_5?O"o|6d%`0 image=/boot/vmlinuz 9C.NjMeL5y Y0 label=linux 1n`\'? |`G0 root=/dev/hda2 7QS x:l}im0 other=/dev/hda1IT我最牛-程序員的技術討論與分享園地 H0x}{RlA\'U(qZ5Xi label=win98IT我最牛-程序員的技術討論與分享園地[E2]8jK$S IT我最牛-程序員的技術討論與分享園地G1@*OLSS.V n 這個簡單的例子設置一臺具有win98和linux操作系統的機器的雙引導,其中win98安裝在hda1分區上,這是第一塊硬盤的第一個主分區。Linux分區安裝在hda2分區上。 Kl.Cdl0 q:B9~e2[^0f0 一般而言,您最好在系統上先安裝Windows操作系統,為了保險起見,您最好還要定制一張Windows系統恢復軟盤,然后再安裝Linux操作系統。在安裝Linux時,注意要選擇和Windows分區不同的分區(強烈推薦您在主分區上,也就是在編號為hda1到hda4的分區安裝Linux操作系統)進行安裝,同時一般也需要您建立Linux系統交換分區。在安裝Linux系統之后,一定要運行LILO命令,使得lilo能夠接管系統引導扇區,并使/etc/lilo.conf中的配置生效。 V5F%v/s-r.nY X0 IT我最牛-程序員的技術討論與分享園地Dg%}9nWzJb%E 7. 我使用的是聯想朝陽筆記本,安裝了Red hat linux7.1,使用的是聯想EASY10M/100M 網卡現在網卡無法識別,不能工作,怎么辦?/proc/bus/pccard/drivers 中沒有任何信息,PCMCIA 已啟動過 。網卡的ACT LINK 燈是亮的,不知驅動是否已加,測試回路只有lo。啟動時eth0顯示FAILED。IT我最牛-程序員的技術討論與分享園地N:?.MPGYKJ 答:您首先需要安裝網卡的設備驅動程序。PCMCIA類型的設備驅動程序保存在pcmcia-cs包中,您首先需要安裝pcmcia-cs包。IT我最牛-程序員的技術討論與分享園地h1y1qv0[i0Ov:{ IT我最牛-程序員的技術討論與分享園地7["^#jlb 在筆記本電腦上安裝了pcmcia-cs包之后,為了實現PCMCIA設備的自動檢測,您可以先查找系統中是否存在/proc/bus/pccard目錄,如果不存在此目錄則嘗試插入pcmcia_core。 5Zlc!bGo:cG2mL\\1Ep0 IT我最牛-程序員的技術討論與分享園地MJ,r vI_ zj%} modprobe pcmcia_core(或者insmod pcmcia_core)IT我最牛-程序員的技術討論與分享園地)ec.~@8Cg"c ^tPX v2W7{0 在成功插入了此模塊之后,/proc/bus/pccard目錄就生成了。此后,您就可以通過IT我最牛-程序員的技術討論與分享園地EM"Bus~x|Edcv lspci -vIT我最牛-程序員的技術討論與分享園地,PU6A8_ G!K\\Zx IT我最牛-程序員的技術討論與分享園地.E!a)I ^ ? 檢查pci系統設備,找到系統橋接器,根據橋接器類型獲得您需要插入的橋接器模塊。在Linux系統下,適用的橋接器模塊一般只有i82365或tcic兩種。若無法獲得準確的橋接器驅動程序,您可以嘗試著插入兩種模塊,直到成功時為止。這時執行命令: -q+@3yY,t1Oz0 *\\~ER+un S0 modprobe i82365(或者modprobe tcic) 0t1U#@8F\'D h gg p0 }YpYH(H-k+l4xP0 然后為了能夠實時的配置您的pccard,您需要啟動服務pcmcia,IT我最牛-程序員的技術討論與分享園地X n)s`@o yb /etc/rc.d/init.d/pcmcia startIT我最牛-程序員的技術討論與分享園地"qX\'\\f.J,u4BY,{)n V,H&nZh {0 并由此服務啟動程序cardmgr。cardmgr監視pcmcia槽上卡的插入和彈出操作。在卡插入之后,cardmgr查詢卡的配置數據庫。若發現卡能夠被標識,相應的設備驅動程序則會自動加載。在彈出卡之后, |