int*_*ted 9 live-cd installation lvm initramfs
我刚刚从 10.10 桌面 LiveCD 进行了安装,使根卷成为 LVM LV。
显然这是不支持的;在启动 GUI 安装程序应用程序之前,我通过执行以下步骤来管理它:
lvm2在正在运行的系统上安装软件包/var;我认为这无关紧要。完成这些步骤后,GUI 安装程序提供了两个 LV 作为安装目标;我很高兴地接受了,同时还放置/boot了一个与 LVM 分区分开的主分区。
安装似乎进行得很顺利,而且我已经确认 root 和 var 卷都包含看起来可以接受的目录结构。
但是,启动失败;如果我理解正确的话,我会被放到一个在 initrd 文件系统中运行的 busybox。
虽然我还没有完成整个 grub2 文档,但看起来试图启动我的新系统的条目是正确的:
menuentry 'Ubuntu, with Linux 2.6.35-22-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod part_msdos
insmod ext2
set root='(hd0,msdos3)'
search --no-floppy --fs-uuid --set $UUID_OF_BOOT_FILESYSTEM
linux /vmlinuz-2.6.35-22-generic root=/dev/mapper/$LVM_VOLUME_GROUP-root ro quiet splash
initrd /initrd.img-2.6.35-22-generic
}
Run Code Online (Sandbox Code Playgroud)
请注意, $VARS 在实际中被替换grub.cfg为其相应的值。
我重新启动回 livecd 并将 initrd 映像解压缩到临时目录中。看起来 initrd 映像缺少 LVM 功能。例如,如果我正在阅读/usr/share/initramfs-tools/hooks/lvm2(安装lvm2在 livecd 引导的系统上,而不存在于已安装的系统上),则可lvm执行文件应位于/sbin; 事实并非如此。
解决这种情况的最佳方法是什么?我意识到只使用备用安装 CD 会更容易,它显然支持 LVM,但我不想等待它下载然后必须重新安装。
您直接解决了这个问题:initramfs 不支持 LVM。以下是修复方法:
lvm2在 Live 环境中再次安装调出卷组(如果 -ay 不起作用,请尝试 -a yes)
vgchange -a y
Run Code Online (Sandbox Code Playgroud)获取挂载在单独树下的根 LV、/boot 和 /dev
mkdir /newroot
mount /dev/yourVG/rootLV /newroot
mount /dev/yourbootpartition /newroot/boot
mount -o bind /dev /newroot/dev
Run Code Online (Sandbox Code Playgroud)将需要的包复制到 /newroot 树中
cp /var/cache/apt/archives/*deb /newroot/tmp/
Run Code Online (Sandbox Code Playgroud)Chroot 进入新树并安装软件包
chroot /newroot
cd /tmp
dpkg -i *.deb
Run Code Online (Sandbox Code Playgroud)此时,事情应该恢复正常(因为安装 lvm2 时会重新生成 initramfs)。如果没有,您可以update-initramfs -u在 chroot 内运行。
| 归档时间: |
|
| 查看次数: |
48458 次 |
| 最近记录: |