4

I basically need help figuring out how to get Ubuntu 16.10 AMD64 (Linux 4.8.0-22-generic kernel) to boot the system successfully so that I can go back to actually using it. Booting to 16.04 LTS is also an acceptable solution.

Below you'll find parts with additional information about the system, things I've tried, and the results I got. Thanks in advance for any help you can provide. Details ahead :O!

Summary

I bought this MSI laptop in July this year and, after a lot of troubleshooting, I was able to install Ubuntu 16.04 LTS AMD64 on it and use it for the last few months without issue. (I have it as a dual-boot system, with Windows 10 on the other side.)

I updated from 16.04 -> 16.10 a few days ago and I cannot get the laptop to boot anymore. Worse, I can't even get it to boot the same 16.04 LTS I had originally from a live USB drive. (Windows still boots, though.) The solutions I had implemented the first time (see below) are not making a difference this time around and I have no clue why that's suddenly the case.

Note that the upgrade process appeared to complete normally. I've gone through several similar questions here for previous Ubuntu versions (e.g. 14.04), but they've not worked or are not applicable to my situation. I've spent several days on this already...


Current Behavior and Error Messages

This depends on which boot option I pick, but here's the rundown of trying to boot the current upgraded 16.10 install (boot commands included):

The basic command is linux /vmlinuz-4.8.0-22-generic root=UUID... ro_quiet splash $vt_handoff, so I'll only list differences between options for readability.

  1. Default Boot Option: Command as shown above (with full UUID, of course).
    • System hangs immediately after showing the Ubuntu logo.
    • Hitting a key to show the console before the hang shows that no messages are ever written to it.
  2. Pre-Upgrade Boot Command: Added acpi_osi="Linux" pci=nomsi arguments.
    • Same behavior as above
    • These arguments were part of the solution to get it to work back in July with a 16.04 install.
  3. Recovery Mode 1: This adds the ro recovery nomodeset kernel arguments
    • Lots of output showing services getting started
    • Last message is the [OK] Started Light Display Manager. (i.e. the lightdm service)
    • Screen goes black here and no longer responds.
    • Only error message displayed is below.
  4. Recovery Mode 2: Same recovery arguments as #3, but with acpi_osi="Linux" pci=nomsi manually added
    • Basically same result as #3

The only error I see logged in options 3 and 4 is:

[FAILED] Failed to start NVIDIA Persistence Daemon.
See 'systemctl status nvidia-percistenced.service' for details

The boot process does not hang on this failure. The boot process continues until after the LightDM service has started, but before you actually see the greeter.

Also, I'd try the systemctl command, but:

  1. hung systems don't accept commands, and
  2. I had actually purged the nvidia-367 drivers/package during a previous recovery attempt (apt-get purge nvidia\*) in favor of a more recent version from the official page.

