0

I have a Lenovo W530 Thinkpad (with an Nvidia k2000 GPU). I recently dual installed Windows 10 and Ubuntu 18.04.

Every time I restart I see the GRUB menu as expected. However, I am only able to boot into Ubuntu one out of about 6 or so times. The other times my computer just freezes (very annoying).

After pressing enter on Ubuntu from the GRUB menu one of the following will happen:

In all of these situations pressing ctl + alt + (f1-f12) does nothing.

  • I can boot from the Ubuntu live USB (which is how I installed Ubuntu in the first place)

  • I have tried using boot-repair (this makes no difference) and I have tried reinstalling Ubuntu twice (this makes no difference).

  • I have updated my BIOS to v2.75 as suggested in the first answer below. It made no difference.

  • Setting GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi=off" does let me boot every time but the resolution on my laptop screen is extremely low and my secondary monitor does not work.

  • I installed and am using the Nvidia 430 driver. Still the same freezing on boot happens.

  • I tried setting (individually) the following parameters on the GRUB boot screen by pressing e when the boot menu appears: acpi_enforce_resources=lax and acpi_enforce_resources=no, acpi_os_name=Linux and acpi_os_name="Windows 2013" but there was no change (i.e. still freezes on boot, usually at the 12xxx/2344x blocks blocks clean screen).

My suspicion is that this is somehow releated to the graphics card because if in my BIOS I change the option of GPU to integratedit works everytime, however, I need my GPU to work so this is not an option.

Why is this so hard? Please help end my suffering!

Thank you

Startec
  • 1,815
  • Check your BIOS settings for which video hardware to use -- your software is using an Nvidia open source driver, so your should have selected Nvidia in the BIOS. The selected opensource driver also requires the "nomodeset" at the "quiet splash" words. Or use the offered Nvidia proprietary driver (no "nomodeset" needed then). I'm using the Nvidia 390 driver on my W520. – ubfan1 Jul 08 '19 at 03:33
  • @ubfan1 what do you mean "selected Nvidia in the BIOS"? I don't see any options where nVidia is a choice in any BIOS options. – Startec Jul 08 '19 at 03:35
  • It's an option on my W520 which I need to select to allow using an external monitor. Without selecting it, the Intel video is used. – ubfan1 Jul 08 '19 at 03:36
  • Where in the BIOS is that option? Under what section? – Startec Jul 08 '19 at 03:38
  • 1
    Second top BIOS tab is "Config", under that select display ,display device, and you get a choice of integrated video (Intel), Nvidia, ... Select what you want there, to match the driver setup in your software. I select nvidia, and use the proprietary Nvidia 390 driver on my 18.04 installation. – ubfan1 Jul 08 '19 at 03:53
  • @ubfan1 thanks - I didn't know those settings existed. Mine is set to "discrete" Nvidia, and so I changed it to the 340 driver however, I still have the same booting problems. – Startec Jul 08 '19 at 04:55
  • @Startec To make things smooth while troubleshoting you should be using the integrated Intel. And the driver you need for a K2000 is 430. The 340 is only for legacy hardware. –  Jul 08 '19 at 17:22

3 Answers3

1

There's a BIOS v2.75 update released on Jun 25 2019 that might help... (you have BIOS 2.62)...

https://support.lenovo.com/us/en/downloads/DS029169

Update #1:

You had kernel panics before the BIOS update... so if you don't see that now, and all you're getting is ACPI errors, there's been a big improvement. Anyway, boot to a Ubuntu Live 19.04 DVD/USB and see if that works better.

Update #2:

It seems that acpi=off has some effect, but it's a lot to turn off the entire acpi system. Here are some acpi parameters that might serve better...

acpi=       [HW,ACPI,X86]
        Advanced Configuration and Power Interface
        Format: { force | off | strict | noirq | rsdt }
        force -- enable ACPI if default was off
        off -- disable ACPI if default was on
        noirq -- do not use ACPI for IRQ routing
        strict -- Be less tolerant of platforms that are not
            strictly ACPI specification compliant.
        rsdt -- prefer RSDT over (default) XSDT
        copy_dsdt -- copy DSDT to memory

        See also Documentation/power/pm.txt, pci=noacpi

acpi_apic_instance= [ACPI, IOAPIC]
        Format: <int>
        2: use 2nd APIC table, if available
        1,0: use 1st APIC table
        default: 0

acpi_backlight= [HW,ACPI]
        acpi_backlight=vendor
        acpi_backlight=video
        If set to vendor, prefer vendor specific driver
        (e.g. thinkpad_acpi, sony_acpi, etc.) instead
        of the ACPI video.ko driver.

