MKINITRD LVM Slackware
嘗試在戴爾 2950 上安裝 Slackware 13.1。我有一個 Perc5 RAID 卡,我的核心將其視為原始設備的 /dev/sda。
我創建了 3 個分區:
/dev/sda1 -- /boot partition type=82 /dev/sda2 -- swap partition type=83 /dev/sda3 -- my LVM partition type=82
以下是我一直在使用的步驟:
1. pvcreate /dev/sda3 (is this necessary since the partition already exists from fdisk?) 2. vgcreate vg00 /dev/sda3 3. lvcreate -L 20G -n root vg00 4. vgscan --mknodes 5. vgchange -ay
然後我像往常一樣安裝 Slackware 13.1,選擇 /dev/vg00/root 為 root (/) 和 /dev/sda1 為 (/boot) 和 /dev/sda2 為交換……一切順利。
安裝後,我執行這些命令來製作我的 initrd 映像。
chroot /mnt mkinitrd -c -k 2.6.33.4 \ -m jfs:uhci_hcd:ehci_hcd:usbhid:hid:megaraid_sas:bnx2 \ -f jfs \ -r /dev/vg00/root \ (also tried /dev/mapper/vg00-root) -L
此命令執行沒有任何錯誤,我確實在 /boot 中獲得了 initrd.gz 和 initrd-tree
我的 /etc/lilo.conf 的相關部分如下所示:
boot=/dev/sda image = /boot/vmlinuz-generic-2.6.33.4 initrd = /boot/vg00/root label = linux read-only
當我重新啟動電腦時,我得到了 LILO 啟動管理器。核心載入,但似乎 LVM 從未出現。我收到一條錯誤消息,指出沒有 /root 分區並且找不到設備 /dev/vg00/root。
我已經使用 Linux 很多年了,但我從來沒有處理過 mkinitrd,所以我對程序以及如何提取驅動程序有點不熟悉。我確實在 /boot/initrd-tree/sbin 目錄中看到了 lvm 二進製文件。(dmsetup、lvm、vgchange、vgscan;後兩者是 sym 連結到 lvm)
我還嘗試解壓縮並安裝 initrd 以進行查看,但使用 mount -o loop -t ramfs /dev/boot/initrd /tmp 也無法弄清楚
非常感謝任何幫助或建議。
解決…
問題與 PROC 有關…當我執行 mkinitrd 時,在執行 chroot mnt 後我沒有 /proc/partitions 的有效表示。這是我用來最終讓它工作的步驟……
使用 Slackware DVD 引導(使用 13.1 64 位核心)
1. vgscan --mknodes 2. vgchange -ay
(注意,由於我使用救援磁碟啟動並且已經按照我的原始文章進行了安裝,因此無需重新安裝)。
上述兩個命令使我的邏輯卷處於活動狀態,並且它們顯示在 /proc/partitions 中。
3. mount /dev/vg00/root /mnt 4. mount /dev/sda1 /boot 5. mount -t proc proc /mnt/proc (this was the magic step) 6. chroot mnt (note, don't chroot /mnt just mnt)
重新執行相同的 mkinitrd 腳本,如我原來的文章所示。這次我對 /dev/vg00/root 重命名為 /dev/dm-0 產生了爭執
Ran lilo,與我原來的文章相同的配置。
重新啟動併中提琴它工作。
需要注意的一點是,我的乙太網驅動程序 (bnx2) 需要外部韌體,我沒有在我的 initrd 中包含該韌體,並且由於 bnx 驅動程序正在超時尋找此韌體,因此導致啟動過程很長……
希望這對其他人有幫助..