You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何手动为Grub2添加菜单条目以从ISO文件启动,同时保留现有操作系统并安装新系统

如何手动为Grub2添加菜单条目以从ISO文件启动,同时保留现有操作系统并安装新系统

别担心,我一步步带你搞定这个事儿,毕竟刚接触Grub的时候确实容易懵😉 你想要保留现有系统,同时通过Grub菜单从ISO启动安装新系统,这个思路完全可行,下面是具体操作步骤:

一、前期准备

  • 把你要安装的系统ISO文件放到一个Grub能识别的分区里(推荐放到/boot目录,或者某个ext4格式的分区根目录,尽量别用NTFS分区,Grub对它的支持偶尔会出问题)
  • 打开终端,输入blkid命令,找到存放ISO的分区信息,比如设备名(/dev/sda2)或者UUID,记下来后面会用到
  • 重要提醒:先备份Grub的配置文件,防止操作失误搞坏现有启动项:
    sudo cp /etc/default/grub /etc/default/grub.bak
    sudo cp /boot/grub/grub.cfg /boot/grub/grub.cfg.bak
    

二、添加自定义Grub菜单条目

我们不会直接修改自动生成的grub.cfg(因为每次更新Grub都会覆盖它),而是修改专门的自定义条目文件:

  1. 打开自定义条目编辑文件:
    sudo nano /etc/grub.d/40_custom
    
  2. 在文件末尾添加以下菜单条目(根据你的实际情况修改内容):
    menuentry "安装新系统(从ISO启动)" {
        # 替换成你的ISO文件路径,比如放到/dev/sda2根目录就是"/ubuntu-22.04.iso",放到/iso文件夹就是"/iso/ubuntu-22.04.iso"
        set isofile="/ubuntu-22.04.iso"
        # 替换成你的分区设备名,hd0是第一块硬盘,2是第三分区(Grub从0开始计数)
        loopback loop (hd0,2)$isofile
        # 下面的路径根据发行版调整,Ubuntu/CentOS等发行版的内核路径可能不同
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet splash
        initrd (loop)/casper/initrd
    }
    
    👉 小说明:
    • loopback loop是让Grub把ISO文件当成一个虚拟磁盘挂载
    • linuxinitrd行要对应ISO里的内核和初始化镜像路径,比如CentOS的话可能是(loop)/isolinux/vmlinuz(loop)/isolinux/initrd.img,你可以先挂载ISO看看里面的结构再调整
  3. 保存并退出nano:按Ctrl+O,回车确认保存,再按Ctrl+X退出

三、更新Grub配置

执行下面的命令让Grub识别新添加的菜单条目:

sudo update-grub

执行完后会看到输出里提到“Found ...”,说明新条目已经被成功添加进去了

四、启动安装

重启你的电脑,在Grub启动菜单里就能看到你刚才添加的“安装新系统(从ISO启动)”条目,选择它就能进入ISO的安装界面了。安装的时候记得选择“与现有操作系统共存”的选项,这样就能保留原来的系统,把新系统装到空闲空间里。

注意事项

  • 如果你的机器是UEFI模式,确保当前系统也是UEFI启动的,并且EFI分区已经正确挂载(一般挂载在/boot/efi
  • 一定要确认ISO文件的路径和分区编号正确,不然会启动失败
  • 如果启动失败,可以重启回到原来的系统,检查配置文件哪里写错了,或者恢复之前备份的配置文件

备注:内容来源于stack exchange,提问作者DaBoot

火山引擎 最新活动