方法

/proc/cmdline文件中是grub的命令行参数

1
2
3
4
5
6
7
8
9
10
for x in $(cat /proc/cmdline); do
case $x in
# "..." # 省略
# 读取mysystemname
mysystemname=*)
MYSYSTEMNAME=${x#mysystemname=}
;;
# 结束
esac
done

例子

grub.cfg

1
2
3
4
5
6
menuentry "ubuntu vmlinuz-5.15.0-76" {
insmod ext2
insmod part_gpt
linux /boot/vmlinuz root=(hd0,1) vdisk=/dev/sda2 sroot=/dev/nbd0p1 mysystemname=ubuntu
initrd /boot/initrd-5
}
1
2
3
4
5
6
7
8
9
10
11
12
for x in $(cat /proc/cmdline); do
case $x in
# "..." # 省略
# 读取mysystemname
mysystemname=*)
MYSYSTEMNAME=${x#mysystemname=}
;;
# 结束
esac
done

echo $mysystemname

输出:

1
ubuntu