Passa al contenuto principale

ancora su raspberry

· 3 minuti di lettura
Piero Proietti
penguins-eggs author
Deutsch English Español  Français Italiano Polska  Portuguese  Български  Русский  Українська  やまと  中国  فارسی 

Lavorare con taspberry è bellissimo, tuttavia dal punto di vista della rimasterizzazione abbiamo un problema: la mancanza di grub e la presenza di uboot.

Non sarebbe nemmeno male, ma eggs è strutturato per lavorare con grub ed isolinux, calamares lo stesso, quindi sinora le immagini realizzate per amd64 hanno girato esclusivamente su una versione di Proxmox VE come macchine virtualizzate su un Raspberry 4.

In questo modo abbiamo a disposizione una modalità di installazione standard ed in effetti inizializzando il lettore di CD con la notra immagine ISO riusciamo ad installare regolarmente il sistema con calamares.

Tuttavia, abbiamo bisogno di far girare il nostro lavoro su hardware reale e non emulato e ci scontriamo con l'assenza di un lettore CDROM, l'assenza di grub, etc.

Ho quindi provato a creare una immagine .img per rapberry raspi.img partendo dall'immagine lite, e metterla su chiavetta USB per vedere cosa succede.

Scaricare immagine raspi 2024-07-04-raspios-bookworm-arm64-lite.img.xz

decomprimere l'immagine

unxz 2024-07-04-raspios-bookworm-arm64-lite.img.xz -k

Ridenominazione dell'immagine

mv 2024-07-04-raspios-bookworm-arm64-lite.img raspi.img

La nostra immagine root=PARTUUID=a3f161f3-02

Aggiungere lo spazio necessario

Poichè il filesystem rootfs della mia raspberry ha circa 6GB di dati, mentre l'immagine lite ha circa 2,1 GB di spazio, occorre ingrandire l'immagine. Utilizzeremo il comando qemu-img resize:

qemu-img resize -f raw raspi.img +5G

Associa il file .img a un dispositivo loop:

sudo losetup -fP raspi.img

verifica

sudo losetup -a

espansione della partizione con gparted

sudo gparted /dev/loop0

Creazione dei dispositivi di mappatura delle partizioni:

sudo kpartx -av /dev/loop0

Verifica i dispositivi di mappatura creati:

ls /dev/mapper

monta rootfs

sudo mount /dev/mapper/loop0p2 /mnt/rootfs

esegui copia

sudo rsync -aAXv /zfs/raspi_backup/rootfs/ /mnt/rootfs/
sudo nano /mnt/rootfs/etc/fstab

Ed impostare fstab come segue:

Proc            /proc           proc    defaults          0       0
PARTUUID=a3f161f3-01 /boot/firmware vfat defaults 0 2
PARTUUID=a3f161f3-02 / ext4 defaults,noatime 0 1

monta bootfs

sudo mount /dev/mapper/loop0p1 /mnt/bootfs
sudo rsync -aAXv /zfs/raspi_backup/bootfs/ /mnt/bootfs/

edit /mnt/bootfs/cmdline.txt

sudo nano /mnt/bootfs/cmdline.txt

edita cmdline e rimetti la partizione corretta

console=serial0,115200 console=tty1 root=PARTUUID=a3f161f3-02 rootfstype=ext4 fsck.repair=yes rootwait splash quiet splash plymouth.ignore-serial-console

smonta

sudo umount /mnt/bootfs
sudo umount /mnt/rootfs

Rimuovi i dispositivi di mappatura delle partizioni:

sudo kpartx -d /dev/loop0

Rilascia il dispositivo loop:

sudo losetup -d /dev/loop0

Scrittura dell'immagine su MMC o chiavetta

A questo punto non ci rimane altro che scrivere la nostra immagine su una microsd o una chiavetta USB. Utilizzeremeo rpi-installer selezionando immagine custom e quindi la nostra immagine raspi.img.

Terminata la scrittura non ci resta che avviare il nostro raspberry e goderci l'ebbrezza del boot con la nostra immagine.