目标:将已配置好的树莓派系统备份成镜像文件,方便生产和还原使用(建议32g以下的sd卡使用)。
这里使用Win32DiskImager将系统镜像整个读出来,再用PiShrink工具裁剪。
读取树莓派镜像
这里只演示,后面遇到名字自行替换,大致步骤如下:
- 找个地方,比如桌面,新建txt文档后缀修改为yourname.img
- 使用读卡器将带有树莓派系统的sd卡插入电脑
- Win32DiskImager选择,刚才新建的img文件
- 点击read,然后坐等(如果sd卡较大估计有的折腾)
这个方法读取全部sd卡的空间,我树莓派使用的SD卡是16G的,读出来整个镜像就16G左右,其中一部分是空白的没有使用的空间。
对读取的镜像进行裁剪
使用脚本进行剪裁。
- 获取脚本:
wget --no-check-certificate https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh
这边直接使用wget 获取脚本可能出现问题:
查了一下,因为一般文件路径类型是http。如果有遇到是https就会下载出错。可以使用下面的语句进行下载 ,加上你们的网址在后面
wget --no-check-certificate "Cookie:gpw_e24=http%3A%2F%2Fwww.oracle.com%2F" https://...
wget --no-cookie --no-check-certificate --header "Cookie:gpw_e24=http%3A%2F%2Fwww.oracle.com%2F" https://
wget --no-check-certificate https://
wget --no-cookie --no-check-certificate https://
也可以直接去github 上下载 https://github.com/Drewsif/PiShrink
上面还有详细的裁剪教程
2. 增加执行权限:
chmod +x pishrink.sh
- 使用root权限执行:
sudo bash pishrink.sh read_again.img
重要的事情说3遍
如果使用虚拟机,1、一定不能将img文件放在共享目录下去裁剪
2、 ubuntu 的系统一定是要英文的 否则裁剪失败
最终生成的镜像不足4G,且使用此脚本生成的镜像,在启动时将其调整为SD卡的最大存储空间大小,可以说非常给力了。
二、~/.config/autostart下通过桌面启动应用
-
进入用户目录下的.config目录,里面如果没有autostart目录的话就新建一个
cd ~/.config/autostart
-
autostart目录下新建auto_start_test.desktop文件,编辑内容如下:
[Desktop Entry] Type="Application" Exec="/home/pi/Desktop/KeDeCJ6EXE/KeDeCJ6 &"
两种写法,有时候上面那个可以,有时候下面可以,但是下面成功率高,上面有可能搞错了
[Desktop Entry] Type=Application Name=KeDeCJ6 Exec=/home/pi/Desktop/KeDeCJ6EXE/KeDeCJ6 &
-
重启树莓派进行测试。这种方法一般是用于桌面应用的自启动,Qt就是属于这种桌面应用, 但听说这种启动不是每次都有效,我这边断电后有1-2次启动失败了。
三、是在/etc/init.d/中添加服务项。
- 执行
ls /etc/init.d
可以看到该目录下有很多服务程序文件 - 在这里添加自己的服务文件,就可以对其进行配置从而实现自启动,在该目录下新建文件
auto_start_test,cd /etc/init.d sudo vim auto_start_test
- 编辑内容:
#!/bin/bash ### BEGIN INIT INFO # Provides: Auto_Start_Test # Required-Start: $remote_fs # Required-Stop: $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Auto Start Test # Descrption: This service is used to test auto start service ### END INIT INFO case "$1" in start) echo "Stat" /home/pi/Desktop/KeDeCJ6EXE/KeDeCJ6 & ;; stop) echo "Stop" killall KeDeCJ6 exit 1 ;; *) echo "Usage:service Auto_Start_Test start|stop" exit 1 ;; esac exit 0
这是一个bash脚本,指定了用start和stop命令进行服务的启动和停止,“BEGIN INIT INFO”那段注释是LSB标准说明,写不写都行,不写的话后面会有个警告。保存文件 ,执行下面指令 。
sudo chmod 777 auto_start_test//开放权限
sudo update-rc.d auto_start_test//将该服务添加到自启动项
//手动启动服务来测试
sudo service auto_start_teststart//启动服务
sudo service auto_start_teststop//停止服务
重启树莓派查看效果,可以看到无法自行启动,查看服务是存在这个服务的,但是就是没有效果。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200325090312880.png
四、利用树莓派自带的拷贝工具
这个方法我觉得是量产的比较好的方式;简单、容易操作、右比较完整、拷贝的还不是全部的内容,只拷贝有数据的地方:
树莓派系统自带sd card 拷贝工具
打开后,copy from device:默认当前系统正在用的sd卡
copy to device: 用读卡器将新的sd卡放插到树莓派上
然后点击start就可以去等待了
五、总结
树莓派备份用指令比较麻烦,拷贝来拷贝去的,用自带的工具,只要备份一张卡,要拷贝的时候,在树莓派上插上卡,插上读卡器,就能操作。省时