如何為 anaconda 安裝建構驅動盤(CentOS 6)
我需要為 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