Skip to content

PSA: Dell Wyse 3040 Uses ‘Fallback’ EFI Location

Many hours died to bring you this information

tl;dr: run grub-install --target=x86_64-efi --efi-directory=<espdir> --removable if following the Arch Linux install guide


Interested in more info on the Wyse 3040? ParkyTowers has a treasure trove of info on the hardware, disassembly, firmware, installing TinyCore Linux, and some further reading. Enjoy!


I acquired a Dell Wyse 3040 thin client recently. I hit a snag during the install, in that it would not boot the new operating system.

grub-install claimed to have successfully completed, but it wasn’t booting. The entry was present on the Dell setup page, but it was being bypassed:

Photo of a TV screen showing the 3040 Wyse setup page

As a side note, I don’t seem to be able to disable UEFI boot mode in favour of legacy. Someone on the Dell forums claims this was removed but I can’t confirm or refute that.

After much futzing, not helped by the fact I was using a netboot image (PS: check out netboot.xyz, it’s really good!), I discovered that the Wyse 3040 was using the fallback location for the EFI image.

This is mentioned on the Grub wiki page under ‘troubleshooting’:

Default/fallback boot path

Some UEFI firmwares require a bootable file at a known location before they will show UEFI NVRAM boot entries. If this is the case, grub-install will claim efibootmgr has added an entry to boot GRUB, however the entry will not show up in the VisualBIOS boot order selector. The solution is to install GRUB at the default/fallback boot path:

# grub-install --target=x86_64-efi --efi-directory=esp --removable

Alternatively you can move an already installed GRUB EFI executable to the default/fallback path:

# mv esp/EFI/grub esp/EFI/BOOT
# mv esp/EFI/BOOT/grubx64.efi esp/EFI/BOOT/BOOTX64.EFI

As another aside, I find myself yearning for something simpler than WordPress. The block editor is… fine, but sometimes it gets in your face a bit; like when you’re trying to paste preformatted text in a quote. Also, blocks look different in the editor to how they look ‘on the page’… But I digress.

Strangely, while the boot manager on the setup page has an option to browse and set a path to the EFI image, it does not seem to honour this setting. I spent a couple of reboot cycles trying that before using the fallback path. It was only when I took some images of the screen after a reboot that I noticed that the file path changed:

Note the different file names! The boot option names are different too but that’s as a result of me trying the same thing twice and expecting different results. I was close to madness!

Once I moved the EFI executable to the fallback path of /EFI/BOOT/BOOTX64.EFI Arch booted successfully.

My final tip? If you’re tracking down a boot problem, use a standard USB instead of a netboot image; and disable any inbuilt PXE options. Waiting for an image to download over and over and for PXE to timeout becomes… tedious. Especially if you have to go up and downstairs to re-enable ssh after booting while testing! But hey, it’s a way to exercise during lockdown…

15 thoughts on “PSA: Dell Wyse 3040 Uses ‘Fallback’ EFI Location”

  1. Pingback: Turning a Wyse 3040 Into an HTPC (Part 1) – Bertie Baggio's Wonderland

  2. Pingback: A Better Raspberry Pi? Dell Wyse 3040 Project #1 - crimesjohnson.net

  3. Hi,
    I was installing debian and tried just to move home folder DEBIAN to BOOT and then rename grubx64.efi into bootx64.efi. But still it didn’t want to boot.
    The only difference from your installation is that I was trying to use lvm from the very first try.

    After that I found recommendations to use debian installer rescue mode right after installation and install grub. People say it helps to recover bootloader.

    Anyway in my case I succeded after clean installation (with removing partitions) without lvm with just one shot.

  4. Hi Maksim,

    Thanks for sharing that. It’s interesting that with Debian you need to use the rescue mode if using LVM, but not if you are using plain partitions- a cross-distro UEFI boot idiosyncrasy.

    Cheers,
    Rob

  5. HI Guys,
    I am trying to install debian on the Wyse 3040 8g/2g but it wont load at all. I see you need to change some configuration, is anywhere a step by step guide?
    Sorry I am a total newbie, but I would like to get it done, in would like to use wyse with pi-hole, unbound and some other containers.
    Can Maksim or Rob help me please? much appreciated

  6. Thanks, you saved me pulling my hair out. I used the mv method (in a rescue prompt) on a debian 11 install to get it booting. (slightly different naming EFI/debian to EFI/BOOT, but you got me there 🙂 )

  7. Pingback: Better Than a Raspberry Pi? Dell Wyse 3040 - Patch Panel Panic

  8. Pingback: Install a New OS On a Dell Wyse 3040 – Qubits & Bytes

  9. Pingback: Install a New Linux OS On a Dell Wyse 3040 – Qubits & Bytes

  10. man you’ve been blogging longer than I’ve been alive but saved me just now. Thanks so much for documenting this one – I’ve even got a newer dell thin client that ran debian just fine (minus a couple of hours of unlocking the bios with the hardware service pins) but this one didn’t. Funny stuffs these thin clients

    thanks again

  11. Hi Liam, oh gosh yes I’ve been blogging a while :’D (where did emoji support go?)

    Glad it was helpful, I know the pain of “why doesn’t this work it should just work!” all too well. Hope you get some good use out of the Wyse now you’ve got it sorted 🙂

  12. emoji test: 😅

    There it is! Several hours and several sharks*,†,‡, later…

    *: Since you asked. I figured I needed to change the database collation, which was latin1_swedish_ci for some reason — cf https://wordpress.org/support/topic/emojis-show-up-as-2/#post-15925159 — so I went to take a database backup.

    borg.locking.LockFailed: Failed to create/acquire the lock /home/bertieb/backups/borg/web/lock.exclusive ([Errno 28] No space left on device: '/home/bertieb/backups/borg/web/lock.exclusive.ixgs2m7p.tmp').

    Oh. So I had to clear space off the array so I could borg prune, but to do that I had to update my local borg repo cache, and I ran out of space in my home directory, so I lvexpanded + resize2fs'd that, then re-updated the cache. Then I could finally prune more aggressively, but that took a while. Then I had to borg compact.

    By the time that was all done the sun had disappeared but one of the periodic database backups had fired off, working as intended. But then I needed to get a tool to change the collation. PhpMyAdmin can do it but I was recommended inter.connect’s tool a while back. So I used that, but then missed some tables as there were others in the way…

    Anyway. Sharks: escaped from. Yak: shaved. Emojis: 🔥

    †: it never ceases to confuse me that I can write posts in markdown, but not comments

    ‡: You just know a comment is gonna be either either great or mildly unhinged when you see three footnote indicators…

Tell us what's on your mind

Discover more from Rob's Blog

Subscribe now to keep reading and get access to the full archive.

Continue reading