From 53c1b61879a1f3d35594b50420eacc0ce445098f Mon Sep 17 00:00:00 2001 From: Ciro Santilli Date: Wed, 14 Jun 2017 08:11:54 +0100 Subject: [PATCH] screenshot, vm to description, qemu debug non intrusive --- README.md | 4 +++- run | 2 +- runqemu | 6 +++++- screenshot.png | Bin 0 -> 32950 bytes 4 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 screenshot.png diff --git a/README.md b/README.md index 25845f7..660b699 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # Linux Kernel Module Cheat -Run one command, get into QEMU Buildroot BusyBox with several minimal Linux kernel 4.9 module example tutorials with GDB and KGDB debug. Tested in x86 and ARM guests, Ubuntu 14.04 - 16.10 hosts. +Run one command, get into QEMU Buildroot BusyBox virtual machine with several minimal Linux kernel 4.9 module example tutorials with GDB and KGDB debug. Tested in x86 and ARM guests, Ubuntu 14.04 - 16.10 hosts. + +![](screenshot.png) Usage: diff --git a/run b/run index 2402e31..64614be 100755 --- a/run +++ b/run @@ -39,7 +39,7 @@ env \ make \ BR2_JLEVEL="$(($(nproc) - 2))" \ HOST_QEMU_OPTS="--enable-debug --enable-sdl --with-sdlabi=2.0" \ - host-qemu-reconfigure \ + host-qemu-rebuild \ kernel_module-rebuild \ all \ ; diff --git a/runqemu b/runqemu index b930bd9..01534ef 100755 --- a/runqemu +++ b/runqemu @@ -5,6 +5,7 @@ set -e # CLI handling. arch=x86_64 debug=false +debug_qemu='' kgdb=false nographic=false extra_append='' @@ -31,6 +32,9 @@ while getopts a:dkn OPT; do extra_flags="$extra_flags -nographic" nographic=true ;; + q) + debug_qemu='gdb -q -ex start --args' + ;; esac done shift "$(($OPTIND - 1))" @@ -42,7 +46,7 @@ case "$arch" in if $kgdb; then extra_append="$extra_append kgdboc=ttyS0,115200" fi - cmd="gdb -q -ex start --args ./buildroot/output/host/usr/bin/qemu-system-x86_64 \ + cmd="$debug_qemu ./buildroot/output/host/usr/bin/qemu-system-x86_64 \ -M pc \ -append 'root=/dev/vda $extra_append' \ -drive file=${images_dir}/rootfs.ext2,if=virtio,format=raw \ diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..71a4cb17e93238c98f3331558c52300668b2abbe GIT binary patch literal 32950 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%0Dj!OHX|J*6+>!eVU&R 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 @8jIPSI2CRuD<5W->1^K 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