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.
- 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.
- 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.
- 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. thelightdm
service) - Screen goes black here and no longer responds.
- Only error message displayed is below.
- 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:
- hung systems don't accept commands, and
- 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:
- 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.
- 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.
- 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
- Intel Virtualization Technology: Enabled
- VT-d: Enabled
- Hyper-threading: Enabled
- CPU C states: Enabled
Boot Tab
- Fast Boot: Enabled
- Boot mode select: UEFI
Security Tab -> Secure Boot Menu
- Secure Boot: Disabled
- Secure Boot Mode: Standard
Footnotes
- Default boot command in live USB:
linux /casper/vmlinuz.efi file=/cdrom/preseed/ubuntu.seed boot=casper only-ubiquity quiet splash ---