如何编写修改 Ubuntu 内核启动参数的 .sh 文件?

Int*_*lot 2 command-line boot grub2 bash scripts

我知道GRUB内核启动参数,例如可以通过和 然后panic=-1添加。sudo nano /etc/default/grubsudo update-grub

我的应用程序附带了一个setup.shshell 脚本,可以为用户设置一切,因为我希望非技术型用户也能使用它。无论如何,一个名为的驱动程序intel_pstate使我的应用程序无法工作,因此在intel_pstate检测到的设备上,我希望该setup.sh文件添加intel_pstate=disable到内核启动参数/启动行。

我真的不想告诉用户自己编辑启动参数,我正在寻找一种方法,在 shell 脚本代码中添加intel_pstate=disable启动参数,同时维护现有的启动参数。

我已经尝试过的

  • 使用此代码(在 sudo bash shell 中):
cat /etc/default/grub > grub_bkp
echo "intel_pstate=disable" >> grub_bkp
echo gurb_bkp > /etc/default/grub
Run Code Online (Sandbox Code Playgroud)
  • 这不起作用,以以下 /etc/default/grub 文件为例:
GRUB_OTHER_STUFF=1
...
GRUB_CMDLINE_LINUX_DEFAULT='panic=-1 init=/my/cool/file.sh'
Run Code Online (Sandbox Code Playgroud)
  • 我的脚本完成后,它将如下所示,未成功应用内核启动参数:
GRUB_OTHER_STUFF=1
...
GRUB_CMDLINE_LINUX_DEFAULT='panic=-1 init=/my/cool/file.sh'
intel_pstate=disable
Run Code Online (Sandbox Code Playgroud)

非常感谢你的帮助!:)

Art*_*ild 5

用于sed在搜索模式后插入字符串GRUB_CMDLINE_LINUX_DEFAULT='

sed -i "s/GRUB_CMDLINE_LINUX_DEFAULT='/&intel_pstate=disable /" /etc/default/grub
Run Code Online (Sandbox Code Playgroud)

之后,还要确保脚本更新 GRUB 配置:

update-grub
Run Code Online (Sandbox Code Playgroud)

整个脚本应以 root 身份运行,因为上述命令需要 root 权限。

  • 另外,不要忘记以下行中的“update-grub”。 (2认同)