树莓派nanodlp镜像备份

1.查看镜像大小

 df -hl           

查看文件系统所占磁盘空间大小

nanodlp大概1.4G左右,做成1.5G的镜像比较保守一点(最后结论是1.5G太小了最后dump不够空间写入会失败,做成2G大小才没问题

sudo dd if=/dev/zero of=raspberrypi.img bs=4M count=384

改为执行以下

sudo dd if=/dev/zero of=raspberrypi.img bs=4M count=500

这句要在挂载U盘后再执行,在U盘生成一个空的1.5G的img文件。

4M*384=1.5G*1024=1536M

4M*500=2G*1024=2000M

2.确认要备份系统起始位置。

sudo fdisk -l /dev/mmcblk0

确认boot起始位置,root起始位置

sudo parted raspberrypi.img --script -- mklabel msdos

sudo parted raspberrypi.img --script -- mkpart primary fat32 8192s 532480s

sudo parted raspberrypi.img --script -- mkpart primary ext4 540672s -1

4.先安装挂载虚拟文件工具kpartx

sudo apt-get install dosfstools dump parted kpartx

以上安装kpartx挂载虚拟文件系统命令,下面的需要用到这个命令

5.挂载U盘

插入U盘到树莓派usb口处。

sudo fdisk -l

查看插入u盘的名字。下图sda1为U盘的盘符名字

sudo mkdir /mnt/usb

(在mnt下生产一个usb文件夹用来挂载U盘)

sudo mount /dev/sda1 /mnt/usb

切换到/mnt/usb 进行操作

cd /mnt/usb

 

6.在U盘生成一个空的2G的img文件。

sudo dd if=/dev/zero of=raspberrypi.img bs=4M count=384

sudo dd if=/dev/zero of=raspberrypi.img bs=4M count=500

执行写入一个1.5G的文件时间比较长,想知道进度,可以另外多开一个putty登录进树莓派,运行一下命令查看 dd命令的进度。

watch -d -n 5 ls -lh /mnt/usb

 看到如下命令提示后,才算完成写入一个空img,才可以继续输入以后的命令。

7.格式化与备份镜像

逐条输入一下命令

sudo parted raspberrypi.img --script -- mklabel msdos
sudo parted raspberrypi.img --script -- mkpart primary fat32 8192s 532480s
sudo parted raspberrypi.img --script -- mkpart primary ext4 540672s -1
loopdevice=`sudo losetup -f --show raspberrypi.img`
device=`sudo kpartx -va $loopdevice | sed -E 's/.*(loop[0-9])p.*/\1/g' | head -1`
device="/dev/mapper/${device}"
partBoot="${device}p1"
partRoot="${device}p2"
sudo mkfs.vfat $partBoot#给img Boot分区格式化
sudo mkfs.ext4 $partRoot#给img root分区格式化
sudo mount -t vfat $partBoot /media
sudo cp -rfp /boot/* /media/
sudo umount /media
sudo chattr +d raspberrypi.img
sudo mount -t ext4 $partRoot /media/
cd /media
sudo dump -h 0 -0uaf - / | sudo restore -rf -

 注意里头2句要按照自己实际要备份的系统对应的位置数填写。

sudo parted raspberrypi.img --script -- mkpart primary fat32 8192s 532480s

sudo parted raspberrypi.img --script -- mkpart primary ext4 540672s -1

运行dump语句后时间会比较长,这里是把原系统的1.3G的root分区备份到镜像里头来。 下图所示只进行52%,请耐心等候至100%完成。

8.修改etc/fstab对应分区的PARTUUID ’

先执行blkid命令,查看镜像对应的PARTUUID
sudo blkid

boot 对应的 PARTUUID  7d31a866-01

root 对应的 PARTUUID   7d31a866-02

sudo nano /media/etc/fstab

 

改为

boot 对应的 PARTUUID  7d31a866-01

root 对应的 PARTUUID   7d31a866-02

9.修改cmdline.txt 对应分区的root-PARTUUID

cd /mnt/usb

sudo umount /media

sudo mount -t vfat $partBoot /media 

sudo nano /media/cmdline.txt

改为

root 对应的 PARTUUID   7d31a866-02

保存后退出。

最后执行以下语句。

cd /mnt/usb

sudo umount /media

sudo kpartx -d $loopdevice
sudo losetup -d $loopdevice

cd ~

sudo umount /mnt/usb

U盘内即可备份img文件。

把img复制到电脑端,用Win32DiskImager写入镜像到sd卡,再插sd卡到树莓派测试能否成功启动nanodlp。

PS附注

1.单独修改镜像boot里头的cmdline.txt 操作代码如下:都是挂载了U盘后操作的

先回到cd /mnt/usb
loopdevice=`sudo losetup -f --show raspberrypi.img`
device=`sudo kpartx -va $loopdevice | sed -E 's/.*(loop[0-9])p.*/\1/g' | head -1`
device="/dev/mapper/${device}"
partBoot="${device}p1"
sudo mount -t vfat $partBoot /media 
sudo nano /media/cmdline.txt #修改cmdline.txt 对应分区的root-PARTUUID=

 操作完成后,卸载media 

sudo umount /media 

要是修改boot 里头的 config.txt

sudo nano /media/config.txt

=> add this line :

 dtoverlay=pi3-miniuart-bt

 2.单独修改镜像root里头的etc/fstab 操作代码如下:都是挂载了U盘后操作的

先回到cd /mnt/usb
loopdevice=`sudo losetup -f --show raspberrypi.img`
device=`sudo kpartx -va $loopdevice | sed -E 's/.*(loop[0-9])p.*/\1/g' | head -1`
device="/dev/mapper/${device}"
partRoot="${device}p2"
sudo mount -t ext4 $partRoot /media/
sudo nano /media/etc/fstab

 操作完成后,卸载media 

sudo umount /media 

镜像里头的root的nanodlp machine Setting 修改就要回到镜像root里进行操作,找到db文件夹下的machine.json       

sudo nano /media/home/pi/printer/db/machine.json

 

镜像root里头,修改 wifi文件

sudo nano /media/etc/wpa_supplicant/wpa_supplicant.conf

ssid="wifi name"

psk="wifi-password"

 

 

猜你喜欢

转载自blog.csdn.net/hu5566798/article/details/106934298