For those out there who share the embarrassing experience of still running Fedora 19 on an antiquated Dell Optiplex 790 as their work desktop machine, a fix for the dreaded “damn machine won’t reboot” bug.
NOTE: I updated this post to describe how to make the kernel command line change automatically across kernel updates by using the /etc/default/grub file. This is a much safer and efficient way to do things than directly editing the grub.cfg file. This solution has been tested on Fedora 17 through 20, as well as CentOS/Red Hat 7.
Oh yes, be assured that this is a bug in the latest Linux kernels (or Dell firmware, maybe), as evidenced in Red Hat Bugzilla # 832218, beginning with Fedora 17 and as of this writing still applies to Fedora 20, as well as CentOS/Red Hat 7 (which is based on a stable fork of Fedora 19).
This isn’t isolated to Red Hat, as shown by Ubuntu Launchpad Bug # 818933, and goes back to at least 2011.
The fix is simple though, and anticipated by the kernel developers long ago in providing for various options to be passed into the kernel on boot (see this in the kernel source code for reboot.c).
The recommended fix in the above Red Hat bug report is add “reboot=pci” to the command line that loads the kernel.
On Red Hat distributions the simplest way to do this is by inserting that parameter into /boot/grub2/grub.cfg command string for the running kernel as root.
The “correct” way to do that is to edit the /etc/default/grub file which is used to build grub.cfg rather than directly editing the grub.cfg file. The parameter text needs to be inserted into the defininition for the GRUB_CMDLINE_LINUX variable in /etc/default/grub:
GRUB_CMDLINE_LINUX="vconsole.font=latarcyrheb-sun16 reboot=pci rd.lvm.lv=philx/swap rd.lvm.lv=philx/root $([ -x /usr/sbin/rhcrashkernel-param ] && /usr/sbin/rhcrashkernel-param || :) rhgb quiet"
Be sure to recompile the configuration after making your changes, using the command:
grub2-mkconfig -o /boot/grub2/grub.cfg
Note that the position of the parameter really doesn’t much matter but it’s probably best to nest it rather than simply append it, I chose a position in between the command that defines the default console font and the rd.lvm.lv command.
Restart the system to effect this change.
To confirm the change is enabled in the running kernel, use cat /prod/cmdline after restarting. Test by opening a shell window and issuing a “reboot” at root.