树莓派相关
安装程序并开机启动
- 编译程序,打包为独立文件。
- 上传文件到/home/pi/.local/share/applications
- sudo nano /etc/systemd/system/virtualwelding.service
-
# 重载systemd配置
sudo systemctl daemon-reload
# 设置开机启动
sudo systemctl enable virtualwelding
# 立刻启动程序
sudo systemctl start virtualwelding
# 查看运行状态
sudo systemctl status virtualwelding
# 实时查看日志(MQTT报错、程序崩溃日志)
journalctl -u virtualwelding -f
# 手动停止程序(停止后5秒自动重启)
sudo systemctl stop virtualwelding
# 彻底禁用自动重启(调试用)
sudo systemctl edit virtualwelding
# 添加 Restart=no 保存后重载
[Unit]
Description=VirtualWelding仿真程序
# 等待网络、图形桌面、mqtt服务启动
After=network.target graphical.target mosquitto.service
[Service]
# 运行用户orangepi
User=orangepi
# 图形显示环境变量
Environment="DISPLAY=:0"
# 开机先休眠20秒,等待驱动、MQTT、桌面全部就绪
ExecStartPre=/bin/sleep 10
# 程序绝对路径
ExecStart=/home/orangepi/.local/share/applications/VirtualWelding
# 无论正常关闭/崩溃,都自动重启
Restart=always
# 关闭后等待10秒重启
RestartSec=10
# 熔断:60秒内最多重启3次,防止程序反复崩溃卡死系统
StartLimitIntervalSec=60
StartLimitBurst=3
# 日志输出
StandardOutput=journal+console
StandardError=journal+console
[Install]
# 开机跟随图形桌面启动
WantedBy=graphical.target
安装MQTT,默认开机启动
安装MQTT,默认开机启动
# 更新软件源
sudo apt update
# 安装mosquitto服务、客户端工具
sudo apt install mosquitto mosquitto-clients -y
# 查看服务状态
sudo systemctl status mosquitto
可能会遇到权限问题和监听地址问题,解决方案
修改/etc/mosquitto/mosquitto.conf
添加
# 开启匿名访问
allow_anonymous true
# 开启全网卡监听
listener 1883 0.0.0.0
制作镜像
使用Win32DiskImager
缩减镜像大小
使用Win32DiskImager本质上是将TF卡中所有的分区打包为镜像,为了实现缩减镜像,本质是缩小分区大小。
推荐直接使用DiskGenius,可以直接加载,然后调整分区大小。
PS:调整分区大小可能遇到问题:inode位置异常,超级块中的剩余块数不正确等,一般是异常拔盘、镜像烧录没 sync、关机崩溃、镜像扩容缩容操作中断导致。
给出验证过的解决方案:
- 将TF卡插入到另一个linux系统中
- 找到对应的盘
# 1. 看USB总线是否识别U盘硬件 lsusb # 2. 实时监控内核插拔日志,拔插U盘观察输出 dmesg -w # 3. 列出所有磁盘与分区(最关键) lsblk -f sudo fdisk -l - 一般盘号路径为/dev/sda /dev/sda1或者/dev/sdb /dev/sdb1

例如图中最后的/dev/sda /dev/sda1,其中sda是
- 然后先取消挂载
# 查看挂载 mount | grep mapper # 卸载 sudo umount /dev/mapper/sdb2 # 解除磁盘分区映射 sudo kpartx -dv /dev/sdb - 然后再修复
sudo e2fsck -f /dev/mapper/sdb2

浙公网安备 33010602011771号