Tips en Trucs 2019

Opstartbare USB Sticks met bootiso

Voorwoord

Computers opstarten via een USB Stick lukt pas als uw computer, BIOS (UEFI) correct zijn ingesteld. Jammer genoeg is dit bij elk computermodel anders en worden verschillende technieken gebruikt. Een voorstudie van uw systeem kan dus wonderen verrichten.

Bootiso

Als je op zoek bent naar een terminal programma om opstartbare (bootable) USB Sticks van hybride (geschikt voor zowel USB Stick als DVD) en niet hybride (enkel geschikt voor DVD) ISO schijfkopiebestanden (images) met ingebouwde beveiligingen, probeer dan bootiso. Bootiso zou met alle Linux distributie en Windows ISO bestanden moeten werken.

Bootiso is een Bash script om op een veilige manier een opstartbare USB Stick van een ISO bestand te maken. Handig als je geen gebruik wilt maken van dd, of dd de klus niet kan klaren. Om uw systeem niet te beschadigen, worden de volgende testen uitgevoerd:

Bootiso heeft verschillende mogelijkheden om de gebruiker te helpen, zoals het weergeven van de aangesloten USB apparaten (indien er meer dan één is aangesloten), het opgeven van een partitienaam (label), enz. Daarenboven wordt gecontroleerd of de externe hulpprogramma's op het systeem aanwezig zijn, met de mogelijkheid deze te installeren.

Bootiso analyseert het ISO bestand en kiest standaard op basis daarvan de meest geschikte kopieermethode. Je hoeft zelfs geen USB apparaat op te geven, bootiso zorgt voor alles. Mocht dit toch niet werken, gebruik dan de vele opties voor geavanceerd gebruik.

Bootiso kan de opstartmogelijkheden van een ISO bestand achterhalen met de -i (--inspect) optie en de -p (--probe) optie. De --list-usb-drives optie geeft alle USB opslagapparaten weer. Daarenboven kan je met bootiso USB opslagapparaten formatteren (vfat, exfat, ntfs, ext2, ext3, ext4 or f2fs).

Bootiso installeren

Het bootiso script kan je rechtstreeks downloaden van de versiebeheerpagina van de ontwikkelaar met de opdracht:

dany@pindabook:~> curl -L https://git.io/bootiso -O
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 60733  100 60733    0     0  77268      0 --:--:-- --:--:-- --:--:-- 77268

Maak het script uitvoerbaar (eXecutable) met de opdracht:

dany@pindabook:~> chmod +x bootiso

Onderzoek een ISO bestand met de opdracht:

dany@pindabook:~> ./bootiso -p Downloads/systemrescuecd-6.0.3.iso 
bootiso: Command 'sfdisk' not found! Should be in package 'util-linux'.
Attempt installation? (y/n)> n
bootiso: Missing dependency 'sfdisk'.
         Exiting...

Dit gaat fout. Blijkbaar gebruikt bootiso een hulpprogramma (sfdisk) dat niet op ons systeem aanwezig is. Na onderzoek blijkt dat sfdisk wel aanwezig is, maar systeembeheerder (root) rechten nodig heeft:

dany@pindabook:~> sfdisk
Absolute path to 'sfdisk' is '/usr/sbin/sfdisk', so running it may require superuser privileges (eg. root).

Logisch, het partitioneren, formatteren van USB apparaten zijn risicovolle systeemtaken:

dany@pindabook:~> sudo ./bootiso -p Downloads/systemrescuecd-6.0.3.iso 
[sudo] wachtwoord voor root: 
bootiso: Command 'bc' not found! Should be in package 'bc'.
Attempt installation? (y/n)> y
Gegevens van opslagruimte laden...
Lezen van geïnstalleerde pakketten...
Pakketafhankelijkheden oplossen...

Het volgende NIEUWE pakket zal worden geïnstalleerd:
  bc

1 nieuw te installeren pakket.
Totale downloadgrootte: 126,6 KiB. Reeds in de cache: 0 B. Na de bewerking zal aanvullend 273,6 KiB worden gebruikt.
Doorgaan? [j/n/v/...? alle opties tonen] (j): 
pakket bc-1.07.1-lp151.3.11.x86_64 wordt opgehaald                                             (1/1), 126,6 KiB (273,6 KiB uitgepakt)
Ophalen: bc-1.07.1-lp151.3.11.x86_64.rpm ....................................................................................[gereed]
Controleren op conflicten tussen bestanden: .................................................................................[gereed]
(1/1) Installeren van: bc-1.07.1-lp151.3.11.x86_64 ..........................................................................[gereed]
bootiso: Command 'wimlib-imagex' not found! Should be in package 'wimlib'.
Attempt installation? (y/n)> y
Gegevens van opslagruimte laden...
Lezen van geïnstalleerde pakketten...
'wimlib' is niet gevonden in de pakketnamen. Proberen in eigenschappen.
Geen provider van 'wimlib' gevonden.
bootiso: Installation of dependency 'wimlib-imagex' failed.
         Perhaps this dependency has a slightly different name on your distribution.
         Find it and install manually.
         Exiting...

Het hulpprogramma wimlib kan niet automatisch geïnstalleerd worden, dan maar manueel:

