我已经构建了更新的驱动程序,我甚至在/usr/lib / rpm / redhat / kmodtool的帮助下构建了一个“kmod”RPM.不幸的是,我发现驱动程序磁盘的外观完全没有文档.
http://www.phil.muni.cz/~letty/linuxfaq/pracovni/driver-disk-howto是我能找到的唯一链接,它描述了我做过同样事情的人的斗争 – 下载驱动程序磁盘并试图探索它们.不幸的是,CentOS 6中的格式似乎发生了变化,我能做的最好的事情就是让anaconda告诉我:
“此版本的CentOS驱动程序磁盘无效.”日志本身说“找不到/ tmp / drivers / rpms / x86_64 / repodata”,直到现在我还没有看到带有“repodata”的驱动程序磁盘.
目前潜入the anaconda source code,但我希望有人可以指出我正确的方向.
要生成兼容CentOS 6的驱动程序磁盘,您可以使用以下布局创建一个squashfs映像(其他文件系统也可以工作,但squashfs是最容易创建的):
> rhdd3 – 一个带有简单单行注释的文件来描述磁盘
> .rundepmod – 此文件的存在告诉安装程序它应该运行depmod以获取模块
> rpms / x86_64 – 包含kmod RPM的可选yum存储库
> lib / modules / 2.6.32-220.el6.x86_64 / … – 实际的内核模块在这里;如果驱动程序磁盘包含上游驱动程序的更新驱动程序,则此处的目录结构应与上游内核模块位置匹配.内核的版本当然应该与安装程序的版本匹配.
由于一张图片胜过千言万语,下面是我们用来启动最近需要更新atl1c.ko驱动程序的笔记本电脑的示例驱动程序磁盘:
$unsquashfs -ls driver-disk.dd Parallel unsquashfs: Using 2 processors 8 inodes (26 blocks) to write squashfs-root squashfs-root/.rundepmod squashfs-root/lib squashfs-root/lib/modules squashfs-root/lib/modules/2.6.32-220.el6.x86_64 squashfs-root/lib/modules/2.6.32-220.el6.x86_64/kernel squashfs-root/lib/modules/2.6.32-220.el6.x86_64/kernel/drivers squashfs-root/lib/modules/2.6.32-220.el6.x86_64/kernel/drivers/net squashfs-root/lib/modules/2.6.32-220.el6.x86_64/kernel/drivers/net/atl1c squashfs-root/lib/modules/2.6.32-220.el6.x86_64/kernel/drivers/net/atl1c/atl1c.ko squashfs-root/lib/modules/2.6.32-220.el6.x86_64/updates squashfs-root/rhdd3 squashfs-root/rpms squashfs-root/rpms/x86_64 squashfs-root/rpms/x86_64/kmod-compat-wireless-3.3_2_n-2.el6.x86_64.rpm squashfs-root/rpms/x86_64/repodata squashfs-root/rpms/x86_64/repodata/filelists.xml.gz squashfs-root/rpms/x86_64/repodata/other.xml.gz squashfs-root/rpms/x86_64/repodata/primary.xml.gz squashfs-root/rpms/x86_64/repodata/repomd.xml