问题背景:
在使用 Xen dom0-less 的时候,会有一个问题产生: 可以用 'xl' 命令 boot 起来的 image,在 dom0-less 的情况下却 boot 不起来。
是否有参考例子可以用 Petalinux 工具链帮助创建一个最小的 Xen 系统?
是否有参考例子可以指导创建一个可以在 dom0_less下boot 起来的最小 DomU Linux image?
解决方案:
用下面两个 kconfig 选项在任何 ARM64 Linux kernel 下都可以生成 dom0less kernel:
在 Petalinux kernel 下只需简单用下面这条命令来配置上述两项:
打开配置界面:
选择这两个:
关于 rootfs,任何的 INITRD ("Image Packaging Configuration" -> "Root filesystem type" -> "INITRD") 都可以,没有特殊的要求。当然,越小越好,所以本文建议尽量去掉 rootfs 中的你认为不必要的东西,不需要 Xen 来支持dom0less domU rootfs 或 kernel,所以将其去掉以节省字节空间。
制作好 kernel 和 rootfs 后,就可以用 ImageBuilder 来创建一个可以 boot 的脚本 boot.scr
这里可以看到 dom0less DomU kernel 和 rootfs 的配置用了NUM_DOMUS=1, DOMU_KERNEL[0] 和 DOMU_RAMDISK[0],关于 MMC 的例子(也适用于其它的应用)
从 Petalinux 2019.1开始且没有修改 xen,比起手动编辑 xen.dtb,使用 ImageBuilder 更不容易出错。
假设 dom0 正在为您引导,那么此次将跳过 dom0 的指令。假设 “xen-Image” 是 dom0 的内核,“xen-root .cpio.gz” 是 dom0 的 rootfs。(可以从预构建的 2019.1 获取 xen-root .cpio.gz,方法是: dd if=xen-root .cpio.gz。U-boot =xen-root .cpio.gz bs=64 skip=1)
另外,作为一种快捷方式,本文没有提供关于如何使用 Petalinux 2019.1 构建 Xen 2021.2 的说明,而是直接从预构建的 2021.2 中获取 Xen 管理程序二进制文件:
然后修改下面的 ImageBuilder配置文件 "xen.cfg":
正如您所看到的,我们还需要提供 “Image-domU” 和 “xen-rootfs-domU.cpio.gz”,它们是 domU 的内核和 ramdisk。
domU rootfs
===========
关于rootfs(用root权限):
增加:
需要这个的原因是一个 dom0less domU isttyAMA0 (不是 ttyPS0 )的控制台,所以需要在 etc/inittab 中添加一个 getty ttyAMA0 行。
domU kernel
===========
对于 domU 内核,以下步骤应该是足够的:
增加:
如果您对上面的命令有问题(已经看到它在这里的几个 Ubuntu 工作站崩溃),可以通过以下步骤实现相同的事情,在 sourcing 2019.1 tools/settings.sh 之后:
ImageBuilder
============
最后,我们
运行 imagebuilder 如下:
生成 uboot 脚本 xen_boot.scr, 在 0xC00000 地址加载:
然后用如下命令开始运行系统:
之后可以看到两个 domains 开始运行了,并且可以通过 Ctrl-AAA 来在它们之间切换。
审核编辑:刘清
-
ARM
+关注
关注
134文章
9088浏览量
367411 -
Linux系统
+关注
关注
4文章
593浏览量
27393 -
MMC
+关注
关注
0文章
77浏览量
30472 -
rootfs
+关注
关注
0文章
19浏览量
4665
原文标题:开发者分享|嵌入式 Xen dom0-less 解决方案
文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论