如何修改Ubuntu安装镜像以实现从U盘引导并加载硬盘中的Ubuntu系统?
如何修改Ubuntu安装镜像以实现从U盘引导并加载硬盘中的Ubuntu系统?
看来你遇到的是硬盘启动故障,想通过U盘绕过去加载硬盘里的Ubuntu对吧?我来给你一步步拆解可行的方案,先说说你之前chroot /cdrom失败的原因,再给两种实操方法:
为什么你之前的chroot尝试失败?
Ubuntu安装U盘的/cdrom目录只是挂载了安装镜像的只读内容,里面只有安装程序需要的文件,不是一个完整的可chroot的Linux系统,自然找不到/bin/bash。真正的运行环境其实是加载到内存里的临时文件系统,所以chroot到/cdrom肯定行不通。
方案一:修改U盘GRUB配置,直接引导硬盘里的Ubuntu
这个方法不用进入试用模式,直接在U盘的GRUB菜单里加个选项,让它直接加载硬盘上的Ubuntu内核和根文件系统:
- 插入Ubuntu安装U盘,开机后按
Esc或Shift调出GRUB菜单(不同机型可能按键不同,多试几次)。 - 按
C进入GRUB命令行模式,先找到硬盘上的Ubuntu分区:- 输入
ls,会列出所有存储设备,比如(hd0)、(hd0,1)、(hd1)这些(hd0一般是内置硬盘,hd1是U盘)。 - 逐个检查分区,输入
ls (hd0,2)/(替换数字为实际分区号),如果能看到boot、etc这些目录,就说明找到Ubuntu的根分区了。
- 输入
- 手动输入引导命令(替换成你找到的分区和内核版本):
set root=(hd0,2) linux /boot/vmlinuz-5.15.0-78-generic root=/dev/sda2 ro quiet splash initrd /boot/initrd.img-5.15.0-78-generic boot- 要是记不清内核版本号,可以用通配符试试:
linux /boot/vmlinuz-* root=/dev/sda2 ro,GRUB会自动匹配最新的内核。
- 要是记不清内核版本号,可以用通配符试试:
- 如果手动引导成功,想把这个选项永久加到U盘的GRUB菜单里:
- 重启进入U盘的“Try Ubuntu without installing”模式,打开终端。
- 找到U盘的分区(用
lsblk查看,一般是/dev/sdb1),挂载到/mnt:mount /dev/sdb1 /mnt。 - 编辑U盘的GRUB配置文件:
nano /mnt/boot/grub/grub.cfg,在文件末尾添加以下条目(替换分区和内核信息):menuentry "Boot Ubuntu from Internal Hard Drive" { set root=(hd0,2) linux /boot/vmlinuz-5.15.0-78-generic root=/dev/sda2 ro quiet splash initrd /boot/initrd.img-5.15.0-78-generic } - 保存退出(Ctrl+O,回车,Ctrl+X),下次U盘启动就能看到这个菜单选项了。
方案二:从U盘启动后,chroot到硬盘的Ubuntu系统
这个方法适合想修复硬盘启动问题,或者临时进入硬盘系统操作的场景:
- 从U盘启动,选择“Try Ubuntu without installing”进入试用环境。
- 打开终端,用
lsblk或fdisk -l找到硬盘上的Ubuntu根分区(比如/dev/sda2)。 - 挂载根分区到/mnt:
sudo mount /dev/sda2 /mnt。 - 挂载系统必需的虚拟文件系统,不然chroot后很多命令用不了:
sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys - 现在chroot进入硬盘的系统:
sudo chroot /mnt /bin/bash,这时候你就进入硬盘里的Ubuntu环境了。 - 要是想彻底修复硬盘启动问题,可以在chroot后执行:
执行完重启,应该就能直接从硬盘启动了。如果不想修复,也可以每次从U盘启动后重复以上步骤进入硬盘系统。update-grub grub-install /dev/sda
注意事项
- 如果你的Ubuntu是装在LVM逻辑卷或者加密分区上,需要先解锁并挂载对应的逻辑卷,再进行chroot操作。
- 分区编号一定要核对准确,别搞错了U盘和硬盘的分区,避免数据风险。
备注:内容来源于stack exchange,提问作者NibbleAbit
相关产品推荐
相关产品推荐

