Guide för att kryptera Raspberry Pi med Ubuntu

Permalänk
Medlem

Guide för att kryptera Raspberry Pi med Ubuntu

Har letat efter en enkel guide för att kryptera min Raspberry Pi 5 som kör Ubuntu, men det är tyvärr ganska avancerat och inte lika lätt som när man installerar Ubuntu desktop versionen med LVM på en dator med intel-processor.

Det handlar alltså om att kryptera hela operativsystemet så du får skriva ett lösenord redan vid start och att ingen annan kan komma åt dina filer.

Jag har hittat en guide som fungerar och har lyckats kryptera OS både med microsd kort, usb-hårddisk och NVMe disk (i adapter) med Ubuntu 23.10 och 24.04 (ursprungsguiden utgår från version 20.10) - är osäker på om det fungerar med Raspberry pi OS.

Det är denna jag har utgått från men stötte på en hel del problem så jag tänkte skriva ned hur jag gjort, delvis för egen skull men det finns säkert någon annan som kan ha nytta

Jag har än så länge endast testat med nyinstallationer - jag försökte en gång med en färdig installation men misslyckades så det är ingenting jag rekommenderar i nuläget eftersom man kan förlora all data.

Jag kommer utgå från en nyinstallation med microsd kort och det mesta görs från en annan linux-dator, det är endast några få steg i slutet som sker på Raspberry Pi.

Steg 1 - skriv den nedladdade Ubuntu installationsfilen till kortet med hjälp av ett img-program exempelvis Raspberry Pi imager.

Kolla så att den skrivits OK, jag använder mig av det grafiska programmet "Diskar" i Ubuntu där man även kan se vilken enhetsbeteckning disken får - exempelvis: /dev/sda

Steg 2 - kortet består nu av 2st partitioner, en FAT - system-boot och en EXT4 (och ledigt utrymme) - se till att den andra partitionen inte är monterad.

Starta konsollen och skriv:

sudo e2fsck -f /dev/sda2

sda2 är alltså den andra partitionen - ersätt här och i resten av guiden med det som eventuellt står annorlunda vid din montering.

Skriv ditt sudo-lösenord så checkas partitionen, nästa är:

sudo resize2fs -M /dev/sda2

Partitionen krymps

Steg 3 - kryptera

sudo cryptsetup reencrypt --new --reduce-device-size=16M --type=luks2 -c xchacha12,aes-adiantum-plain64 -s 256 -h sha512 --use-urandom /dev/sda2/

I guiden jag följt står det "cryptsetup-reencrypt", men det fungerade inte för mig - "cryptsetup reencrypt" går däremot bra.

Du får bekräfta och sedan skriva ditt lösenord 2 gånger så startar krypteringen - är din disk stor eller ditt minneskort långsamt kan det ta lång tid.

Steg 4 - låsa upp disken och montera:

sudo cryptsetup luksOpen /dev/sda2 rootfs

Expandera den:

sudo resize2fs /dev/mapper/rootfs

Montera den:

sudo mkdir mnt; sudo mount /dev/mapper/rootfs mnt;

Steg 5 - redigera filer:

sudo nano mnt/etc/crypttab

Lägg till:

rootfs /dev/mmcblk0p2 none luks

mmcblk0p2 är hur Raspberry Pi läser av sdkorts-läsaren (partition 2)

Jag använder mig av nano för att redigera filer i konsollen, men det går lika bra med andra - exempelvis vim, eller valfri.

koden läggs till efter den inledande texten i filen på rad 2.

sudo nano mnt/etc/fstab

Ta bort hela första raden och ersätt med:

/dev/mapper/rootfs / ext4 defaults,noatime 0 0

Den andra raden ska vara kvar som den är.

Till sist ska vi redigera en fil som ligger på system-boot partitionen, börja med att montera den om den inte är monterad.

Jag gör det i det grafiska programmet "Diskar" genom att trycka på play-knappen på partitionen system-boot på disken och ser då även var den monteras: "/media/pulver/system-boot" (pulver här är alltså i min dator)

