Unresponsive System on a Surface Laptop 4

Okay! Thanks to @ricklinux for helping me out with this!

Here is the final thing for anyone who is trying to get EndeavourOS on their Surface Laptop 4 AMD – this gets you into the desktop and able to do things:

  1. Prereqs: You need to connect a keyboard and mouse – I use a USB hub so that I can use the mouse, keyboard, and live disk. You also need to make sure that you have secure boot turned completely off.

  2. Booting into the live disk: Make sure to select the option with nomodset, otherwise you’ll get stopped at a blackscreen.

  3. Before installing: Open a terminal and follow the the first three Arch-specific installation commands from the Linux Surface Installation Guide

  • curl -s https://raw.githubusercontent.com/linux-surface/linux-surface/master/pkg/keys/surface.asc \ | sudo pacman-key --add -

  • sudo pacman-key --finger 56C464BAAC421453

  • sudo pacman-key --lsign-key 56C464BAAC421453

  1. Then use your favorite text editor as sudo (I am a masochist and prefer vi, but nano will work just the same) to add the following lines at the bottom of /etc/pacman.conf
  • [linux-surface] Server = https://pkg.surfacelinux.com/arch/ For formatting reasons, it’s not breaking this up, the [linux-surface] goes on one line, the rest on the following
  1. Add the following packages (each on a new line) to /home/liveuser/user_pkglist.txt:
  • linux-surface
  • linux-surface-headers
  • iptsd
  • linux-firmware-marvell (may not be necessary)
  1. From the terminal, run sudo pacman -Syu but do not update. Let it make sure it can reach all repos and hit n

  2. Start your installation! Nothing special here, just make sure that the custom repository and packages are checked for what we added in the user_pkglist.txt. I selected systemd-boot, and this semi-guide is directed at that. Also, no encryption, I haven’t figured that part out yet.

  3. Now that the installation is finished, we need to update the bootloader to default to the surface kernel and make sure we run without the iommu (which is what seems to be breaking):

  • lsblk to get the partitions. My EFI partition is at /dev/nvme0n1p1
  • sudo mount /dev/nvme0n1p1 /mnt
  • cd /mnt/loader/entries && ls
  • There should be a bunch of files labeled by a UID with endings that include surface.conf and surface-failback.conf.
  • Edit (with sudo) the -*-surface.conf and add to the end of the line that starts with options the following:
  • amd_iommu=off iommu=off
  • Save and edit the surface-fallback.conf, adding to the end of the options line nomodset. Save this as well.
  • Finally, cd /mnt/loader/ and edit loader.conf (as sudo)
  • The first line should read default <UID>*, add surface.conf so that it reads <UID>*surface.conf
  • Save and now reboot!

That should get you to a working desktop! Thanks again to @ricklinux who spoke up and helped me get through this stage. Also, they reminded me to RTFM, which I should definitely do more often.

Edit: Proof:

2 Likes