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網卡。