問題背景:
在使用 Xen dom0-less 的時候,會有一個問題產(chǎn)生: 可以用 'xl' 命令 boot 起來的 image,在 dom0-less 的情況下卻 boot 不起來。
是否有參考例子可以用 Petalinux 工具鏈幫助創(chuàng)建一個最小的 Xen 系統(tǒng)?
是否有參考例子可以指導創(chuàng)建一個可以在 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,所以將其去掉以節(jié)省字節(jié)空間。
制作好 kernel 和 rootfs 后,就可以用 ImageBuilder 來創(chuàng)建一個可以 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 的內(nèi)核,“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 的內(nèi)核和 ramdisk。
domU rootfs
===========
關于rootfs(用root權限):
增加:
需要這個的原因是一個 dom0less domU isttyAMA0 (不是 ttyPS0 )的控制臺,所以需要在 etc/inittab 中添加一個 getty ttyAMA0 行。
domU kernel
===========
對于 domU 內(nèi)核,以下步驟應該是足夠的:
增加:
如果您對上面的命令有問題(已經(jīng)看到它在這里的幾個 Ubuntu 工作站崩潰),可以通過以下步驟實現(xiàn)相同的事情,在 sourcing 2019.1 tools/settings.sh 之后:
ImageBuilder
============
最后,我們
運行 imagebuilder 如下:
生成 uboot 腳本 xen_boot.scr, 在 0xC00000 地址加載:
然后用如下命令開始運行系統(tǒng):
之后可以看到兩個 domains 開始運行了,并且可以通過 Ctrl-AAA 來在它們之間切換。
審核編輯:劉清
-
ARM
+關注
關注
134文章
9027瀏覽量
366493 -
Linux系統(tǒng)
+關注
關注
4文章
590瀏覽量
27318 -
MMC
+關注
關注
0文章
76瀏覽量
30443 -
rootfs
+關注
關注
0文章
19瀏覽量
4657
原文標題:開發(fā)者分享|嵌入式 Xen dom0-less 解決方案
文章出處:【微信號:gh_2d1c7e2d540e,微信公眾號:XILINX開發(fā)者社區(qū)】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論