aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile35
-rw-r--r--config/linux.config21
-rwxr-xr-xqemu-gdb.cmds2
-rwxr-xr-xskeleton/init1
4 files changed, 50 insertions, 9 deletions
diff --git a/Makefile b/Makefile
index a1a265e..fea436e 100644
--- a/Makefile
+++ b/Makefile
@@ -7,6 +7,7 @@ KEYMAP ?= i386/qwertz/de-latin1
LINUX_LOCAL ?=
DEFCONFIG ?= n
NO_MODULES ?= n
+USE_GDB ?= n
BUILDJOBS ?= $(shell cat /proc/cpuinfo | grep -o '^processor' | wc -l)
THIS_DIR=$(realpath .)
@@ -53,6 +54,7 @@ BUSYBOX_LDFLAGS=-L$(ROOTFS_DIR)/lib
BUSYBOX_TARGET=$(BUSYBOX_BUILD_DIR)/busybox
all: pre dl extract build image
+ @echo 'Finished.'
$(DL_DIR):
mkdir -p '$@'
@@ -175,22 +177,40 @@ net:
net-clean:
sudo ip link delete $(NET_QEMU_TAP)
+ifeq ($(USE_GDB),y)
+QEMU_ARGS += -s -S
+endif
+
+qemu-gdb-connect:
+ gdb -s '$(LINUX_BUILD_DIR)/vmlinux' -x ./qemu-gdb.cmds
+
qemu: image
- qemu-system-$(ARCH) -kernel '$(LINUX_BUILD_DIR)/arch/$(ARCH)/boot/bzImage' -initrd '$(INITRD_TARGET)' -enable-kvm -m $(MEMORY) -vga qxl -display sdl -append 'keymap=$(KEYMAP)'
+ qemu-system-$(ARCH) -kernel '$(LINUX_BUILD_DIR)/arch/$(ARCH)/boot/bzImage' -initrd '$(INITRD_TARGET)' \
+ -enable-kvm -m $(MEMORY) -vga qxl -display sdl \
+ -append 'nokaslr keymap=$(KEYMAP)' $(QEMU_ARGS)
qemu-console: image
- qemu-system-$(ARCH) -kernel '$(LINUX_BUILD_DIR)/arch/$(ARCH)/boot/bzImage' -initrd '$(INITRD_TARGET)' -enable-kvm -m $(MEMORY) -curses -append 'keymap=$(KEYMAP)'
+ qemu-system-$(ARCH) -kernel '$(LINUX_BUILD_DIR)/arch/$(ARCH)/boot/bzImage' -initrd '$(INITRD_TARGET)' \
+ -enable-kvm -m $(MEMORY) -curses \
+ -append 'nokaslr keymap=$(KEYMAP)' $(QEMU_ARGS)
qemu-serial: image
- qemu-system-$(ARCH) -kernel '$(LINUX_BUILD_DIR)/arch/$(ARCH)/boot/bzImage' -initrd '$(INITRD_TARGET)' -enable-kvm -m $(MEMORY) -nographic -append 'console=ttyS0 keymap=$(KEYMAP)'
+ qemu-system-$(ARCH) -kernel '$(LINUX_BUILD_DIR)/arch/$(ARCH)/boot/bzImage' -initrd '$(INITRD_TARGET)' \
+ -enable-kvm -m $(MEMORY) -nographic \
+ -append 'nokaslr console=ttyS0 keymap=$(KEYMAP)' $(QEMU_ARGS)
qemu-serial-net: image
- qemu-system-$(ARCH) -kernel '$(LINUX_BUILD_DIR)/arch/$(ARCH)/boot/bzImage' -initrd '$(INITRD_TARGET)' -enable-kvm -m $(MEMORY) -nographic \
- -net nic,macaddr=$(NET_HWADDR) -net tap,ifname=$(NET_QEMU_TAP),br=$(NET_BRIDGE),script=no,downscript=no -append 'net console=ttyS0 keymap=$(KEYMAP)'
+ qemu-system-$(ARCH) -kernel '$(LINUX_BUILD_DIR)/arch/$(ARCH)/boot/bzImage' -initrd '$(INITRD_TARGET)' \
+ -enable-kvm -m $(MEMORY) -nographic \
+ -net nic,macaddr=$(NET_HWADDR) -net tap,ifname=$(NET_QEMU_TAP),br=$(NET_BRIDGE),script=no,downscript=no \
+ -append 'nokaslr net console=ttyS0 keymap=$(KEYMAP)' \
+ $(QEMU_ARGS)
qemu-net: image
- qemu-system-$(ARCH) -kernel '$(LINUX_BUILD_DIR)/arch/$(ARCH)/boot/bzImage' -initrd '$(INITRD_TARGET)' -enable-kvm -m $(MEMORY) -vga qxl -display sdl \
- -net nic,macaddr=$(NET_HWADDR) -net tap,ifname=$(NET_QEMU_TAP),br=$(NET_BRIDGE),script=no,downscript=no -append 'net keymap=$(KEYMAP)'
+ qemu-system-$(ARCH) -kernel '$(LINUX_BUILD_DIR)/arch/$(ARCH)/boot/bzImage' -initrd '$(INITRD_TARGET)' \
+ -enable-kvm -m $(MEMORY) -vga qxl -display sdl \
+ -net nic,macaddr=$(NET_HWADDR) -net tap,ifname=$(NET_QEMU_TAP),br=$(NET_BRIDGE),script=no,downscript=no \
+ -append 'nokaslr net keymap=$(KEYMAP)' $(QEMU_ARGS)
define HELP_PREFIX
@printf '%*s%-10s - %s\n' '20' '$1' '' '$2'
@@ -219,6 +239,7 @@ help:
$(call HELP_PREFIX,qemu-net,test your kernel/initramfs combination with QEMU and network support through TAP)
@echo
@echo -e '\tAdditional make options:'
+ $(call HELP_PREFIX_OPTS,USE_GDB=$(USE_GDB),start QEMU with debugging capabilities enabled)
$(call HELP_PREFIX_OPTS,NO_MODULES=$(NO_MODULES),neither build nor install kernel modules)
$(call HELP_PREFIX_OPTS,MEMORY=$(MEMORY),set the RAM size for QEMU in MBytes)
$(call HELP_PREFIX_OPTS,NET_QEMU_TAP=$(NET_QEMU_TAP),set the ifname which QEMU will use as TAP device (run `make net` before))
diff --git a/config/linux.config b/config/linux.config
index dcd8d37..216c35b 100644
--- a/config/linux.config
+++ b/config/linux.config
@@ -2356,9 +2356,11 @@ CONFIG_SERIAL_8250_MID=y
#
# Non-8250 serial port support
#
+CONFIG_SERIAL_KGDB_NMI=y
# CONFIG_SERIAL_UARTLITE is not set
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_CONSOLE_POLL=y
# CONFIG_SERIAL_JSM is not set
# CONFIG_SERIAL_LANTIQ is not set
# CONFIG_SERIAL_SCCNXP is not set
@@ -4560,7 +4562,13 @@ CONFIG_DEBUG_BUGVERBOSE=y
#
# Compile-time checks and compiler options
#
-# CONFIG_DEBUG_INFO is not set
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_INFO_REDUCED is not set
+# CONFIG_DEBUG_INFO_COMPRESSED is not set
+# CONFIG_DEBUG_INFO_SPLIT is not set
+CONFIG_DEBUG_INFO_DWARF4=y
+# CONFIG_DEBUG_INFO_BTF is not set
+CONFIG_GDB_SCRIPTS=y
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_FRAME_WARN=2048
# CONFIG_STRIP_ASM_SYMS is not set
@@ -4581,7 +4589,16 @@ CONFIG_MAGIC_SYSRQ_SERIAL=y
CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE=""
CONFIG_DEBUG_FS=y
CONFIG_HAVE_ARCH_KGDB=y
-# CONFIG_KGDB is not set
+CONFIG_KGDB=y
+CONFIG_KGDB_SERIAL_CONSOLE=y
+CONFIG_KGDB_TESTS=y
+CONFIG_KGDB_TESTS_ON_BOOT=n
+CONFIG_KGDB_LOW_LEVEL_TRAP=y
+CONFIG_KGDB_KDB=y
+CONFIG_KDB_DEFAULT_ENABLE=0x1
+CONFIG_KDB_KEYBOARD=y
+CONFIG_KDB_CONTINUE_CATASTROPHIC=0
+CONFIG_ARCH_HAS_EARLY_DEBUG=y
CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y
# CONFIG_UBSAN is not set
# end of Generic Kernel Debugging Instruments
diff --git a/qemu-gdb.cmds b/qemu-gdb.cmds
new file mode 100755
index 0000000..fc141d5
--- /dev/null
+++ b/qemu-gdb.cmds
@@ -0,0 +1,2 @@
+target remote :1234
+hbreak start_kernel
diff --git a/skeleton/init b/skeleton/init
index e8618a6..8b4f148 100755
--- a/skeleton/init
+++ b/skeleton/init
@@ -66,6 +66,7 @@ for arg in $(cat /proc/cmdline | tr '[:upper:]' '[:lower:]'); do
esac
done
+resize
hostname ${HOSTNAME}
cd ${HOME}
setsid cttyhack sh