Q: 如果主机上插入新的硬件(例如阵列卡,网卡,硬盘,内存,CPU等),如何使系统识别新加入的
硬件
A: Linux对外部设备的支持离不开内核所提供的驱动的支持. 内核对硬件的支持一部分是通过builtin的部分
提供的, 另外一部分是通过可加载模块提供的.
Linux内核内置提供的硬件例如CPU, 内存等.
1. 用户如果添加了新的内存是不需要重新编译内核的, 查看变更后的信息可以参见命令的输出
#cat /proc/meminfo.
2. 用户如果新增加一颗新的处理器, 需要根据原来安装的内核类型作相应处理:
如果系统原来安装的是单处理器内核, 需要安装新的多处理器内核来使用多处理器特性.
""以SLES8 SP3的内核为例
# mount /dev/cdrom /media/cdrom
# rpm -Uvh /media/cdrom/UnitedLinux/i586/k_smp-2.4.21-138.i586.rpm
如果系统原来就是多处理器内核, 我们不需要做额外的配置
查看变更后的信息可以参见
# cat /proc/cpuinfo
3. 用户对新增的硬盘使用要通过上层的SCSI Controller的驱动, Raid Controller的驱动或
IDE Controller的驱动才能被用户使用,所以应归类到SCSI Controller, Raild Controller
和IDE Controller的支持上。
Linux下通过可加载的内核模块提供支持的硬件
4. 阵列卡, SCSI控制器和IDE控制器等
这些控制器的支持一般通过内核模块的形式提供支持。首先要确认要添加的设备的类型,
其次要找到在内核里支持此设备的驱动,如果存储对应的文件系统在系统最初启动时就要加载,
要把驱动加到/etc/sysconfig/kernel文件中INITRD_MODULES对应的列表的适当位置.
下面举一个例子:
系统上原有一块Symbios 53c1010的SCSI控制器, 根文件系统在这块卡下的磁盘分区/dev/sda1上
系统上添加了一个Qlogic 2300的Fiber Channel Controller用于连接磁盘阵列柜在阵列柜上划分了
两个逻辑盘,我们计划先加载Symbios卡的驱动,后加载Qlogic卡的驱动,这样就能保证根文件系统
所在存储控制卡的驱动先被加载.
修改/etc/sysconfig/kernel文件的行:
INITRD_MODULES="reiserfs mptbase mptscsih"
为
INITRD_MODULES="reiserfs mptbase mptscsih qla2300"
然后重新声成initrd
# mkinitrd
上面配置中的模块列表是在内核启动的时候,加载initrd时按照从左至右的顺序加载的.我们希望
先加载Symbios的驱动mptbase和mptscsih,后加载Qlogic的驱动qla2300。如果需要将加载顺序
改变,只要改变这个文件中的驱动的顺序重作initrd,再下一次启动的时候内核对SCSI磁盘的
识别顺序就会改变过来。
新增的磁盘设备可以用yast2 disk或fdisk进行分区,然后就可以使用了。
5. 添加网卡的过程和上面添加存储控制卡的过程类似,首先要确认要添加的设备的类型,
其次要找到在内核里支持此设备的驱动。由于网卡驱动不是系统启动必不可少的部分,所以
不用把网卡驱动加到initrd里面。
手工把网卡的驱动配置添加到/etc/modules.conf文件中
例如:系统上原有两块BroadCom 5700网卡,在/etc/modules.conf文件中
这两块网卡对应的驱动配置为:
alias eth0 bcm5700
alias eth1 bcm5700
我们新加了两块Intel 1000M网卡,在linux下的驱动是e1000, 在配置文件里添加行:
alias eth2 e1000
alias eth3 e1000
然后运行yast2.network按照先按照显示顺序配置两块BroadCom网卡,然后按照显示
顺序配置两块Intel网卡。