背景

最近接手了一个项目需要在友善之臂的NanoPi-M1-PLUS的开发板上运行一个小型的web程序。开发版跑的系统是ubuntu16.04的一个定制版本内核4.14.111。ubuntu系统上需要安装配置,nginx,tomcat,mysql,串口驱动,等等一系列的环境。一个开发版的环境配置下来至少3-4小时,然而我这里有24个开发版需要配置,这样一个一个配置下来何时是个头,想想头都打。于是想到能不能将现在这个配置好的开发板整个系统克隆打包然后在其他的开发板上还原。然后就是在网上一顿百度不断尝试,还真的可以。

环境

1、NanoPi-M1-PLUS开发板,可以理解为一个小型电脑上面跑的ubuntu16.0的系统。开发板emmc 8G,

2、32G U盘,用来存储克隆的系统。

3、16G TF存储卡,存储卡里是烧录的ubuntu16.04系统,TF卡插入NanoPi-M1-PLUS开发版之后开发板就会从TF卡引导启动ubuntu系统。这样就不会从开发版的emmc中启动系统。

4、系统:ubuntu16.04 内核4.14.111。


说明:

操作过程中涉及到两个操作系统。

1、开发版emmc中存储的ubuntu16.04系统:这个系统就是我们配置好了项目环境的系统,需要克隆的就是这个系统。

2、TF存储卡中的ubuntu16.04系统:这个系统就是克隆压缩的工具。这个系统只要支持 dd、gzip指令就行,为了方便起见就用了ubuntu16.04,也可以使用其它版本的系统,和emmc中存储的系统无关。我们要备份的是emmc中存储的系统,备份的时候emmc中系统是不能处于运行状态的。所以我们只能通过TF卡运行另外一个系统进行备份操作。

原理

其实就是将emmc整个磁盘复制然后压缩成一文件,然后在将这个文件解压写入其他开发版的emmc中。这样其他的开发版emmc的内容就和备份的那个开发版的emmc一模一样。也就具有了项目的运行环境。


操作

一、克隆备份

1、关机状态下将TF卡和U盘插入配置好项目运行环境的开发版上。然后上电开机,此时TF卡中的系统就会启动。

2、进入系统后查看磁盘分区情况。

#以root账号执行后面的指令
su

#查看磁盘
fdisk -l

克隆自己的ubuntu系统并在其它开发板还原_ubuntu

3、挂载U盘,将U盘挂载到media目录下

mount /dev/sda1 /media

4、备份/dev/mmcblk1全盘数据,并利用gzip工具进行压缩,保存到U盘并命名为image.gz,大概需要15分钟请耐心等待。

dd if=/dev/mmcblk1 | gzip > /media/image.gz

5、卸载U盘

umount /dev/sda1

到此克隆备份已经成功完成,可以拔除U盘了。

二、还原

还原时不需要插入TF卡,开发版出厂自带系统。当还原后出厂的系统会被覆盖。

1、将U盘插入其他需要部署项目的开发版上,并挂载U盘

mount /dev/sda1 /media

2、解压还原

gzip -dc /media/image.gz | dd of=/dev/mmcblk0

3、关机重启,此时的开发版系统已经是配好环境的那个开发板一模一样。

参考

dd指令详解:https://blog.csdn.net/qingzhuyuxian/article/details/83058503

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Ubuntu