无法更新 chroot 内的 grub 配置

无法更新 chroot 内的 grub 配置

编辑:我要求删除它,但它被关闭了..

我想为 chrooted BTRFS 系统 (/mnt/arch(/@)) 编辑 GRUB 配置。我运行了这些命令:

> sudo chroot /mnt/arch/@/
> grub-mkconfig -o /boot/grub/grub.cfg

但我收到了这个错误:/usr/bin/grub-probe: error: cannot find a device for / (is /dev mounted?).

我怎样才能解决这个问题?

答案1

请确保/dev /proc/sys已安装在您的 chroot 中。最后两个可能不是必需的,但我总是安装它们以防万一。

您可以通过运行(外部chroot)这个命令:

for i in /dev /proc /sys; do sudo mount -o bind $i /path/to/chroot${i}; done

如果我没记错的话,Arch Linux 有一个特殊的命令可以自动执行此操作,但我不记得它的名字了。

答案2

如果您使用普通chroot命令而不是特定于发行版的包装器(例如 )arch-chroot,则需要在 chroot 之前挂载/dev/proc/sys虚拟文件系统,否则许多命令将报告奇怪的错误情况,因为它们将无法访问它们的内容d 需要。

在大多数相当现代的 Linux 上,如果需要修复的根文件系统安装到/mnt/arch/@/,则以下命令应该有效:

sudo mount -o rbind /dev /mnt/arch/@/dev
sudo mount -t proc none /mnt/arch/@/proc
sudo mount -t sysfs none /mnt/arch/@/sys
sudo chroot /mnt/arch/@

要撤消准备工作:

exit    # = come back out of the chroot
sudo umount /mnt/arch/@/sys
sudo umount /mnt/arch/@/proc
sudo umount /mnt/arch/@/dev

答案3

chroot 与arch-chroot.

arch-chroot -a

自动检测并挂载 arch 分区。手动

arch-chroot /dev/<device name>

相关内容