Archiv der Kategorie: Uncategorized

Universal USB Boot Stick based on Ventoy

Running non ISO Linux from flash drive

While testing Ventoy and its option for customization I was wondering whether storing and starting the different images on the USB Stick is realy the most effective way.
Havinf different Images in place for fast installations is great. And the oportunity ofjust copying them to the flash drive without any further hazel is nearly perfect for daily purposes.

But on the other hand I there are three other use cases for Live Systems

  • Preinstalled Toolset for Work
  • Hacking
  • Images for System Rescue

For those use cases a more efficient way for booting and storing Data on the same flash drive makes more sense.

Mounting ISO and extract necessary files

Mounting an ISO is quiet easy. Either open it wiith graphical UI of the OS of your choice or (on *nix) mount ist as a loop device.

mkdir /tmp/loop
sudo mount -o loop /path/to/some.iso /tmp/loop

Now extract the vmlinuz, initrd.gz and the root filesystem. Based on Damm Small Linux 2024 this looks like this.

tree /Volumes/dsl-2024.rc7/
/Volumes/dsl-2024.rc7/
├── antiX
│   ├── initrd.gz
│   ├── initrd.gz.md5
│   ├── linuxfs
│   ├── linuxfs.info
│   ├── linuxfs.md5
│   ├── random-seed
│   ├── vmlinuz
│   ├── vmlinuz.md5
│   └── vmlinuz1.md5
├── boot
│   ├── isolinux
│   │   ├── README
│   │   ├── boot.cat
│   │   ├── chain.c32
│   │   ├── console.def.gfx
│   │   ├── console.def.orig
│   │   ├── console.men.orig
│   │   ├── gfx-cpio
│   │   ├── gfxboot.c32
│   │   ├── gfxsave.cfg
│   │   ├── isolinux.bin
│   │   ├── isolinux.cat
│   │   ├── isolinux.cfg
│   │   ├── ldlinux.c32
│   │   ├── libcom32.c32
│   │   ├── libmenu.c32
│   │   ├── libutil.c32
│   │   ├── menu.c32
│   │   ├── readme.msg
│   │   └── version
│   └── memtest
├── cdrom.ico
└── version

4 directories, 31 files

Checking the /boot/isolinux/isolinux.cfg gives us a brief overview abot the needs.

...
#    MENU LABEL antiX-23-runit_386-base (26 August 2023)
LABEL live
    MENU LABEL DSL 2024, hacked from antiX 23
    KERNEL /antiX/vmlinuz
    APPEND quiet splasht disable=lxF
    INITRD /antiX/initrd.gz
...

To avoid missing something we copy the complete directory antiX. Problem is, that the filesystem is withn the Image linuxfs, which is mounted in an overlay configuration stored in initrd.gz.

On the the flash drive we create a directory to store our non ISO based systems (in my case /linux). Within this directory we create as subdirectories for Damm Small Linux (dsl) in which we copy all the files from the antiX directory.

Changing the reference to the filesystem within initrd.gz

To update the reference we have to extract the data from the initrd.

mkdir /tmp/temp-initrd
cd /tmp/temp-initrd
gzip -dc /[path to flash drive]/linux/dsl/initrd.gz | cpio --extract --make-directories

Now we can edit the path to the init file in the root of our temporary directory and update the default path to linuxfs.

vi init

...
    DEFAULT_SQFILE=/antiX/linuxfs    (change to:/linux/dsl/linuxfs)
...

/linuxfs

After saving those change it is time to recreate the initrd.gz. The following pipe of commands finds every content in the current directory pipes it to cpio for creating a new initrd which pipes the output to gzip for compressing and storing it back to our target directory on the flash drive.

find . | cpio --create --format=newc | gzip > /[path to flash drive]/linux/dsl/initrd.gz

Creating a custom grub2 menu

Since we not have an image here the necessary item in grub2 will not automatically be created. Therefor we use the custom menu plugin from ventoy and define custom class for our entries.

If not existing we create a ventoy directory in the root of the flash drive. That’s the common directory for config and themes in Ventoy.

mkdir -p /[path to flash drive]/ventoy

Next we create a file named ventoy_grub.cfg to store our custom menu configuration.

vi /[path to flash drive]/ventoy/ventoy_grub.cfg

with the following content

menuentry "Damm Small Linux" --class=custom {
    echo "Loading Kernel ..."
    linux (hd0,msdos1)/linux/dsl/vmlinuz root=(hd0,msdos1)/linux/dsl/linuxfs
    echo "Loading Initrd ..."
    initrd (hd0,msdos1)/linux/dsl/initrd.gz
}
menuentry '<-- Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
    echo 'Return ...'
}

After saving this we are ready for booting our customized Ventoy flash drive. After booting into the Ventoy grub2 menu we have to call our custom menu with [F6] and kann boot directly without beeing limited by the ISOs in boot time or errors caused by failed file sources.