Gå till mappen:

cd /media/pulver/system-boot

Och modifiera filen cmdline.txt:

sudo nano cmdline.txt

Ändra

root=LABEL=writable

till

root=/dev/mapper/rootfs

I slutet av raden - ta bort

splash

och lägg till:

cryptdevice=/dev/mmcblk0p2:sdcard

Hela raden borde då se ut så här:

zswap.enabled=1 zswap.zpool=z3fold zswap.compressor=zstd multipath=off dwc_otg.lpm_enable=0 console=tty1 root=/dev/mapper/rootfs rootfstype=ext4 rootwait fixrtc quiet cryptdevice=/dev/mmcblk0p2:sdcard

Steg 6 - starta på Raspberry Pi

Nu är redigering klar på datorn och du kan stänga av och stoppa in microsd-kortet i Raspberry Pi

När du startar första gången kommer den stå och blinka med komandoprompten - länge, vänta åtminstonde 10 minuter

Sedan ska till slut (initramfs) dyka upp.

Skriv då:

cryptsetup luksOpen /dev/mmcblk0p2 rootfs

Och sedan lösenordet på din kryptering.

(detta gör du bara en gång - inte varje gång Raspberry pi startar)

Notera dock att slash - alltså "/" inte är på sin vanliga plats som på svenska tangentbord utan finns under "-" tangenten som den gör på engelska tangentbord.

Om allt går som det ska skriver du sedan bara:

exit

Då ska Raspberry Pi jobba lite och sedan ska till slut installationsprogrammet starta

Gå igenom installationen som vanligt och om den frågar om den ska ta bort crypsetup i slutet av installationen så bockar du ur det.

Oroa er inte om det dyker upp en varningsruta med "package removal failed"

När du loggat in är det dags för det absolut sista steget och det är att skriva:

sudo update-initramfs -u

När den jobbat klart startar du om Raspberry Pi och då ska du få frågan om att låsa upp rootfs vid boot

Det är inga problem att köra update och uppdatera Raspberry Pi till nya kärnor.

Den enda skillnaden om man installerar på en extern usb-disk eller en ansluten NVMe-disk är att man ändrar beteckningen på disken i alla steg, alltså istället för både sda2 och mmcblk0p2 i guiden blir det något som exempelvis "nvme0n1p2" för NVMe disk- och när det gäller extern usb är det oftast sda2 det ska stå i alla steg.

Permalänk
Medlem

Skulle göra detta igen nu och tittade på min egna guide, tänkte lämna några ytterligare kommentarer.

Det fungerar på Raspberry Pi 5, men inte på Raspberry Pi 4 (osäker på anledningen)

Det finns ett litet fel vid "steg 3" i guiden ovan där man måste ta bort ett " / " i slutet av strängen (efter sda2)

Det fungerar inte på Ubuntu 25.04 eftersom det saknar cryptsetup, men det går bra att göra guiden på Ubuntu 24.04 och sedan uppdatera till 25.04 - krypteringen är kvar efter uppdateringen.

När man redigerar " cmdline.txt " behöver man inte ta bort " splash " eftersom Ubuntu hanterar det - det ser faktiskt mycket trevligare ut med splash-fönstret

Permalänk
Medlem

Gjorde ytterligare ett test idag och kan berätta att det går att kryptera en befintlig installation (det behöver alltså inte vara en nyinstallation)

Gjorde det på Ubuntu 25.04 - så det går att använda det så länge man installerar cryptsetup (sudo apt install cryptsetup) på raspberry pi med 25.04 innan man börjar.

Anledningen till testet var att min Raspberry Pi CM5 endast fungerar med Ubuntu 25.04 och inte med tidigare versioner.

Om man väljer att behålla "splash" så ser man Ubuntu loggan stå och jobba i typ 10 minuter innan prompten "initramfs" dyker upp vid första starten - glöm sedan inte att köra "sudo update-initramfs -u" så fort du loggat in