![MKINITRD LVM Slackware](https://linux22.com/image/544928/MKINITRD%20LVM%20Slackware.png)
尝试在 Dell 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 作为根 (/),选择 /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;后两个与 lvm 符号链接)
我还尝试解压并挂载 initrd 来看看,但使用 mount -o loop -t ramfs /dev/boot/initrd /tmp 也无法解决这个问题
非常感谢任何帮助或建议。
答案1
解决...
问题与 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 的警告。
运行 lilo,配置与我的原始帖子相同。
重新启动后它就成功了。
需要注意的是,我的以太网驱动程序(bnx2)需要外部固件,而我没有将其包含在我的 initrd 中,这导致了漫长的启动过程,因为 bnx 驱动程序在寻找该固件时超时了......
希望这对其他人有帮助。
答案2
顺便说一下..要查看由 mkinitrd 创建的 initrd.img 文件,步骤如下。
mkdir myrd
cd myrd
cp /mnt/boot/initrd.gz .
gunzip initrd.gz
cpio -i -d < initrd
这些步骤是我在 IBM 网站上找到的。 http://www.ibm.com/developerworks/linux/library/l-initrd.html
答案3
分区值错误:
/dev/sda1 -- /boot partition type=82<BR>
/dev/sda2 -- swap partition type=83<BR>
/dev/sda3 -- my LVM partition type=82<BR>
应该:
/dev/sda1 -- /boot partition type=83<BR>
/dev/sda2 -- swap partition type=82<BR>
/dev/sda3 -- my LVM partition type=8e<BR>
82 = Linux swap<BR>
83 = Linux Partition<BR>
8e = LVM partition<BR>
http://www.win.tue.nl/~aeb/partitions/partition_types-1.html