标签归档:devices

linux kernel定制(五)

5 获得驱动模块的脚本
转载请注明出处[By SELinux+]

linux kernel定制(四)

4 内核选项
内核选项这里我们主要说明驱动的选择:

如果你想了解更多的内核选项,可以参考kernel-options文件。

linux kernel定制(三)

3 定制内核
转载请注明出处[By SELinux+]
我们在选择驱动中找到的2个驱动,这次我们要去实验一下。
实验环境:kernel-2.6.40.fc15内核,kernel-2.6.40是f15最新的内核。为了更好的方便使用,我们不使用前面示例中的kernel-2.6.38的内核,其框架基本一致。
1 以太网网卡驱动e1000e
2 CDROM驱动 BLK_DEV_SR
首先我们定制内核配置选项
1加载e1000e,去掉其他的网卡驱动。
2 取消CDROM驱动
下图为我们取消网卡的其他选项,仅选择Ethernet(1000Mbit)


下图为取消CDROM 支持

保存配置,进行编译

编译安装后的效果如下:

我们发现sr的设备不存在了。而网络可以正常使用

linux kernel定制(二)

2.2寻找磁盘控制器
转载请注明出处 [By SELinux+]
本节为来实验效果,我们将进行稍微的去掉某个驱动,以达到设备无法运行的测试效果。
所有的块设备都显示在/sys/block和/sys/class/block中

和之前的网络设备一样,我们这里寻找sr设备,该设备是一个cdrom,本节我们要卸载cdrom驱动。

我们现在沿着sysfs中的设备进行寻找这个设备驱动

我们看到这个scsi磁盘控制器控制着该设备,因此scsi设备是我们必须要加到我们内核配置里面的,因为scsi控制着scsi总线上的所有磁盘设备。我们主要目标是找到控制该设备的硬件驱动
接着我们继续寻找硬件的驱动
在sysfs链接中返回上一级目录,继续寻找,试着找出控制硬件的驱动

该目录下没有driver的链接,我们继续返回上一级目录

该目录下仍没有driver的链接,我们继续返回上一级目录

该目录下我们看到了为的驱动程序了。该驱动为 driver -> ../../../bus/pci/drivers/ahci
achi便是我们要寻找的驱动,但是achi驱动是inter芯片组的驱动,对我们来说这个驱动不是我们真正想要的,我们要分析我们的设备,cdrom是在scsi设备上的,我们要找到scsi的接口。接下来,我们继续寻找最终的驱动

我们回到上一层driver -> ../../../../../../bus/scsi/drivers/sr
我们看到我们的驱动指向的是sr

我们猜想上图的sr_mod.o应该是我们所要寻找的驱动。
那么他指向的驱动为CONFIG_BLK_DEV_SR

如上图所示:我们看到来scsi CDROM 支持的选项。
当然了,寻找驱动很麻烦,我给大家准备了一个脚本,可以轻易的获得驱动。以上仅是对其分析的方法进行说明