镜像备份
为应付文件、数据丢失或损坏等可能出现的意外情况,将SD卡中的数据复制到其他存储设备中。以便于及时恢复和还原系统,使得避免重复配置浪费时间精力,备份的系统的方法网上有很多种,在此整理归类。
WAY1:将SD卡的空间整体复制出来,用软件制作成镜像文件
特点:不管SD卡的空间有没有被占满,都整体复制,制作出来的镜像文件大小等于SD卡的大小,缺点:制作镜像时间久,将镜像文件写入树莓派SD卡的时间也久,占用的大量的硬盘空间。优点:制作镜像的方法简单。比较适合SD卡空间占用量大的或者SD卡容量比较小的
具体方法:
1,window下用win32diskimage软件读取SD卡内容到指定的空白img文件,缺点:是只能写入等于或者大于镜像img文件的SD卡。
2,window下用WinImager软件建立一个空白img文件,查看要复制的SD卡的分区格式和细节,新建和原SD卡一模一样的分区细节,复制原SD卡内容到到新建分区格式一样的地方,最后生成的img镜像文件
3,window下用diskgenius软件,方法和2一模一样
4,linux下采用dd指令的方法将SD卡全部复制
推荐选择方法1,最简单。
备注*解释下:用WinImager软件和diskgenius的意义是因为在Windows下,无法显示出linux-SD卡的内容
WAY2:linux系统下指令复制
特点:操作比较麻烦,必须是linux系统下,优点:生成的镜像文件及其小,不占用电脑硬盘空间
可用于备份系统镜像的linux系统:有linux系统的电脑,window下用虚拟机运行linux系统,或另外一个nano或树莓派(自带raspbian系统属于linux系统),树莓派(自身,适合数据空间小于SD空间的50%以下)
注意使用方式二前,必须要清楚SD的使用情况。
终端输入df -h 查看磁盘使用情况,确定镜像的大小范围
终端输入sudo fdisk -l /dev/mmcblk0,得知SD卡分区的详细信息
终端输入sudo dd if=/dev/root | gzip>/home/ares/nano.img,备份镜像为nano.img
参考https://blog.csdn.net/mbjxking/article/details/113814119
WAY3:通过读卡器将系统复制到新的SD卡上
如果是完整版系统raspbian的话,将带有新SD卡的USB读卡器插入树莓派,SD卡的空间必须大于等于树莓派自身的SD卡空间,用附件自带SD Card Copier,来复制系统。特点:只能备份系统,并没有生成系统所需的镜像。一张卡只能备份一个系统,优点非常明显就是更换系统就是直接将备份后的SD卡插入树莓派即可,无需win32diskimage将镜像,写入的过程,效率比较高,缺点也很明显:无法生成镜像文件,不好批量,对于SD卡多的人来说是个不错的选择。
总结
如果你有多张SD卡的话,并且满足SD卡的空间大于等于树莓派SD卡的空间的话,推荐用方式三,无需镜像写入系统的过程。不过也可以用方式一和二。
如果只有一张SD卡的话,推荐方式一和二,可以实现随意换系统,麻烦之处就是每次都要将系统写入的新SD卡中。
注*用镜像写入SD的话,必须要扩展下系统
重启SSH服务
正常情况下nano是自带ssh服务的,但当我尝试通过win10PC端使用VNC viewer软件登陆nano的远程桌面时,发现无法扫描到nano的IP地址,无论我使用何种扫描工具,接着尝试moba也连接失败,无论是使用wifi还是手机热点。
sudo apt-get install openssh-server
在nano上已经安装
ps -e | grep ssh
查看有没有显示服务器,如果执行命令ps -e | grep ssh后只有ssh-agent,说明ssh-server还没有启动,如果看到sshd的字符内容,那就说明ssh-server已经启动了。
但我看到的是只有ssh-agent,需要执行命令:/etc/init.d/ssh start
sudo /etc/init.d/ssh start //重启ssh服务器
[....] Starting ssh (via systemctl): ssh.serviceJob for ssh.service failed because the control process exited with error code. See "systemctl status ssh.service" and "journalctl -xe" for details.
failed!
看到报错,让我们运行这两句指令查看错误细节。
systemctl status ssh.service
没有复制,最后大概是这几句话:
Apr 25 19:52:07 ubuntu systemd[1]: Stopped OpenBSD Secure Shell server.
Apr 25 19:52:07 ubuntu systemd[1]: ssh.service: Start request repeated too quick
Apr 25 19:52:07 ubuntu systemd[1]: Failed to start OpenBSD Secure Shell server.
接着运行第二句:
journalctl -xe
输出很长,一千多行,也没有复制
sudo /usr/sbin/sshd -T //查看错误代码的位置
重点是这句话,查看错误代码位置,我的出来是有一个yesPermit无法识别,然后执行sudo gedit /etc/ssh/sshd_config打开文件,把这个改成yes就好了
sudo /etc/init.d/ssh start
终端里出现绿色ok,则SSH正常启动。这时通过手机热点连接PC和nano,则可以远程连接和远程桌面,但wifi仍然不行,wifi连接的情况下nano端的IP地址扫不出来,不知何故。
补充 linux中服务的管理
systemctl 动作 服务
systemctl start sshd #开启服务
systemctl stop sshd #停止服务
systemctl status sshd #查看服务状态
systemctl restart sshd #重启服务
systemctl reload sshd #让服务从新加载配置
systemctl enable sshd #设定服务开启启动
systemctl disable sshd #设定服务开机不启动
systemctl list-unit-files #查看系统中所有服务的开机启动状态
systemctl list-units #查看系统中所有开启的服务
systemctl set-default graphical.target #开机时开启图形
systemctl set-default multi-user.targe #开机时不开图形
系统服务的控制
1)systemd
系统初始化程序,系统开始的第一个进程,pid为1
2)systemctl 命令
systemctl list-units ##列出当前系统服务的状态
systemctl list-unit-files ##列出服务的开机状态
systemctl status sshd ##查看指定服务的状态
systemctl stop sshd ##关闭指定服务
systemctl start sshd ##开启指定服务
systemctl restart sshd ##从新启动服务
systemctl enable sshd ##设定指定服务开机开启
systemctl disable sshd ##设定指定服务开机关闭
systemctl reload sshd ##使指定服务从新加载配置
systemctl list-dependencies sshd ##查看指定服务的倚赖关系
systemctl mask sshd ##冻结指定服务
systemctl unmask sshd ##启用服务
systemctl set-default multi-user.target ##开机不开启图形
systemctl set-default graphical.target ##开机启动图形
setterm ##文本界面设定color
3)服务状态
systemctl status 服务名称
loaded ##系统服务已经初始化完成,加载过配置
active(running) ##正有一个或多个程序正在系统中执行,
#vsftpd 就是这种模式
atcive(exited) ##仅执行一次就正常結束的服务,
#目前并没有任何程序在系統中执行
atcive(waiting) ##正在执行当中,
#不过还再等待其他的事件才能继续处理
inactive ##服务关闭
enbaled ##服务开机启动
disabled ##服务开机不自启
static ##服务开机启动项不可被管理
failed ##系统配置错误
参考https://www.pianshen.com/article/4040366032/