2

I know that GRUB kernel boot parameters, for example panic=-1 can be added by sudo nano /etc/default/grub and then sudo update-grub.

My application comes with a setup.sh shell script that sets everything up for the user, as I want it to be able to be used by the non-technically minded user. Anyway, a driver called intel_pstate makes my app not work, so on devices where intel_pstate is detected, I want the setup.sh file to add intel_pstate=disable to the kernel boot parameters/boot line.

I really don't want to have to tell users to edit the boot parameters themselves, and am looking for a way to, in shell script code, add intel_pstate=disable to the boot parameters while maintaining the existing boot parameters.

What I've already tried

  • Use this code (in a sudo bash shell):
cat /etc/default/grub > grub_bkp
echo "intel_pstate=disable" >> grub_bkp
echo gurb_bkp > /etc/default/grub
  • This doesn't work, take the following /etc/default/grub file for example:
GRUB_OTHER_STUFF=1
...
GRUB_CMDLINE_LINUX_DEFAULT='panic=-1 init=/my/cool/file.sh'
  • After my script is done with it, it will look like the following, not successfully applying the kernel boot parameter:
GRUB_OTHER_STUFF=1
...
GRUB_CMDLINE_LINUX_DEFAULT='panic=-1 init=/my/cool/file.sh'
intel_pstate=disable

Thank you so much for your help! :)

5
  • 2
    A hint: If you replace this string: GRUB_CMDLINE_LINUX_DEFAULT=' with this: GRUB_CMDLINE_LINUX_DEFAULT='intel_pstate=disable it should work as intended. Look into sed. Oct 3 at 6:11
  • @ArturMeinild, thank you so much for your help! It worked. I didn't know sed was a thing before. Do you want to write this up as an answer so you can get reputation from upvote and accept?
    – Android776
    Oct 3 at 6:32
  • 4
    If your software is intended for the public, a word of warning: I'd consider modifying system parameters like this and increasing the power consumption of my system pretty rude. If I found a piece of software that does that on a system I admin, that software would be gone pretty quickly. Also consider that it may possible to make your software work with pstate enabled, so this is potentially the wrong solution altogether.
    – marcelm
    Oct 3 at 14:29
  • 1
    @marcelm, thank you for your reply! I'm modified my applications install file, so it says 'Intel Pstate detected. Do you consent to removing it as it causes issues? [Y/N]. Also, my app IS a power saving app, and it can't change clock speeds with pstate enabled. I've done tests and my app greatly outweighs the savings of pstate. I'll try to get it to work with pstate tonight. Have a great day!
    – Android776
    Oct 3 at 21:37
  • 1
    @Android776 Fair enough; I agree it's a good idea to inform the user and/or ask permission. Do you have an uninstall procedure? If so, that should probable revert this change. Also, consider including a comment in /etc/default/grub that explains the purpose of disabling pstate so anyone editing that file understands why that parameter is there and what the consequences of removing it are.
    – marcelm
    Oct 4 at 5:57

1 Answer 1

5

Use sed to inject a string after the search pattern GRUB_CMDLINE_LINUX_DEFAULT=':

sed -i "s/GRUB_CMDLINE_LINUX_DEFAULT='/&intel_pstate=disable /" /etc/default/grub

After that, also make sure the script updates the GRUB configuration:

update-grub

The entire script should run as root, since root is required for the above commands.

1
  • 2
    Also, don't forget update-grub on the following line.
    – mchid
    Oct 3 at 11:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.