Centos

如何為 anaconda 安裝建構驅動盤(CentOS 6)

  • June 18, 2021

我需要為 anaconda 製作驅動盤。該磁碟將包含一個更新的模組,用於最近的筆記型電腦的網卡,目標是讓 CentOS 6.2 的網路安裝工作正常。我正在使用 cobbler,所以即使是 kickstart 文件本身也在網路上。我不介意安裝是否完全無人看管,並且我不介意在安裝過程中將 U 盤與驅動程序磁碟映像粘貼並手動選擇正確的項目,但我確實希望將其他所有內容保留在網路上(核心映像、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/drivers/rpms/x86_64/repodata”,直到現在我還沒有看到帶有“repodata”的驅動程序磁碟。

目前正在研究 anaconda 原始碼,但我希望有人能指出我正確的方向。

畢竟,我可能已經在anaconda 原始碼中找到了答案。

要生成與 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

引用自:https://serverfault.com/questions/374870