dany@pindabook:~> sudo OCICLI https://software.opensuse.org/ymp/home:uibmz:opsi:4.1:experimental/openSUSE_Leap_15.1/wimlib.ymp
[sudo] wachtwoord voor root: 
Als u verdergaat, dan worden de volgende installatiebronnen toegevoegd:
        * http://download.opensuse.org/repositories/home:/uibmz:/opsi:/4.1:/experimental/openSUSE_Leap_15.1/
Als verdergaat, dan zullen de volgende softwarepakketten worden geïnstalleerd op uw systeem:
        * wimlib
Continue? y/N
y
Toevoegen van installatiebronnen...

Daarbij wordt een nieuwe softwarebron geactiveerd en moet je deze dus vertrouwen. Volgende poging:

dany@pindabook:~> sudo ./bootiso -p Downloads/systemrescuecd-6.0.3.iso 
bootiso: Reporting 'Downloads/systemrescuecd-6.0.3.iso' boot capabilities:
bootiso: The selected ISO is hybrid and supports legacy BIOS booting with SYSLINUX 6.04 along with UEFI boot.
         It will boot with bootiso in [install-auto] and [install-dd] modes with any PC BIOS.
bootiso: Listing USB devices available in your system:
         NAME   MODEL            VENDOR     SIZE TRAN   HOTPLUG SERIAL
         sdb                                974M usb

Opstartbare USB Stick maken

De eenvoudigste opdracht om volautomatisch een opstartbare USB Stick van een ISO bestand aan te maken:

dany@pindabook:~> sudo ./bootiso Downloads/systemrescuecd-6.0.3.iso 
bootiso: Found hybrid ISO; choosing copy mode 'dd'.
bootiso: Partition label automatically set to 'SYSRCD603'.
         You can explicitly set the label with -L, --label.
bootiso: Listing USB devices available in your system:
         NAME   MODEL            VENDOR     SIZE TRAN   HOTPLUG SERIAL
         sdb                                974M usb          1 
bootiso: Autoselecting 'sdb' (only USB device candidate)
bootiso: The selected device '/dev/sdb' is connected through USB.
bootiso: About to wipe the content of device '/dev/sdb'.
         Are you sure you want to proceed? (y/n)> y
bootiso: Erasing contents of '/dev/sdb'...
bootiso: Copying files from ISO to USB device with 'dd'    
bootiso: Synchronizing writes on device '/dev/sdb'    
bootiso: Took 288 seconds to perform [install-auto] action.
bootiso: USB device succesfully ejected.
         You can safely remove it!

USB apparaat formatteren

Om een USB Stick terug als klassiek opslagmedium voor bestanden te gebruiken, moet je deze met de volgende opdracht formatteren:

dany@pindabook:~> sudo ./bootiso --format
bootiso: Listing USB devices available in your system:
         NAME   MODEL            VENDOR     SIZE TRAN   HOTPLUG SERIAL
         sdb                                974M usb          1 
bootiso: Autoselecting 'sdb' (only USB device candidate)
bootiso: Partition label automatically set to 'BOOTISO'.
         You can explicitly set the label with -L, --label.                                                                          
bootiso: The selected device '/dev/sdb' is connected through USB.
bootiso: About to wipe the content of device '/dev/sdb'.
         Are you sure you want to proceed? (y/n)> y
bootiso: Erasing contents of '/dev/sdb'...
bootiso: Creating MBR partition table with 'sfdisk' v2.33...
         Even controleren of iemand deze schijf nu gebruikt...OK
         
         Schijf /dev/sdb: 974 MiB, 1021313024 bytes, 1994752 sectoren
         Disk model:                 
         Eenheid: sectoren van 1 * 512 = 512 bytes
         Sectorgrootte (logisch/fysiek): 512 bytes / 512 bytes
         In-/uitvoergrootte (minimaal/optimaal): 512 bytes / 512 bytes
         
         >>> Nieuw DOS-schijflabel is aangemaakt met schijf-ID 0x0dd7b8ff.
         /dev/sdb1: Nieuwe partitie 1 van type 'W95 FAT32 (LBA)' en grootte 973 MiB is aangemaakt.
         /dev/sdb2: Klaar.
         
         Nieuwe situatie:
         Schijflabeltype: dos
         Schijf-ID: 0x0dd7b8ff
         
         Apparaat   Op. Begin   Einde Sectoren Grootte ID Type
         /dev/sdb1  *    2048 1994751  1992704    973M  c W95 FAT32 (LBA)
         
         De partitietabel is gewijzigd.
         Aanroepen van ioctl() om partitietabel opnieuw in te lezen...
         Leegmaken van schijfbuffers...
bootiso: Creating vfat partition on '/dev/sdb1'...
         mkfs.fat 4.1 (2017-01-24)
         /dev/sdb1 has 32 heads and 61 sectors per track,
         hidden sectors 0x0800;
         logical sector size is 512,
         using 0xf8 media descriptor, with 1992704 sectors;
         drive number 0x80;
         filesystem has 2 32-bit FATs and 8 sectors per cluster.
         FAT size is 1944 sectors, and provides 248598 clusters.
         There are 32 reserved sectors.
         Volume ID is fa775838, volume label BOOTISO    .
bootiso: Took 26 seconds to perform [format] action.

Handleiding

De versiebeheerpagina van de ontwikkelaar bevat de volledige handleiding met alle opties, inclusief filmpjes.
Handleiding bootiso