Raspberry Pi 使用的 sdcard 雖然同樣是 16GB,但因為不同廠牌還是有些大小的差異,備份跟還原 sdcard 有些問題,畢竟大檔案的 image 不能還原到稍小的 sdcard 中。
以下紀錄如何備份、還原及縮小 RPi 的 sdcard。
在 MAC 處理 image
- 使用 [SD Formatter] 可格式化 SD Card
sudo newfs_msdos -F 16 /dev/disk2
到 RASPBIAN 下載 RASPBIAN JESSIE WITH PIXEL,取得 2016-09-23-raspbian-jessie.zip 解壓縮得到2016-09-23-raspbian-jessie.img
重新插入 SD Card,用以下指令的結果,得知 SD Card 在 /dev/disk2 或是 /dev/disk1
diskutil list
/dev/disk0 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *480.1 GB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_HFS Macintosh HD 479.2 GB disk0s2
3: Apple_Boot Recovery HD 650.0 MB disk0s3
/dev/disk2 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *15.9 GB disk2
1: Windows_FAT_32 NO NAME 15.9 GB disk2s1
- umount disk2
sudo diskutil unmountDisk /dev/disk2
- 將 img 寫入 sdcard
如果 rdisk2 有問題,就改成 disk2
sudo dd bs=1m if=~/Downloads/2016-09-23-raspbian-jessie.img of=/dev/rdisk2
- 將 sdcard dump 到 image
sudo dd bs=1m if=/dev/rdisk2 of=~/Downloads/messenger_20170405.img
在 RPi 開機狀態直接備份 sdcard
在 RPi 上,將新的 sdcard 放入 USB sdcard Reader 接上 RPi
sudo fdisk -l
如果是 Disk /dev/mmcblk0 的設備,就是 RPi 上原始的 sdcard,以 USB sdcard Reader 接上 RPi 後,會看到增加的 /dev/sda 設備,這是新的 sdcard
下載 rpi-clone
git clone https://github.com/billw2/rpi-clone.git
sudo cp rpi-clone/rpi-clone /usr/local/sbin
rm -rf rpi-clone
用以下指令就可以將 sdcard 複製到 新的 sdcard 上
sudo rpi-clone sda -v -x
在 Windows 處理 sdcard image
使用 Win32 Disk Imager 軟體就可以備份及還原 image
縮小 RPi image
使用 PiShrink 可以在 linux 縮小 RPi image
wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh
chmod +x ./pishrink.sh
sudo ./pishrink.sh ./raspbian_backup.img
以下是執行結果,可看到檔案縮小了 2G
Creating new /etc/rc.local
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/loop0: 301607/960992 files (0.2% non-contiguous), 3200117/3841024 blocks
resize2fs 1.41.12 (17-May-2010)
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/loop0 to 3208948 (4k) blocks.
Begin pass 2 (max = 228392)
Relocating blocks XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 3 (max = 118)
Scanning inode table XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 4 (max = 25082)
Updating inode references XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/loop0 is now 3208948 blocks long.
Shrunk ./raspbian_backup.img from 15G to 13G
References
How to Clone Raspberry Pi SD Card on Windows, Linux and macOS
沒有留言:
張貼留言