Logo

Tinycore: USB UEFI booting 

USB UEFI

This article was prompted by the Igel H820C which had a UEFI BIOS and (I thought at the time) no compatibility mode so I needed a version of my usual Tiny Core Linux on a bootable USB drive. Various articles on the Internet turned out to be less than helpful.

My starting point was the 64-bit Tiny Core ISO - TinyCorePure64-12.0.iso. This uses syslinux as its boot loader.

A lot of people favour Rufus to prepare the USB drive, but that's Grub based and gets nowhere with the Tiny Core ISO.

I ended up using RMPrepUSB to install Tiny Core to a 4GB SanDisk pen drive. This was not quite 'click-and-go' but it was a fairly straightforward process.

I should note that USB drives are/can be a special case as far as UEFI booting is concerned. For a start USB drives may well not have a partition table on them. This always used to be the case but with the way capacities are going there are now reasons for using a partition table. However, in general a UEFI computer, presented with a USB drive to boot from, will just look for the expected files and file structure and will use them if they are there. i.e. Formatted in FAT or FAT32 with appropriate files in the directory /EFI/BOOT/.

The basic setting I used are shown below.

RMprep setting screen

Next I accepted the default directory of /boot/syslinux for the loader.

RMprep setting screen

...and went ahead and did the installation.

RMprep setting screen

At this point everything is there....but not quite in the right place. You need to do the following with the files on the pen drive:

  • Rename the cde directory to tce.
  • Move the file ldlinux.sys from /boot/syslinux/ to /boot/isolinux
  • Delete the syslinux directory.
  • Rename the isolinux directory to syslinux.
  • In the syslinux directory rename isolinux.cfg to syslinux.cfg.
  • Finally edit syslinux.cfg to suit: Remove the redundant cde. I always add the version number to the header. Add kmap=qwerty/uk to the command line for my UK keyboard. Maybe add tce=UUID=.... to ensure the right tce directory is used...

That's basically it.

My syslinux.cfg looks like this:


DEFAULT tcw
UI menu.c32
PROMPT 0
TIMEOUT 50
ONTIMEOUT tcw
F1 f1
F2 f2
F3 f3
F4 f4

MENU TITLE TinyCorePure64 12.0
MENU MARGIN 10 
MENU VSHIFT 5
MENU ROWS 5
MENU TABMSGROW 14
MENU TABMSG Press ENTER to boot, TAB to edit, or press F1 for more information.
MENU HELPMSGROW 15
MENU HELPMSGENDROW -3
MENU AUTOBOOT BIOS default device boot in # second{,s}...

LABEL tc
MENU LABEL Boot TinyCorePure64
TEXT HELP
Boot TinyCorePure64 with Embedded X/GUI extensions.
Boot media is removable. Use TAB to edit options for specific needs.
ENDTEXT
KERNEL /boot/vmlinuz64
INITRD /boot/corepure64.gz
APPEND loglevel=3 vga=791 kmap=qwerty/uk

LABEL tcw
MENU LABEL Boot TinyCorePure64 (on slow devices, waitusb=5)
TEXT HELP
Boot TinyCorePure64 with Embedded X/GUI extensions, if using a slow device.
Boot media is removable. Use TAB to edit options for specific needs.
ENDTEXT
KERNEL /boot/vmlinuz64
INITRD /boot/corepure64.gz
APPEND loglevel=3 kmap=qwerty/uk waitusb=5 vga=791

LABEL core
MENU LABEL Boot Core (command line only).
TEXT HELP
No embedded X/GUI extensions are loaded. User extensions scanned or specified
will be loaded, and will need to provide X/GUI if required.
ENDTEXT
KERNEL /boot/vmlinuz64
INITRD /boot/corepure64.gz
APPEND loglevel=3 vga=791

LABEL corew
MENU LABEL Boot Core (command line only on slow devices, waitusb=5)
TEXT HELP
No embedded X/GUI extensions are loaded. User extensions scanned or specified
will be loaded, and will need to provide X/GUI if required.
ENDTEXT
KERNEL /boot/vmlinuz64
INITRD /boot/corepure64.gz
APPEND loglevel=3 waitusb=5 vga=791

 


Any comments? email me.    Last update February 2022