Używając np. Unetbootin, można przygotować sobie wersje live OS z dostępnego pliku ISO.

Tak się złożyło, że potrzebuję mieć takie USB dla kilku systemów Linux, tzn głównym OS na laptopie jest Ubuntu, ale czasem potrzebuję uruchomić Tails, Kali, albo Parrot Linux. Używam wtedy wersji live z USB, którą przygotowuję dzięki wspomnianemu Unetbootin z dostępnego ISO dla płyty DVD/CD.

Pytanie jednak, czy potrzeba nosić ze sobą kilka USB, po jednym na OS-live, czy nie można ich zmieścić na jednym dysku USB?

Przeprowadzając poszukiwania, napotkałem na MultiCD, a właściwie wcześniej na jeysundar.blogspot.com, w którym opisano jak przygotować pojedynczy plik ISO z kilku dla Kali i Tails…

Odsyłam do źródła, ale w największym skrócie, np dla Kali + Tails:

  1. tworzyę folder, nazywam go np. multicd i umieszczam w środku wszystkie ISO, które mnie interesują (oczywiście zwracam uwagę na ich sumaryczną wielkość vs USB-pendrive),
  2. w tym folderze rozpakowuje również pobrany z github MultiCD,
  3. skrypt multicd.sh muszę oczywiście uczynić uruchamialnym (+x) a następnie uruchamiam go:
wiks@dellwiks:~/Pulpit/multicd$ chmod +x multicd*.sh

4. Skrypt tworzy ze znalezionych ISO jeden, trwa to chwilę:

wiks@dellwiks:~/Pulpit/multicd$ sudo ./multicd*.sh
[sudo] hasło użytkownika wiks: 
Cleaning up - removing symlinks to files in current directory
Made a link named kali.debian.iso pointing to kali-linux-2020.4-live-amd64.iso (version 020.4-live-amd64)
Made a link named tails.debian.iso pointing to tails-amd64-4.15.1.iso (version amd64-4.15.1)

multicd.sh 20191102
Extracting ISO images with mount; will build multicd; UID 0.

Kali Linux 2020.4-live-amd64 020.4-live-amd64
Tails (amd64-4.15.1) amd64-4.15.1
Memtest86+

Continuing in 2 seconds - press Ctrl+C to cancel
Copying files for each plugin...
Copying Kali Linux 2020.4-live-amd64...
Copying Tails (amd64-4.15.1)...
Unpacking and copying SYSLINUX files...
Writing isolinux.cfg...
Building CD image...
Warning: Creating ISO-9660:1999 (version 2) filesystem.
Warning: ISO-9660 filenames longer than 31 may cause buffer overflows in the OS.
Size of boot image is 4 sectors -> No emulation
  0.23% done, estimate finish Sat Jan 30 21:03:13 2021
  0.45% done, estimate finish Sat Jan 30 21:03:13 2021
  0.68% done, estimate finish Sat Jan 30 21:03:13 2021
  0.91% done, estimate finish Sat Jan 30 21:03:13 2021

[...]

 99.13% done, estimate finish Sat Jan 30 21:03:28 2021
 99.36% done, estimate finish Sat Jan 30 21:03:28 2021
 99.59% done, estimate finish Sat Jan 30 21:03:28 2021
 99.81% done, estimate finish Sat Jan 30 21:03:28 2021
Total translation table size: 2048
Total rockridge attributes bytes: 3416
Total directory bytes: 8802
Path table size(bytes): 78
Max brk space used 14000
2199094 extents written (4295 MB)
WARNING: isohybrid not found.
Install isohybrid (from the syslinux-utils package) to use your multicd on a USB drive
Cleaning current directory...
Cleaning up - removing symlinks to files in current directory
usunięty 'kali.debian.version'
usunięty 'tails.debian.version'

5. utworzony zostaje w katalogu multicd / build / multicd.iso na koniec skrypt informuje, że nie znalazł isohybrid -zapewne do zapisu pliku ISO na USB. Można do tego jednak użyć Unetbootin.

Powstałe menu startowe można nieco stunningować, modyfikując nazwy ew. kolejność (należy pamiętać o zachowaniu kolejności i ciągłości wierszy 'label ubnentry…’). Menu zawarte jest w syslinux.cfg :

default menu.c32
prompt 0
menu title UNetbootin
timeout 100

label unetbootindefault
menu label Default
kernel /ubnkern
append initrd=/ubninit hd0

label ubnentry0
menu label Boot from ^hard drive
kernel /boot/isolinux/chain.c32
append initrd=/ubninit hd0

label ubnentry1
menu label ^Memtest86+ v5.01
kernel /boot/memtest
append initrd=/ubninit 

label ubnentry2
menu label Kali 2020.4
kernel /ubnkern
append initrd=/kali.debian/initrd.img boot=live live-media-path=/kali.debian persistent=cryptsetup persistence-encryption=luks username=kali hostname=kali persistence

label ubnentry3
menu label Tails 4.15.1
kernel /tails.debian/vmlinuz
append initrd=/tails.debian/initrd.img boot=live live-media-path=/tails.debian config live-media=removable nopersistence noprompt timezone=Etc/UTC splash noautologin module=Tails slab_nomerge slub_debug=FZP mce=0 vsyscall=none page_poison=1 init_on_free=1 mds=full,nosmt  quiet

label ubnentry4
menu label Tails (Troubleshooting Mode)
kernel /tails.debian/vmlinuz
append initrd=/tails.debian/initrd.img boot=live live-media-path=/tails.debian config live-media=removable nopersistence noprompt timezone=Etc/UTC splash noautologin module=Tails slab_nomerge slub_debug=FZP mce=0 vsyscall=none page_poison=1 init_on_free=1 mds=full,nosmt  noapic noapm nodma nomce nolapic nomodeset nosmp vga=normal