Image de sauvegarde Raspberry Pi et gravure par lots

Raspberry Pi 4B + image de sauvegarde et gravure par lots

Original: https://www.cooooder.com/archives/20200114

Avant d'écrire cet article, j'ai trouvé moi-même des scripts open source, mais c'est peut-être parce que les paramètres réels sont incompatibles avec les paramètres du script, ce qui a conduit à l'échec de l'exécution, j'ai donc ajusté les commandes étape par étape et trié le Si vous me rencontrez également Pour le même problème, j'espère que vous suivez les étapes ci-dessous étape par étape, et certaines commandes compliquées seront expliquées et marquées en conséquence. Je crois que vous pouvez également implémenter avec succès la mise en miroir de sauvegarde de carte SD.

0. Préparation

alentours
  • Raspberry Pi 4B +
  • Carte SD Raspberry Pi (installée avec le système Raspbian Buster)
  • Lecteur de carte SD
  • Environnement PC Ubuntu
  • Machine virtuelle VMware (installer le système d'exploitation de bureau Ubuntu)
prêt
  1. Omettez l'installation de VMware, le processus d'installation d'Ubuntu
  2. Insérez la carte SD dans le lecteur de carte, insérez l'interface USB de l'ordinateur
  3. Montez la carte SD, la machine virtuelle générale reconnaîtra et montera automatiquement
  4. Si la carte SD n'est pas montée automatiquement, vous pouvez la monter manuellement, sélectionnez Machine virtuelle> Périphérique amovible> Se connecter
  5. Une fois le montage réussi, vous pouvez voir deux dossiers
    Ubuntu
Ressources

Tout est prêt, lancez la sauvegarde

1. Installez les outils nécessaires

parted est un outil de partitionnement du disque dur ou de redimensionnement de la partition

sudo apt-get install -y dosfstools dump parted kpartx

2. Créez un répertoire de travail

mkdir ~/backupimg
cd ~/backupimg

3. Uid et gid sont déterminés en fonction du nom d'utilisateur actuel du système

uid=edward
gid=edward

4. Déterminez la taille de l'image IMG créée

Estimez ici la taille de l'image (1,2 G + 53 Mo). Pour des raisons de sécurité, créez un fichier IMG d'image vierge de 1,5 G (1 600 Mo).

# 查看SD卡已用空间大小,从而确定待备份的镜像IMG大小
df -h
# Filesystem   Size    Used   Avail   Use%   Mounted on
# /dev/sdb1    253M    53M    200M    21%    /media/edward/boot
# /dev/sdb2    15G     1.2G   13G     9%     /media/edward/rootfs

5. Créez une image vierge IMG

# 大小1600M
sudo dd if=/dev/zero of=raspberrypi.img bs=1M count=1600

6. Vérifiez la taille de l'image

Confirmez la taille du fichier image, il doit s'agir d'un multiple entier de 512 octets, sinon il devrait s'agir d'une erreur dans l'opération de l'étape 5.

ls -l raspberrypi.img
# -rw-r--r-- 1 root root 1677721600 Jan 13 19:29 raspberrypi.img
# 1677721600 = 1024 * 1024 * 1600

7. Afficher la table des partitions

Le fichier image doit être partitionné en tant que bootfs et rootfs (bootfs est de type FAT32 et rootfs est de type ext4)

# 执行sudo fdisk -l ,查看分区表,确定bootfs扇区的起始,获取三个后面需要用到的参数值:8192,532479,532480
sudo fdisk -l
# Device      Start       End     Sectors    Size   Type
# /dev/sdb1    8192    532479      524288    256M   W95 FAT32(LBA)
# /dev/sdb2  532480  31116287    30583808   14.6G   Linux

Insérez la description de l'image ici

8. Partition de fichiers miroir

# mklabel msdos:定义分区表格式,msdos不支持2TB以上容量的磁盘,大于2TB的磁盘选gpt分区表格式
# mkpart primary start end:primary指分区类型为主分区
# 这里的值需要手动执行步骤7,来设定
sudo parted raspberrypi.img --script -- mklabel msdos
sudo parted raspberrypi.img --script -- mkpart primary fat32 8192s 532479s
sudo parted raspberrypi.img --script -- mkpart primary ext4 532480s -1

9. Vérifiez si la partition est réussie

sudo parted raspberrypi.img

# 在(parted)后面输入print free

# Number  Start   End     Size    Type     File system  Flags
#        16.4kB  4194kB  4178kB           Free Space
# 1      4194kB  273MB   268MB   primary               lba
# 2      273MB   1677MB  1404MB  primary
#        1677MB  1678MB  1049kB           Free Space

# 输入quit退出

10. Mettez en miroir le fichier IMG et associez le périphérique de boucle

Pour monter le fichier image sur le système, vous devez utiliser le périphérique de boucle pour monter le fichier sur le système

sudo losetup -f --show raspberrypi.img
# 注意这里的输出 /dev/loop6

# 这里包括后面的loop6根据上一步命令获取,实际使用要根据实际获取的值进行替换
sudo kpartx -va /dev/loop6
# 查询挂载位置
ls /dev/mapper/loop6p*
# /dev/mapper/loop6p1  /dev/mapper/loop6p2
# loop6p1对应的是img文件分区上的 /boot,loop6p2对应的是 /root

11. Format IMG miroir

sudo mkfs.vfat -n boot /dev/mapper/loop6p1
sudo mkfs.ext4 -L rootfs /dev/mapper/loop6p2

img

12. Montez le périphérique en boucle sur le système

mkdir tgt_boot tgt_Root
sudo mount -t vfat -o uid=${uid},gid=${gid},umask=0000 /dev/mapper/loop6p1 ./tgt_boot/
sudo mount -t ext4 /dev/mapper/loop6p2 ./tgt_Root/

13. Sauvegarde: démarrage de sauvegarde

sudo cp -rfp /media/${uid}/boot/* ./tgt_boot/

14. Sauvegarde: racine de sauvegarde

# 设置权限,并把文件夹清空
sudo chmod 777 tgt_Root
sudo chown ${uid}.${uid} tgt_Root
sudo rm -rf ./tgt_Root/*
cd tgt_Root/
sudo dump -0uaf - /media/${uid}/rootfs/ | sudo restore -rf -
# 注意!注意!
cd ../

décharger

15. Afficher PARTUUID

# Raspbian启动要对应分区的PARTUUID
# 镜像文件对应的loop device的两个分区的PARTUUID
sudo blkid
# /dev/mapper/loop6p1: SEC_TYPE="msdos" LABEL_FATBOOT="boot" LABEL="boot" UUID="ED9A-5B01" TYPE="vfat" PARTUUID="816d8bf0-01"
# /dev/mapper/loop6p2: LABEL="rootfs" UUID="88f021e9-d2bc-4a0b-b8f2-778d8adbc76a" TYPE="ext4" PARTUUID="816d8bf0-02"
# boot对应816d8bf0-01,root对应816d8bf0-02
# 被替换的PARTUUID
opartuuidb=`sudo blkid -o export /dev/sdb1 | grep PARTUUID`
opartuuidr=`sudo blkid -o export /dev/sdb2 | grep PARTUUID`
# 用于替换的PARTUUID
npartuuidb=`sudo blkid -o export /dev/mapper/loop6p1 | grep PARTUUID`
npartuuidr=`sudo blkid -o export /dev/mapper/loop6p2 | grep PARTUUID`

16. Modify./tgt_boot/cmdline.txt

# 用 $npartuuidr 替换 $opartuuidr => PARTUUID=816d8bf0-02 替换 PARTUUID=738a4d67-02 
sudo sed -i "s/${opartuuidr}/${npartuuidr}/g" ~/backupimg/tgt_boot/cmdline.txt

17. Modify./tgt_Root/etc/fstab

sudo sed -i "s/${opartuuidb}/${npartuuidb}/g" ~/backupimg/tgt_Root/etc/fstab
sudo sed -i "s/${opartuuidr}/${npartuuidr}/g" ~/backupimg/tgt_Root/etc/fstab

18. Démonter la partition

sudo umount tgt_boot tgt_Root
sudo kpartx -d /dev/loop6
sudo losetup -d /dev/loop6
rmdir tgt_boot tgt_Root

edit_fstab

19. Graver l'image

Raspberry Pi utilisant l'outil de gravure d'image intégré pour graver Raspberry Pi Imager, raspberrypi.img gravera sur la carte SD.

Imageur Raspberry Pi

20. Étendez la partition racine

Insérez la carte SD dans le Raspberry Pi pour démarrer, exécutez df -h pour vérifier l'espace disque, et vous constaterez que la taille totale n'est que de 1,5G, vous devez exécuter la commande sudo raspi-config pour configurer, Options avancées = > Développez le système de fichiers, développez la partition racine sur toute la carte SD.

sudo raspi-config

21. Redémarrez pour redémarrer le Raspberry Pi pour prendre effet

reboot

référence:

Original: https://www.cooooder.com/archives/20200114

Je suppose que tu aimes

Origine blog.csdn.net/zszangy/article/details/114395448
conseillé
Classement