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