diff options
| author | Miquel Sabaté Solà <mikisabate@gmail.com> | 2025-05-07 16:32:19 +0200 |
|---|---|---|
| committer | Miquel Sabaté Solà <mikisabate@gmail.com> | 2025-05-07 16:32:19 +0200 |
| commit | 72d503eeed47e33bdb365e0e1b9783bc938c6f1e (patch) | |
| tree | 3d41c221294e256e2f318d1ea68fec2fc7c3788a | |
| parent | 7589308a75a78e14e23d680b896f5afa63110657 (diff) | |
| download | dotfiles-72d503eeed47e33bdb365e0e1b9783bc938c6f1e.tar.gz dotfiles-72d503eeed47e33bdb365e0e1b9783bc938c6f1e.zip | |
Streamline configuration for run-riscv-qemu.sh
Personal stuff like the location of the kernel image should go into my
.bashrc file, and then require it on `run-riscv-qemu.sh`. Similarly,
some environment variables were dropped, and some others removed. This
brings some much needed consistency to the whole script.
Last but not least, the `run-riscv-qemu.sh` now also had an extra
configurable variable, which is used for the `-cpu` QEMU option. It
defaults to 'max' so we can test the maximum amount of supported
extensions as possible.
Signed-off-by: Miquel Sabaté Solà <mikisabate@gmail.com>
| -rw-r--r-- | .bashrc | 5 | ||||
| -rwxr-xr-x | bin/run-riscv-qemu.sh | 24 |
2 files changed, 18 insertions, 11 deletions
@@ -168,9 +168,10 @@ if [ "$(uname -m)" != "riscv64" ]; then export CROSS_COMPILE=riscv64-suse-linux- fi -# I have built a local busybox so I can generate an initramfs for various -# hacking thingies, let's reference it into an environment variable. +# Local builds for busybox and the Linux kernel. Needed by scripts like +# `bin/run-riscv-qemu.sh`. export BUSYBOX_SRC="$HOME/src/busybox/1.36.1" +export QEMU_KERNEL="$HOME/src/git.kernel.org/linux/kernel/riscv/arch/riscv/boot/Image" ## # Lastly I had some problems with the GPG agent recently. So I copied a solution diff --git a/bin/run-riscv-qemu.sh b/bin/run-riscv-qemu.sh index 94310c5..c96cafb 100755 --- a/bin/run-riscv-qemu.sh +++ b/bin/run-riscv-qemu.sh @@ -2,16 +2,20 @@ set -e -# Enfore the BUSYBOX_SRC path. +# Enfore BUSYBOX_SRC and QEMU_KERNEL. if [ -z "$BUSYBOX_SRC" ]; then echo "run-qemu (error): you need to define BUSYBOX_SRC." exit 1 fi +if [ -z "$QEMU_KERNEL" ]; then + echo "run-qemu (error): you need to define QEMU_KERNEL with the Image to be used." + exit 1 +fi -CORES=${CORES:-4} +# Configurable variables. +QEMU_CPU=${QEMU_CPU:-max} +QEMU_SMP=${QEMU_SMP:-4} EXTRA=${EXTRA:-} -REPO=${REPO:-riscv} -KERNEL=${KERNEL:-~/src/git.kernel.org/linux/kernel/$REPO/arch/riscv/boot/Image} # Cleanup older environments. rm -rf "$BUSYBOX_SRC/initramfs/home" @@ -50,10 +54,9 @@ Run QEMU/KVM tailored to my needs for testing the Linux Kernel. Environment variables that can be used the further configure the run: - - CORES: number of cores (i.e. argument for '-smp'). Default: 4. - EXTRA: extra arguments to pass. Default: (empty). - - KERNEL: the kernel to be passed (i.e. argument for '-kernel'). Default: "$KERNEL". - - REPO: the Linux repository to be used. Default: "riscv". + - QEMU_CPU: CPU model to use (i.e. argument for '-cpu'). Default: 'max'. + - QEMU_SMP: number of cores (i.e. argument for '-smp'). Default: 4. HERE exit 0 fi @@ -68,9 +71,12 @@ popd ## # Actual run. +set -x + qemu-system-riscv64 -machine virt -nographic \ - -smp "$CORES" \ - -kernel "$KERNEL" \ + -cpu "$QEMU_CPU" \ + -smp "$QEMU_SMP" \ + -kernel "$QEMU_KERNEL" \ -initrd "$BUSYBOX_SRC/initramfs.cpio.gz" \ -append "root=/dev/ram" \ -append nokaslr \ |
