我在 Macbookpro 上安装有 Ubuntu 16.04。
我通过编辑文件/etc/default/grub
并添加nomodeset
和更改了我的 GRUB 设置acpi_backlight=vendor
。
重启后,我被卡在了紫色屏幕上,什么都做不了。我设法通过按 shift + 访问了 GRUB shell ESC,但从这里我无法理解如何恢复设置文件,因为我无法使用 nano、vim 或 vi。
通过使用可启动的 Ubuntu USB,我可以编辑设置文件,但无法运行
update-grub
我明白了failed to get canonical path of /cow
。
我怎样才能告诉 GRUB 使用来自 GRUB shell 的新更新的文件?!
答案1
出现该错误的原因是,当您处于实时会话中时,您没有与已安装的系统进行交互,因此您无法以通常的方式进行此类更改。
但是,你可以 chroot 到你的安装中来更新 grub,如这个答案
您需要知道根分区和启动分区的名称。如果您需要查找,请使用 gparted 或使用
sudo blkid
和/或
sudo fdisk -l
假设您的根分区是显示的最大分区type=ext4
(我们稍后会检查)。您的启动分区应显示type=vfat
fat32 或标记为启动分区。如果您没有启动分区,则无需挂载它。
现在挂载分区。这里我假设您标识的分区dev/sda1
用于启动和dev/sda2
根。根据需要替换名称。
sudo mount /dev/sda2 /mnt
现在检查你是否得到了正确的分区
ls /mnt
如果您看到了您期望找到的内容,/
例如 lib etc bin sys var proc
...那么您就做对了,所以继续:
sudo mount /dev/sda1 /mnt/boot
sudo mount --bind /dev /mnt/dev
sudo mount --bind /sys /mnt/sys
sudo mount --bind /proc /mnt/proc
现在将挂载的分区更改为根目录:
sudo chroot /mnt
现在像之前一样编辑/etc/default/grub
以删除您添加的那些参数。现在您可以
sudo update-grub
和
exit
sudo umount /mnt/dev
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/boot
sudo umount /mnt
然后重新启动!