gdb_port=1234
default_cmd="console=/dev/ttyS0"
-make CMDLINE=${default_cmd} ARCH=${ARCH} MODE=${MODE:-debug} image -j5 || exit -1
-
-./scripts/qemu.py \
- scripts/qemus/qemu_x86_dev.json \
- --qemu-dir "${QEMU_DIR}" \
- -v KIMG=build/lunaix.iso \
- -v QMPORT=${hmp_port} \
- -v GDB_PORT=${gdb_port} \
- -v EXT2_TEST_DISC=machine/test_part.ext2 \
- -v ARCH=${ARCH} &
-
-QMPORT=${hmp_port} gdb build/bin/kernel.bin -ex "target remote localhost:${gdb_port}"
\ No newline at end of file
+if [[ -z "${ARCH}" ]]; then
+ echo "error: please specify ARCH="
+ exit 1
+fi
+
+make ARCH="${ARCH}" MODE="${MODE:-debug}" all -j"$(nproc)" || exit 1
+
+launch_script=._launch_debug.sh
+
+cat << EOF > ${launch_script} && chmod +x ${launch_script}
+#!/usr/bin/env sh
+./scripts/qemu.py \\
+ scripts/qemus/qemu_x86_dev.json \\
+ --qemu-dir "${QEMU_DIR}" \\
+ -v QMPORT=${hmp_port} \\
+ -v GDB_PORT=${gdb_port} \\
+ -v ROOTFS=lunaix_rootfs.ext2 \\
+ -v ARCH=${ARCH} \\
+ -v KBIN=build/bin/kernel.bin \\
+ -v "KCMD=${default_cmd} rootfs=/dev/block/sda init=/bin/init" \\
+ -- \\
+ -nographic || exit 1 &
+
+AUTOQEMU_DAEMON=\$!
+echo "autoqemu daemon launched (pid=\$AUTOQEMU_DAEMON)"
+
+gdb-multiarch \\
+ build/bin/kernel.bin \\
+ -ex "target remote localhost:${gdb_port}"
+
+if ps -p \$AUTOQEMU_DAEMON > /dev/null
+then
+ kill -9 \$AUTOQEMU_DAEMON
+fi
+EOF
+
+echo "debugger launch script written to: ${launch_script}"
+
+if [[ -z "${TMUX}" ]]; then
+ echo "for best effect, use tmux"
+ GDB_NOSPLIT=1 "./${launch_script}"
+else
+ tmux new-window -a -n "[lunaix-debug]" -e "QMPORT=${hmp_port}" "./${launch_script}"
+fi