当我使用预置文件安装 debian 时,我有一个实时 USB 记忆棒安装为sda1
,SSD 驱动器安装为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 的角度来看,这里有什么问题呢?
答案1
解决方案实际上是不使用最后一个 update-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;