我的笔记本电脑配置为双启动系统,装有 Ubuntu 14.04(和 Windows 8.1)。最近,我用 lvm2 分区(VG(卷组)LinuxBereich)替换了专用的根分区和交换分区,其中包含 LV(逻辑卷)LinuxSwap、LinuxRoot 和 LinuxHome。在精简池 LV RootArea 和 HomeArea 中,有根分区和主分区的副本,分别名为 Linux_Root 和 Linux_Boot。
- 3.13.0-62-generic 从非池 LV 正确启动或恢复。
- 3.13.0-63-generic 找不到根分区并进入 busybox shell。使用 lvm 激活 LVs LinuxSwap、LinuxRoot 和 LinuxHome 后,启动继续,没有出现其他问题。
- 两个版本 (62/63) 均未从精简池中的 LV 启动。尝试:
lvm lvchange -ay LinuxBereich/Linux_Root
(或 Linux_Home、RootArea、HomeArea)
来自 busybox shell,结果为:
/sbin/modprobe 失败:1
无法读取精简池目标版本。
无法处理 LV Linux_Root:内核缺少精简池目标支持?
如果 LV 可以在 3.13.0-63-generic 中自动激活就好了。
如果系统从精简池启动就更好了。
欢迎提出任何想法。也许我需要更多的耐心。
你的
Wolfgang
解决方案:
- 3.13.0-63-generic(和 3.13.0-65-generic)现在可以从 LV 启动,没有问题。
原因是 /boot/initrd.img-3.13.0-63-generic 中缺少一个文件,而该文件存在于 /boot/initrd.img-3.13.0-63-generic 中:
-rw-r--r-- 1 root root 272 2012 年 5 月 4 日 lib/udev/rules.d/85-lvm2.rules
检查此类文件后得到:
ls -l /lib/udev/rules.d/85-lvm*
-rw-r--r-- 1 root root 272 2012 年 5 月 4 日 /lib/udev/rules.d/85-lvm2.rules.drblsave
因此文件存在,但已被重命名。
cp -p /lib/udev/rules.d/85-lvm2.rules.drblsave /lib/udev/rules.d/85-lvm2.rules
和
更新-initramfs -u
成功了。
要获取 initrd.img 的排序内容表:
对于 62 63 65 中的 n;执行 zcat /boot/initrd.img-3.13.0-$n-generic|cpio -itv|sort -k9>$n.lst;完成
不含修改时间和内核版本
对于 62 63 65 中的 n;do sed 's/3.13.0-6./3.13.0-6?/g' $n.lst|cut -c 1-42,56->$n.lsu;done
由于没有内核支持,无法从精简池 LV 启动。这很奇怪,因为正在运行的系统能够处理精简卷。
lsmod |grep -ie dm_thin_pool -e dm_persistent_data -e dm_bio_prison -e dm_bufio -e libcrc32c dm_thin_pool 46897 7 dm_persistent_data 61675 1 dm_thin_pool dm_bufio 27539 1 dm_persistent_data dm_bio_prison 15501 1 dm_thin_pool libcrc32c 12644 1 dm_persistent_data for n in dm_thin_pool dm_persistent_data dm_bio_prison dm_bufio libcrc32c;do modinfo $n;done|grep filename:|sort -u filename: /lib/modules/3.13.0-65-generic/kernel/drivers/md/dm-bio-prison.ko filename: /lib/modules/3.13.0-65-generic/kernel/drivers/md/dm-bufio.ko filename: /lib/modules/3.13.0-65-generic/kernel/drivers/md/dm-thin-pool.ko filename: /lib/modules/3.13.0-65-generic/kernel/drivers/md/persistent-data/dm-persistent-data.ko filename: /lib/modules/3.13.0-65-generic/kernel/lib/libcrc32c.ko
因此创建了一个文件 /etc/initramfs-tools/hooks/lvm2thin:
#!/bin/sh
PREREQ=""
prereqs()
{
echo "$PREREQ"
}
case $1 in
prereqs)
prereqs
exit 0
;;
esac
. /usr/share/initramfs-tools/hook-functions
# Begin real processing below this line
copy_exec /lib/modules/${version}/kernel/drivers/md/dm-thin-pool.ko
copy_exec /lib/modules/${version}/kernel/drivers/md/dm-bio-prison.ko
copy_exec /lib/modules/${version}/kernel/drivers/md/dm-bufio.ko
copy_exec /lib/modules/${version}/kernel/drivers/md/persistent-data/dm-persistent-data.ko
设置适当的权限。
chmod 755 /etc/initramfs-tools/hooks/lvm2thin
ls -l /etc/initramfs-tools/hooks/lvm2thin
-rwxr-xr-x 1 root root 583 Okt 8 18:16 /etc/initramfs-tools/hooks/lvm2thin
然后再次
更新-initramfs -u
完毕。