我需要能够以编程方式更新 grub 配置以删除恢复模式启动选项。我从这个问题/答案中获得了如何(手动)执行此操作的初始信息:
因此我编写了一个简单的脚本,该脚本与替换 grub 文件一起打包。该脚本简单地执行以下操作:
# Move the new grub file contents into place
cat /path/to/replacement/grub > /etc/default/grub
# Update grub with the new settings
update-grub
在此脚本中,“/path/to/replacement/grub”包含以下内容:http://paste.ubuntu.com/7328274/并替换标准文件http://paste.ubuntu.com/7328269/在系统中。系统是Ubuntu 12.04,上面的脚本以sudo身份运行。
问题是,大多数时候它都能正常工作,但有时它会完全削弱 grub,当系统重新启动时,它会进入 grub 命令行,而不是正常启动。从 grub 命令行,我可以加载内核,启动 linux,然后在 bash 命令行中,我可以运行:
sudo update-grub
然后重启,一切就都好了。但是有人能告诉我为什么有时它不能作为脚本的一部分工作吗?
笔记:
目的只是从 grub 菜单中删除恢复模式启动选项,除了运行脚本之外无需任何用户干预 - 这样做的原因很复杂,但事实就是这样:)
两个 grub 文件之间的唯一区别应该是取消注释行 'GRUB_DISABLE_RECOVERY="true"'
我将内容放入正确的文件中(而不是 cp 或 mv),因为我认为这是确保文件权限不会混乱的最简单方法。
该过程通常有效,重新启动系统会删除恢复模式 grub 菜单选项(如所需)。但有时...不起作用
答案1
sed -i "s,#GRUB_DISABLE_RECOVERY,GRUB_DISABLE_RECOVERY,g" /etc/default/grub