12. Linux-2.6 内核

12.1. 新特性?

如上所述为 Linux-2.4.x 内核设置系统仍然完全适用,但对于 Linux-2.6.x 内核(在撰写本文时 x = 0, 1, 2, 3),则可以实现更多功能

12.2. 内核选项

内核配置选项与 第 5.2 节 中描述的非常相似。配置菜单(# make menuconfig)的组织方式有所不同,并且更加系统化。以下是相关的选项

12.2.1. 总线选项

  • 支持热插拔设备 (CONFIG_HOTPLUG)

12.2.2. 设备驱动程序

  • SCSI 设备支持
  • SCSI 设备支持 (CONFIG_SCSI scsi_mod)
  • 旧版 /proc/scsi 支持 (CONFIG_SCSI_PROC_FS)
  • SCSI 磁盘支持 (CONFIG_BLK_DEV_SD sd_mod)
  • USB 支持
  • USB 支持 (CONFIG_USB usbcore)
  • USB 设备文件系统 (CONFIG_USB_DEVICEFS)
  • UHCI HCD 支持 (CONFIG_USB_UHCI_HCD uhci_hcd)
  • USB 大容量存储支持 (CONFIG_USB_STORAGE usb_storage)

12.2.3. 文件系统

  • 第二扩展 (CONFIG_EXT2_FS ext2)
  • DOS/FAT/NT 文件系统
  • DOS FAT 文件系统支持 (CONFIG_FAT_FS fat)
  • MSDOS 文件系统支持 (CONFIG_MSDOS_FS msdos)
  • VFAT (Windows 95) 文件系统支持 (CONFIG_VFAT_FS vfat)
  • 伪文件系统
  • /proc 文件系统支持 (CONFIG_PROC_FS)

12.3. 注释

您可能有兴趣查阅 迁移到 Linux Kernel 2.6,但不必遵循无法执行的步骤。

12.4. 热插拔和命名

第 6.2 节 中讨论了同时插入两个 USB 设备的情况。困难在于用户很难区分这两个设备。 Linux Hotplug Project(搜索 hotplug)最近取得的进展,并在 2.6 系列内核中实现,使得有效解决此问题成为可能。为了实现,需要一些实用程序

12.4.1. 安装

sysfs 文件系统。

sysfs 文件系统是 Linux-2.6 内核系列固有的。udevsysfstools 使用它来获取有关内核对象(设备等)、其属性和相互链接的信息。激活按照以下步骤进行

              # cd /
              # mkdir sys
              # mount -t sysfs none /sys
            

如果您执行 ls -F /sys,将显示一个完整的目录结构,其中包含诸如 block/、bus/ 等条目。您已成功。现在应该通过将以下行添加到/etc/fstab:

              none  /sys   sysfs  defaults  0  0
            

Sysfsutils。

这以常用方式之一安装,无需进行特殊的配置选项。README 文件中的说明非常清楚。但是,您应该首先确保条目/usr/local/lib已输入到/etc/ld.so.conf以便libsysfs.so库可以被系统识别。安装后,检查实用程序/usr/local/bin/lsbus/usr/local/bin/systool已安装。还要检查上面提到的库是否已正确链接(ldconfig -p | grep libsysfs).

Hotplug。

接下来安装hotplug脚本。首先要做的是检查热插拔是否在您的系统上工作。执行 less /proc/sys/kernel/hotplug。结果应该是/sbin/hotplug。如果不是这样,您应该添加行echo "/sbin/hotplug" > /proc/sys/kernel/hotplug到适当的初始化脚本,例如/etc/rc.d/rc.local。也可以在检查一切正常之前(以 root 用户身份)给出此命令。安装非常简单。执行# make install。之后检查脚本/sbin/hotplug存在。

Udev。

这是最后一次安装。研究 README 文件并按照必要的说明进行操作,以便能够运行make USE_KLIBC=true。如果您已编译 Linux-2.6.x 内核,这应该不会太困难。快速检查是找出/sbin/udev/sbin/udevinfo存在。还有其他情况,其中一个非常重要的是/etc/udev/udev.rules。如果您为记忆棒设置了工作环境(如上所述)并且插入了记忆棒,您可以尝试ls /udev,您应该看到设备(sda、sda1 等)。如果它在那里,请拔下设备并再次列出。它应该消失了!

12.4.2. 命名记忆棒

在安装了 udev 实用程序的情况下,可以根据一些内置属性识别记忆棒。其中一个有效的方法是供应商标识。要查找已连接设备的此信息,请执行systool -vb scsi | grep vendor。这应该给出已连接 SCSI 设备的列表(请记住,您的记忆棒充当 SCSI 设备 第 6.2 节)。假设您同时插入了两个记忆棒,并且(像我一样)找到了两个供应商 ID,即 “UFD” 和 “STORAGE”。然后添加到文件/etc/udev/udev.rules以下行(如果需要,可以放在顶部)

              ## Flash Memory 1
              BUS="scsi", SYSFS_vendor="UFD*", NAME="namib%n"

              ## Flash Memory 2
              BUS="scsi", SYSFS_vendor="STORAGE*", NAME="kalahari%n"
           

供应商标识可能带有尾随空格,因此通配符星号是有目的的。不要忽略它们。移除并更换记忆棒,然后执行ls /udev。代替非个性化的sda, sda1等,现在应该有kalahari, kalahari1, namibnamib1。设备已根据其中的 “vendor” 信息命名。因此,无论设备映射到哪里,我们都可以识别它。剩下的就是创建适当的挂载点,例如/mnt/namibkalahari并创建类似

             /udev/namib1     /mnt/namib     vfat,ext2  user,noauto,rw  0 0 
             /udev/kalahari1  /mnt/kalahari  vfat,ext2  user,noauto,rw  0 0         
            

/etc/fstab中,以允许从其他位置挂载。

这非常有趣……并且请记住,地球上还有其他沙漠。