Ben*_*ier 7 boot dual-boot devices 12.04
我有一台带有内部 SSD 的笔记本电脑(我们称之为 samsung-SSD),我想在通过 USB3 连接的外部 SSD 上安装 ununtu 12.04(我们称之为 vertex2)。
我下载了一个 ubuntu iso 并从中创建了一个可启动的 USB 密钥。
然后我用 USB 密钥启动,并按照 ubuntu 安装:
/dev/sda is the internal samsung-SSD.
/dev/sdb is the usb key from which I am installing
/dev/sdc is the external vertex2 on which I am installing.
Run Code Online (Sandbox Code Playgroud)
安装完成,这次我从vertex2启动ubuntu。但是由于 USB 密钥不再存在,vertex2 被称为 /dev/sdb。Ubuntu 尝试在 /dev/sdc 上启动并失败,因为 /dev/sdc 不存在。
因此会出现一个 BusyBox 终端,并显示消息
放弃等待root设备。常见问题...
在此终端中,我可以执行以下操作:
# only vertex2 is plugged
> ls /dev | grep sd
/dev/sda # samsung SSD
/dev/sda1
/dev/sda2
/dev/sdb # vertex2
# removing vertex2
> ls /dev | grep sd
/dev/sda # samsung SSD
/dev/sda1
/dev/sda2
# pluging usb
> ls /dev | grep sd
/dev/sda # samsung SSD
/dev/sda1
/dev/sda2
/dev/sdb # usb stick
# pluging vertex2 in addition to usb stick
> ls /dev | grep sd
/dev/sda # samsung SSD
/dev/sda1
/dev/sda2
/dev/sdb # usb stick
/dev/sdc # vertex2
Run Code Online (Sandbox Code Playgroud)
现在 vertex2 被称为/dev/sdc(在安装过程中)。
> exit # this command tries to resume the boot process
Run Code Online (Sandbox Code Playgroud)
这样我就可以在 ubuntu 上启动了。
所以我的问题是:如何配置 ubuntu 以便它尝试在/dev/sdb而不是/dev/sdc 上启动?
我可以用mount和实现chroot吗?
编辑:我的fstab:
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sdc2 during installation
UUID=2586eee0-5f24-462b-b44d-5c9a25aebe6c / ext2 errors=remount-ro 0 1
# swap was on /dev/sdc5 during installation
UUID=56498034-3361-4d7d-ae7f-dc8e69b582ed none swap sw 0 0
Run Code Online (Sandbox Code Playgroud)
我不明白的是,在我的 fstab 中,vertex2 是由它的 UUID 知道的。因此,它是否显示为 sdb 或 sdc 应该无关紧要。然而,只有当它显示为 sdc 时我才能启动......我试图用 fstab 中的 sdb 替换顶点 UUID,但它没有帮助。就像其他一些文件用于在启动时挂载驱动器一样。
编辑 2:在启动菜单中,我可以编辑条目。如果我编辑 ubuntu 条目(通过按e),我会看到以下文字:
recordfail
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='hd2,msdos2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd2,msdos2 --hint-efi=hd2,msdos2 --hint-baremetal=ahci2,msdos2 25\
86eee0-5f24-462b-b44d-5c9a25aebe6c
else
search --no-floppy --fs-uuid --set=root 2586eee0-5f24-462b-b44d-5c9a25aebe6c
fi
linux /boot/vmlinuz-3.5.0-17-generic root=/dev/sdc2 ro quiet splash $vt_handoff
initrd /boot/initrd.img-3.5.0-17-generic
Run Code Online (Sandbox Code Playgroud)
如果我将 sdc2 更改为 sdb2,然后按 f10 恢复启动,ubuntu 会成功启动(没有 BusyBox 提示)。
本文位于/boot/grub/grub.cfg. 但我不应该直接编辑它。它有这个标题:
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
Run Code Online (Sandbox Code Playgroud)
我在 grub 配置中没有看到 /dev/sdc2 :
> sudo grep -r "sdc2" /etc/grub.d/
> #no results
Run Code Online (Sandbox Code Playgroud)
sdc2 来自哪里?如何将其永久更改为 sdb2 ?(引导菜单中的更改只是暂时的。)
您应该尝试设置以下之一:
GRUB_DEVICE_UUID=2586eee0-5f24-462b-b44d-5c9a25aebe6c
GRUB_DEVICE=/dev/sdb
Run Code Online (Sandbox Code Playgroud)
在文件中:/etc/default/grub
然后运行:sudo update-grub