Création d’une image Raspberry Pi OS personnalisé

Création d’une image Raspberry Pi OS personnalisé.

Distribution de travail : Ubuntu 18.04
Liens :
https://gist.github.com/htruong/0271d84ae81ee1d301293d126a5ad716
https://gitlab.com/benzoga33/chrootPI/-/blob/master/chrootPI.sh
Hackable Magazine n°35, article ‘Raspberry Pi SD’

I/ Agrandissement de l’image de Raspberry PI OS.

1/ Création du répertoire de travail.

util01@station66:~$ mkdir RPCUST
util01@station66:~$ cd RPCUST/
util01@station66:~/RPCUST$

2/ Téléchargement de Raspberry Pi OS.

Lien :
https://www.raspberrypi.org/downloads/raspberry-pi-os/

Version :
Raspberry Pi OS (32-bit) with desktop
Image with desktop based on Debian Buster
Version: August 2020
Release date: 2020-08-20
Kernel version: 5.4
Size: 1133 MB
util01@station66:~/RPCUST$ wget https://downloads.raspberrypi.org/raspios_armhf_latest

3/ Décompression de l’archive.

util01@station66:~/RPCUST$ mv raspios_armhf_latest raspios_armhf_latest.zip
util01@station66:~/RPCUST$ unzip raspios_armhf_latest.zip

4/ Vérification.

util01@station66:~/RPCUST$ ls -l 2020-08-20-raspios-buster-armhf.img
-rw-r--r-- 1 util01 util01 3821010944 août  20 12:54 2020-08-20-raspios-buster-armhf.img

5/ Analyse de l’image.

util01@station66:~/RPCUST$ file 2020-08-20-raspios-buster-armhf.img
2020-08-20-raspios-buster-armhf.img: DOS/MBR boot sector; partition 1 : ID=0xc, start-CHS (0x40,0,1), end-CHS (0x3ff,3,32), startsector 8192, 524288 sectors; partition 2 : ID=0x83, start-CHS (0x3ff,3,32), end-CHS (0x3ff,3,32), startsector 532480, 6930432 sectors

6/ Extension de la partition racine.

Taille du stockage à ajouté : 1 Go = 1024 * 1M

util01@station66:~/RPCUST$ dd if=/dev/zero bs=1M count=1024 >> 2020-08-20-raspios-buster-armhf.img
1024+0 enregistrements lus
1024+0 enregistrements écrits
1073741824 bytes (1,1 GB, 1,0 GiB) copied, 3,42726 s, 313 MB/s
util01@station66:~/RPCUST$ ls -l 2020-08-20-raspios-buster-armhf.img
-rw-r--r-- 1 util01 util01 4894752768 nov.  12 13:06 2020-08-20-raspios-buster-armhf.img

7/ Montage des partitions.

util01@station66:~/RPCUST$ sudo losetup -f -P --show 2020-08-20-raspios-buster-armhf.img
/dev/loop0
util01@station66:~/RPCUST$

8/ Installation du logiciel de partionnement ‘parted’.

util01@station66:~/RPCUST$ sudo apt-get install parted

9/ Gestion des partitions.

– Gestion des partitions de l’image :

util01@station66:~/RPCUST$ sudo parted /dev/loop0
GNU Parted 3.2
Utilisation de /dev/loop0
Bievenue sur GNU Parted ! Tapez 'help' pour voir la liste des commandes.
(parted)

– Affichage des informations des partitions :

(parted) print
Modèle: Périphérique Loopback (loopback)
Disque /dev/loop0 : 4895MB
Taille des secteurs (logiques/physiques): 512B/512B
Table de partitions : msdos
Drapeaux de disque :
Numéro  Début   Fin     Taille  Type     Système de fichiers  Fanions
 1      4194kB  273MB   268MB   primary  fat32                lba
 2      273MB   3821MB  3548MB  primary  ext4
(parted)

– Agrandissement de la partition 2, car la partition 2 a 3821MB au lieu de 4895MB :

(parted) rm 2
(parted) mkpart primary 273 4895
(parted) print
Modèle: Périphérique Loopback (loopback)
Disque /dev/loop0 : 4895MB
Taille des secteurs (logiques/physiques): 512B/512B
Table de partitions : msdos
Drapeaux de disque :
Numéro  Début   Fin     Taille  Type     Système de fichiers  Fanions
 1      4194kB  273MB   268MB   primary  fat32                lba
 2      273MB   4895MB  4622MB  primary                       lba
(parted)

– Quitter :

(parted) quit
Information: Ne pas oublier de mettre à jour /etc/fstab si nécessaire.

– Vérification du système de fichier :

util01@station66:~/RPCUST$ sudo e2fsck -f /dev/loop0p2
e2fsck 1.44.1 (24-Mar-2018)
Passe 1 : vérification des i-noeuds, des blocs et des tailles
Passe 2 : vérification de la structure des répertoires
Passe 3 : vérification de la connectivité des répertoires
Passe 4 : vérification des compteurs de référence
Passe 5 : vérification de l'information du sommaire de groupe
rootfs : 106651/216864 fichiers (0.2% non contigus), 727625/866304 blocs
util01@station66:~/RPCUST$

