首页 树莓派正文

生成树莓派的最小系统镜像

云水 树莓派 2019-11-04 17:04:48 1568 0 树莓派

以下为生成树莓派的最小系统镜像的脚本,脚本raspberrypi-backup.sh用于生成树莓派的最小系统镜像。

该脚本能够将位于 TF 存储卡上的数据备份到通过USB连接的存储设备上。镜像的大小取决于 TF 存储卡的已用空间。

脚本接受1个必要参数:存放镜像的目录。每次执行,脚本会在该目录中生成一个img文件,文件名为backup_当前日期与时间.img。

复制以下数据,保存为raspberrypi-backup.sh

运行即可  sudo sh ./raspberrypi-backup.sh

#!/bin/bash
set -e
 
# start
if [ -z $1 ]; then
  echo "Backup directory not set, required."
  exit 1
fi
BACK_UP_DIR=$1
echo
 
# install
echo "Installing package ..."
apt-get install dosfstools dump parted kpartx -y
echo "Finish."
echo
 
# create image
echo "Creating image ..."
ROOT=`df -P | grep /dev/root | awk '{print $3}'`
MMCBLK0P1=`df -P | grep /dev/mmcblk0p1 | awk '{print $2}'`
ALL=`echo $ROOT $MMCBLK0P1 |awk '{print int(($1+$2)*1.2)}'`
TIME=`date "+%Y%m%d%H%M%S"`
FILE=$BACK_UP_DIR/backup_$TIME.img
dd if=/dev/zero of=$FILE bs=1K count=$ALL
echo "Finish."
echo
 
# part
echo "Parting image ..."
P1_START=`fdisk -l /dev/mmcblk0 | grep /dev/mmcblk0p1 | awk '{print $2}'`
P1_END=`fdisk -l /dev/mmcblk0 | grep /dev/mmcblk0p1 | awk '{print $3}'`
P2_START=`fdisk -l /dev/mmcblk0 | grep /dev/mmcblk0p2 | awk '{print $2}'`
parted $FILE --script -- mklabel msdos
parted $FILE --script -- mkpart primary fat32 ${P1_START}s ${P1_END}s
parted $FILE --script -- mkpart primary ext4 ${P2_START}s -1
parted $FILE --script -- quit
echo "Finish."
echo
 
# mount
echo "Mounting ..."
LOOP_DEVICE=`losetup -f --show $FILE`
kpartx -va $LOOP_DEVICE
PART_BOOT="/dev/dm-0"
PART_ROOT="/dev/dm-1"
echo "Finish."
echo
 
# format
echo "Formating ..."
mkfs.vfat $PART_BOOT
mkfs.ext4 $PART_ROOT
echo "Finish."
echo
 
# backup prepare
MOUNT_POINT=/media/backup_$TIME/
if [ ! -d "$MOUNT_POINT" ];then
  mkdir $MOUNT_POINT
fi
 
# backup /dev/boot
echo "Backing up disk /dev/boot ..."
mount -t vfat $PART_BOOT $MOUNT_POINT
cp -rfp /boot/* $MOUNT_POINT
umount $MOUNT_POINT
echo "Finish."
echo
 
# backup /dev/root
echo "Backing up disk /dev/root ..."
mount -t ext4 $PART_ROOT $MOUNT_POINT
cd $MOUNT_POINT
dump -h 0 -0uaf - / | sudo restore -rf -
cd
umount $MOUNT_POINT
echo "Finish."
echo
 
# unmount
echo "Unmounting ..."
kpartx -vd $LOOP_DEVICE
losetup -d $LOOP_DEVICE
rm -fr $MOUNT_POINT
echo "Finish."
echo
 
# end
echo "Back-up image $FILE is successfully created."
echo


版权声明

1.本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行测试。
2.本站资源仅供学习和交流使用,版权归资源原作者所有,请在下载后24小时之内自觉删除。
3.若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,与本站无关。
4.若内容涉及侵权或违法信息,请联系本站管理员进行下架处理,邮箱ganice520@163.com(本站不支持其他投诉反馈渠道,谢谢合作)

本文链接:http://apod.cc/index.php/post/106.html

发表评论

评论列表(0人评论 , 1568人围观)
☹还没有评论,来说两句吧...