virtualbox - 如何从 Yocto 生成多引导 Grub EFI WIC 映像
问题描述
我正在尝试使用 Yocto 和 SWUpdate 为通用 x86_64 系统实现软件更新过程。我想要两个根分区,SWUpdate 覆盖非活动的一个(双拷贝策略)。我正在尝试创建一个 WIC 映像以在 virtualbox 中进行测试(.wic.vdi 映像)
我的问题是创建双 rootfs 映像。到目前为止,我有一个 .wks 文件:
bootloader --ptable gpt
part /boot --source rootfs --rootfs-dir=${IMAGE_ROOTFS}/boot --sourceparams="loader=grub-efi" --ondisk sda --label msdos --active --align 1024 --use-uuid
part / --source rootfs --fstype=ext4 --label image1 --align 1024 --exclude-path boot/
part / --source rootfs --fstype=ext4 --label image2 --align 1024 --exclude-path boot/
part swap --ondisk sda --size 1024 --label swap --fstype=swap
这将创建一个具有正确分区的 wic 映像,但第一个胖分区中的引导加载程序似乎无效 - 它不会在 virtualbox 中引导。
如果我将引导分区更改为
part /boot --source bootimg-efi --sourceparams="loader=grub-efi" --ondisk sda --label msdos --active --align 1024
它现在将启动,但我无法通过 bbappends 文件控制启动分区中的数据。我需要能够编辑 grub.cfg 并添加一个 grub 环境文件。据我所知,bootimg-efi 是由 WIC 系统创建的,所以我不能轻易地覆盖它。
解决方案
推荐阅读
- powershell - N时间后从组中删除samaccountname - powershell
- java - 无法连接到 PostgreSQLContainer:java.io.EOFException
- javascript - Vue 将组件从单个 .js 文件拆分到多个文件中
- angular - API响应后更新缓存时的角度服务工作者更新视图
- amazon-web-services - 是否可以将不同的 Pod/服务映射到 Kubernetes 中不同节点的接口?
- paypal - PayPal IPN 不适用于外发交易(汇款)
- visual-studio-code - 如何禁用或覆盖 vscode 默认快捷方式?
- c++ - 'operator=' 已弃用:改用 QDir::setPath()
- javascript - 如何避免在 React 的 shouldComponentUpdate() 中使用 setState?
- c++ - 为什么在 std::condition_variable 中 notify_all 比 notify_one 工作得更快(在随机请求上)?