From 249c79e20b74b1b814440cc2a7fcf068550f4234 Mon Sep 17 00:00:00 2001 From: Bruce Ashfield Date: Tue, 12 Nov 2024 20:44:09 +0000 Subject: [PATCH] xen: add README for testing Signed-off-by: Bruce Ashfield --- recipes-extended/images/README-xen.md | 173 ++++++++++++++++++++++++++ recipes-extended/xen/README.test | 84 ------------- 2 files changed, 173 insertions(+), 84 deletions(-) create mode 100644 recipes-extended/images/README-xen.md delete mode 100644 recipes-extended/xen/README.test diff --git a/recipes-extended/images/README-xen.md b/recipes-extended/images/README-xen.md new file mode 100644 index 00000000..82d72364 --- /dev/null +++ b/recipes-extended/images/README-xen.md @@ -0,0 +1,173 @@ +This README contains information on the xen reference images +and testing / usability information + +Images +------ + +xen-image-minimal: + +This is the reference xen host image. It currently requires systemd +and xen as DISTRO_FEATURES. + +All required dependencies are included for typical execution (and +debug) of guests. + +xen-guest-image-minimal: + +This is the reference guest / domU image. Note that it boots the +same kernel as the xen host image (unless multiconfig is used +to differentiate). + +It creates tarballs, ext4 and qcow images for testing purposes. + +bundling +-------- + +Guests can be bundled automatically through the following mechanisms: + + - via the variable XEN_BUNDLED_GUESTS + - via a xen configuration file in the deploy directory of the format + xen-guest-bundle-*.cfg + +The guests can be built via OE, or be 3rd party guests. They just +must be in the deploy directory so they can be copied into the rootfs +of the xen host image + +Type 1) XEN_BUNDLED_GUESTS + +If XEN_BUNDLED_GUESTS is used, it is simply a colon separated list of +rootfs:kernels. Normal variable rules apply, so it can be set in a +local.conf, or in a bbappend to the image recipe. + +An example would be: + + XEN_BUNDLED_GUESTS = "xen-guest-image-minimal-qemuarm64.rootfs.ext4:Image" + +These point at symlinks created in the image deploy directory, or they +can be specific images/kernels without the symlink. + +Type 2) A Xen guest configuration file + +If xen guest configuration files are found in the deploy directories +the kernel and disk information contained within them will be processed +and modified for the xen host. The kernel and guest image will be +copied to the appropriate location, and the config made to match. + +These files following the naming convention: xen-guest-bundle*.cfg + +Guests of type #1 generate a configuration file that is picked up as +type #2. + +An example config file follows: + + name = "xen-guest" + memory = 512 + vcpus = 1 + disk = ['file:xen-guest-image-minimal-qemuarm64.rootfs.ext4,xvda,rw'] + vif = ['bridge=xenbr0'] + kernel = "Image" + extra = "root=/dev/xvda ro console=hvc0 ip=dhcp" + +It should also be noted that when a xen-guest-image-minimal is built +with the XEN_GUEST_AUTO_BUNDLE varaible set to True, a configuration +file for type #2 will be generated and the guest bundled automatically +when the host image is built. + +kernel and rootfs are copied to the target in /var/lib/xen/images/ + +configuration files are copied to: /etc/xen + +Guests can be launched after boot with: xl create -c /etc/xen/ + +Build and boot +-------------- + +Using a reference qmeuarm64 MACHINE, the following are the commands +to build and boot a guest. + +local.conf contains: + + XEN_BUNDLED_GUESTS = "xen-guest-image-minimal-qemuarm64.rootfs.ext4:Image" + + % bitbake xen-guest-image-minimal + % bitbake xen-image-minimal + + % runqemu qemuarm64 nographic slirp qemuparams="-m 4096" tmp/deploy/images/qemuarm64/xen-image-minimal-qemuarm64.rootfs.ext4 + +Poky (Yocto Project Reference Distro) 5.1 qemuarm64 hvc0 + +qemuarm64 login: root + +WARNING: Poky is a reference Yocto Project distribution that should be used for +testing and development purposes only. It is recommended that you create your +own distribution for production use. + + root@qemuarm64:~# uname -a +Linux qemuarm64 6.10.11-yocto-standard #1 SMP PREEMPT Fri Sep 20 22:32:26 UTC 2024 aarch64 GNU/Linux +root@qemuarm64:~# ls /etc/xen/ +auto +cpupool +scripts +xen-guest-bundle-xen-guest-image-minimal-qemuarm64--20241112174803.cfg +xl.conf +root@qemuarm64:~# ls /var/lib/xen/images/ +Image--6.10.11+git0+4bf82718cf_6c956b2ea6-r0-qemuarm64-20241018190311.bin +xen-guest-image-minimal-qemuarm64.rootfs-20241111222814.ext4 + + root@qemuarm64:~# ip a s +1: lo: mtu 65536 qdisc noqueue qlen 1000 + link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 + inet 127.0.0.1/8 scope host lo + valid_lft forever preferred_lft forever + inet6 ::1/128 scope host noprefixroute + valid_lft forever preferred_lft forever +2: enp0s1: mtu 1500 qdisc fq_codel master xenbr0 qlen 1000 + link/ether 52:54:00:12:35:02 brd ff:ff:ff:ff:ff:ff +3: sit0@NONE: mtu 1480 qdisc noop qlen 1000 + link/sit 0.0.0.0 brd 0.0.0.0 +4: xenbr0: mtu 1500 qdisc noqueue qlen 1000 + link/ether ee:e4:a8:24:24:e7 brd ff:ff:ff:ff:ff:ff + inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic xenbr0 + valid_lft 86354sec preferred_lft 86354sec + inet6 fec0::ece4:a8ff:fe24:24e7/64 scope site dynamic noprefixroute flags 100 + valid_lft 86356sec preferred_lft 14356sec + inet6 fe80::ece4:a8ff:fe24:24e7/64 scope link + valid_lft forever preferred_lft forever + + root@qemuarm64:~# xl create -c /etc/xen/xen-guest-bundle-xen-guest-image-minimal-qemuarm64--20241112174803.cfg + +qemuarm64 login: root + +WARNING: Poky is a reference Yocto Project distribution that should be used for +testing and development purposes only. It is recommended that you create your +own distribution for production use. + +root@qemuarm64:~# uname -a +Linux qemuarm64 6.10.11-yocto-standard #1 SMP PREEMPT Fri Sep 20 22:32:26 UTC 2024 aarch64 GNU/Linux + +root@qemuarm64:~# wget example.com +Connecting to example.com (93.184.215.14:80) +wget: can't open 'index.html': File exists +root@qemuarm64:~# rm index.html +root@qemuarm64:~# wget example.com +Connecting to example.com (93.184.215.14:80) +saving to 'index.html' +index.html 100% |********************************| 1256 0:00:00 ETA +'index.html' saved + +From the host: + +Connection to 127.0.0.1 closed. +build4 [/home/bruc.../qemuarm64]> ssh -p 2222 root@127.0.0.1 +Last login: Tue Nov 12 20:42:57 2024 from 10.0.2.2 + +WARNING: Poky is a reference Yocto Project distribution that should be used for +testing and development purposes only. It is recommended that you create your +own distribution for production use. + +root@qemuarm64:~# xl list +Name ID Mem VCPUs State Time(s) +Domain-0 0 192 4 r----- 696.2 +xen-guest 1 512 1 -b---- 153.0 +root@qemuarm64:~# xl destroy xen-guest + diff --git a/recipes-extended/xen/README.test b/recipes-extended/xen/README.test deleted file mode 100644 index 4d45aab8..00000000 --- a/recipes-extended/xen/README.test +++ /dev/null @@ -1,84 +0,0 @@ - 1 xl - 2 xl list - 3 xl console - 4 xl console -n 0 - 5 xl -n0 console - 6 xl -n 0 console - 7 xl console -n 0 - 8 xl console Domain-0 - 9 xm - 10 wget - 11 wget https://www.alpinelinux.org/downloads/ - 12 wget https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/x86_64/alpine-standard-3.19.1-x86_64.iso - 13 rm alpine-standard-3.19.1-x86_64.iso - 14 wget https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/x86_64/alpine-virt-3.19.1-x86_64.iso - 15 mount -t iso9660 -o loop /data/alpine-virt-3.19.1-x86_64.iso /media/cdrom - 16 ll - 17 ls - 18 mount -t iso9660 -o loop alpine-virt-3.19.1-x86_64.iso /media/cdrom^ - 19 ls /media/ - 20 mkdir /media/cdrom - 21 mount -t iso9660 -o loop alpine-virt-3.19.1-x86_64.iso /media/cdrom - 22 ls /media/cdrom/ - 23 df -kh . - 24 dd if=/dev/zero of=/data/a1.img bs=1M count=300 - 25 mkdir /data - 26 dd if=/dev/zero of=/data/a1.img bs=1M count=300 - - -------------------- - -ssh from the host (if using slirp): https://docs.yoctoproject.org/dev-manual/qemu.html - -ssh root@127.0.0.1 -p 2222 - -------------------- - -Install a guest: - -https://wiki.alpinelinux.org/wiki/Create_Alpine_Linux_PV_DomU - - ----------------- - -Add this: -autoballoon=0 - -to: - - /etc/xen/xl.conf - ----------------- - -# /etc/xen/a1.cfg - -# Alpine Linux PV DomU - -# Kernel paths for install -kernel = "/media/cdrom/boot/vmlinuz-virt" -ramdisk = "/media/cdrom/boot/initramfs-virt" -extra="modules=loop,squashfs console=hvc0" - -# Path to HDD and iso file -disk = [ - 'format=raw, vdev=xvda, access=w, target=/data/a1.img', - 'format=raw, vdev=xvdc, access=r, devtype=cdrom, target=/home/root/alpine-virt-3.19.1-x86_64.iso' - ] - -# Network configuration -vif = ['bridge=br0'] - -# DomU settings -memory = 512 -name = "wqalpine-a1" -vcpus = 1 -maxvcpus = 1 - -device_model_version="qemu-xen" -device_model_override="/bin/true" - ---------------------------- - -xl create -f /etc/xen/a1.cfg -c - -