– Agrandissement de la partition :

util01@station66:~/RPCUST$ sudo resize2fs /dev/loop0p2
resize2fs 1.44.1 (24-Mar-2018)
En train de redimensionner le système de fichiers sur /dev/loop0p2 à 1128448 (4k) blocs.
Le système de fichiers sur /dev/loop0p2 a maintenant une taille de 1128448 blocs (4k).
util01@station66:~/RPCUST$

II/ Chroot de l’image de Raspberry PI OS.

1/ Installation de paquet Qemu.

util01@station66:~$ sudo apt install qemu qemu-user-static binfmt-support

2/ Création du répertoire de montage pour ‘root/’ et ‘boot/’.

util01@station66:~/RPCUST$ mkdir rp_boot
util01@station66:~/RPCUST$ mkdir rp_root

3/ Montage de la partition ‘boot’ et de la partition ‘root’.

util01@station66:~/RPCUST$ sudo mount -o rw /dev/loop0p1 rp_boot
util01@station66:~/RPCUST$ sudo mount -o rw /dev/loop0p2 rp_root

4/ Vérification.

util01@station66:~/RPCUST$ ls rp_boot/
bcm2708-rpi-b.dtb       bcm2708-rpi-zero-w.dtb    bcm2710-rpi-cm3.dtb  config.txt     fixup4x.dat   issue.txt     LICENCE.broadcom  start4x.elf
...
bcm2708-rpi-zero.dtb    bcm2710-rpi-3-b-plus.dtb  cmdline.txt          fixup4db.dat   fixup_x.dat   kernel.img    start4.elf        start_x.elf
util01@station66:~/RPCUST$
util01@station66:~/RPCUST$ ls rp_root/
bin  boot  dev  etc  home  lib  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
util01@station66:~/RPCUST$

5/ Montage des répertoies systèmes.

util01@station66:~/RPCUST$ sudo mount --bind /dev rp_root/dev/
util01@station66:~/RPCUST$ sudo mount --bind /sys rp_root/sys/
util01@station66:~/RPCUST$ sudo mount --bind /proc rp_root/proc/
util01@station66:~/RPCUST$ sudo mount --bind /dev/pts rp_root/dev/pts

6/ Modification de la configuration des bibliothèques partagés.

util01@station66:~/RPCUST$ sudo sed -i 's/^/#/g' rp_root/etc/ld.so.preload

7/ Copie de Qemu.

util01@station66:~/RPCUST$ sudo cp /usr/bin/qemu-arm-static rp_root/usr/bin/

8/ Chroot de l’image.

util01@station66:~/RPCUST$ sudo chroot /home/util01/RPCUST/rp_root/ /bin/bash
root@station66:/#

9/ Ajout de nouvelles applications.

Cette étape permet de modifier la configuration du Raspberry Pi OS :
– Ajout/suppression/modification d’application
– Mettre le français comme langue par défaut ou mettre le clavier en Azerty

root@station66:/# apt-get install mc vim htop screen wget nethack-console

10/ Quitter le ‘chroot’.

root@station66:/# exit
exit
util01@station66:~/RPCUST$

11/ Modification de la configuration des bibliothèques partagés.

util01@station66:~/RPCUST$ sudo sed -i 's/^#//g' rp_root/etc/ld.so.preload

12/ Démontage des répertoires systèmes.

util01@station66:~/RPCUST$ sudo umount rp_root/{dev/pts,dev,sys,proc,}
util01@station66:~/RPCUST$ sudo umount rp_boot/

13/ Démontage du ‘loopback’.

util01@station66:~/RPCUST$ sudo losetup -d /dev/loop0

14/ Test de nouvelle image Raspberry Pi OS avec Qemu.

Lien :
https://rockstarninja.hacktech.dev/virtualisation-de-raspberry-pi-os-avec-qemu/

util01@station66:~/RPCUST$ cd ../VIRTRP/
util01@station66:~/VIRTRP$
util01@station66:~/VIRTRP$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:/home/util01/VIRTRP/lib qemu-5.2.0-rc1/build/qemu-system-arm -M versatilepb -cpu arm1176 -m 256 -smp 1 -drive "file=../RPCUST/2020-08-20-raspios-buster-armhf.img,if=none,index=0,media=disk,format=raw,id=disk0" -device "virtio-blk-pci,drive=disk0,disable-modern=on,disable-legacy=off" -net "user,hostfwd=tcp::5022-:22" -dtb qemu-rpi-kernel/versatile-pb-buster.dtb -kernel qemu-rpi-kernel/kernel-qemu-5.4.51-buster -append 'root=/dev/vda2 panic=1' -no-reboot

15/ Capture d’écran.

Le bureau est correctement configuré en français.
Les applications MC et Nethack sont lançables.

Comments are closed, but trackbacks and pingbacks are open.