曙海教育集团论坛软硬件测试专题硬件测试 → Linux下硬件的自动检测与配置


  共有5834人关注过本帖树形打印

主题:Linux下硬件的自动检测与配置

美女呀,离线,留言给我吧!
wangxinxin
  1楼 个性首页 | 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:青蜂侠 帖子:1393 积分:14038 威望:0 精华:0 注册:2010-11-12 11:08:23
Linux下硬件的自动检测与配置  发帖心情 Post By:2010-12-17 10:34:13

在我的关于硬件检测与配置的两篇文章《 如何在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查询卡的配置数据库。若发现卡能够被标识,相应的设备驱动程序则会自动加载。在弹出卡之后,

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部

返回版面帖子列表

Linux下硬件的自动检测与配置








签名