dependencies
- build is tested on a ubuntu
- for qemu minimum needed:
sudo apt install qemu qemu-system-x86
build
create an image file with a debian rootfs (only needed first time)
run ./create_image.sh
, this downloads dbootstrap and installs a debian into a image file
chroot into debian rootfs to build the kernel
(build on your system is possible, but for example ubuntu 20.04 libs throw exceptions)
run ./chroot_image.sh
, this drops you in a shell on the created debian
to build:
apt update
apt-get install -y fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
cd /mnt
./build_kernel.sh
chroot into debian rootfs to build test modules
This is historical information, please note that this uses kernel threads. Our perf events are currently configured not to count kernel space. This and possibly other changes cause this not to work. We are using pb_submitter for testing.
run ./chroot_image.sh
, this drops you in a shell on the created debian and run
/mnt/build_module.sh
chroot into debian rootfs to build pb_submitter and test programs
run ./chroot_image.sh
, this drops you in a shell on the created debian and run
/mnt/build_pb_submitter.sh
run the build kernel with the created rootfs
run ./run_qemu.sh
debug using gdb
run ./run_qemu.sh gdb
run in a seperate shell:
cd .. # to workspace root
gdb vmlinux \
-ex 'lx-symbols' \
-ex 'target remote :1234' \
-ex 'hb init_pb_rq'
look for gdb add-auto-load-safe-path
warning and follow instruction to enable loading of kernel gdb scripts
use hardware breakpoints instead of software breaks