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.