我要为蟒蛇做一个驱动盘。此磁盘将包含更新后的新笔记本电脑网卡模块,其目标是使CentOS 6.2的网络安装工作正常。我使用的是鞋匠,所以即使是启动文件本身也在网络上。我不介意安装是否完全无人值守,也不介意在安装和手动选择正确项时将USB棒与驱动程序磁盘映像连接,但我确实希望将其他所有内容保留在网络上(内核映像、initrd、kickstart文件、RPM存储库)。
我已经构建了更新的驱动程序,甚至在/usr/lib/ RPM /redhat/kmodtool的帮助下构建了一个"kmod“rpm。不幸的是,我没有找到任何关于驱动程序磁盘外观的文档。
http://www.phil.muni.cz/~letty/linuxfaq/pracovni/driver-disk-howto是我唯一能找到的链接,它描述了那些做了我做过的同样事情的人的挣扎--下载驱动程序磁盘并试图探索它们。不幸的是,CentOS 6中的格式似乎已经改变了,我能做的最好的事情就是让anaconda告诉我:“对于CentOS的这个版本,驱动磁盘是无效的。”日志本身写着“无法找到/tmp/驱动器/rpms/x86_64/repodata”,到目前为止,我还没有看到有"repodata“的驱动程序磁盘。
目前深入anaconda源代码,但我希望有人能指出我的正确方向。
发布于 2012-05-09 09:56:48
毕竟,我在水蟒源上找到了我的答案。
要生成兼容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发布于 2021-06-10 00:37:24
从anaconda driverdisc.txt:
The new DriverDisc format uses simple layout which can be created on top of
any anaconda's supported filesystem (vfat, squashfs, ext2 and ext3).
/
|rhdd3 - DD marker, contains the DD's description string
/rpms
| /i386 - contains RPMs for this arch and acts as Yum repo
| /i586
| /x86_64
| /ppc
| /... - any other architecture the DD provides drivers for如果您正在执行类似于inst.dd=http://10.0.0.80/e1000e.rpm的操作,则此部分至关重要:
对于用于更新驱动程序的RPM有一个特殊要求。Anaconda只选择提供“内核-模块=<运行内核version>”的RPM。
因此,您需要编辑.spec,并在顶部添加"Provides: kernel= 3.10.0-1160.el7.x86_64“或其他任何同等的安装版本。
还请注意,inst.sshd是很好的故障排除网络启动安装。见/tmp/packaging.log:
# ssh <installer-host-ip>
[anaconda root@localhost ~]# less /tmp/packaging.log这将完成安装,但未来的内核升级可能无法获得驱动程序更新。当内核更新时,您可以在/etc/ copy /postinst.d/中添加一个挂钩,以便将驱动程序复制到更新的内核版本(假设ABI兼容)。
https://serverfault.com/questions/374870
复制相似问题