我需要为anaconda制作驱动程序磁盘。 这个磁盘将包含一个最新笔记本电脑网卡的更新模块,目标是让CentOS 6.2的networking安装工作。 我正在使用补鞋匠,所以即使kickstart文件本身在networking上。 我不介意如果安装不完全无人看pipe,我不介意在安装过程中在驱动程序磁盘映像中粘贴U盘并手动select正确的项目,但是我确实希望将所有其他内容保留在networking上(内核映像,initrd,kickstart文件,RPM存储库)。
我已经安装了更新的驱动程序,甚至在/ usr / lib / rpm / redhat / kmodtool的帮助下build立了一个“kmod”RPM。 不幸的是,我发现绝对没有什么驱动程序磁盘的文件。
http://www.phil.muni.cz/~letty/linuxfaq/pracovni/driver-disk-howto是我能find的唯一的链接,它描述了我做过同样事情的人的努力 – 下载驱动程序盘并试图探索他们。 不幸的是,CentOS 6中的格式似乎已经改变了,我能做的最好的事情是让anaconda告诉我:“驱动程序磁盘对于这个CentOS版本是无效的。” 日志本身说“找不到/ tmp / drivers / rpms / x86_64 / repodata”,直到现在我还没有看到一个带有“repodata”的驱动程序盘。
目前潜入python的源代码,但我希望有人能指出我正确的方向。
毕竟,我可能在python的来源中find了我的答案。
要生成一个CentOS 6兼容的驱动程序磁盘,你可以创build一个squashfs映像(其他文件系统也可以工作,但是squashfs是最容易创build的),具有以下布局:
rhdd3 – 一个简单的单行注释来描述磁盘的文件 .rundepmod – 这个文件的存在告诉安装程序它应该运行depmod来获取模块 rpms/x86_64 – 一个可选的包含kmod RPM的yum存储库 lib/modules/2.6.32-220.el6.x86_64/... – 实际的内核模块在这里; 如果驱动程序磁盘包含上游驱动程序的更新驱动程序,则此处的目录结构应与上游内核模块位置匹配。 内核的版本当然应该匹配安装程序的版本。 而且由于一张图片atl1c.ko千言万语,下面是我们用于启动最近需要更新的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