用dd (或/bin/cp -a)克隆旧硬盘24.03分区到新硬盘的新分区后,
修改了/etc/fstab中的 / 分区名,然后
怎么启动到新分区?
原系统的 efi 分区呢?这里才有引导程序,然后,再查看 该分区下的 /EFI/openEuler/grub.cfg
文件内容,确保找得到合适的根分区,一般使用 uuid 进行分区标识,你使用 dd 命令,可能会让新分区与旧硬盘上的分区(文件系统)具有相同的标识。
我没有试过。
新硬盘下的ubuntu里面做grub-install; grub-update后, 能启动到 新硬盘下的OpenEuler 24.03, 但就是报一堆错,什么网络不能启动等等,卡死不动,走不到bash登录界面。不知道是不是须要在ubuntu的/boot/grub/grub.cfg里,添加什么额外的启动参数?
这个是我的系统条目:
menuentry 'openEuler (6.6.0-82.0.0.75.oe2403.x86_64) 24.03 (LTS)' --class openeuler --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-6.6.0-28.0.0.34.oe2403.x86_64-advanced-8346b2d3-4d04-4f4f-b5a0-575eb8b271ec' {
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-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 8346b2d3-4d04-4f4f-b5a0-575eb8b271ec
else
search --no-floppy --fs-uuid --set=root 8346b2d3-4d04-4f4f-b5a0-575eb8b271ec
fi
echo 'Loading openEuler (6.6.0-82.0.0.75.oe2403.x86_64) 24.03 (LTS)'
linuxefi /boot/vmlinuz-6.6.0-82.0.0.75.oe2403.x86_64 root=UUID=8346b2d3-4d04-4f4f-b5a0-575eb8b271ec cgroup_disable=files apparmor=0 crashkernel=512M
echo 'Loading initial ramdisk ...'
initrdefi /boot/initramfs-6.6.0-82.0.0.75.oe2403.x86_64.img
}
这里面,最重要只有三行:
search --set=roo .... # 查找文件系统,用作根文件系统
linuxefi .../vmlinux root=UUID=xxxx
initrdefi ..../initramfs....img
你要根据你的文件系统,修改一下,ubuntu系统自带的grub,默认驱动应该很全的,所以前面的 ~load_video, insmod~ 都可以不要。
我注意到OpenEuler 24.03的grub.cfg 是用 linuxefi, initrdefi 指令,但Ubuntu 24.04里,用的是 linux, initrd 指令。 前者好象是 secure boot 方式启动,所以可能禁止加载了某些没有签名的驱动模块 ?
有你说的这种可能。
好像在硬盘启动、安装 openEuler 的时候,使用ubuntu 的grub加载 oE 内核,好像是有问题的,说什么不一致。我后来把bios中的安全启动关闭了,就可以了。
不完整的处理办法,试着把 bios 中安全启动关闭吧?
成功,完美解决:
在新硬盘下的完整拷贝过来的OpenEuler分区里的根目录下面,
加个空文件 .autorelabel, 就能用ubuntu的grub正常启动了。痛苦了半年!
touch /.autorelabel
这是 SELinux 的原因,不是secure boot的原因。