In any case, even if the driver were the problem (e.g. can't be loaded as a LKM), I'd (at most) expect the greeter and graphical UI to not show up, in which case, I'd have the terminal to log in and solve it. However, I can't get that far.

Prior Troubleshooting Attempts and Results

Since I've seen (and solved) some of these errors before, I spent the last few days trying to go through the steps and solve the problem before posting here. Unfortunately, things that have worked before for similar-looking problems are (AFAIK) not helping.

Originally Successful Solution (not working this time around)

When I troubleshooted back in July, these are the things I did that helped me solve the boot and login problems I had:

  1. Add the acpi_osi="Linux" kernel argument to workaround ACPI table bugs
    • These are generally built for Windows systems by BIOS, and can cause problems on Linux.
  2. Add the pci=nomsi kernel argument to workaround issue with this laptop
    • Without this option, the kernel would keep logging a message ad-infinitum and eat away available space in the partition, and this option fixed that problem.
  3. Disable Secure Boot to allow log in after driver installation
    • Basically, I cannot use the Nouveau driver for a project I'm working on. I need to use the NVIDIA driver, which is not signed (it builds locally during installation) and, in the secure boot world, is an untrusted kernel module.
    • In a Secure Boot environment, unsigned kernel modules cannot are not allowed to load/work as you might expect, and building/installing NVIDIA drivers lets the login screen show up, but every login attempt will fail before it you get to your desktop (it falls back right into the login screen).
    • You have to disable Secure Boot to get past this point (or find a way for Microsoft to sign your custom-built driver (good luck), or do it yourself (good luck again)...

I've tried these things this time around for my 16.10 re-install, but I've not seen the same results. The mystery is that I can't even get 16.04, which worked in July, to behave the same way now as it did back then. I have no explanation for this.

I had also used pci=off on a previous HP laptop to work around boot issues, but trying that with the MSI got me nowhere.

Booting from Live USB Fails

Right now, trying to boot 16.04 LTS or 16.10 from a live USB, with default options¹, hangs with the following messages in the console:

...
lvm2-monitor.service
tmp.mount
systemd-tmpfiles-setup.service
resolvconf.service
[ kernel-time] nouveau 0000:01:00.0: pci: failed to adjust lnkctl speed
[ kernel-time] iwlwifi 0000:02:00.0: Unsuported splx structure
[ kernel-time] NMI watchdog: BUG: soft lockup - CPU#4 stuck for 22s! [plymouthd:314]
[ kernel-time] NMI watchdog: BUG: soft lockup - CPU#4 stuck for 23s! [plymouthd:314]
[ kernel-time] ...<same message>...
[ kernel-time] INFO: task systemd:1 blocked for more than 120 seconds.
[ kernel-time]       Tainted: G             L 4.8.0-22-generic #24-Ubuntu
...
[ kernel-time] INFO: rcu_sched self-detected stall on CPU
[ kernel-time] NMI watchdog: ...<same message>...

Adding the acpi_osi="Linux" pci=nomsi to the live USB command produces slightly different output, with the added error line about pci_enable_msi failed - -22

...
lvm2-monitor.service
tmp.mount
systemd-tmpfiles-setup.service
systemd-update-utmp.service
[ kernel-time] nouveau 0000:01:00.0: pci: failed to adjust lnkctl speed
[ kernel-time] pci_enable_msi failed - -22
[ kernel-time] iwlwifi 0000:02:00.0: Unsuported splx structure
[ kernel-time] NMI watchdog: BUG: soft lockup - CPU#4 stuck for 23s! [plymouthd:314]
[ kernel-time] INFO: rcu_sched self-detected stall on CPU

I've seen the soft lockup messages before (in HP laptops) and I could always trace them back to the VT-d and CPU Virtualization options being disabled in the BIOS, and enabling them would quickly resolve that issue. While I don't immediately remember if I had these CPU stalls back in July, if I did, then I would've solved them the same way. (You still need virtualization if you want to run virtual machines anyway -e.g. virtual box.)

I read other answers around the site, some of which suggested disabling CPU C states, but that did not work for me either.


Relevant BIOS Settings

Here're the settings that have been relevant before, per tab, and their current values, which were working prior to the 16.04 -> 16.10 upgrade. Note that I've tried different enabled/disabled combinations among some of the options (e.g. disabling hyper-threading, c states, etc) already, without success.

Advanced Tab

  1. Intel Virtualization Technology: Enabled
  2. VT-d: Enabled
  3. Hyper-threading: Enabled
  4. CPU C states: Enabled

Boot Tab

  1. Fast Boot: Enabled
  2. Boot mode select: UEFI

Security Tab -> Secure Boot Menu

  1. Secure Boot: Disabled
  2. Secure Boot Mode: Standard

Footnotes

  1. Default boot command in live USB: linux /casper/vmlinuz.efi file=/cdrom/preseed/ubuntu.seed boot=casper only-ubiquity quiet splash ---
8
  • Hi @ray, the details on your question shows that you took some time to research the problem however, that might work to your disadvantage as this question question is too long(in my humble opinion anyway) , cant you possibly make it smaller? A question this long might put off some people unfortunately. That is just my opinion. Oct 17, 2016 at 7:20
  • @TshilidziMudau Déjà vu. Any suggestions?
    – code_dredd
    Oct 17, 2016 at 7:22
  • Honestly, no, none. Why?, you ask. Because I didn't read that whole question because it is way too long and i can tell you, i am not the only one who wont read the question because it is too long. Maybe I'm wrong, I guess only time will tell. I would suggest you summarize your question. That way we wont have to read too many paragraphs before we finally find out what the problem you are facing is. have a look here to see what makes a good question : askubuntu.com/help/how-to-ask Oct 17, 2016 at 9:03
  • @TshilidziMudau Well, I appreciate the thought. The post has had a summary with the question itself from the get-go with a big "summary" header and broken down into parts. The later parts were explicitly only the additional details (i.e. things I think I'd be asked about had they not been mentioned, etc). In any case, thanks for the input. I moved a few things around to try and make some things more clear.
    – code_dredd
    Oct 17, 2016 at 10:49
  • cool, you are welcome buddy. Oct 17, 2016 at 11:17

3 Answers 3

5

I was able to fix the problem shortly after posting the question, though I wanted to be sure before trying to post my answer. Note that no additional modifications to BIOS/UEFI settings were needed -aside from what I had already specified in the OP.


My Steps to Fix

The process was basically as follows:

  1. Add kernel arguments: nomodeset acpi_osi= to allow boot to proceed
    • Using acpi_osi="Linux" didn't work at first; it had to be empty as shown above¹
    • You can edit the boot commands by pressing e in the GRUB menu
  2. This allows a successful boot of 16.10 from the live USB.
    • In my case, I went for a re-install²
  3. After re-installing, I changed the kernel arguments back to pci=nomsi acpi_osi="Linux"

I'm not sure why nomodeset³ is necessary to get the system to boot at first, but not really necessary after the fact, which is probably why I forgot that I had probably done this back in July when I troubleshooted my original 16.04 LTS install. In any case, I hope this helps anyone else that might come across similar issues.


Making Changes Permanent

Currently, you have to edit the boot command every time, and that gets old fast. To update the boot command permanently, follow these steps:

  1. Open /etc/default/grub for editing, as root
    • sudo vim /etc/default/grub from the terminal
    • Change vim for your favorite editor (e.g. nano)
  2. Edit this line as follows and save the changes
    • Default: GRUB_CMDLINE_LINUX=""
    • Edited: GRUB_CMDLINE_LINUX="pci=nomsi acpi_osi=\"Linux\""
  3. Run the sudo update-grub2 command to generate an updated /boot/grub/grub.cfg file
    • Remember to not edit /boot/grub/grub.cfg directly

If you're wondering about the pci=nomsi argument, this prevents the kernel from filling up your drive (i.e. /var/log/syslog) with lots of bogus messages. This seems specific to the MSI laptop, as my desktop and a former HP laptop didn't need this workaround.


Footnotes

  1. If you don't change acpi_osi= back to acpi_osi="Linux", and you've installed the nvidia drivers package, login attempts will fail and you will see the greeter re-displayed. You can identify this because your password is correct (i.e. no error message about password mismatch) and, if you Ctrl + Alt + F1 into a terminal, you can log in successfully from there.
  2. If you have your /home directory in its own partition (as you should, IMHO), then you just make sure to mark the partition for use with the same file system (e.g. ext4) and mount point (i.e. /home), but without formatting it. I also re-entered the same account credentials during installation. Note that old accounts will still be in your /home directory, but may not show up if you use Settings >> Users, since that reads from /etc/passwd. You may need to sudo adduser ... to get them to show up correctly.
  3. See What does nomodeset do?
1
  • 1
    I can confirm the above fix works on MSI GP72 6QF in either Ubuntu 16.04 (Linux Mint actually) with the latest kernel, or Ubuntu 16.10. The caveat is, this only works for me with the proprietary NVidia driver. I cannot get any solution to work on this machine with nouveau through the integrated Intel GPU. With nouveau, only nomodeset (with acpi_osi= pci=nomsi) works, which forces software rendering. Dec 28, 2016 at 1:46
2

I have same laptop, GP72-6qf .. have Ubuntu running on it now.

  1. Make sure you have the latest Bios and firmware updates. there was a new release in October.
  2. Set CPU C states: Disabled & Fast Boot: Disabled
  3. Edit the file /etc/default/grub and change

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    

    to

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_osi= acpi_backlight=none acpi=ht pci=nomsi"
    

    Then run sudo update-grub

  4. Update Ubuntu (sudo apt update && sudo apt upgrade).

1
  • CPU C States to disabled is what got me to finally boot to the grub menu (and actually boot at all again) after i installed the nvidia-current (which is old) drivers and got the black screen problem. Thanks!
    – Scott
    Mar 3, 2017 at 2:10
0

In My case, I was having problems to get Nvidia Drivers to run on Ubuntu 16.04

My Fix:

add-apt-repository ppa:xorg-edgers/ppa
apt-get update
apt-get install nvidia-375
reboot

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .