Sunday, February 06, 2022

How To Install Debian Linux on the Dell Wyse 3040 Thin Client with 8GByte RAM

The Wyse 3040 is a little machine perfect for small tasks at home.


Read all about it here: Wyse 3040 Thin Client

I bought three of these second-hand for $30 US, and I wanted to run Debian Linux. These instructions will probably work for other distributions, ymmv. I will assume you know how to install Linux and know Linux quite well. This page is just about the 3040.

I could not find an OS upgrade to ThinLinux for 8Gbyte machines on the Dell site. Seems they don't support old hardware, only the 16Gbtye image is available

You need

  • A Linux machine for creating bootable USB storage devices,
  • Debian netinst installed on a bootable USB storage key. I used Debian 11 (Bullseye). Refer: Network install from a minimal CD 
  • The 3040 all connected up to Ethernet with Internet access, screen, keyboard, mouse.

Configure the BIOS


Power on the 3040 (press the power  button after the light goes Off) and keep pressing the F2 key - this will boot into the BIOS user interface. Unlock the BIOS. It might ask for the default password, 'Fireport'. [You can remove passwords in the Security section]. Look at the 'System Information' - my 3040 has BIOS version 1.2.4. Make these settings:
  • System Configuration/USB Configuration/Enable* set all these three ON
  • POST Behavior/Keyboard Errors OFF
  • POST Behavior/Extend BIOS POST Time  10 seconds
There are many other settings you can  tweak, but the USB settings are essential.

Save the BIOS changes and power off.

Check the EFI boot path needed


Insert the USB key and reboot, but this time keep pressing the F12 key to get the boot menu to display.

You will see the USB key as a bootable option. However select the BIOS Setup option rather than booting into the USB key. In the BIOS go to the General/Boot Sequence settings. Select the View  button for each boot option. Make a note of the File Name field. In all cases my machines show \EFI\BOOT\BOOTX64.EFI  Make a note of itYou can attempt to change this but due to a bug in the BIOS this value cannot be changed. We have to add this path in the installed file system.

Install Debian LInux


Reboot the 3040 keep pressing the F12 key to get the boot menu. Select the USB key and boot from it.

You should be able to install Debian now. Do the install, we need to keep it small to fit into the 2GByte MMC/SD disk in the 3040. Here are some options I used, you may have different preferences, but when in doubt, leave it out.
  • Guided use entire disk
  • Xfce
  • SSH Server
When the install is complete, leaving the USB key in the machine, reboot and keep pressing F12 to get the boot menu. You will see debian as an option now

[My USB key is a 'SanDisk Cruzer Blade . ..] 

Add the EFI boot files in the installed boot partition

Boot into rescue mode

However, boot into the USB key where the installer lives, but boot into 'Rescue' mode


It lists the devices and whether to use a root file system. Select 'Do not use a root file system':




Copy the EFI files

We are now going to copy the debian-created boot 'efi' file into the path expected by the BIOS as noted above.

 Check you have the 3040's boot partition, and mount it:

# blkid /dev/mmcblk0p1

Check the device has 'BLOCK_SIZE="512" TYPE="vfat"'

# mkdir /mnt/p1
# mount /dev/mmcblk0p1 /mnt/p1

List all the EFI programs, and their checksums:

# md5sum $(find /mnt/p1 -name '*efi' ) | sort

Now copy the EFI code into the directory the BIOS expects

# cp -rp /mnt/p1/EFI/debian /mnt/p1/EFI/boot

And create the file it expects

# cp /mnt/p1/EFI/boot/shimx64.efi /mnt/p1/EFI/boot/bootx64.efi
# sync; sync

Check you have the bootx64.efi file

# md5sum $(find /mnt/p1 -name '*efi' ) | sort

 

Reboot into Debian Linux

Now unplug the USB key and reboot the 3040. All being well, after boot and login you will see something like this:


Epilogue

It is likely here are better ways to do this than copying 'efi files. This is a start, let me know by email if you find a more elegant way to do this, thanks.