Skip to content

Commit

Permalink
virt/qemu: fix mounting, arch, kernel opts, execute script
Browse files Browse the repository at this point in the history
Fixes #275

Signed-off-by: Christian Stewart <[email protected]>
  • Loading branch information
paralin committed Mar 2, 2023
1 parent be6e8c3 commit dabaa62
Show file tree
Hide file tree
Showing 12 changed files with 42 additions and 57 deletions.
1 change: 0 additions & 1 deletion configs/virt/qemu/buildroot/tools
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,3 @@ BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y
BR2_PACKAGE_HOST_QEMU_VIRTFS=y
BR2_PACKAGE_HOST_E2FSPROGS=y
BR2_PACKAGE_HOST_GENEXT2FS=y
BR2_PACKAGE_HOST_GENIMAGE=y
5 changes: 5 additions & 0 deletions configs/virt/qemu/kernel/qemu
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,11 @@ CONFIG_DRM_VIRTIO_GPU=y
CONFIG_EXT4_FS=y
CONFIG_HW_RANDOM_VIRTIO=y
CONFIG_HYPERVISOR_GUEST=y
CONFIG_VIRTUALIZATION=y
CONFIG_MEMORY_HOTPLUG=y
CONFIG_MEMORY_HOTREMOVE=y
CONFIG_VIRTIO_MEM=m
CONFIG_VIRTIO_PCI=m
CONFIG_INET=y
CONFIG_INPUT_EVDEV=y
CONFIG_MODULES=y
Expand Down
17 changes: 0 additions & 17 deletions configs/virt/qemu/resources/qemu-genimage.cfg

This file was deleted.

2 changes: 1 addition & 1 deletion configs/virt/qemu/root_overlay/etc/skiff-swap.env
Original file line number Diff line number Diff line change
@@ -1 +1 @@
SWAPFILE_SIZE=20
DISABLE_SWAPFILE=true
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[Service]
# Give longer for ssh-keygen to work.
TimeoutStartSec=600
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[Unit]
# Delay flushing till system is done booting.
Before=

[Service]
TimeoutSec=0
Original file line number Diff line number Diff line change
@@ -1,14 +1,24 @@
export QEMU_PERSIST_DEVICE="/dev/vda"
attempts=0
while [ ! -b ${QEMU_PERSIST_DEVICE} ]; do
attempts=$((attempts + 1))
echo "Waiting for ${QEMU_PERSIST_DEVICE} to exist (attempt ${attempts})..."
if [ $attempts -gt 60 ]; then
echo "Waited too long for ${QEMU_PERSIST_DEVICE}, continuing without."
break
fi
sleep 1
done

export PERSIST_DEVICE="${QEMU_PERSIST_DEVICE}1"
if [ ! -b ${QEMU_PERSIST_DEVICE} ]; then
echo "${QEMU_PERSIST_DEVICE} not found: expected persist device"
elif [ ! -b ${PERSIST_DEVICE} ]; then
if [ -b ${QEMU_PERSIST_DEVICE} ] && [ ! -b ${PERSIST_DEVICE} ]; then
echo "${PERSIST_DEVICE} not found: creating partition layout"
parted ${QEMU_PERSIST_DEVICE} mklabel msdos
partprobe ${QEMU_PERSIST_DEVICE} || true
parted -a optimal ${QEMU_PERSIST_DEVICE} -- mkpart primary ext4 2MiB "100%"
partprobe ${QEMU_PERSIST_DEVICE} || true
mkfs.ext4 -F -L "persist" ${PERSIST_DEVICE}
partprobe ${QEMU_PERSIST_DEVICE} || true
fi

export DISABLE_RESIZE_PERSIST="true"
Expand Down
43 changes: 9 additions & 34 deletions configs/virt/qemu/scripts/execute_qemu.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,42 +3,19 @@ set -eo pipefail

IMAGES_DIR=$BUILDROOT_DIR/images
QEMU_DIR=${BUILDROOT_DIR}/qemu-exec
ROOTFS_IMAGE=${QEMU_DIR}/qemu-image.img
ROOTFS_DISK=${QEMU_DIR}/qemu-persist.qcow2
SHARED_DIR=${QEMU_DIR}/qemu-shared
GENIMAGE_CFG=${SKIFF_CURRENT_CONF_DIR}/resources/qemu-genimage.cfg
GENIMAGE_TMP=${QEMU_DIR}/genimage.tmp

# Sparse rootfs file
# however: embiggen-disk can be quite slow
# sparse rootfs file
if [ -z "${ROOTFS_MAX_SIZE}" ]; then
ROOTFS_MAX_SIZE="32G"
fi

mkdir -p ${QEMU_DIR}
cd ${IMAGES_DIR}
if [ ! -f ${ROOTFS_IMAGE} ]; then
echo "Building qemu root image..."
mkdir -p ${QEMU_DIR}/fakeroot
# Format the image
genimage \
--tmppath "${GENIMAGE_TMP}" \
--rootpath "${QEMU_DIR}/fakeroot" \
--inputpath "${IMAGES_DIR}" \
--outputpath "${QEMU_DIR}" \
--config "${GENIMAGE_CFG}"
rm -rf \
${QEMU_DIR}/fakeroot \
${QEMU_DIR}/qemu-resources.ext4 \
${QEMU_DIR}/qemu-persist.ext4
fi
if [ ! -f ${ROOTFS_DISK} ]; then
# Sparse/dynamically allocated image
qemu-img create -f qcow2 ${ROOTFS_DISK} ${ROOTFS_MAX_SIZE}

# Convert existing image to sparse image & resize
# qemu-img convert -f raw -O qcow2 ${ROOTFS_IMAGE} ${ROOTFS_DISK}
# qemu-img resize ${ROOTFS_DISK} ${ROOTFS_MAX_SIZE}
fi

KERNEL_IMAGE=Image
Expand Down Expand Up @@ -67,16 +44,14 @@ fi
# Faster networking, but needs root: -nic tap
mkdir -p ${SHARED_DIR}
${BUILDROOT_DIR}/host/bin/qemu-system \
-bios default \
-machine virt \
-netdev user,id=vmnic \
-smp ${QEMU_CPUS} \
-m "size=${QEMU_MEMORY}" \
-device virtio-net,netdev=vmnic \
-device virtio-rng-pci \
-nographic -serial mon:stdio \
-kernel ${KERNEL_IMAGE} \
-initrd rootfs.cpio.lz4 \
-append "console=ttyS0 console=tty root=/dev/ram0 crashkernel=256M" \
-drive file=${ROOTFS_DISK},if=virtio \
-virtfs local,path=${SHARED_DIR},mount_tag=host0,security_model=mapped,id=host0
-device virtio-rng-pci \
-device virtio-net,netdev=vmnic \
-netdev user,id=vmnic \
-kernel ${KERNEL_IMAGE} \
-initrd rootfs.cpio.lz4 \
-append "console=ttyS0 root=/dev/ram0" \
-drive file=${ROOTFS_DISK},if=virtio \
-virtfs local,path=${SHARED_DIR},mount_tag=host0,security_model=mapped,id=host0
3 changes: 2 additions & 1 deletion configs/virt/virtualbox/kernel/vbox
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,5 @@ CONFIG_SATA_ACHI=y
CONFIG_SND_INTEL8X0=y
CONFIG_VIRTIO_PCI=m
CONFIG_X86_SYSFB=y

CONFIG_HYPERVISOR_GUEST=y
CONFIG_VIRTUALIZATION=y

0 comments on commit dabaa62

Please sign in to comment.