我怎么知道我从哪个分区启动?

我怎么知道我从哪个分区启动?

我有一台具有多启动分区的机器。我在一个分区上安装了 Ubuntu 14.04,在第二个分区上安装了 Ubuntu 15.04,在第三个分区上安装了 Ubuntu 16.04。有没有办法从命令行知道我从哪个分区启动,以便找到/boot/grub/grub.cfg用于启动过程的分区?我/boot/grub/grub.cfg 在三个分区上都有。

答案1

一旦 GRUB 将启动权移交给内核,内核就不知道是什么启动了它,而且/boot可能不是 GRUB 使用的那个。您可以检查boot/grub/grub.cfg每个分区的访问时间,看看最近访问的是哪一个。这样您就可以知道 GRUB 使用了哪个分区的配置文件。

stat -c %x /boot/grub/grub.cfg

如果访问时间没有更新,则必须查找各个 GRUB 配置文件使用的内核参数是否有任何差异。如果您可以更改它们,例如,在每个配置文件中添加foo=1foo=2等,然后运行并重新启动,然后您可以检查使用了这些值中的哪些。GRUB_CMDLINE_LINUXsudo update-grub2/proc/cmdline

答案2

要显示当前已安装的根文件系统的设备:

awk '$2=="/"{print $1}' /proc/mounts

要显示当前运行的 Ubuntu 发行版本:

lsb_release -rs

答案3

如您所知,您正在寻找的文件位于/boot您正在运行的系统的目录中。要么/boot是单独的分区,要么不是;如果您的/boot是一个单独的分区,您应该寻找:

$ lsblk -r | grep '/boot'
sda2 8:1 0 400M 0 part /boot

意味着grub.cfg被使用的位于sda2

否则你应该寻找root

$ lsblk -r | grep '/$'
sda1 8:1 0 121.2G 0 part /

这次它位于sda1

或者甚至乐趣我们可以检查启动时间参数:

$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-3.16.0-4-686-pae root=UUID=938495-1fe2-3302 ro quiet

然后使用它UUID来找出哪个分区是你的根分区。

$ sudo blkid | grep 938495-1fe2-3302
/dev/sda1: UUID="938495-1fe2-3302"

意思是从sda1

您还可以检查这些启动参数以查看哪个grub.cfg文件包含它们,这仅当您的启动参数grub.cfg彼此不同时才有效。

答案4

lsblk

并检查哪个磁盘已挂载。如果您的挂载点中/有,请阅读下面的评论或 Ravexina 的回答。/boot

如果你不确定,请检查 UUID

lsblk -o UUID,NAME,SIZE,MOUNTPOINT

相关内容