To be done:

  • Creating a directory or a partition on flash drive to store data and system state

[TOC]

MacBook Pro Middle 2009 – ReCover

Womit Anfangen?

Als erstes muss mal klar sein, dass man entweder eine funktionierende Recovery-Partition (beim Booten [CMD]+[R] drücken) oder ein externes Installationsmedium benötigt. Eine Installation mit einer Recovery aus dem Netz (beim Booten [ALT]+[CMD]+[C] drücken) ist mit der alten HW leider nicht möglich.

Meine Odyssee beginnt somit mit einer alten Installations-CD von Snow Leopard. Diese ist in ein passendes Laufwerk einzulegen und dann muss man von dieser Booten (beim Booten [C] drücken).
Ich hatte das Problem, dass das eingebaute optische Laufwerk scheinbar einen Defekt hatte, was wohl eher zur Regel gehört bei Geräten dieser Generation.

Nach der Grundinstallation

Nun gilt es als aller erstes mal alle Updates einzuspielen um überhaupt an den Mac App Store zu gelangen. Dazu benötigt es eines Klicks auf den Apfel oben links und dann ein Klick auf Softwareaktualisierung … . Dieses ist solange zu wiederholen, bis keine weiteren Aktualisierungen mehr gefunden werden können.

Herunterladen von Lion

Leider gibt es keine mir bekannte einfache Art ein Installationsmedion zu erstellen vor Lion. Alle Versuche direkt in eine neue Version zu Aktualisieren sind bei mir mit Fehlern quitiert worden. Aus diesem Grund habe ich den (Um-)Weg über Lion genommen und dieses aus dem Bereich Käufe meines App Store heruntergeladen und installiert.

Herunterladen aktuellerer MacOS Versionen

Nun mit Lion können neuere Versionen von MacOS geladen werden und USB-Installationsmedien erstellt werden.

sudo /Applications/Install\ OS\ X\ El\ Capitan.app/Contents/Resources/createinstallmedia --volume /Volumes/SNOWLEO/ --applicationpath /Applications/Install\ OS\ X\ El\ Capitan.app

Windows 10 USB-Installationsstick erstellen unter Mac OS

Herunterladen des aktuellen ISO Image von Microsoft

Microsoft bietet für Ihr Haueigenes OS ISO-Images zum Download an.
Link zum Download

Installieren eines kleinen Tools um erforerliche Dateien auf eine FAT32 kompatible größe zu reduzieren/teilen

Mit Homebrew (vorausgesetzt) installiert man wimlib.

brew install wimlib

Erstellen des USB-Stick in folgenden Schritten

  1. USB-Stick anschließen und die Command Line (Terminal) öffnen

Finder -> Programme -> Dienstprogramme -> Terminal.app

# Herausfinden was der Stick ist
diskutil list
# mit MBR und FAT formatieren
diskutil eraseDisk MS-DOS "WIN10" MBR /dev/diskx

Hier ist exemplarisch die “diskx” gewählt worden um Copy&Paste Fehler zu vermeiden. Es jedoch ist extrem wichtig die richtige “disk” zu ermitteln, da ansonsten Daten unwiederbringlich gelöscht werden können. Die Größe liefert hier gute Anhaltspunkte. Im Zweifel kann man alle externen Laufwerke und Netzlaufwerke entfernen, wodurch sich die Anzahl der Disks entsprechend reduziert.

Nun müssen wir noch das ISO-Image einbinden. Entweder man öffnet das ISO, wodurch es automatisch als gerät eingebunden wird oder man macht es direkt in der Command Line mit folgendem Befehl

hdiutil mount ~/Downloads/Win10_[Version]_[Sprach]_x64.iso

Anschließend können wir endlich die erforderlichen Dateinen in 2 Schritten koppieren. Der erste Schritt synchronisiert die Daten von A nach B und der zweite Schritt Teilt eine für das FAT-Format zu große Datei in zwei Dateien auf.

# Synchen aller Daten ausgenommen der zu großen Datei
rsync -vha --exclude=sources/install.wim /Volumes/CCCOMA_X64FRE_[key layout]_DV9/* /Volumes/WIN10

# Aufteilen der zu Großen Datei in kleinere und speichern auf dem USB-Stick
wimlib-imagex split /Volumes/CCCOMA_X64FRE_[key layout]_DV9/sources/install.wim /Volumes/WIN10/sources/install.swm 3800

Fertig zur Installation

Jetzt ist der Stick soweit fertig. Um sicher zu sein, dass alle Daten auf den Stick geschrieben sind sollte dieser ausgehängt werden und um ganz sicher zu sein, weisen wir das OS vorher noch an alle daten zu schreiben, die ggf. noch im RAM gepuffert sind.

# Puffer im RAM aus Speicher schreiben
sync

# USB-Speicherstick aushängen
diskutil umountDisk /dev/diskx