如果您仔细遵循这些步骤,这相对简单。建议您准备好良好的备份和合适的救援磁盘,以防万一。
运行 LVM 根文件系统的 “正常” 方式是拥有一个名为/boot的非 LVM 分区,其中包含启动系统所需的内核和初始 RAM 磁盘。我升级的系统如下
# df Filesystem 1k-blocks Used Available Use% Mounted on /dev/rootvg/root 253871 93384 147380 39% / /dev/hda1 17534 12944 3685 78% /boot /dev/rootvg/home 4128448 4568 3914168 0% /home /dev/rootvg/usr 1032088 332716 646944 34% /usr /dev/rootvg/var 253871 31760 209004 13% /var |
# ls /boot System.map lost+found vmlinux-2.2.16lvm map module-info boot.0300 boot.b os2_d.b chain.b initrd.gz # tail /etc/lilo.conf image=/boot/vmlinux-2.2.16lvm label=lvm08 read-only root=/dev/rootvg/root initrd=/boot/initrd.gz append="ramdisk_size=8192" |
构建 LVM 内核和模块
构建 LVM 用户工具
按照第 6.2 节中的步骤,构建并安装 LVM 的用户工具。
安装新工具。一旦您完成此操作,您将无法进行任何 LVM 操作,因为它们与您当前运行的内核不兼容。
重命名现有的 initrd.gz
这是为了防止它被新的 initrd.gz 覆盖
# mv /boot/initrd.gz /boot/initrd08.gz |
编辑/etc/lilo.conf
使现有的引导条目指向重命名的文件。如果下次重启出现问题,您将需要使用此条目重启。更改后的条目将如下所示
image=/boot/vmlinux-2.2.16lvm label=lvm08 read-only root=/dev/rootvg/root initrd=/boot/initrd08.gz append="ramdisk_size=8192" |
运行 lvmcreate_initrd 以创建新的初始 RAM 磁盘
# lvmcreate_initrd 2.4.9 |
在 /etc/lilo.conf 中添加新条目
这个新条目用于引导新内核及其新的 initrd。
image=/boot/vmlinux-2.4.9lvm label=lvm10 read-only root=/dev/rootvg/root initrd=/boot/initrd.gz append="ramdisk_size=8192" |
重新运行 lilo
这将安装新的引导块
# /sbin/lilo |
重启
当您看到 LILO 提示符时,选择新的条目名称(在本例中为 lvm10),您的系统应该使用新的 LVM 版本启动进入 Linux。
如果新内核无法启动,则只需启动旧内核并尝试修复问题。可能是新内核没有构建所有正确的设备驱动程序,或者它们在 initrd 中不可用。请记住,访问根设备所需的所有设备驱动程序(LVM 除外)都应编译到内核中,而不是作为模块。
如果您需要在启动回旧版本时进行任何 LVM 操作,则只需重新编译旧工具并使用以下命令安装它们
# make install |