Linux 技巧: 在系统引导期间查找 rootfs(5)

4. 使用标签、UUID 或友好的名称

UUID
UUID 表示全局惟一标识符(Universally Unique Identifier)。它是软件构造中使用的标识符标准,开放软件基金会(Open Software Foundation)将其标准化为分布式计算环境(Distributed Computing Environment,DCE)的一部分。UUID 的目的是支持分布式系统,以惟一地标识信息而无需进行重大的协调;标有 UUID 的信息可以并入单个数据库中,而无需解决名称冲突。此标准的重要应用包括 Linux ext2/ext3 文件系统、LUKS 加密分区、GNOME、KDE、Mac OS X 和 Microsoft? Globally Unique Identifiers。

某些 Linux 文件系统类型(如 ext2、ext3、reiserfs、swap 和 XFS)支持装入带有标签的文件系统而不是带有设备名称的文件系统,如果您的 Linux 系统支持,则可以转而使用 UUID。此外,如果您的设备驱动程序支持,则可以使用友好的名称。

这些方法需要 Linux 系统支持这些功能(如 Red Hat Enterprise Linux V4 和更高版本或者 SUSE Linux Enterprise Server V9 和更高版本)。由于标签、UUID 和友好的名称将永远与专用设备绑定在一起,因此不管拥有什么设备 ID 或者使用什么设备名称,系统总是能够找到根文件系统磁盘。

使用标签

1.在创建诸如 root、swap 之类的文件系统或其他文件系统时,创建一个标签。
[root@linuxhost ~]#mkfs.ext3 -L ROOT /dev/sda1
[root@linuxhost ~]#mkfs.reiserfs -l OSROOT /dev/sdb2
[root@linuxhost ~]#mkfs.xfs -L XFSROOT /dev/sde3
[root@linuxhost ~]#mkswap -L SWAP0 /dev/sdb5
2.在创建文件系统后给它添加一个标签。
[root@linuxhost ~]#e2label /dev/sda1 PRIMARY_ROOT
[root@linuxhost ~]#reiserfstune -l OSROOT /dev/sdb2
[root@linuxhost ~]#xfs_admin -L DATA1 /dev/sdf4
3.在系统中使用标签。
a.编辑 Linux 系统的 /etc/fstab,这样系统将使用标签而非设备名称来装入文件系统。下面是 /etc/fstab 内容的简单示例:
LABEL=ROOT          /         ext3    defaults        1 1
LABEL=BOOT          /boot     ext3    defaults        1 2
LABEL=SWAP          swap      swap    defaults        0 0
LABEL=HOME          /home     ext3    nosuid,auto     1 2

b.编辑 Linux 引导加载程序的 grub.conf。

title Linux
root (hd0,0)
kernel (hd0,0)/vmlinuz ro root=LABEL=ROOT rhgb quiet
initrd (hd0,0)/initrd-2.x.x-xx.img

使用 UUID

1.获得根设备的 UUID。让我们假定以下示例中的根文件系统位于 /dev/sda 磁盘设备中:
[root@linuxhost ~]#scsi_id -g -s -u /block/sda

2.使用以下命令检查带有从第 1 步中得到的设备 UUID 的根文件系统设备的 ID。

[root@linuxhost ~]#ls /dev/disk/by-id/<your device UUID>

3.在本例中,通过编辑 /etc/fstab 以在系统中使用 UUID:

/dev/disk/by-id/scsi-<your uuid>-part2 / ext3  defaults  1 1

使用友好的设备名称

如果将设备映射程序多路径(DMMP)工具用于多路径存储,则可以将友好的名称用于根文件系统以避免设备在重新启动后被 DMMP 重新编号。

1.获得根设备的 UUID。让我们假定根文件系统位于 /dev/sda 磁盘设备中。

[root@linuxhost ~]#scsi_id -g -s -u /block/sda

2.编辑 /etc/multipath.conf 以添加根文件系统设备的友好名称,如下所示:
multipaths {
multipath {
wwid   <your disk UUID get from above command>
alias    OSROOT
}
}

3.然后,在重新引导系统或重新载入 DMMP 后,根文件系统设备将拥有诸如 /dev/mapper/OSROOT 之类的设备名称(如果根文件系统使用的是此磁盘的分区 3,则将拥有 /dev/mapper/OSROOT-part3 或 /dev/mapper/OSROOTp3 设备名称)。

4.编辑 /etc/fstab 以将此友好名称用于此根文件系统设备,如下所示:

/dev/mapper/OSROOT-part3    /     ext3  defaults     1 1

5.编辑 /etc/grub.conf 以在系统启动时使用此名称。

title Linux
root (hd0,0)
kernel (hd0,0)/vmlinuz ro root=/dev/mapper/OSROOT-part3 rhgb quiet
initrd (hd0,0)/initrd-2.x.x-xx.img

结束语

6.此时,您已经完成了全部工作。您可以重新启动并查看它是否工作。

本文演示了如何设置系统以避免或修正 Linux 系统的 cannot mount rootfs 错误,并且还提供了 Linux 系统的引导进程的背景信息。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/28617.html