Skip to content

Commit fd798e1

Browse files
committed
Makefile: add kernel debugging flags for qemu
1 parent e2f8fb8 commit fd798e1

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

Diff for: Makefile

+22
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,28 @@ QEMU=qemu-system-x86_64 \
3030
-device virtio-scsi-pci,id=scsi \
3131
-device scsi-hd,drive=hd
3232

33+
# To use gdb to debug the Linux kernel, use e.g.:
34+
#
35+
# make qemu-serial \
36+
# kgdb=1 \
37+
# kernel=/home/michael/fuse-debug/linux/arch/x86/boot/bzImage \
38+
# cmdline="panic_on_oops=1"
39+
#
40+
# gdb vmlinux
41+
# (gdb) target remote localhost:1234
42+
# (gdb) continue
43+
ifdef kgdb
44+
cmdline+= nokaslr
45+
cmdline+= kgdbwait
46+
cmdline+= kgdboc=ttyS0,115200
47+
QEMU+= -serial tcp::1234,server,nowait
48+
endif
49+
50+
ifdef kernel
51+
QEMU+= -kernel "${kernel}"
52+
QEMU+= -append "root=/dev/sda4 ro ${cmdline} $(shell tr -d '\n' < ${DISKIMG}.cmdline)"
53+
endif
54+
3355
PACKFLAGS=
3456

3557
# for when you want to see non-kernel console output (e.g. systemd), useful with qemu

Diff for: cmd/distri/pack.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -861,7 +861,11 @@ name=root`)
861861
if p.bootDebug {
862862
params = append(params, "systemd.log_level=debug systemd.log_target=console")
863863
}
864-
mkconfigCmd := "GRUB_CMDLINE_LINUX=\"console=ttyS0,115200 " + strings.Join(params, " ") + " init=/init systemd.setenv=PATH=/bin rw\" GRUB_TERMINAL=serial grub-mkconfig -o /boot/grub/grub.cfg"
864+
cmdline := "console=ttyS0,115200 " + strings.Join(params, " ") + " init=/init systemd.setenv=PATH=/bin rw"
865+
if err := ioutil.WriteFile(p.diskImg+".cmdline", []byte(cmdline+"\n"), 0644); err != nil {
866+
return err
867+
}
868+
mkconfigCmd := fmt.Sprintf(`GRUB_CMDLINE_LINUX=%q GRUB_TERMINAL=serial grub-mkconfig -o /boot/grub/grub.cfg`, cmdline)
865869
mkconfig := exec.Command("sudo", "chroot", "/mnt", "sh", "-c", mkconfigCmd)
866870
mkconfig.Stderr = os.Stderr
867871
mkconfig.Stdout = os.Stdout

0 commit comments

Comments
 (0)