Raspberry Pi og SSD opsætning

Intro

Jeg ser flere og flere snakke om, hvorvidt det er værd at købe en SSD sammen med sin Raspberry Pi, hvis man eksempelvis vil køre Home Assistant fra en Raspberry Pi. Til det har jeg ét definitivt svar: JA. Et SD kort er ikke lavet til at blive skrevet til og læst fra så mange gange, og det er eksempelvis noget Recorder står og gør ret ofte. Med mindre du køber et af de dyre SD kort, som eksempelvis Samsungs Endurance Pro, så skal du ikke forvente at dit SD kort overlever mere end 1-2 år.

En SSD er derimod lavet meget mere robust, så du bare kan læse og skrive på livet løs, uden at det påvirker SSDen. Dog skal du være opmærksom på, at ikke alle SSDer er ens opbygget. Uden at gå for meget i detaljer, kan jeg derfor kun anbefale SSDer fra anerkendte mærker såsom Samsung, Kingston, ADATA, SanDisk, Western Digital og PNY. De ved hvad de laver, og jeg har haft mindst én SSD fra hver af de mærker.

Før du starter

Før du overhovedet kan starte på dette projekt, skal du starte med at købe en SSD, et kabinet til SSDen og selvfølgeligt en Raspberry Pi. Derudover skal du også have et SD kort, for vi skal desværre starte Raspberry Pien op først, før vi kan starte den op fra SSDen. Din computer skal kunne læse SD kortet, så sørg også for, at du kan indsætte SD kortet i din computer.

SSD størrelse

Du kan sagtens nøjes med en SSD på 60 gigabyte, men det er nemmest, bedst og billigst (krone pr. gigabyte) at vælge mindst 120. Kig derfor efter en 2.5 tommer SSD fra ét af de mærker jeg nævnte før (Samsung, Kingston, ADATA, SanDisk, Western Digital og PNY).

Alternativt kan du købe en M.2 SSD (og tilsvarende kabinet), da de er lidt mindre og koster næsten det samme, men der er lidt diskussion om, hvor godt en NVMe SSD kører sammen med Raspberry Pis, så jeg kører personligt selv kun med 2.5 tommer SSDer. Du får desuden ikke noget hastighedsmæssigt ud af en NVMe SSD i 99/100 tilfælde.

Kabinet

I forhold til valg af kabinet, har du også utrolig mange valgmuligheder. Jeg har selv et USB 3.0 Gen. 2 kabinet fra Baseus, som jeg har givet cirka 150 kroner for fra AliExpress. Kabinettet har USB Type-C, som efterhånden er det eneste jeg kører herhjemme.

Et andet fint alternativ kan findes på Av-Cables.dk, men sørg for at finde en der minimum har USB 3.0. Så er det i hvert fald ikke USB delen der bliver dit bottleneck.

Raspberry Pi

Af Raspberry Pis kan jeg kun tale om Raspberry Pi 3 og 4 modellerne, for jeg har selv gjort det på en 3B+ og 4B. Vær dog opmærksom på, at Raspberry Pi 4 kommer i 3 varianter ifht. RAM: 2GB, 4GB og 8GB. Hvis du har planer om at køre Home Assistant, vil jeg IKKE anbefale kun at købe 2GB RAM varianten, for på ét eller andet tidspunkt, kommer du til at skulle bruge mere end 2GB RAM.

Opsætning af SSD

Jeg antager at du nu har en Raspberry Pi, et SD kort, en SSD, et kabinet og et USB kabel der kan sættes mellem kabinettet og din Raspberry Pi.

SSD til FAT32

Før en Raspberry Pi kan læse din SSD, skal den være formateret som FAT32. Desværre har Windows problemer med at formatere lagringsenheder på mere end 32 gigabyte som FAT32 (fffffffuck you, Microsoft), men det er stadigvæk muligt. Jeg har brugt et program der hedder Rufus, hvorefter jeg har valgt følgende indstillinger:

Og derefter trykket på START.

Valg af operativsystem

De fleste der læser dette afsnit, er nok folk der vil installere Home Assistant på deres SSD. Du har to muligheder:

  1. Start helt forfra
  2. Start forfra og flyt dataen fra eksisterende Home Assistant

