Unresponsive System on a Surface Laptop 4

Hello! So I’m new to EndeavourOS (and Arch in general), but have been working in the RHEL space for quite some time. That gives me a bit more knowledge for helping troubleshooting, but at the cost of being equally destructive in tinkering with things.

EDIT: SOLVED AND ON THE DESKTOP! See solution below.

Here is my scenario: I have a Surface Laptop 4 (AMD CPU + AMD Renoir GPU) – long story short I had Fedora on it for a while, but I’ve had issues with the screen flickering too much for daily driving. This became a project and a project laptop. I figure why not try a new *nix OS while I troubleshoot things because I am a masochist.

I can boot into the live environment with no issues (as long as it’s in fallback nomodset mode). Linux Surface (https://github.com/linux-surface/linux-surface/wiki/Installation-and-Setup) provides a full DKMS suite and kernel that supports this laptop. I had hoped that by following some of the commands in the Arch section, I could get EndeavourOS to work – that was my theory anyway. I’m pretty sure I can make it work, I just have to get past this hurdle.

So, here’s my issue. Everytime I install the OS, the system boots into a black screen.

My first set of troubleshooting was to try to preload the packages using the KB “Customizing the Install Process”. I then imported and signed the keys to the Linux Surface repo and added the Linux Surface repo to /etc/pacman.conf, and added the packages I needed to home/liveuser/user_pkglist.txt (the packages came up with the installer, which was great to see). I go through the installation process without issue and reboot, making sure to select the Surface kernel during the boot prompt and… black screen.

So, that’s where I’m sitting at, at the time of writing this. How do I access the installed OS boot logs from within the live environment so I can share the logs? How can I troubleshoot this more to find out where the offending issue is? I appreciate any help provided!

(Logged in on the live environment, pulled the neofetch;)

Quick addition: the system freezes and goes black screen right after the error “” during the boot sequence. Bluetooth: hci0: Malformed MSFT vendor event: 0x02

Okay, after reading some other posts, I think I am able to get the logs, but every time I try to upload them, I get an error “Sending log data failed, returned empty URL”. So, I copied it to a pastebin manually:

(Removed the pastebin link due to a discovered issue)

Okay, so something new I’m trying to do: I reinstalled EOS with no GUI thinking it could just be a graphical issue that I can work out some time later. Booted into the surface kernel and… I saw the login screen for half a second before the screen went blank. That’s new, and new is good(ish).

I’m going to chroot into the install from the live envirnoment and see if I can get the journalctl to spit out some logs. Journalctl has no logs. Alright, any other logs I can pull?

I figure I might as well give an update. Tried a ton of different methods to get this to work, I suspect there’s an issue with when it tries to load display drivers. Either way, it’s not something I’m able to work around at this point. My choice seems to be either run this from USB liveboot perpetually, or get a different laptop.

To all trying to put EndeavourOS on your AMD Surface Laptop 4, if you’re more knowledgeable than I am (which won’t take much), please let me know if you get past where I’m at. I would rather have Linux on this machine. To all others who are trying to the same level of unsuccess I am, if you don’t have time to waste, don’t try it.

Have you tried the following kernel paramaeters?

amd_iommu=off iommu=off

Edit: https://github.com/linux-surface/linux-surface/wiki/Installation-and-Setup

Thank you for responding!

I didn’t read where that was an option, I’ll try to dig a bit on it. How do I set those parameters? I’m not too familiar with systemd bootloader.

(Edit: I just found the page on their wiki, thanks for pointing that out! Going to tinker with it some more and see if I can get that to work - just found the EndeavourOS systemd-boot article, so I’m perusing that to see how to make that change.)

Okay, I think I’m putting the kernel options in the wrong place (mounted the efi partition to mnt → /mnt/loader/entries/[guid]-6.4*surface.conf) and adding a line for each amd_iommu=off iommu=off

Still got the black screen. I tried removing those two lines and adding nomodset, still black screen. Any tips? Did I forget to change something else?

Edit: Wait, I think I have brain damage. Hold please, your call is important to us

You can’t use nomodeset on amd. I’m not sure what you are doing? Are you able to boot the installed system and get into a tty?

https://discovery.endeavouros.com/installation/systemd-boot/2022/12/

Edit: https://github.com/linux-surface/linux-surface/wiki/Surface-Laptop-4

1 Like

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

You had the right of it in adding those two options, what I did wrong was adding them as new lines in the /efi/loader/entries/*.conf files. I should’ve added them under options. I think I was just excited to have new information to work off of.

As far as the nomodset, I assumed nomodset would work as it’s one of the options for the live disk (and the only way for me to boot into the live disk). Either way, thank you so much for guiding me down the right path. I can’t wait to jump into Arch via Endeavour

I hoped it helped to get you there. :wink:

Edit: Looks good!

1 Like

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.