Why can't I restart/shutdown?

Solution 1:

In addition to what Delan suggested, in general you should certainly try different values for the reboot= boot parameter; I'd suggest reboot=b in particular, since that's the most common one for machines to need. Here's the comment from linux/arch/x86/kernel/reboot.c with the possible values:

/* reboot=b[ios] | s[mp] | t[riple] | k[bd] | e[fi] [, [w]arm | [c]old] | p[ci]
   warm   Don't set the cold reboot flag
   cold   Set the cold reboot flag
   bios   Reboot by jumping through the BIOS (only for X86_32)
   smp    Reboot by executing reset on BSP or other CPU (only for X86_32)
   triple Force a triple fault (init)
   kbd    Use the keyboard controller. cold reset (default)
   acpi   Use the RESET_REG in the FADT
   efi    Use efi reset_system runtime service
   pci    Use the so-called "PCI reset register", CF9
   force  Avoid anything that could hang.
 */

The kernel has a number of so-called "quirks" for particular machines that require the BIOS reboot method, but like any hardware quirks database the chances are that it's missing a few. Your computer may be one of the ones that's missing. If you find that reboot=b consistently fixes this for you, then please run 'ubuntu-bug linux' to report a kernel bug asking for this to be made the default for your machine.

You can make this change either on the GRUB command line (hit 'e' on the relevant boot entry and go to the end of the linux line), or, to make it permanent, edit /etc/default/grub and change the GRUB_CMDLINE_LINUX line, being careful to put reboot=b (or whatever) inside the quote marks.

Solution 2:

Sometimes the restart doesn't quite work properly. For example, when using Ubuntu on Apple computers, you must add reboot=pci to your boot flags to reboot properly, without hanging on the reboot message like your computer is. I'm not saying that your computer is Apple, but that boot flag may help.

Solution 3:

You can try the method is this link, which is, added:

acpi=force reboot=acpi

into:

/etc/default/grub

The final code looks like:

GRUB_CMDLINE_LINUX_DEFAULT="quiet acpi=force reboot=acpi"

Please let me know whether it would solve your problem.