For at starte helt forfra, er det faktisk bare et spørgsmål om at gøre præcis hvad der står på Home Assistants hjemmeside: https://www.home-assistant.io/installation/raspberrypi

Da der er tre valgmuligheder for en Raspberry Pi, vil jeg lade det være op til dig selv, hvilken vej du går.

Hvis du allerede har Home Assistant kørende, så kan du igen bare installere Home Assistant forfra (vælg samme system som du allerede har), og så tage backup af din nuværende instans og så restore den på din nye SSD. Du burde få al dataen med over, men måske ikke hele historikken.

Opsætning af Raspberry Pi

Installering af Raspberry Pi OS

Start med at hente Raspberry Pi Imager og åbn programmet på din computer. Har du ikke en Windows, macOS eller Ubuntu maskine, må du selv undersøge et bedre alternativ. Du skal nu vælge mellem ethernet eller WiFi, for der er stor forskel på de to. Hvis du har mulighed for at sætte et ethernet kabel i din Raspberry Pi, så læs afsnittet om Ethernet. Har du kun mulighed for WiFi, så læs afsnittet om WiFi.

Mulighed 1: Ethernet

Tryk på “CHOOSE OS” og vælg den øverste mulighed: Raspberry Pi OS (32-bit). Tryk på “CHOOSE STORAGE” og vælg dit SD kort. Til sidst trykker du blot på “WRITE” og så skriver programmet hele operativsystemet til dit SD kort.

Mulighed 2: WiFi

Tryk på “CHOOSE OS” og vælg den øverste mulighed: Raspberry Pi OS (32-bit). Tryk på “CHOOSE STORAGE” og vælg dit SD kort. Tryk nu på følgende kombination af knapper: CTRL+SHIFT+X. Er du på macOS, så hedder det CMD+SHIFT+X.

Sæt hak i “Enable SSH” og skriv en adgangskode (husk adgangskoden).

Sæt hak i “Configure wifi” og indtast dit WiFis navn og adgangskode. Under WiFi country skal du vælge DK.

Til sidst trykker du blot på “WRITE” og så skriver programmet hele operativsystemet til dit SD kort.

Start Raspberry Pi op

Når Raspberry Pi Imager er færdig med at skrive til SD kortet, skal du tage den ud af din computer (husk at “skubbe sikkert ud” ved at højreklikke på SD kortet) og sætte den i din Raspberry Pi. Sæt nu din Raspberry Pi til strøm.

Første opstart tager gerne et par minutter, og i mellemtiden kan du logge ind på din router (eller hvor du finder klienter på dit netværk) og finde din Raspberry Pi, som burde have fået sin egen IP adresse. Dette kan godt være ret tricky, så hvis du ikke ved hvordan, så søg på Google eller spørg nogen på Facebook.

Log ind på Raspberry Pi

Eftersom din Raspberry Pi ikke har nogen skærm, tastatur, mus og så videre, er vi nødt til at logge ind på den via en protokol der hedder SSH. Dette er ret teknisk, men bliv ikke bange, for jeg skal nok guide hele vejen igennem.

Først skal vi have et program, vi kan bruge til at logge på via SSH. På Windows bruger jeg et program der hedder PuTTY og på macOS og Linux kan jeg godt lide bare at åbne terminalen og skrive “ssh”. Jeg bruger Windows, så jeg viser de næste ting i programmet PuTTY, men for jer med macOS og Linux, skal I blot søge på Google. Der findes mange guides til, hvordan man logger på via SSH.

Start PuTTY op og indtast din Raspberry Pis IP adresse under tekstfeltet “Host Name (or IP address)”. Porten burde allerede stå til 22, men sæt den til 22 ellers. Tryk derefter på Open i bunden. Tryk ja/yes/accept hvis du bliver spurgt, om du stoler på den.

Når du bliver spurgt hvem du vil logge ind som (“login as”), så skriver du pi. Når den spørger om adgangskoden, så indtaster du den, du satte i Raspberry Pi Imager. Du burde nu se en skærm, der minder om dette:

Uden at gå for meget i detaljer hvad de enkelte ting på skærmen er, så er det blot værd at nævne, at det nederste du ser, er der hvor du indtaster kommandoer.

Opdatering af Raspberry Pi firmware (vigtigt)

