Zo start je je Raspberry Pi vanaf usb of je netwerk

Door: Koen Vervloesem | 04 mei 2017 07:20

Raspberry Pi
Apps & Software

Inhoudsopgave

  1. Inleiding
  2. Pagina 2

Een Raspberry Pi opstarten doe je normaal vanaf een (micro-)sd-kaart. Maar soms is dat niet zo handig. Sinds kort hebben de ontwikkelaars van de familie minicomputertjes twee nieuwe bootmodi toegevoegd: usb en netwerk. Met de usb-modus start je de Raspberry Pi vanaf een besturingssysteem op een usb-stick of harde schijf die je via usb aansluit.

Met de netwerkmodus heb je zelfs geen lokaal opslagapparaat nodig: de Raspberry Pi downloadt zijn besturingssysteem via het netwerk van een andere computer. Zo kun je ook eenvoudig meerdere Raspberry Pi’s laten opstarten via een besturingssysteem op een centrale computer. Update je dat centrale besturingssysteem, dan draaien al je Raspberry Pi’s automatisch de nieuwste versie.

01 Experimentele bootmodi

De nieuwe bootmodi zijn experimenteel en ontwikkeld voor de Raspberry Pi 3. De bootcode die daarvoor nodig is, zit in de BCM2837: de processor van de Raspberry Pi 3. Heb je een Raspberry Pi 1, 2 of Zero, dan kun je ook van de nieuwe bootmodi gebruikmaken, maar via een omweg: formatteer een sd-kaart met fat32, kopieer het bestand bootcode.bin naar het kaartje en start je Pi van dit kaartje op. Dat is dan wel niet volledig zonder sd-kaart, maar je kunt je Pi wel vanaf usb of het netwerk opstarten.

02 Mogelijke problemen met usb

Opstarten van usb lukt niet altijd. Zo schakelen sommige usb-sticks zich te traag in. Ook externe harde schijven reageren niet altijd binnen de twee seconden, de tijd die de bootcode standaard wacht. Je kunt die time-out wel verhogen naar vijf seconden, maar sommige schijven zijn dan zelfs nog niet klaar. Andere usb-sticks stellen heel specifieke eisen aan het communicatieprotocol, waaraan de (tot 32 kB rom beperkte) bootcode van de Raspberry Pi 3 niet voldoet. Je zult dus misschien enkele schijven moeten uitproberen.

03 Firmware upgraden

We gaan ervan uit dat je Raspbian op je Raspberry Pi draait. Indien niet, download dan een image en zet het op een sd-kaart met het programma Win32DiskImager en start de Pi ervan op. Ververs eerst alle pakketbronnen met sudo apt-get update. Als je Raspbian Lite draait (de versie zonder grafische interface), voer dan eerst sudo apt-get install rpi-update uit omdat die minimale versie van Raspbian het pakket rpi-update niet heeft. Voer dan een update van de firmware uit de ‘next’-branch uit met sudo BRANCH=next rpi-update.

04 Usb-modus inschakelen

Open het opstartconfiguratiebestand met sudo nano /boot/config.txt en voeg de opdracht program_usb_boot_mode=1 toe aan het einde. Sla het bestand op met Ctrl+O en sluit nano af met Ctrl+X. Herstart je Pi met sudo reboot, en controleer na de herstart of de usb-modus is ingeschakeld. Dat doe je met de opdracht vcgencmd otp_dump | grep 17:, die als resultaat een getal moet tonen dat eindigt op 0x3020000a. Open daarna weer het opstartconfiguratiebestand en verwijder de opdracht program_usb_boot_mode=1, zodat je niet per ongeluk de usb-bootmodus inschakelt op een andere Pi waarin je deze sd-kaart steekt.

05 Usb-opslag partitioneren

