如何配置预置文件以使 grub 配置指向正确的驱动器

如何配置预置文件以使 grub 配置指向正确的驱动器

当我使用预置文件安装 debian 时,我有一个安装为 的实时 USB 记忆棒,并将sda1ssd 驱动器安装为sdb1。因此,我将 MBR 安装到sdb1。但是当移除 USB 记忆棒时,SSD 驱动器变为sda1。并且/boot/grub/grub.cfg不再起作用。我添加了一个后期命令以根据文档修复该问题。它很简单,如果我在机器上手动运行它,它可以工作,但在预置时会失败(重新启动后,grub 配置文件仍然有 的路径sdb1)。

d-i preseed/late_command string \
in-target sed -i 's/root\=\/dev\/sdb1/root\=\/dev\/sda1/g' /boot/grub/grub.cfg; \
in-target update-grub;

那么从 preseed 的角度来看,这里有什么问题?

PS:我也尝试过在目标 shell 中强制生成 grub 配置并运行配置,但也失败了:

d-i preseed/late_command string \
in-target grub-mkconfig -o /boot/grub/grub.cfg ; \
sed -i 's/root\=\/dev\/sdb1/root\=\/dev\/sda1/g' /target/boot/grub/grub.cfg; \
in-target bash -c 'update-grub'; 

答案1

解决方案实际上是不使用最后的更新 grub,因为它会将配置恢复为安装期间当前正在使用的配置。

所以我的预先设置步骤是:

d-i preseed/late_command string \
in-target sed -i 's#^\(GRUB_CMDLINE_LINUX_DEFAULT="quiet\)"$#\1 root=/dev/sda1"#' /etc/default/grub \
in-target grub-mkconfig -o /boot/grub/grub.cfg ; \
in-target sed -i 's/root\=\/dev\/sdb1/root\=\/dev\/sda1/g' /boot/grub/grub.cfg ;

相关内容