Bug 11910 - grub按照root=/dev/dm-数字生成,使用Anolis OS 23的grub切换到别的内核的时候存在数字编号差异,没法启动
Summary: grub按照root=/dev/dm-数字生成,使用Anolis OS 23的grub切换到别的内核的时候存在数字编号差异,没法启动
Status: NEW
Alias: None
Product: Anolis OS 23
Classification: Anolis OS
Component: Others (show other bugs) Others
Version: 23.1
Hardware: aarch64 Linux
: P3-Medium S3-normal
Target Milestone: ---
Assignee: happy_orange
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-11-16 19:45 UTC by lwchang
Modified: 2024-11-16 19:45 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description lwchang 2024-11-16 19:45:13 UTC
Description of problem:
双系统 先安装 AnolisOS 7.9再安装AnolisOS 23.1,再在新系统创建一个lvm,AnolisOS生成的grub引导root=/dev/dm-1 按照dm设备数字编码生成的。

### BEGIN /etc/grub.d/30_os-prober ###
        menuentry 'Anolis OS 7.9 (on /dev/mapper/ao-root)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/vmlinuz-4.19.91-25.2.an7.aarch64--df41d258-3db4-4465-bc62-a34f077ae3cf' {
                insmod part_gpt
                insmod ext2
                set root='hd0,gpt2'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//sas/disk@20000,gpt2' --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  a5dfb72d-f639-4296-9e2c-ef3e155fdaab
                else
                  search --no-floppy --fs-uuid --set=root a5dfb72d-f639-4296-9e2c-ef3e155fdaab
                fi
                linux /vmlinuz-4.19.91-25.2.an7.aarch64 root=/dev/dm-1
                initrd /initramfs-4.19.91-25.2.an7.aarch64.img
        }
        menuentry 'Anolis OS 7.9 (on /dev/mapper/ao-root)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/vmlinuz-0-rescue-067d280a63154e8f8b78f3ffe436a526--df41d258-3db4-4465-bc62-a34f077ae3cf' {
                insmod part_gpt
                insmod ext2
                set root='hd0,gpt2'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//sas/disk@20000,gpt2' --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  a5dfb72d-f639-4296-9e2c-ef3e155fdaab
                else
                  search --no-floppy --fs-uuid --set=root a5dfb72d-f639-4296-9e2c-ef3e155fdaab
                fi
                linux /vmlinuz-0-rescue-067d280a63154e8f8b78f3ffe436a526 root=/dev/dm-1
                initrd /initramfs-0-rescue-067d280a63154e8f8b78f3ffe436a526.img
        }

在新系统23.1下为:   253:1    0  100G  0 lvm  /root/sda3 
dm-1是没问题的。
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda               8:0    0  1.1T  0 disk 
├─sda1            8:1    0  512M  0 part /root/sda3/boot/efi
├─sda2            8:2    0    1G  0 part /root/sda3/boot
├─sda3            8:3    0  100G  0 part 
│ └─ao-root     253:1    0  100G  0 lvm  /root/sda3
├─sda4            8:4    0  512M  0 part /boot/efi
├─sda5            8:5    0    1G  0 part /boot
└─sda6            8:6    0  100G  0 part /
nvme1n1         259:0    0    7T  0 disk 
└─nvme1n1p1     259:2    0    7T  0 part 
  └─lvmnvme-log 253:0    0   10T  0 lvm  
nvme0n1         259:1    0    7T  0 disk 
└─nvme0n1p1     259:3    0    7T  0 part 
  └─lvmnvme-log 253:0    0   10T  0 lvm  
nvme3n1         259:4    0    7T  0 disk 
└─nvme3n1p1     259:5    0    7T  0 part 
  └─lvmnvme-log 253:0    0   10T  0 lvm  
nvme2n1         259:6    0    7T  0 disk 
└─nvme2n1p1     259:7    0    7T  0 part 
  └─lvmnvme-log 253:0    0   10T  0 lvm  


当切换到 Anolis OS 7.9时候:内核对lvm设备命名的数字编号不一致。 253:0    0  100G  0 lvm  / 现在是dm-0了 系统没法引导 