acpi.debug_layer=   [HW,ACPI,ACPI_DEBUG]
acpi.debug_level=   [HW,ACPI,ACPI_DEBUG]
        Format: <int>
        CONFIG_ACPI_DEBUG must be enabled to produce any ACPI
        debug output.  Bits in debug_layer correspond to a
        _COMPONENT in an ACPI source file, e.g.,
            #define _COMPONENT ACPI_PCI_COMPONENT
        Bits in debug_level correspond to a level in
        ACPI_DEBUG_PRINT statements, e.g.,
            ACPI_DEBUG_PRINT((ACPI_DB_INFO, ...
        The debug_level mask defaults to "info".  See
        Documentation/acpi/debug.txt for more information about
        debug layers and levels.

        Enable processor driver info messages:
            acpi.debug_layer=0x20000000
        Enable PCI/PCI interrupt routing info messages:
            acpi.debug_layer=0x400000
        Enable AML "Debug" output, i.e., stores to the Debug
        object while interpreting AML:
            acpi.debug_layer=0xffffffff acpi.debug_level=0x2
        Enable all messages related to ACPI hardware:
            acpi.debug_layer=0x2 acpi.debug_level=0xffffffff

        Some values produce so much output that the system is
        unusable.  The "log_buf_len" parameter may be useful
        if you need to capture more output.

acpi_irq_balance [HW,ACPI]
        ACPI will balance active IRQs
        default in APIC mode

acpi_irq_nobalance [HW,ACPI]
        ACPI will not move active IRQs (default)
        default in PIC mode

acpi_irq_isa=   [HW,ACPI] If irq_balance, mark listed IRQs used by ISA
        Format: <irq>,<irq>...

acpi_irq_pci=   [HW,ACPI] If irq_balance, clear listed IRQs for
        use by PCI
        Format: <irq>,<irq>...

acpi_no_auto_ssdt   [HW,ACPI] Disable automatic loading of SSDT

acpi_os_name=   [HW,ACPI] Tell ACPI BIOS the name of the OS
        Format: To spoof as Windows 98: ="Microsoft Windows"

acpi_osi=   [HW,ACPI] Modify list of supported OS interface strings
        acpi_osi="string1"  # add string1 -- only one string
        acpi_osi="!string2" # remove built-in string2
        acpi_osi=       # disable all strings

acpi_pm_good    [X86]
        Override the pmtimer bug detection: force the kernel
        to assume that this machine's pmtimer latches its value
        and always returns good values.

acpi_sci=   [HW,ACPI] ACPI System Control Interrupt trigger mode
        Format: { level | edge | high | low }

acpi_serialize  [HW,ACPI] force serialization of AML methods

acpi_skip_timer_override [HW,ACPI]
        Recognize and ignore IRQ0/pin2 Interrupt Override.
        For broken nForce2 BIOS resulting in XT-PIC timer.

acpi_sleep= [HW,ACPI] Sleep options
        Format: { s3_bios, s3_mode, s3_beep, s4_nohwsig,
              old_ordering, nonvs, sci_force_enable }
        See Documentation/power/video.txt for information on
        s3_bios and s3_mode.
        s3_beep is for debugging; it makes the PC's speaker beep
        as soon as the kernel's real-mode entry point is called.
        s4_nohwsig prevents ACPI hardware signature from being
        used during resume from hibernation.
        old_ordering causes the ACPI 1.0 ordering of the _PTS
        control method, with respect to putting devices into
        low power states, to be enforced (the ACPI 2.0 ordering
        of _PTS is used by default).
        nonvs prevents the kernel from saving/restoring the
        ACPI NVS memory during suspend/hibernation and resume.
        sci_force_enable causes the kernel to set SCI_EN directly
        on resume from S1/S3 (which is against the ACPI spec,
        but some broken systems don't work without it).

acpi_use_timer_override [HW,ACPI]
        Use timer override. For some broken Nvidia NF5 boards
        that require a timer override, but don't have HPET

acpi_enforce_resources= [ACPI]
        { strict | lax | no }
        Check for resource conflicts between native drivers
        and ACPI OperationRegions (SystemIO and SystemMemory
        only). IO ports and memory declared in ACPI might be
        used by the ACPI subsystem in arbitrary AML code and
        can interfere with legacy drivers.
        strict (default): access to resources claimed by ACPI
        is denied; legacy drivers trying to access reserved
        resources will fail to bind to device using them.
        lax: access to resources claimed by ACPI is allowed;
        legacy drivers trying to access reserved resources
        will bind successfully but a warning message is logged.
        no: ACPI OperationRegions are not marked as reserved,
        no further checks are performed.

Update #3:

Normally when you add a kernel parameter (like acpi=off) you edit /etc/default/grub, and then sudo update-grub. However, if you happen to choose a bad kernel parameter, and your machine won't boot properly, it's harder to recover.

So I'll suggest a way to temporarily test various kernel parameters that only last for the current boot. If ultimately you find an acpi kernel parameter that solves all of the problems, you can make it permanent.

At the GRUB menu, select the normal desired boot choice, and then hit the e to enter edit mode. Find the string "quiet splash" and add the desired kernel parameter, like "quiet splash acpi=off", then hit control+x or F10 to continue booting.

I'd recommend trying these acpi parameters first... only one at a time...

acpi_enforce_resources=lax

acpi_enforce_resources=no

heynnema
  • 70,711
  • Correct me if I'm wrong but shouldn't it say "Windows BIOS update" and "it won't work on Linux"? – WinEunuuchs2Unix Jul 08 '19 at 01:20
  • @WinEunuuchs2Unix Usually there are ways to install those. If needed a bootable FreeDOS USB can be used. –  Jul 08 '19 at 01:31
  • Please see update - this didn't do anything. – Startec Jul 08 '19 at 02:42
  • @Startec you were' kernel panicing before... so if you don't see that now, and all you're getting is ACPI errors, there's been a big improvement. Anyway, boot to a Ubuntu Live 19.04 DVD/USB and see if that works better. – heynnema Jul 08 '19 at 03:19
  • 1
    @WinEunuuchs2Unix many modern machines can actually upgrade the BIOS from the current BIOS. No stink'in Windows required :-) – heynnema Jul 08 '19 at 03:20
  • @heynnema I don't know which option to try. I appreciate you listing them out here but am not sure how to interpret your answer. – Startec Jul 08 '19 at 04:00
  • @Startec see Update #3 in my answer. – heynnema Jul 08 '19 at 13:08
  • @Startec status please... – heynnema Jul 10 '19 at 20:22
  • @heynnema - is there anything different about setting parameters here vis in the /etc/default/grub file? Setting acpi=off works (minus no external monitor output) in the grub file, but editing in the GRUB menu causes very erratic behavior (cursor blinking at the prompt , stuck at boot etc) – Startec Jul 11 '19 at 02:21
  • @Startec The difference is recovery. Editing /etc/default/grub makes recovery after a bad parameter more difficult, vs editing in the GRUB menu only last until the next boot... good for testing. If you're having problems editing in the GRUB menu, make sure to only use the arrow keys to move around, enter the kernel parameter you wish to test, and then control-x or F10 to continue with booting. Have you tried either of the two parameters that I gave you? – heynnema Jul 11 '19 at 03:02
  • @heynnema I updated it. Setting acpi=off causes that "blocks clean" message to flicker quickly and not boot which does not happen if I set in the grub file. Unfortunately, typing these options after "quiet splash" made no difference. – Startec Jul 11 '19 at 03:24
  • @Startec you tried the two options, yes? Then try either acpi_os_name=Linux or acpi_os_name="Windows 2013". – heynnema Jul 11 '19 at 13:35
  • @Startec status please... – heynnema Jul 13 '19 at 19:12
  • @heynnema thanks for your ongoing help. Unfortunately neither of these options did anything. I updated my question to reflect this information. It just freezes at the "blocks screen". I am still trying to figure out why turning ACPI from the /etc/default/grub file works but not in this way (from the grub menu). This is so frustrating. – Startec Jul 13 '19 at 20:03
  • At least I am assuming editing /etc/default/grub will still work - I am now afraid to try it because of the blinking effect I see when I turn it off from the GRUB menu – Startec Jul 13 '19 at 20:13
  • @Startec I guess that I'm currently out of ideas. I'd love to hear if you ever get it fixed though. – heynnema Jul 13 '19 at 21:00
0

It could be you need to turn ACPI off.

To summarize the link, in /etc/default/grub change the line

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

to:

 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi=off"

and then run sudo update-grub

  • it now starts correctly, at least it did 3x in a row, but the resolution is very low and my secondary monitor does not work (almost like nomodeset is set or something). Do you know what could cause this? I see this "quiet splash" option in other threads around here. – Startec Jul 08 '19 at 03:22
  • Since ACPI (Advanced Configuration and Power Interface) controls a lot of stuff, I don't know if I'd recommend turning it completely OFF. There are other ACPI parameters that might be used though. I'll create an answer with a list... – heynnema Jul 08 '19 at 03:26
  • You may have made a slight error with "Rinzwind reported on his new HP Omen laptop the ACPI is using 3 byte words but Linux only supports 2 byte words for now" as your link doesn't refer to Rinzwind or HP Omen. Maybe you were thinking of a different question/answer? – heynnema Jul 08 '19 at 03:38
  • @heynnema I'll remove that part which was referring to general chat room convo a few days ago. – WinEunuuchs2Unix Jul 08 '19 at 05:06
0

I was able to fix this on my Asus ZenBook 14 by adding dis_ucode_ldr to the boot options.

For a temporary fix, get the grub menu, and for the "Ubuntu" option, press the e key. At the end of the line that says linux /boot... just add dis_ucode_ldr to the end. Type F10 key to continue the boot.

If this works, you will need to do this every time you boot unless you update the grub-boot options: 1. open terminal 2. type sudo gedit /etc/default/grub and hit enter 3. type your password 4. change GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" to GRUB_CMDLINE_LINUX_DEFAULT="quiet splash dis_ucode_ldr" 5. Save the file and exit gedit 6. in the terminal, type sudo update-grub 7. restart

Based on this answer: Asus zenbook 15 (UX-533FD) boot very randomly ubuntu 19.04

I hope this helps.