From what I have read on arch wiki: link
I think it is possible, but difficult, using extlinux that comes with syslinux package, and chain loading twice a syslinux. But I haven't tested it.
And it is a lot of work if you have to do it for more than 2 different computers. Because you will need for 10 different computers, 10 different partitions on the usb drive, each with a copy of the kernel and initrd, as well as some syslinux files.
Each laptop must have the esp boot partition: /dev/sda1 or at the same /dev/sdaX. If no, this method won't work.
Here is the way to proceed:
1. Install extlinux on laptop A:
On the laptop A, assuming esp boot partition is /dev/sda1:
mkdir ./mntefi
sudo mount /dev/sda1 ./mntefi
sudo mkdir ./mntefi/boot
sudo mkdir ./mntefi/boot/syslinux
# install extlinux:
sudo extlinux -i ./mntefi/boot/syslinux/
# copy *.c32 files:
sudo cp /usr/lib/syslinux/bios/*.c32 ./mntefi/boot/syslinux
Create a file ./mntefi/boot/syslinux/syslinux.cfg
TIMEOUT 0
UI menu.c32
LABEL MAIN
COM32 chain.c32
APPEND hd1 3
This file will chain to the third partition on the usb drive (hd1 if the laptop A have only one internal drive), where there will be the syslinux.cfg for laptop A.
2. Create partition 3 (/dev/sdb3) on the usb drive:
The partition can be small, it just have to contain a syslinux and the kernel and initrd.
3. Install extlinux on partition 3 of the usb drive:
mkdir ./mnt3
sudo mount /dev/sdb3 ./mnt3
sudo mkdir ./mnt3/boot
sudo mkdir ./mnt3/boot/syslinux
# install extlinux:
sudo extlinux -i ./mnt3/boot/syslinux/
# copy *.c32 files:
sudo cp /usr/lib/syslinux/bios/*.c32 ./mnt3/boot/syslinux
Create a file ./mnt3/boot/syslinux/syslinux.cfg
DEFAULT menu.c32
PROMPT 0
MENU TITLE UEFI boot menu
MENU AUTOBOOT Booting AAA in # seconds
LABEL AAA
MENU LABEL AAA
KERNEL menu.c32
APPEND /AAA/menu
This file will display the menu for laptop A, the menu file is located on partition 3 in the directory /AAA.
In the menu file, the kernel must have the following parameters: root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx rw, with the UUID of the partition where the linux is installed on the usb drive.
4. Main syslinux.cfg, of the usb drive:
On the usb drive, where the linux system is installed, assuming on partition /dev/sda2, create a file EFI/BOOT/syslinux.cfg:
TIMEOUT 0
UI menu.c32
LABEL MAIN
COM32 chain.c32
APPEND hd0 1
This file will chain on the internal drive of the laptop, on the esp boot partition, assuming it is the first partition on the laptop internal drive.
It will always chain the syslinux found on first partition of the internal drive in the laptop.
But maybe syslinux number the drives beginning by the one where it boots, if it does, then it needs to append hd1 1 instead of hd0 1
5. Repeat the steps 1, 2, and 3, for each laptop.
Be carefull, that on step 1, the syslinux.cfg must chain to the new partition created on step 2.
syslinux, one on each laptop....