You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Intel板的Yocto Project中swupdate入门步骤咨询

完整Swupdate入门指南(Intel Core i7-64开发板 + Yocto Project)

首先,先解决你提到的Bootloader识别问题——Intel x86平台的开发板除了GRUB/U-Boot,还常用systemd-boot(旧称gummiboot),部分定制板可能用厂商自研的引导程序。先快速确认你的设备用的是哪一种:

步骤1:确认当前Bootloader类型

  • 开机时留意引导阶段的提示:systemd-boot会显示极简的引导菜单,GRUB是带文字选项的菜单,U-Boot则会弹出=>命令行提示符。
  • 进入系统后也可以查EFI分区内容:
    # 先找到EFI挂载点,一般是/boot/efi
    ls /boot/efi/EFI/
    
    要是看到systemd目录就是systemd-boot,grub目录就是GRUB;如果没有EFI分区,大概率是传统BIOS引导的GRUB。

确认Bootloader后,下面是从配置到测试的全流程:

步骤2:配置Yocto环境支持Swupdate

假设你已经能正常构建core-image-minimal,且已把meta-swupdate添加到bblayers.conf,接下来做这些配置:

  1. 修改local.conf
    打开build/conf/local.conf,添加以下内容(根据你的Bootloader调整):

    # 启用Swupdate功能
    IMAGE_FEATURES += "swupdate"
    # 指定Swupdate的配置文件路径(后面要创建)
    SWUPDATE_CONFIG = "${THISDIR}/swupdate.cfg"
    # 可选:启用网络更新支持(HTTP/HTTPS)
    SWUPDATE_FEATURES += "network"
    # 根据Bootloader设置:GRUB填grub,systemd-boot填systemd-boot
    SWUPDATE_BOOTLOADER = "systemd-boot"
    
  2. 创建Swupdate配置文件
    在build/conf/下新建swupdate.cfg,根据你的分区结构调整,给个x86 EFI环境的示例:

    software =
    {
        version = "1.0";
        # 硬件兼容标识,确保更新包只在你的开发板上运行
        hardware-compatibility: [ "intel-corei7-64" ];
        images: (
            {
                # 根文件系统镜像
                filename = "core-image-minimal-intel-corei7-64.ext4";
                device = "/dev/sda2";
                type = "raw";
            },
            {
                # 内核文件
                filename = "vmlinuz";
                device = "/boot/vmlinuz";
                type = "kernel";
            },
            {
                # initramfs文件
                filename = "initrd.img";
                device = "/boot/initrd.img";
                type = "initramfs";
            }
        );
    }
    

    注意:device字段要和你开发板的实际分区路径一致,用lsblk可以查看分区信息。

  3. 检查依赖层
    确保bblayers.conf里包含了必要的层,比如网络更新需要meta-networking:

    BBLAYERS ?= " \
      /path/to/your/poky/meta \
      /path/to/your/poky/meta-poky \
      /path/to/your/poky/meta-yocto-bsp \
      /path/to/your/meta-intel \
      /path/to/your/meta-swupdate \
      /path/to/your/poky/meta-networking \
      "
    

步骤3:构建Swupdate镜像和更新包

  1. 先确保基础镜像是最新的(可选,但建议做):
    bitbake core-image-minimal
    
  2. 构建Swupdate更新包:
    bitbake core-image-minimal -c swupdate
    
    构建完成后,更新包会在tmp/deploy/images/intel-corei7-64/目录下,文件名类似core-image-minimal-intel-corei7-64.swu

步骤4:部署更新到开发板

方式1:本地USB更新

  • 把.swu文件复制到USB存储设备,插到开发板上
  • 挂载USB:
    mount /dev/sdb1 /mnt/usb
    
  • 执行更新命令:
    swupdate -i /mnt/usb/core-image-minimal-intel-corei7-64.swu -p intel-corei7-64
    
    -p后面的参数要和swupdate.cfg里的hardware-compatibility一致。

方式2:网络HTTP更新

  • 在你的电脑上开个简易HTTP服务器:
    cd tmp/deploy/images/intel-corei7-64/
    python3 -m http.server 8000
    
  • 在开发板上执行(替换成你的电脑IP):
    swupdate -u http://192.168.1.100:8000/core-image-minimal-intel-corei7-64.swu -p intel-corei7-64
    

步骤5:验证更新

更新完成后重启开发板:

reboot

登录后可以通过查看系统版本确认更新生效:

cat /etc/os-release

常见坑点排查

  • Bootloader配置错误会导致引导更新失败,务必先确认Bootloader类型再设置SWUPDATE_BOOTLOADER
  • 更新失败可以看日志:用journalctl -u swupdate.service(systemd环境)或者直接看命令行输出找问题
  • 分区路径一定要对应,用lsblk或者fdisk -l确认设备路径

内容的提问来源于stack exchange,提问作者md.jamal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:36:36