我刚刚从 10.10 Desktop LiveCD 进行了安装,使根卷成为 LVM LV。
显然这是不支持的;在启动 GUI 安装程序应用程序之前,我通过以下步骤来管理它:
lvm2
在正在运行的系统上安装软件包- 在系统硬盘上创建一个 LVM 类型的分区
- 使用 LVM 工具创建物理卷、卷组和根 LV。
/var
我还为;创建了第二个 LV 。我认为这无关紧要。 - 在两个 LV 中的每一个上创建一个文件系统(ext4)。
完成这些步骤后,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
}
请注意, $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)
获取安装在单独树下的根 LV、/boot 和 /dev
将所需的包复制到 /newroot 树中
chroot 进入新树并安装软件包
此时,事情应该会恢复正常(因为在安装 lvm2 时会重新生成 initramfs)。如果没有,您可以
update-initramfs -u
在 chroot 中运行。将系统安装到硬盘后,您需要将 lvm2 安装到该系统中才能启动。如果你在 livecd 上安装了 lvm2,那么这些包仍然会在 /var/cache/apt/archives 中。切换到该目录,挂载硬盘,然后使用 dpkg --root=/mnt *.deb 将软件包安装到硬盘上。在您的情况下,您需要将根 fs 挂载到 /mnt,并将 var fs 挂载到 /mnt/var。
此外,您不需要单独的 /boot 分区,单独的 /var 分区是有问题的。
在本演练的最后一部分的帮助下,我最终完成了 Kees Cook 精心布置的大部分工作。然而:
/dev
。看起来这稍后会导致一些错误消息;见下文。/var
_/boot
我没有将 debs 复制到
/tmp
新根目录中。相反,我在ing# apt-get install aptitude; aptitude install lvm2
之后跑了。chroot
aptitude
可能还会apt-get
跟踪哪些包是显式安装的,哪些是作为依赖项自动安装的。apt-cacher-ng
)获取我的包,所以我什至不必等待它们再次下载。在运行之前,我确实必须在 contains 处创建一个/etc/apt/apt.conf.d/02proxy
文件。在开始安装软件包之前我已经做了同样的事情,同时在安装之前运行了 LiveCD。Acquire::http::Proxy "http://local-apt-proxy-server:3142";
apt-get
我收到了几次错误消息或警告,说明
**mount -o 绑定 /dev/pts /mnt/YouNameIt/dev/pts