====== USB booten (bis Pi 4) ======
In diesem Video zeige ich euch 3 mögliche Wege wie man die unterschiedlichen Raspberry Pi Modelle von USB booten lassen kann. Nicht alle Raspberry Pi unterstützen alle Varianten und manche Pis bedürfen auch einer kleinen Vorbereitung.
===== YouTube Video #45 =====
{{youtube>5S7VL8tb-fc?half}}
\\
===== Grundlagen =====
===== Medien vorbereiten =====
USB Medien werden ganz normal mit dem Raspberry Pi Imager vorbereitet. Medium anstecken und genauso beschreiben als wäre eine eine SD-Karte.
===== Raspberry Pi 4 Update =====
> **Hinweis** \\ Dieser Schritt gilt **nur für den Raspberry Pi 4** !!
* ''sudo apt update -y && sudo apt upgrade -y''
* ''sudo rpi-eeprom-update''
* Update einleiten mittels \\ ''sudo rpi-eeprom-update -a''
* ''sudo reboot''
===== Raspberry Pi 3 vorbereiten =====
> **Hinweis 1** \\ Dieser Schritt gilt **nur für den Raspberry Pi 3** !!
> **Hinweis 2** \\ Der Eintrag in der ''config.txt'' kann enthalten bleiben. Der muss nicht extra gelöscht werden.
* Die Datei ''config.txt'' erweitern \\ ''sudo nano /boot/config.txt''
* Am Ende bei ''[All]'' folgendes ergänzen ''program_usb_boot_mode=1''
* Datei speichern und den Pi neu booten ''sudo reboot''
* Nach dem Booten folgenden Befehl ausführen: ''vcgencmd otp_dump | grep 17:''
* Wenn im Ergebnis 17:**3**020000a hinter dem : eine 3 steht ist der Raspberry Pi 3 für das Booten von USB vorbereitet.
* Wenn im Ergebnis eine 1 hinter dem : steht den Vorgang wiederholen.
===== Variante 1 - Einfach das USB Gerät verwenden =====
> **Hinweis 1** \\ Diese Variante funktioniert nur mit dem Raspberry Pi 4, Pi 3 und Zero 2.
> **Hinweis 2** \\ Funktioniert das Booten nicht, bitte [[sbcs:raspberry_pi:45_-_3_wege_zum_raspberry_pi_usb_booten#raspberry_pi_4_update|Raspberry Pi 4 Update]] bzw. [[sbcs:raspberry_pi:45_-_3_wege_zum_raspberry_pi_usb_booten#raspberry_pi_3_vorbereiten|Raspberry Pi 3 vorbereiten]] berücksichtigen !
> **Hinweis 3** \\ Der Raspberry Pi 3 kann nicht von allen USB Medien booten. Manche sind einfach inkompatibel. Da hilft (leider) nur Testen.
* System wie bei der SD Karte auf das USB Medium bringen (mit dem Raspberry Pi Imager)
* USB Medium in den PI stecken
* booten
===== Variante 2 - USB Medium + Boot SD =====
Bei dieser Variante wird das Root Dateisystem auf das USB Medium verschoben. Diese Variante sollte mit allen Raspberry Pis kompatibel sein.
> **Hinweis** \\ SD-Karte und USB Medium bleiben immer (!) im Pi.
* SD Karte mit einem OS normal bespielen
* Tipp: Eine kleine SD Karte nehmen, dann geht das Klonen später schneller :-)
* USB Stick formatieren (NTFS / FAT / egal)
* File System Check durchführen auf der SD Karte
* ''sudo touch /forcefsck''
* ''sudo reboot''
* PARTUUID des root Filesystems ermitteln
* ''cat /boot/cmdline.txt'' \\ {{youtube:pasted:20230409-142150.png}}
* Zugehöriges Device ermitteln
* ''sudo blkid'' \\ {{youtube:pasted:20230409-142215.png}}
* Partition auf den USB Stick Clonen
* ''sudo apt install dcfldd''
* ''lsblk''
* ''sudo dcfldd if=/dev/mmcblk0p2 of=/dev/sda1 conv=noerror,sync''
* dauert etwas ...
* Zielpartition auf dem USB Stick prüfen
* ''sudo umount /dev/sda1''
* ''sudo e2fsck -f /dev/sda1''
* Neustart \\ ''sudo reboot''
* Partitionsgröße anpassen
* ''sudo resize2fs /dev/sda1''
* Anpassung ''/boot/cmdline.txt''
* ''sudo blkid'' -> PARTUUID suchen für sda1
* ''sudo nano /boot/cmfline.txt'' -> root=PARTUUID=xxxxx hier ersetzen
* ''sudo reboot''
* Anpasung ''/etc/fstab''
* PARTUUID für / (root) Partition ersetzen
* PARTUUID wie im vorherigen Schritt von sda1 !
* ''sudo reboot''
* Swap erweitern wenn nötig
* Swap Größe ermitteln \\ ''swapon -s''
* ''sudo nano /etc/dphys-swapfile''
* #CONF_SWAPSOZE-100
* CONF_SWAPFACTOR=2
* ''sudo reboot''
===== Variante 3 - USB Medium + bootcode.bin auf SD =====
Diese Variante funktioniert nur mit den älteren Pis - also Pi 2, Pi 1 und Pi Zero 1. Die Umsetzung ist denkbar einfach ...
> **Hinweis 3** \\ SD-Karte und USB Medium bleiben immer (!) im Pi.
* Ein USB Medium mit dem Raspberry Pi Imager vorbereiten. Genauso als würde man eine SD-Karte vorbereiten.
* Eine SD Karte mit FAT32 formatieren.
* Die Datei ''bootcode.bin'' auf die SD-Karte kopieren.
* https://github.com/raspberrypi/firmware/raw/master/boot/bootcode.bin
* Die SD Karte auch in den Pi stecken und booten.
* Der Bootvorgang kann hier doch etwas länger dauern, also nicht gleich aufgeben :-)
===== Links =====
* Boot sequence \\ https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#boot-sequence
* Raspberry Pi 3 Modell B für USB Boot vorbereiten \\ https://www.dahlen.org/2018/03/18/raspberry-pi-3-modell-b-fuer-usb-boot-vorbereiten/
* Pi 1, 2, Zero von USB Booten \\ https://wiki.volkszaehler.org/howto/raspberry_pi_mit_externer_usb_festplatte_betreiben \\ https://github.com/raspberrypi/documentation/blob/develop/documentation/asciidoc/computers/raspberry-pi/bootmodes.adoc \\ https://github.com/raspberrypi/firmware/raw/master/boot/bootcode.bin
* Memory Card Speed Classes \\ https://www.kingston.com/de/blog/personal-storage/memory-card-speed-classes
* SD-Karten Unterschiede: Symbole, Typ & Klasse \\ https://www.giga.de/artikel/sd-karten-faq-typ-klasse-groesse/
* EEPROM Update für den Raspberry Pi 4 \\ https://www.blattertech.ch/2022/04/eeprom-update-fuer-den-raspberry-pi-4/