感觉有点儿执念了,非得从硬盘分区启动光盘镜不可。
一般安装教程都介绍把光盘镜像文件烧到U盘里面,再从U盘引导启动。方法简单易操作,但需要额外U盘,通常是占用整个U盘的区间(分区表被重置了),另外,U盘往往速度更慢——昨天安装一次,安装文件花了约一个多小时。
若系统内有两块硬盘,可以把镜像文件内容释放出来,放在某一块硬盘的某个分区中,然后,安装系统文件到另一块硬盘中。此过程,可能涉及重新分区,要操作分区表,故需要独立的整块硬盘。未验证过,在同一块硬盘上,不调整分区表是否也可以。
前面,失败了好几次,可能是被我的双系统坑了而不自觉,华为整机,原有硬盘,windows系统,使用ntfs文件系统,我把镜像内容放在那边了。然后,引导的过程中,未能挂载Live镜像系统,以为没有找到正确地方(路径),更可能的原因是标准内核不认识ntfs文件系统。
这种方法更适合于原有系统中已有可用的旧版Linux,或基于旧版Linux做一个到他处导引安装的U盘——不需要全盘销毁U盘中的数据,只需要有一个数据分区及一个efi分区。步骤如下:
- 下载镜像文件 devstation.iso
- 挂载镜像文件,镜像的系统目录有
EFI, images, isolinux, LiveOS等目录
- 并将数据内容复制到某个分区的根目录下,
- 推测只要
LiveOS目录有此要求,但方便后续操作将此4目录都复制到同一分区的根目录下 - 该分区的使用文件系统应为
ext4, fat32等Linux内核内置支持的格式,ntfs不可用。 - 建议给该分区设置一个标签
LABEL,使分区可通过命令mount LABEL=xxx targetdir挂载,目的是方便在grub中查找分区。
- 推测只要
- 修改被复制到数据分区的
EFI/BOOT/grub.cfg文件,核心修改有两处- 根文件系统搜索
search –no-floppy –set=root -l xxx,即根据标签查找引导数据分区 - 内核引导命令中的根文件系统查找方法
linuxefi … root=live:CDLABEL=xxx … - 上述两处修改中的
xxx即为镜像数据所在的分区标签。 - 注意,内核加载命令中的参数名称仍然叫
CDLABEL,即root=live:CDLABEL=xxxx,此参数引导去找分区,找 LiveOS 目录下的squashfs.img,又是一个镜像文件。
- 根文件系统搜索
- 将此 grub.cfg 文件复制到原系统可引导的efi分区,或手动加载,或修改系统引导条目,随意
search --no-floppy --set=root -l 'openEuler-25.09-DevStation-netin'
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Start openEuler-25.09-DevStation-netinst-x86_64-dvd.iso 25.09' --class fedora --class gnu-linux --class gnu --class os {
linuxefi /images/pxeboot/vmlinuz root=live:CDLABEL=openEuler-25.09-DevStation-netin net.ifnames=0 biosdevname=0 rd.shell=0
initrdefi /images/pxeboot/initrd.img
}
修改为
search --no-floppy --set=root -l xxx
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Start DevStation hdisk boot' --class fedora --class gnu-linux --class gnu --class os {
linuxefi /images/pxeboot/vmlinuz root=live:CDLABEL=xxx net.ifnames=0 biosdevname=0 rd.shell=0
initrdefi /images/pxeboot/initrd.img
}