10.2. 使用 LVM 根分区和 initrd 升级到 LVM 1.0.8

如果您仔细遵循这些步骤,这相对简单。建议您准备好良好的备份和合适的救援磁盘,以防万一。

运行 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

            
/boot包含旧内核和初始 RAM 磁盘,以及 LILO 启动文件和以下条目/etc/lilo.conf
 # 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"

            

  1. 构建 LVM 内核和模块

    按照第 5 章 - 第 6.2 节中概述的步骤,获取并构建 LVM 的必要内核组件。

  2. 构建 LVM 用户工具

    按照第 6.2 节中的步骤,构建并安装 LVM 的用户工具。

    安装新工具。一旦您完成此操作,您将无法进行任何 LVM 操作,因为它们与您当前运行的内核不兼容。

  3. 重命名现有的 initrd.gz

    这是为了防止它被新的 initrd.gz 覆盖

    # mv /boot/initrd.gz /boot/initrd08.gz
                         

  4. 编辑/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"
                         

  5. 运行 lvmcreate_initrd 以创建新的初始 RAM 磁盘

    # lvmcreate_initrd 2.4.9
                         
    不要忘记将新的内核版本放入其中,以便它选择正确的模块。

  6. 在 /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"
                         

  7. 重新运行 lilo

    这将安装新的引导块

    # /sbin/lilo
                         

  8. 重启

    当您看到 LILO 提示符时,选择新的条目名称(在本例中为 lvm10),您的系统应该使用新的 LVM 版本启动进入 Linux。

    如果新内核无法启动,则只需启动旧内核并尝试修复问题。可能是新内核没有构建所有正确的设备驱动程序,或者它们在 initrd 中不可用。请记住,访问根设备所需的所有设备驱动程序(LVM 除外)都应编译到内核中,而不是作为模块。

    如果您需要在启动回旧版本时进行任何 LVM 操作,则只需重新编译旧工具并使用以下命令安装它们

    # make install
                         
    如果您这样做,请不要忘记在重启进入新的 LVM 版本时安装新工具。

当您对新系统感到满意时,请记住更改 lilo.conf 文件中的 ``default='' 条目,使其成为默认内核。