硬盘分区启动DevStation光盘镜像

感觉有点儿执念了,非得从硬盘分区启动光盘镜不可。

一般安装教程都介绍把光盘镜像文件烧到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
}
2 Likes