Start nu med at kalde disse kommandoer (og ja, det kan godt tage 5-10-30 minutter.. det er ret langsomt, for der skal ske ret meget):

sudo apt update
sudo apt full-upgrade

Spørger den dig om en adgangskode, så indtaster du den bare igen. Spørger den om du vil acceptere noget, så skriver du bare y og trykker Enter.

Nu skal firmwaret på din Raspberry Pi opdateres, og det kan gøres med denne kommando (ja til alt den spørger om):

sudo rpi-update

Når dit firmware er opdateret, så skriver du blot:

sudo reboot now

Din SSH session dør imens din Raspberry Pi genstarter (som denne gang også tager et par minutter), men vær ikke bekymret, for du skal blot åbne PuTTY og indtaste IP adressen igen, så burde du være inde igen. Når du har SSHet ind i din Raspberry Pi, skal du kalde denne kommando:

sudo rpi-eeprom-update -d -a

Din skærm burde nu vise noget der minder om det her:

CURRENT burde være ældre end LATEST. Er den ikke det, skal du bare bekræfte at CURRENT og LATEST er ens, og at CURRENT er fra år 2021 eller nyere. Kald derefter:

sudo reboot now

én gang til (og vent et par minutter) og log ind på din Raspberry Pi med PuTTY igen. Hvis du kalder den der sudo rpi-eeprom-update -d -a kommando igen, burde CURRENT og LATEST være ens nu.

Slå USB boot til

Tillykke, du har nu opdateret din Raspberry Pis firmware til den nyeste version. Nu skal vi slå USB boot til, som også kræver SSH adgang. Start med at skrive denne kommando:

sudo raspi-config

Du burde nu få en skærm op, hvor du kan bruge piltasterne til at navigere rundt. Det vi skal gøre er:

Advanced Options -> A7 Bootloader version -> Vælg den første mulighed der hedder “E1 Latest Use the latest version boot ROM software”

Vælg NO når den spørger, om den skal “Reset boot ROM to defaults”. Tryk derefter på OK.

Gå så ind i:

Advanced Options -> A6 Boot Order -> Vælg den der hedder “B2 USB Boot Boot from USB if available, otherwise boot from SD card”.

Tryk derefter på OK. Gå ned i bunden og tryk på Finish (pil til høje).

Vælg NO når den spørger om du vil reboot.

Derefter kan vi slukke din Raspberry Pi:

sudo shutdown now

Tillykke

Du har nu slået USB boot til på din Raspberry Pi! Når din Raspberry Pi er slukket, kan du tage SD kortet ud og sætte USB stikket fra din SSD i. Når du så sætter strøm til din Raspberry Pi, burde den nu starte op på SSDen (da det er den eneste lagringsenhed der er).

Too long, did not read (for nørderne)

1) Få din Raspberry Pi bootet op på dit yndlings operativsystem (Linux flavored såsom Debian)
2) Kald følgende kommandoer, sig ja til alt og genstart når den beder dig om det:

sudo apt update
sudo apt full-upgrade
sudo rpi-update
sudo rpi-eeprom-update -d -a

3) Sørg for at den sidste sudo rpi-eeprom-update -d -a siger, at CURRENT og LATEST er ens, og at begge melder 2021 eller nyere firmware.
4) Gør hvad der står under Slå USB boot til afsnittet (det kan ikke skrives kortere)
5) Kobl SD kortet fra, kobl din FAT32 SSD til (med et operativsystem) og start din Raspberry Pi
6) Tillykke!

Hjælp, det virker ikke!

Okay, vær helt sikker på, at du har fulgt guiden til punkt og prikke. Hvis du fik nogle fejl undervejs, så undersøg de fejl selv, for dette burde være en fejlfri proces.

Der er en chance for, at den SATA til USB adapter du har købt, måske ikke virker med Raspberry Pi. Der findes et par sider, der har nogle oversigter over adaptere de har bekræftet virker, så det er måske værd at købe sådan en.

JMicron USB adapters

