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.