Sluit nu je usb-opslagapparaat op je Pi aan. Partitioneer dit apparaat met sudo parted /dev/sda. Maak een nieuwe partitietabel aan met mktable msdos en bevestig met Yes dat je alle gegevens op de schijf wilt vernietigen. Maak daarna een fat32-partitie van 100 megabyte aan met mkpart primary fat32 0% 100M en een ext4-partitie die de rest van de schijf inneemt met mkpart primary ext4 100M 100%. Bekijk de wijzigingen met print en sluit parted af met quit. Creëer dan het bootbestandssysteem met sudo mkfs.vfat -n BOOT -F 32 /dev/sda1 en het rootbestandssysteem met sudo mkfs.ext4 /dev/sda2.

06 Raspbian kopiëren

Installeer het programma rsync met sudo apt-get install rsync. Maak daarna een nieuwe directory aan met sudo mkdir /mnt/usb en koppel het ext4-bestandssysteem van de usb-opslag daarop aan met sudo mount /dev/sda2 /mnt/usb/. Maak dan een boot-directory aan met sudo mkdir /mnt/usb/boot en koppel het bootbestandssysteem erop aan met sudo mount /dev/sda1 /mnt/usb/boot/. Kopieer nu het Raspbian-systeem dat je vanaf de sd-kaart draait naar het bestandssysteem op je usb-opslag. Dat doe je met de opdracht sudo rsync -ax --progress / /boot /mnt/usb. Heb even geduld, want dat kan een tijdje duren.

07 Chroot

De usb-opslag bevat nu een kopie van je draaiende Raspbian, maar niet alles mag identiek zijn. Zo heeft het nieuwe systeem andere ssh-sleutels nodig. Ga daarom naar de usb-opslag met cd /mnt/usb en koppel een aantal speciale bestandssystemen aan met sudo mount --bind /dev dev, sudo mount --bind /sys sys en sudo mount --bind /proc proc. Voer daarna een chroot (change root) uit met sudo chroot .. Alle opdrachten die je nu uitvoert, worden in het systeem op de usb-opslag uitgevoerd, niet meer in het systeem op de sd-kaart.

08 Nieuwe ssh-sleutels

Je bent nu root-gebruiker in de chroot. Verwijder eerst de bestaande ssh-sleutels, want dat zijn degene die we van het systeem van de sd-kaart hebben gekopieerd. Dat doe je met rm /etc/ssh/ssh_host*. Genereer daarna nieuwe ssh-sleutels door de OpenSSH-server te herconfigureren met dpkg-reconfigure openssh-server. Verlaat daarna de chroot met exit. Alle opdrachten die je nu uitvoert, worden weer in het systeem op de sd-kaart uitgevoerd. Ontkoppel dan de speciale bestandssystemen met sudo umount dev, sudo umount sys en sudo umount proc.

09 Rootbestandssysteem aanpassen

Zorg nu dat de Pi het rootbestandssysteem op de usb-opslag gebruikt in plaats van dat op de sd-kaart. Daarvoor pas je het bestand /boot/cmdline.txt aan met sudo sed -i "s,root=/dev/mmcblk0p2,root=/dev/sda2," /mnt/usb/boot/cmdline.txt. Doe hetzelfde in het bestand /etc/fstab: sudo sed -i "s,/dev/mmcblk0p,/dev/sda," /mnt/usb/etc/fstab. Ga daarna naar je home-directory met cd, ontkoppel de bestandssystemen van de usb-opslag met sudo umount /mnt/usb/boot en sudo umount /mnt/usb en schakel de Pi uit met sudo poweroff. Trek de voedingskabel uit, verwijder de sd-kaart en steek de voedingskabel er terug in. Als alles goed gaat, start je Pi nu op van je usb-opslag.

0 Reactie(s) op: Zo start je je Raspberry Pi vanaf usb of je netwerk

  • Om te reageren moet je ingelogd zijn. Nog geen account? Registreer je dan en praat mee!
  • Er zijn nog geen reacties op dit artikel.

Wanneer je een reactie plaatst ga je akoord
met onze voorwaarden voor reacties.