{"id":20746870,"url":"https://github.com/godmode2k/linux_bsp_test","last_synced_at":"2025-10-09T14:24:59.070Z","repository":{"id":262745470,"uuid":"888222099","full_name":"godmode2k/linux_bsp_test","owner":"godmode2k","description":"Linux BSP test (ARM)","archived":false,"fork":false,"pushed_at":"2024-12-19T07:13:01.000Z","size":8603,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-18T03:08:28.915Z","etag":null,"topics":["aarch32","aarch64","arm","arm64","bootable-iso","buildroot","busybox","grub","grup-mkrescue","initrd","linux-kernel","qemu-aarch64","qemu-arm","rootfs","u-boot","versatilepb","vexpress","vexpress-v2p-ca9x4"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/godmode2k.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-14T02:46:14.000Z","updated_at":"2024-12-19T07:13:04.000Z","dependencies_parsed_at":"2024-11-14T03:31:32.285Z","dependency_job_id":null,"html_url":"https://github.com/godmode2k/linux_bsp_test","commit_stats":null,"previous_names":["godmode2k/linux_bsp_test"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/godmode2k%2Flinux_bsp_test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/godmode2k%2Flinux_bsp_test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/godmode2k%2Flinux_bsp_test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/godmode2k%2Flinux_bsp_test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/godmode2k","download_url":"https://codeload.github.com/godmode2k/linux_bsp_test/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243042993,"owners_count":20226737,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aarch32","aarch64","arm","arm64","bootable-iso","buildroot","busybox","grub","grup-mkrescue","initrd","linux-kernel","qemu-aarch64","qemu-arm","rootfs","u-boot","versatilepb","vexpress","vexpress-v2p-ca9x4"],"created_at":"2024-11-17T08:09:38.515Z","updated_at":"2025-10-09T14:24:59.015Z","avatar_url":"https://github.com/godmode2k.png","language":"Shell","readme":"# Linux BSP test (ARM)\r\n\r\n\r\nEnvironment\r\n----------\r\n    OS: Ubuntu 20.04 x64 LTS\r\n    VM: QEMU v7.2.11, v9.0.0 (https://www.qemu.org/)\r\n    ARM Toolchain: arm-gnu-toolchain-13.x\r\n\r\n\r\nARM Toolchain\r\n----------\r\n```sh\r\ndownload:\r\nhttps://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads\r\n\r\n$ cd $HOME\r\n$ mkdir arm-toolchain\r\n$ cd arm-toolchain\r\n\r\n1. AArch32\r\n// arm-gnu-toolchain-13.2.Rel1-x86_64-arm-none-linux-gnueabihf\r\n$ wget https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz?rev=adb0c0238c934aeeaa12c09609c5e6fc\u0026hash=B119DA50CEFE6EE8E0E98B4ADCA4C55F\r\n$ tar xJvf arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz\r\n\r\n2. AArch64\r\n// arm-gnu-toolchain-13.2.Rel1-x86_64-aarch64-none-linux-gnu\r\n$ wget https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x86_64-aarch64-none-linux-gnu.tar.xz?rev=22c39fc25e5541818967b4ff5a09ef3e\u0026hash=B9FEDC2947EB21151985C2DC534ECCEC\r\n$ tar xJvf arm-gnu-toolchain-13.2.rel1-x86_64-aarch64-none-linux-gnu.tar.xz\r\n\r\n\r\n// AArch32 bare-metal target (arm-none-eabi)\r\n// for gdb (arm-none-eabi-gdb)\r\n$ sudo apt-get install libncursesw5 libncursesw5-dev\r\n\r\n\r\n// path\r\n$ echo \"export PATH=$PATH:/home/arm-toolchain/arm-gnu-toolchain-13.2.Rel1-x86_64-aarch64-none-linux-gnu/bin\" \u003e\u003e $HOME/.profile\r\n$ echo \"export PATH=$PATH:/home/arm-toolchain/arm-gnu-toolchain-13.2.Rel1-x86_64-arm-none-linux-gnueabihf/bin\" \u003e\u003e $HOME/.profile\r\n$ source $HOME/.profile\r\n\r\n\r\n\r\n\r\n// Install ARM toolchain\r\nhttps://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads\r\n\r\n// x86_64 Linux hosted cross toolchains\r\n// AArch32 GNU/Linux target with hard float (arm-none-linux-gnueabihf)\r\n// AArch64 GNU/Linux target (aarch64-none-linux-gnu)\r\n\r\nor\r\n\r\n$ sudo apt-get install gcc-aarch64-linux-gnu\r\n\r\n// AArch32 bare-metal target (arm-none-eabi)\r\n// for gdb (arm-none-eabi-gdb)\r\n$ sudo apt-get install libncursesw5 libncursesw5-dev\r\n\r\n\r\n// Build tools\r\n$ sudo apt-get install build-essential bison flex libssl-dev swig python3-dev libgnutls28-dev\r\n$ sudo apt-get install libncursesw5 libncursesw5-dev\r\n\r\n// SEE: https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel\r\n// Build Environment\r\n//$ sudo apt-get install libncurses-dev gawk flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf llvm\r\n```\r\n\r\n\r\nQEMU Build Instructions\r\n----------\r\n```sh\r\n$ cd $HOME\r\n\r\n$ sudo apt-get update\r\n$ sudo apt-get install build-essential gdb gdb-multiarch\r\n$ sudo apt-get install python3 python3-pip ninja-build\r\n$ sudo apt-get install pkg-config libglib2.0-dev\r\n$ sudo apt-get install libslirp-dev\r\n$ sudo apt-get install libpixman-1-dev\r\n$ pip install sphinx\r\n$ pip install sphinx_rtd_theme\r\n\r\n// download QEMU 7.2.11, 9.0.0\r\n$ wget https://download.qemu.org/qemu-7.2.11.tar.xz\r\n$ wget https://download.qemu.org/qemu-9.0.0.tar.xz\r\n$ tar xvJf qemu-7.2.11.tar.xz\r\n$ tar xvJf qemu-9.0.0.tar.xz\r\n\r\n$ cd qemu-7.2.11\r\n// or\r\n$ cd qemu-9.0.0\r\n\r\n\r\n// ARM, AARCH64, x86_64\r\n$ ./configure --target-list=\"arm-softmmu,arm-linux-user,aarch64-linux-user,aarch64-softmmu,x86_64-softmmu,x86_64-linux-user\"\r\n$ make\r\n\r\n// with enable GTK\r\n$ sudo apt-get install libgtk-3-dev\r\n$ ./configure --target-list=\"arm-softmmu,arm-linux-user,aarch64-linux-user,aarch64-softmmu,x86_64-softmmu,x86_64-linux-user\" --enable-gtk\r\n$ make\r\n\r\n\r\n// path\r\n$ ln -s $HOME/qemu-7.2.11/build/qemu-arm .\r\n$ ln -s $HOME/qemu-7.2.11/build/qemu-aarch64 .\r\n$ ln -s $HOME/qemu-7.2.11/build/qemu-system-arm .\r\n$ ln -s $HOME/qemu-7.2.11/build/qemu-system-aarch64 .\r\n// or\r\n$ ln -s $HOME/qemu-9.0.0/build/qemu-arm .\r\n$ ln -s $HOME/qemu-9.0.0/build/qemu-aarch64 .\r\n$ ln -s $HOME/qemu-9.0.0/build/qemu-system-arm .\r\n$ ln -s $HOME/qemu-9.0.0/build/qemu-system-aarch64 .\r\n```\r\n\r\n\r\nu-boot\r\n----------\r\n```sh\r\n$ wget https://github.com/u-boot/u-boot/archive/refs/tags/v2024.04.tar.gz -O u-boot-v2024.04.tar.gz\r\n$ tar xzvf u-boot-v2024.04.tar.gz\r\n$ cd u-boot-2024.04\r\n$ make clean \u0026\u0026 make distclean\r\n\r\n(arm)\r\n$ make vexpress_ca9x4_defconfig ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf-\r\n$ make -j4 ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf-\r\n\r\n\r\n(aarch64)\r\n//$ make vexpress_ca9x4_defconfig ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu-\r\n//$ make -j4 ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu-\r\n//\r\n$ export ARCH=arm64\r\n$ export CROSS_COMPILE=aarch64-none-linux-gnu-\r\n$ make vexpress_ca9x4_defconfig\r\n$ make -j4\r\n\r\n\r\n// or for qemu_defconfig\r\n(arm)\r\n$ make qemu_arm_defconfig ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf-\r\n$ make -j4 ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf-\r\n(arm64)\r\n$ export ARCH=arm64\r\n$ export CROSS_COMPILE=aarch64-none-linux-gnu-\r\n$ make qemu_arm64_defconfig\r\n$ make -j4\r\n```\r\n\r\n\r\nLinux Kernel\r\n----------\r\n```sh\r\n$ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.4.277.tar.xz\r\n$ tar xJvf linux-5.4.277.tar.xz\r\n$ cd linux-5.4.277\r\n$ make clean \u0026\u0026 make distclean\r\n\r\n\r\n// with source code indexing\r\n// $ make \u003c..._defconfig\u003e \u003cARCH=...\u003e \u003c...\u003e tags cscope\r\n\r\n\r\n(x86_64)\r\n$ make defconfig\r\n$ make -j4\r\n\r\n\r\n(arm)\r\n//$ make versatile_defconfig ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf-\r\n$ make vexpress_defconfig ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf-\r\n$ make menuconfig ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf-\r\n // VersatilePB\r\n - Kernel Features -\u003e Use the ARM EABI to compile the kernel\r\n        -\u003e Allow old ABI binaries to run with this kernel (EXPERIMENTAL)\r\n - System Type\r\n        -\u003e MMU-based Paged Memory Management Support\r\n        -\u003e Multiple platform selection -\u003e ARMv5 based platforms (...)\r\n        -\u003e ARM Ltd. Versatile Express family ---\u003e\r\n // vexpress\r\n - Kernel Features -\u003e Use the ARM EABI to compile the kernel\r\n        //-\u003e Allow old ABI binaries to run with this kernel (EXPERIMENTAL)\r\n - System Type\r\n        -\u003e MMU-based Paged Memory Management Support\r\n        -\u003e Multiple platform selection -\u003e ARMv6 based platforms (...)\r\n        -\u003e Multiple platform selection -\u003e ARMv7 based platforms (...)\r\n        -\u003e ARM Ltd. Versatile Express family ---\u003e\r\n$ make -j4 ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf-\r\n\r\n\r\n(aarch64)\r\n////$ make versatile_defconfig ARCH=arm64\r\n//$ make vexpress_defconfig ARCH=arm\r\n//$ make menuconfig ARCH=arm64\r\n//$ make -j4 ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu-\r\n//\r\n$ export ARCH=arm64\r\n$ export CROSS_COMPILE=aarch64-none-linux-gnu-\r\n//$ make defconfig\r\n$ make vexpress_defconfig\r\n$ make menuconfig\r\n$ make -j4\r\n```\r\n\r\n\r\nRootFS (initrd): BusyBox\r\n----------\r\n```sh\r\n(busybox)\r\n$ wget https://www.busybox.net/downloads/busybox-1.36.1.tar.bz2\r\n$ tar xjvf busybox-1.36.1.tar.bz2\r\n$ cd busybox-1.36.1\r\n$ make clean \u0026\u0026 make distclean\r\n\r\n\r\n(arm)\r\n$ make defconfig ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf-\r\n$ make menuconfig ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf-\r\n - Settings\r\n        -\u003e Build Options -\u003e Build static binary (no shared libs)\r\n        -\u003e Installation Options (\"make install\" behavior) -\u003e (./_install) Destination path for 'make install'\r\n$ make -j4 ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- install\r\n\r\n(aarch64)\r\n//$ make defconfig ARCH=arm64\r\n//$ make menuconfig ARCH=arm64\r\n// - Busybox Setting -\u003e Build Option -\u003e Static binary\r\n// - Settings\r\n//        -\u003e Installation Options (\"make install\" behavior) -\u003e (./_install) Destination path for 'make install'\r\n//$ make -j4 ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- install\r\n//\r\n$ export ARCH=arm64\r\n$ export CROSS_COMPILE=aarch64-none-linux-gnu-\r\n$ make defconfig\r\n$ make menuconfig\r\n - Busybox Setting -\u003e Build Option -\u003e Static binary\r\n - Settings\r\n        -\u003e Installation Options (\"make install\" behavior) -\u003e (./_install) Destination path for 'make install'\r\n$ make -j4 install\r\n\r\n\r\n// output directory: _install\r\n// initrd.cpio.gz or rootfs.img.gz\r\n$ cd _install/\r\n\r\n$ find . | cpio -H newc -o | gzip \u003e ../initrd.cpio.gz\r\nor\r\n$ find . | cpio -H newc -ov --owner root:root \u003e ../initrd.cpio \u0026\u0026 cd .. \u0026\u0026 gzip initrd.cpio\r\nor\r\n$ mkdir -p dev etc/init.d home/root lib mnt proc root sys tmp usr/lib var\r\n$ echo -e '#!/bin/bash\\nmount -t proc none /proc\\nmount -t sysfs none /sys\\n/sbin/mdev -s' \u003e etc/init.d/rcS\r\n$ chmod +x etc/init.d/rcS\r\n//$ find . | cpio -o --format=newc \u003e ../initrd.cpio \u0026\u0026 cd .. \u0026\u0026 gzip -c initrd.cpio \u003e initrd.cpio.gz\r\n$ find . | cpio -H newc -ov --owner root:root \u003e ../initrd.cpio \u0026\u0026 cd .. \u0026\u0026 gzip initrd.cpio\r\nor\r\n$ mkdir proc sys dev run etc dev/pts etc/init.d\r\n$ sudo mknod -m 666 dev/null c 1 3\r\n$ sudo mknod -m 600 dev/console c 5 1\r\n{\r\n#!/bin/sh\r\n#/etc/init.d/rcS\r\nmount -v --bind /dev /dev\r\nmount -v --bind /dev/pts /dev/pts\r\nmount -vt proc proc /proc\r\nmount -vt sysfs sysfs /sys\r\nmount -vt tmpfs tmpfs /run\r\n/sbin/mdev -s\r\n}\r\necho -e '#!/bin/sh\\n#/etc/init.d/rcS\\nmount -v --bind /dev /dev\\nmount -v --bind /dev/pts /dev/pts\\nmount -vt proc proc /proc\\nmount -vt sysfs sysfs /sys\\nmount -vt tmpfs tmpfs /run\\n/sbin/mdev -s' \u003e etc/init.d/rcS\r\n$ chmod +x etc/init.d/rcS\r\n$ find . | cpio -H newc -ov --owner root:root -F ../initrd.64.cpio \u0026\u0026 cd .. \u0026\u0026 gzip initrd.64.cpio\r\n\r\n\r\n// for SDcard (rootfs)\r\n$ dd if=/dev/zero of=rootfs.img bs=1M count=100\r\n$ mkfs.ext4 ./rootfs.img\r\n$ mkdir /tmp/mnt_rootfs\r\n//$ sudo mount -t ext4 -o loop ./rootfs.img /tmp/mnt_rootfs\r\n$ sudo mount -t ext4 ./rootfs.img /tmp/mnt_rootfs\r\n$ sudo cp -a -r _install/* /tmp/mnt_rootfs\r\n$ sudo umount /tmp/mnt_rootfs\r\n\r\n// Error: SDcard\r\nqemu-system-arm: Invalid SD card size: 100 MiB\r\nSD card size has to be a power of 2, e.g. 128 MiB.\r\n$ dd if=/dev/zero of=rootfs.img bs=1M count=128\r\n...\r\n```\r\n\r\n\r\nbuildroot (ALL)\r\n----------\r\n```sh\r\n$ wget https://www.buildroot.org/downloads/buildroot-2024.02.2.tar.xz\r\n$ tar xJvf buildroot-2024.02.2.tar.xz\r\n$ cd buildroot-2024.02.2\r\n$ make clean \u0026\u0026 make distclean\r\n\r\n\r\n//$ make list-defconfigs\r\n$ make qemu_arm_vexpress_defconfig\r\n$ make -j4\r\n```\r\n\r\n\r\nQEMU\r\n----------\r\n```sh\r\n - QEMU v9.0.0\r\n - USE QEMU v7.2.11\r\n\r\n// boot ARM VersatilePB\r\n//$ qemu-system-arm -M versatilepb -m 128M -kernel ./linux-5.4.277/arch/arm/boot/zImage -dtb ./linux-5.4.277/arch/arm/boot/dts/versatile-pb.dtb -initrd ./busybox-1.36.1/initrd.cpio.gz -append \"root=/dev/ram rdinit=/bin/sh console=ttyAMA0,115200\" -nographic\r\n$ qemu-system-arm -M versatilepb -m 128M -kernel ./linux-5.4.277/arch/arm/boot/zImage -dtb ./linux-5.4.277/arch/arm/boot/dts/versatile-pb.dtb -initrd ./busybox-1.36.1/initrd.cpio.gz -append \"root=/dev/ram rdinit=/sbin/init console=ttyAMA0,115200\" -nographic\r\n\r\n\r\n// boot ARM vexpress_ca9x4_defconfig\r\n//$ qemu-system-arm -M vexpress-a9 -m 128M -kernel ./linux-5.4.277/arch/arm/boot/zImage -dtb ./linux-5.4.277/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -initrd ./busybox-1.36.1/initrd.cpio.gz -append \"root=/dev/ram rdinit=/bin/sh console=ttyAMA0,115200\" -nographic\r\n//$ qemu-system-arm -M vexpress-a9 -m 128M -kernel ./linux-5.4.277/arch/arm/boot/zImage -dtb ./linux-5.4.277/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -initrd ./busybox-1.36.1/initrd.cpio.gz -append \"root=/dev/ram rdinit=/sbin/init console=ttyAMA0,115200\" -nographic\r\n$ qemu-system-arm -M vexpress-a9 -m 128M -kernel ./linux-5.4.277/arch/arm/boot/zImage -dtb ./linux-5.4.277/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -initrd ./busybox-1.36.1/initrd.cpio.gz -append \"rdinit=/bin/sh console=ttyAMA0,115200\" -nographic\r\n\r\n// boot ARM vexpress_ca9x4_defconfig\r\n// add SDcard\r\n$ qemu-system-arm -M vexpress-a9 -m 128M -kernel ./linux-5.4.277/arch/arm/boot/zImage -dtb ./linux-5.4.277/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -sd ./rootfs.img -append \"root=/dev/mmcblk0 rw rdinit=/bin/sh console=ttyAMA0,115200\" -nographic\r\n\r\n\r\n// boot Aarch64\r\n$ qemu-system-aarch64 \\\r\n  -M virt \\\r\n  -cpu cortex-a53 \\\r\n  -smp 1 \\\r\n  -m 128 \\\r\n  -nographic \\\r\n  -bios ./u-boot-2024.04/u-boot.bin \\\r\n  -kernel ./linux-5.4.277/arch/arm/boot/zImage \\\r\n//  -dtb ./linux-5.4.277/arch/arm/boot/dts/versatile-pb.dtb \\\r\n  -initrd ./busybox-1.36.1/initrd64.cpio.gz \\\r\n  -append \"rdinit=/sbin/init console=ttyAMA0\" \\\r\n  -device virtio-scsi-device\r\n\r\n$ qemu-system-aarch64 \\\r\n  -M virt \\\r\n  -cpu cortex-a57 \\\r\n  -smp 1 \\\r\n  -m 512 \\\r\n  -nographic \\\r\n  -kernel ./Image  \\\r\n  -initrd ./initrd64.cpio.gz   \\\r\n  -append \"rdinit=/linuxrc console=ttyAMA0\" \\\r\n  -device virtio-scsi-device\r\n\r\n\r\n// or\r\n\r\n$ sh run_qemu_with_new_kernel.sh\r\n// quit QEMU: Ctrl+A, x\r\n```\r\n\r\n\r\nQEMU Issues\r\n----------\r\n```sh\r\n1.\r\nVFS: Cannot open root device \"ram\" or unknown-block(1,0): error -6\r\nPlease append a correct \"root=\" boot option; here are the available partitions:\r\n1f00          131072 mtdblock0\r\n (driver?)\r\n1f01           32768 mtdblock1\r\n (driver?)\r\nKernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0)\r\nCPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.4.277 #1\r\nHardware name: ARM-Versatile Express\r\n\r\n==\u003e -append \"root=/dev/mmcblk0 rw rdinit=/bin/sh console=ttyAMA0,115200\"\r\n\r\n\r\n2.\r\nRun /init as init process\r\nAlignment trap: not handling instruction f8530b04 at [\u003c0001225a\u003e]\r\n...\r\nhttps://gitlab.com/qemu-project/qemu/-/issues/2326\r\n\r\n==\u003e USE QEMU 7.2.x\r\n```\r\n\r\n\r\nCreate a bootable ISO file\r\n----------\r\n```sh\r\n// for grup-mkrescue\r\n$ sudo apt-get install grub-common\r\n$ sudo apt-get install xorriso\r\n\r\n\r\n$ git clone https://github.com/godmode2k/linux_bsp_test.git\r\n$ cd linux_bsp_test/bootable_iso\r\n\r\n\r\n(EDIT .sh environment first)\r\n\r\nSEE:\r\n - init_add_files_arm32bit.sh\r\n - run_qemu_arm32bit_iso.sh\r\n\r\n\r\n// initrd: busybox-1.36.1 (initrd.cpio.gz)\r\n// Linux Kernel: linux-5.4.277 (arch/arm/boot/zImage, arch/arm/boot/dts/vexpress-v2p-ca9.dtb)\r\n\r\n\r\n// creates ISO\r\n$ sh init_add_files_arm32bit.sh\r\n\r\n// run QEMU with new bootable ISO\r\n$ sh run_qemu_arm32bit_iso.sh\r\n```\r\n\r\n\r\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgodmode2k%2Flinux_bsp_test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgodmode2k%2Flinux_bsp_test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgodmode2k%2Flinux_bsp_test/lists"}