[root@localhost ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
nvme0n1         259:0    0    7T  0 disk 
└─nvme0n1p1     259:1    0    7T  0 part 
  └─lvmnvme-log 253:1    0   10T  0 lvm  
nvme3n1         259:3    0    7T  0 disk 
└─nvme3n1p1     259:5    0    7T  0 part 
  └─lvmnvme-log 253:1    0   10T  0 lvm  
nvme2n1         259:4    0    7T  0 disk 
└─nvme2n1p1     259:7    0    7T  0 part 
  └─lvmnvme-log 253:1    0   10T  0 lvm  
nvme1n1         259:2    0    7T  0 disk 
└─nvme1n1p1     259:6    0    7T  0 part 
  └─lvmnvme-log 253:1    0   10T  0 lvm  
sda               8:0    0  1.1T  0 disk 
├─sda4            8:4    0  512M  0 part 
├─sda2            8:2    0    1G  0 part /boot
├─sda5            8:5    0    1G  0 part 
├─sda3            8:3    0  100G  0 part 
│ └─ao-root     253:0    0  100G  0 lvm  /
├─sda1            8:1    0  512M  0 part /boot/efi
└─sda6            8:6    0  100G  0 part 
[root@localhost ~]# cat /etc/os-release 
NAME="Anolis OS"
VERSION="7.9"
ID="anolis"
ID_LIKE="rhel fedora centos"
VERSION_ID="7.9"
PRETTY_NAME="Anolis OS 7.9"
ANSI_COLOR="0;31"
HOME_URL="https://openanolis.cn/"
BUG_REPORT_URL="https://bugs.openanolis.cn/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"



Version-Release number of selected component (if applicable):


How reproducible:
1,安装 Anolis OS 7.9 划分两个lvm vg组,分别创建lv。此时grub定义是安装名称路径的
menuentry 'Anolis OS (4.19.91-25.2.an7.aarch64) 7.9' --class anolis --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.19.91-25.2.an7.aarch64-advanced-df41d258-3db4-4465-bc62-a34f077ae3cf' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt2'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//sas/disk@20000,gpt2' --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  a5dfb72d-f639-4296-9e2c-ef3e155fdaab
        else
          search --no-floppy --fs-uuid --set=root a5dfb72d-f639-4296-9e2c-ef3e155fdaab
        fi
        linux /vmlinuz-4.19.91-25.2.an7.aarch64 root=/dev/mapper/ao-root ro crashkernel=auto rd.lvm.lv=ao/root LANG=en_US.UTF-8
        initrd /initramfs-4.19.91-25.2.an7.aarch64.img
}

2, 再安装AnolisOS 23.1,AnolisOS 23.1的grub规则是 
linux /vmlinuz-0-rescue-067d280a63154e8f8b78f3ffe436a526 root=/dev/dm-1

3,再从AnolisOS 23.1定义的grub进入系统,到达AnolisOS 7.9内核,这个规则下它的根是dm-0,不是dm-1 造成结果没法引导。


Steps to Reproduce:
1.
2.
3.

Actual results:
从AnolisOS 23.1定义的grub进入系统,到达AnolisOS 7.9内核,这个规则下它的根是dm-0,不是dm-1 造成结果没法引导。

Expected results:
应该是 AnolisOS 23.1 grub2-efi bug, 建议生成grub.cfg的时候按照 root=/dev/mapper/ao-root而不是root=/dev/dm-1
Additional info:
[root@anolis ~]# rpm -qf /boot/grub2/grub.cfg
grub2-efi-aa64-2.12-8.an23.aarch64
[root@anolis ~]# cat /etc/os-release 
NAME="Anolis OS"
VERSION="23"
ID="anolis"
VERSION_ID="23"
PLATFORM_ID="platform:an23"
PRETTY_NAME="Anolis OS 23"
ANSI_COLOR="0;31"
HOME_URL="https://openanolis.cn/"
BUG_REPORT_URL="https://bugzilla.openanolis.cn/"

[root@anolis ~]# uname -r
6.6.25-2.1.an23.aarch64