Lvm

MKINITRD LVM Slackware

  • July 16, 2014

嘗試在戴爾 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 驅動程序正在超時尋找此韌體,因此導致啟動過程很長……

希望這對其他人有幫助..

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