This guide provides everything needed to create a customizable multi-boot USB flash drive in Windows with high resolution menus and customized splash screens. It provides a framework for creating a basic but functional multi-boot flash drive using Syslinux 6.xx as the primary bootloader. Basic menu configuration files and splash screen examples are provided. Experienced users shouldn’t find it difficult to follow this guide to create a ready-to-use bootable flash drive that can be customized to their needs. Users should already have some familiarity with Syslinux, installing Linux distros, and with formatting and partitioning flash drives.
For the sake of simplicity, this guide is limited to setting up Syslinux for a single partition using the BIOS modules. The instructions were tested and verified on a system running Windows XP SP3 and using Syslinux 6.02. This guide is essentially a more up-to-date version and combination of two previous posts, Create a Multiboot Multipartition USB with Syslinux and Grub4Dos and Create Custom Grub4Dos, GRUB and Syslinux Compatible Splash Images.
Syslinux 6.xx
Syslinux provides two menu systems, the Simple Menu System and the Advanced Menu System. The advanced system must be compiled while the simple system includes the ready-to-use vesamenu.c32 and menu.c32 modules. This guide uses the vesamenu.c32 module.
Splash Screen Resolutions
Syslinux 6.xx can use splash screens in the .png or jpg formats at resolutions from 640×480 up to whatever is supported by the system. If the flash drive is going to be used on multiple systems, it would be best to use a typical resolution such as 800×600 that would work across most systems.
Modules
Since version 5.xx, modules are no longer stand alone or need additional libraries to work. A description of the changes can be found on the Syslinux Wiki at https://www.syslinux.org/wiki/index.php/Library_modules. In most cases, Syslinux will alert you of any additional libraries required when you try to use them.
(U)EFI (Unified/Extensible Firmware Interface)
Although there has been a lot of hype about (U)EFI (Unified/Extensible Firmware Interface) in general and support for (U)EFI began with Syslinux 6.xx, the (U)EFI modules are still fairly new, have a number of unresolved issues, and are not widely used at this time. UEFI in Syslinux is buggy and has problems on both Windows and Linux. Arch Linux describes some of the more relevant ones at https://wiki.archlinux.org/index.php/syslinux#Limitations_of_UEFI_Syslinux. Some of the issues with UEFI are:
- UEFI Syslinux does not support chainloading other EFI applications like UEFI Shell
or Windows Boot Manager
.
UEFI Syslinux does not boot in Virtual Machines like QEMU/OVMF or VirtualBox or VMware and in some UEFI emulation environments like DUET.
- Memdisk is not available for UEFI.
- UEFI Syslinux application syslinux.efi
cannot be signed by sbsign
(from sbsigntool) for UEFI Secure Boot.
- Using TAB to edit kernel parameters in UEFI Syslinux menu leads to garbaged display (text on top of one-another).
Other Syslinux issues/limitations:
- Using Syslinux 6.02 on BTRFS volumes corrupts the superblock.
- Syslinux cannot access files from partitions other than its own.
- Using the memdisk module to boot most ISOs is often difficult or impossible.
Syslinux.org has admitted to these limitations and has often recommended other bootloaders such as GRUB, Grub4Dos, or Plop Boot Manager to compliment Syslinux. In spite of this, Syslinux remains one of the most functional and popular bootloaders not only for flash drives, but for other bootable devices like CDs, for most operating systems, and for chainloading partitions and hard drives. It’s very flexible and is an excellent choice as the primary bootloader for most situations. And by adding another bootloader such as Grub4Dos, this greatly enhances the flash drive’s booting options.
Creating a Multi-boot Flash Drive steps:
- Format the flash drive
- Install Syslinux 6.xx
- Install modules and files
- Install or create splash screens
- Customize menu configuration files (optional)
1. Format the Flash Drive
Format the flash drive with FAT16 or FAT32.
2. Install Syslinux 6.xx
Download and unzip the latest .zip version of Syslinux 6.xx from Kernel.org. The file size should be about 12mB before unzipping. Open a cmd window and cd to C:\syslinux-6.xx\bios\win32. Type the following to install Syslinux to the flash drive where x is your flash drive:
syslinux.exe -sfma x:
This installs ldlinux.c32 and ldlinux.sys to the flash drive.
3. Install Modules and Files
Modules
Look for and copy the BIOS versions of the modules shown in the directory tree for the root of the flash drive. An easy way to locate the modules is to use something like AgentRansack. Modules have a .c32 extension (except memdisk) and are located in various folders in the C:\syslinux-6.xx\bios\com32 directory or C:\syslinux-6.xx\bios directory (for memdisk). Place all of the modules in the root directory of your flash drive. Copy the following modules:
chain.c32
cmd.c32
cpuidtest.c32
hdt.c32
ldlinux.c32
libcom32.c32
libgpl.c32
libmenu.c32
libutil.c32
meminfo.c32
menu.c32
memdisk
poweroff.c32
pwd.c32
reboot.c32
vesainfo.c32
vesamenu.c32
Configuration Files
The help text, menu.cfg, syslinux.cfg and other configuration files required can be downloaded from the configfiles download link below. Right click and using “save target link as” or similar (depending on your browser) to download it and then unzip and extract its files to the root of the flash drive.
configfiles (9.8 KiB, 1,215 hits)
Download the latest version of Grub4Dos from grub4dos-chenall. Extract the grub.exe and menu.lst files to the root of the flash drive.
4. Install or Create Splash Screens
Install ready-made Splash Screens
To get started, splash screens tested to work with the configuration files are provided below. Just unzip them to the splashimages folder. After installing the splash screen images, the flash drive is ready to test or use.
Link for the splash screens: splashscreens
Nine (9) splashscreen files are provided. Download them as an album and extract to the splashimages folder. Slightly change the filenames by removing the number and dash so the filenames match those used in the menu configuration files.
The correct splashscreen filenames are:
- cave_800x600_14.png
- fallleaf_800x600_14.png
- grassyhill_800x600_14.jpg
- mist_800x600_14.png
- nightlight_800x600_24.jpg
- ny_800x600_14.jpg
- road_800x600_14.png
- Spruce_800x600_14.png
- winter_800x600_14.jpg.
The link below displays a directory of what the flash drive contents should look like at this point:
Create and Install Customized Splash Screens (optional)
To create your own menu graphics, use the batch file below or another graphics program to create .png or .jpg format splash screens from your image files. Since the menus are already configured with light text, you may want to use a dark color to start off with. Generally, 14 colors works nearly every time and renders more quickly.
The batch file below is configured to use ImageMagick portable installed to the Utilities folder. If ImageMagick is already installed, simply change the line set IMdir=C:\Utilities\ImageMagick\ to your ImageMagick location. Use double quotes if the path contains spaces (e.g., set “IMdir=C:\Program Files\ImageMagick\”). Be sure to use the latest version of ImageMagick since the newest version has improved image conversion options and processing.
If creating a customized splash screen, place it in the splashimages folder in the flash drive and change the file name in the appropriate menu configuration file(s) as below so it can be used on the next boot:
MENU BACKGROUND /splashimages/your image name.jpg
5. Customize Menu Configuration Files (optional)
After the flash drive is working properly, try to install bootable applications or Linux distros by modifying the boot options in the menu configuration files for Syslinux or in menu.lst for Grub4Dos. Some menu label entries are already provided in the Syslinux menus that were verified to work such as Slax, Grub4Dos, and a few others.
That’s it. If anything gets messed up, everything can just be reinstalled and started again from the beginning. Good luck.
References:
Syslinux – https://www.syslinux.org/wiki/index.php/SYSLINUX
Syslinux Menu – https://www.syslinux.org/wiki/index.php/Menu
Syslinux 6 Changelog – https://www.syslinux.org/wiki/index.php/Syslinux_6_Changelog
Memdisk – https://www.syslinux.org/wiki/index.php/MEMDISK#ISO_images
Spelling error report
The following text will be sent to our editors: