From 683ef7ab5027507db3b8e08467d4299d61a5aa42 Mon Sep 17 00:00:00 2001 From: Mischa Taylor Date: Sun, 23 Jun 2024 17:50:05 -0400 Subject: [PATCH] Add docs for Oracle Linux aarch64 images --- .../cloud/docs/MOUNT_CLOUD_IMAGE_AARCH64.md | 48 ++++++++ ...N_ARM64_ORACLE_LINUX_CLOUD_IMAGE_MANUAL.md | 111 ++++++++++++++++++ 2 files changed, 159 insertions(+) create mode 100644 oraclelinux/cloud/docs/MOUNT_CLOUD_IMAGE_AARCH64.md create mode 100644 oraclelinux/cloud/docs/QEMU_NVIDIA_JETSON_ARM64_ORACLE_LINUX_CLOUD_IMAGE_MANUAL.md diff --git a/oraclelinux/cloud/docs/MOUNT_CLOUD_IMAGE_AARCH64.md b/oraclelinux/cloud/docs/MOUNT_CLOUD_IMAGE_AARCH64.md new file mode 100644 index 0000000..0291d9e --- /dev/null +++ b/oraclelinux/cloud/docs/MOUNT_CLOUD_IMAGE_AARCH64.md @@ -0,0 +1,48 @@ +# Oracle Linux Cloud Images + +https://yum.oracle.com/oracle-linux-templates.html + +https://blogs.oracle.com/linux/post/a-quick-start-with-the-oracle-linux-templates-for-kvm + +## Mount cloud image with qemu-nbd + +``` +$ curl -LO https://yum.oracle.com/templates/OracleLinux/OL9/u4/aarch64/OL9U4_aarch64-kvm-cloud-b90.qcow2 +``` + +``` +# Load the nbd module +$ sudo modprobe -v nbd +insmod /lib/modules/5.10.192-tegra/kernel/drivers/block/nbd.ko + +# Verify the nbd module is loaded +$ lsmod | grep nbd +nbd 45056 0 + +$ ls /dev/nbd* +/dev/nbd0 /dev/nbd11 /dev/nbd14 /dev/nbd3 /dev/nbd6 /dev/nbd9 +/dev/nbd1 /dev/nbd12 /dev/nbd15 /dev/nbd4 /dev/nbd7 +/dev/nbd10 /dev/nbd13 /dev/nbd2 /dev/nbd5 /dev/nbd8 + +# Connect the QCOW2 image as a network block device +sudo qemu-nbd --connect=/dev/nbd0 OL9U4_aarch64-kvm-cloud-b90.qcow2 + +# Create a mount point directory +sudo mkdir /mnt/oracle-linux-9 + +$ $ sudo fdisk -l /dev/nbd0 +Disk /dev/nbd0: 16 GiB, 17179869184 bytes, 33554432 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes +Disklabel type: gpt +Disk identifier: 3B884BAC-28D0-477E-A3B1-EAF10C9F4BA1 + +Device Start End Sectors Size Type +/dev/nbd0p1 2048 1050623 1048576 512M EFI System +/dev/nbd0p2 1050624 3147775 2097152 1G Linux filesystem +/dev/nbd0p3 3147776 11536383 8388608 4G Linux swap +/dev/nbd0p4 11536384 33552383 22016000 10.5G Linux filesystem + +$ sudo mount /dev/nbd0p4 /mnt/oracle-linux-9 +``` diff --git a/oraclelinux/cloud/docs/QEMU_NVIDIA_JETSON_ARM64_ORACLE_LINUX_CLOUD_IMAGE_MANUAL.md b/oraclelinux/cloud/docs/QEMU_NVIDIA_JETSON_ARM64_ORACLE_LINUX_CLOUD_IMAGE_MANUAL.md new file mode 100644 index 0000000..4d3e03d --- /dev/null +++ b/oraclelinux/cloud/docs/QEMU_NVIDIA_JETSON_ARM64_ORACLE_LINUX_CLOUD_IMAGE_MANUAL.md @@ -0,0 +1,111 @@ +# QEMU Oracle Linux Cloud Images + +https://yum.oracle.com/oracle-linux-templates.html + +https://blogs.oracle.com/linux/post/a-quick-start-with-the-oracle-linux-templates-for-kvm + +## Oracle Linux 9 + +Download the Oracle Linux 9 Cloud Image + +``` +$ curl -LO https://yum.oracle.com/templates/OracleLinux/OL9/u4/aarch64/OL9U4_aarch64-kvm-cloud-b90.qcow2 + +$ qemu-img info OL9U4_aarch64-kvm-cloud-b90.qcow2 +image: OL9U4_aarch64-kvm-cloud-b90.qcow2 +file format: qcow2 +virtual size: 16 GiB (17179869184 bytes) +disk size: 478 MiB +cluster_size: 65536 +Format specific information: + compat: 1.1 + lazy refcounts: false + refcount bits: 16 + corrupt: false + +$ qemu-img convert \ + -O qcow2 \ + OL9U4_aarch64-kvm-cloud-b90.qcow2 \ + oracle-linux-9.qcow2 + +# Resize the image +$ qemu-img resize \ + -f qcow2 \ + oracle-linux-9.qcow2 32G +``` + +Create a cloud init configuration + +``` +touch network-config + +cat >meta-data < user-data +#cloud-config +password: superseekret +chpasswd: + expire: False +ssh_pwauth: True +EOF +``` + +Create the cloud-init ISO + +``` +sudo apt-get update +sudo apt-get install genisoimage +genisoimage \ + -input-charset utf-8 \ + -output cloud-init.iso \ + -volid cidata -rational-rock -joliet \ + user-data meta-data network-config +``` + +Create a firmware image + +``` +# Qemu expects aarch firmware images to be 64M so the firmware +# images can't be used as is, some padding is needed to +# create an image for pflash +dd if=/dev/zero of=flash0.img bs=1M count=64 +dd if=/usr/share/AAVMF/AAVMF_CODE.fd of=flash0.img conv=notrunc +dd if=/dev/zero of=flash1.img bs=1M count=64 +``` + +Run the VM with QEMU + +``` +# login: opc +qemu-system-aarch64 \ + -name oracle-linux-9 \ + -machine virt,accel=kvm,gic-version=3,kernel-irqchip=on \ + -cpu host \ + -smp 2 \ + -m 2G \ + -device virtio-keyboard \ + -device virtio-mouse \ + -device virtio-gpu-pci \ + -nographic \ + -device virtio-net-pci,netdev=net0 \ + -netdev user,id=net0,hostfwd=tcp::2222-:22 \ + -drive file=oracle-linux-9.qcow2,if=virtio,format=qcow2 \ + -cdrom cloud-init.iso \ + -drive if=pflash,format=raw,readonly=on,unit=0,file=flash0.img \ + -drive if=pflash,format=raw,unit=1,file=flash1.img + +Ctrl-a h: Show help (displays all available commands). +Ctrl-a x: Exit QEMU. +Ctrl-a c: Switch between the monitor and the console. +Ctrl-a s: Send a break signal. +``` + +Login to the image + +``` +# opc / superseekret +ssh cloud-user@localhost -p 2222 +```