1

My laptop (Lenovo Yoga Slim 7 Gen 8 14APU8) has a UEFI BIOS issue which has to be patched out using a custom SSDT table (see this post for context: https://gitlab.freedesktop.org/drm/amd/-/issues/2812) in order to use suspend, and it seems that others have gotten this to work.

The problem is that I have no idea what I am doing, and I cannot find a working guide on injecting SSDT tables for grub2.

The arch wiki has a very nice guide that I followed (https://wiki.archlinux.org/title/DSDT) to create a CPIO archive, which I successfully injected using Pop_OS/systemd-boot, but the equivalent section for grub2 does not seem to work (the suspend issue persists). Similar questions on askubuntu (Including a custom ACPI DSDT with (K)Ubuntu 18.04 (RC1)) and resources elsewhere (https://gist.github.com/lamperez/d5b385bc0c0c04928211e297a69f32d7, https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1045690) haven't helped unfortunately.

Any guide that I have found online has one of the following outcomes:

  1. Nothing happens. I assume the table is just not loaded in this scenario
  2. The default Ubuntu grub2 entry does not work, and I have to use the recovery entry to undo the changes I made (adding lines to the grub.cfg Ubuntu entry manually does this)
  3. The entire grub config becomes corrupt and can only be recovered using a live CD (to be fair this only happened when I used this guide https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1045690, and it is from 2012 so that's kind of on me)

Could someone please help me troubleshoot this / provide an up-to-date guide that works with Ubuntu 24.04 LTS?

1 Answers1

1

To anyone having the same issue: the only solution in my specific case seems to be to use a CPIO archive in /boot/ and add this line to /etc/default/grub:

GRUB_EARLY_INITRD_LINUX_CUSTOM="acpi_override"

(The CPIO archive acpi_override can be created using this guide: https://wiki.archlinux.org/title/DSDT#Using_a_CPIO_archive)

To check if the command worked after running update-grub, you can check /boot/grub/grub.cfg, the linux menuentries should have a initrd line that looks something like this:

initrd /boot/acpi_override /boot/initrd.img-.... (instead of just initrd /boot/initrd.img-....)

None of the other methods online (including the acpi command in grub) seem to work anymore, but it's probably just a skill issue.