树莓派相关

安装程序并开机启动

  1. 编译程序,打包为独立文件。
  2. 上传文件到/home/pi/.local/share/applications
  3. sudo nano /etc/systemd/system/virtualwelding.service
  4. # 重载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、关机崩溃、镜像扩容缩容操作中断导致。

给出验证过的解决方案:

  1. 将TF卡插入到另一个linux系统中
  2. 找到对应的盘
    # 1. 看USB总线是否识别U盘硬件
    lsusb
    # 2. 实时监控内核插拔日志,拔插U盘观察输出
    dmesg -w
    # 3. 列出所有磁盘与分区(最关键)
    lsblk -f
    sudo fdisk -l
  3. 一般盘号路径为/dev/sda /dev/sda1或者/dev/sdb  /dev/sdb1

    image

     例如图中最后的/dev/sda     /dev/sda1,其中sda是

  4. 然后先取消挂载
    # 查看挂载
    mount | grep mapper
    # 卸载
    sudo umount /dev/mapper/sdb2
    # 解除磁盘分区映射
    sudo kpartx -dv /dev/sdb
  5. 然后再修复
    sudo e2fsck -f /dev/mapper/sdb2
posted @ 2026-07-08 18:04  六镇2012  阅读(2)  评论(0)    收藏  举报