Jeg har lige hjulpet en med at undersøge, hvorfor hans Pi ikke ville boote med en SSD, selvom han havde gjort alt det rigtige. Ved at køre kommandoen lsusb, kunne vi se, at hans USB adapter brugte et JMicron chipset. De er desværre kendt for at være upålidelige med Raspberry Pis og USB boot. Dog findes der et par løsninger. Start med at sætte SD kortet i igen og start din Raspberry Pi op. SSH ind i den ligesom du har gjort et par gange nu. Kald nu denne kommando:

sudo -E rpi-eeprom-config --edit 

Det åbner et tekstprogram op, hvor indholdet burde ligne noget i stil med:

[all]
BOOT_UART=0
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0

Brug piltasterne og indsætte dette (højreklik = indsæt i PuTTY) på nederste linje:

USB_MSD_PWR_OFF_TIME=0

Tryk derefter CTRL+X (eller CMD+X på macOS), tryk y for yes og derefter Enter for at gemme. Nu burde den skrive EEPROM updates pending. Please reboot to apply the update., så nu kalder du bare sudo reboot now. Når den er genstartet, så SSHer du ind igen, sætter SSDen til via USB og kalder denne kommando: lsusb. Den burde returnere noget der minder om dette:

Bus 002 Device 002: ID 152d:0578 JMicron Technology Corp. / JMicron USA Technology Corp. JMS578 SATA 6Gb/s
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Kan du se det der 152d:0578? Det er dét vi skal bruge. Kopier de 9 symboler og gem dem et sted, for vi skal bruge dem lige om lidt.

Så langt så godt. Nu skal du tage SSDen, koble den til din computer med USB og åbne drevet op. Find filen der hedder “cmdline.txt” og åbn den i et program, der ikke ændrer på formateringen (Notepad eller Notepad++ på Windows eksempelvis – IKKE WordPad eller Word). Filen burde indeholde noget der ligner dette:

console=serial0,115200 console=tty1 root=PARTUUID=f0f0f0f0f0 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles systemd.run=/boot/firstrun.sh systemd.run_success_action=reboot systemd.unit=kernel-command-line.target

Før alt det tekst der, skal du nu tilføje denne streng:

usb-storage.quirks=152d:0578:u

efterfulgt af et mellemrum. Erstat 152d:0578 med det du kopierede før. Nu burde cmdline.txt ligner dette:

usb-storage.quirks=152d:0578:u console=serial0,115200 console=tty1 root=PARTUUID=f0c3e667-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles systemd.run=/boot/firstrun.sh systemd.run_success_action=reboot systemd.unit=kernel-command-line.target

Gem filen, tag SSDen ud af din computer, sæt den i din Raspberry Pi, fjern SD kortet fra din Raspberry Pi og prøv at starte den igen. Nu burde det forhåbentligt virke!

6 svar til “Raspberry Pi og SSD opsætning”

  1. Jonas Larsen Avatar
    Jonas Larsen

    Fremragende guide!
    Ikke alle USB-SATA adaptere virker lige godt til Raspberry Pi, og det er også måske værd at nævne: https://jamesachambers.com/new-raspberry-pi-4-bootloader-usb-network-boot-guide/

    1. Morten Avatar

      Hej Jonas. God idé! Jeg har skrevet med lidt på Facebook omkring det samme, da nogle af deres adaptere heller ikke virkede. Jeg tilføjer det link til siden. Tak!

  2. Martin Avatar
    Martin

    Fantastisk! Hele mit Pi HA setup crashed i sidste uge. Måske en tur omkring Reddit og prøvede en masse ting derfra. Men takket være denne guide virker det nu igen!

  3. Jesper Avatar
    Jesper

    Hej.

    Jeg har før brugt din guide her og den er super og alt virker. Men det har hver gang været ny install af OS.

    Nu står jeg og skal have tilføjet SSD til en ny pi som allerede køre et OS jeg gerne vil have med over, så ville høre hvad du ville gøre for at clone SD kortet over til SSD og køre det videre derfra?

    I din guide nævner du kun Home Assistant, men dette er Raspbian jeg skal have clonet, så ville høre hvad du der ville gøre?

    1. Morten Avatar

      Jeg har brugt rpi-clone til det, og det virkede ganske fint: https://github.com/billw2/rpi-clone

  4. Anders Avatar
    Anders

    Tusind tak for denne udførlige guide! Den fik mig i mål, også med en JMicron baseret SDD

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *