diff options
author | punk <punk@libernaut> | 2021-04-21 15:42:20 +0100 |
---|---|---|
committer | punk <punk@libernaut> | 2021-04-21 15:42:20 +0100 |
commit | 4107462e9ec1cabaa7f89bd8478caec3f0d5b46a (patch) | |
tree | a2e34d995cef5ac8068ec7047e93b1125c80d175 /dev/c/system.html | |
parent | cfce80c5a0b8bc1eccc2f22a0d5d045d29467083 (diff) | |
parent | eac48b5a8d709135a95abcc2243b369095f074f4 (diff) | |
download | doc-4107462e9ec1cabaa7f89bd8478caec3f0d5b46a.tar.gz |
Merge branch 'master' into develop
Diffstat (limited to 'dev/c/system.html')
-rw-r--r-- | dev/c/system.html | 107 |
1 files changed, 88 insertions, 19 deletions
diff --git a/dev/c/system.html b/dev/c/system.html index de9dab5..d1d6558 100644 --- a/dev/c/system.html +++ b/dev/c/system.html @@ -15,35 +15,87 @@ will run on and GDB will connect to it to help us understand how things tick.</p> - <h2>Kernel Build</h2> + <h2>Build Kernel</h2> <pre> - $ tar xf linux-4.9.48.tar.xz - $ cd linux-4.9.48 + $ tar xf linux-4.9.258.tar.xz + $ cd linux-4.9.258 </pre> <p>Default configuration disable some security configurations that allow us to debug (random memory - layout).</p> + layout KALSR), CONFIG_COMPAT_BRK don't randomize + position of the programs (randomize_va_space) useful when + debugging a program (<a href="tracing.html">tracing</a>). + Configuration flags to enable;</p> + + <ul> + <li>CONFIG_64BIT</li> + <li>CONFIG_DEBUG_KERNEL</li> + <li>CONFIG_HAVE_ARCH_KGDB</li> + <li>CONFIG_FTRACE</li> + <li>CONFIG_PRINTK</li> + <li>CONFIG_BLK_DEV_INITRD</li> + <li>CONFIG_BINFMT_ELF</li> + <li>CONFIG_TTY</li> + <li>CONFIG_DEBUG_INFO</li> + <li>CONFIG_DEBUG_INFO_DWARF4</li> + <li>CONFIG_GDB_SCRIPTS</li> + <li>CONFIG_READABLE_ASM</li> + <li>CONFIG_FRAME_POINTER</li> + <li>CONFIG_KGDB</li> + <li>CONFIG_KGDB_LOW_LEVEL_TRAP</li> + <li>CONFIG_EARLY_PRINTK</li> + <li>CONFIG_COMPAT_BRK</li> + </ul> + + <p>And to disable;</p> + + <ul> + <li>CONFIG_CC_OPTIMIZE_FOR_SIZE</li> + </ul> + + + <p>This changes can be achieved by creating a config-fragment and then + merge it with the configuration.</p> <pre> - $ make x86_64_defconfig + $ cat <<EOF >.config-fragment + CONFIG_64BIT=y + CONFIG_DEBUG_KERNEL=y + CONFIG_HAVE_ARCH_KGDB=y + CONFIG_COMPAT_BRK=y + CONFIG_FTRACE=y + CONFIG_PRINTK=y + CONFIG_BLK_DEV_INITRD=y + CONFIG_BINFMT_ELF=y + CONFIG_TTY=y + CONFIG_DEBUG_INFO=y + CONFIG_DEBUG_INFO_DWARF4=y + CONFIG_GDB_SCRIPTS=y + CONFIG_READABLE_ASM=y + CONFIG_FRAME_POINTER=y + CONFIG_KGDB=y + CONFIG_KGDB_LOW_LEVEL_TRAP=y + CONFIG_EARLY_PRINTK=y + CONFIG_CC_OPTIMIZE_FOR_SIZE=n + EOF </pre> - <p>Enable CONFIG_DEBUG_INFO, CONFIG_DEBUG_INFO_DWARF4 - and CONFIG_GDB_SCRIPTS in the kernel;</p> + <p>Create a tiny config;</p> <pre> - make x86_64_defconfig - cat <<EOF >.config-fragment - CONFIG_DEBUG_INFO=y - CONFIG_DEBUG_KERNEL=y - CONFIG_GDB_SCRIPTS=y - EOF - ./scripts/kconfig/merge_config.sh .config .config-fragment + $ make ARCH=x86_64 tinyconfig </pre> - <p>Check or change to your needs the configuration;</p> + <p>Merge config with the following script;</p> + + <pre> + $ ./scripts/kconfig/merge_config.sh .config .config-fragment + </pre> + + <p>Check or change the configuration according to your needs;</p> + <pre> $ make nconfig </pre> @@ -138,7 +190,7 @@ -ex "file vmlinux" \ -ex 'set arch i386:x86-64:intel' \ -ex 'target remote localhost:1234' \ - -ex 'break start_kernel' \ + -ex 'hbreak start_kernel' \ -ex 'continue' \ -ex 'disconnect' \ -ex 'set arch i386:x86-64' \ @@ -169,11 +221,28 @@ (gdb) </pre> + <p>lx-symbols allows to debug kernel modules, after starting the vm and loading + the module use lx-symbols to load the symbols from all the modules loaded in + the kernel.</p> + + <pre> + (gdb) apropos lx + (gdb) lx-symbols + </pre> + + <p>It's useful to set conditional breakpoints or a break point can be trigger + by unrelated tasks, example of a break point on do_exit function but only by + the process with pid 1;</p> + + <pre> + (gdb) br do_exit if $lx_current()->pid == 1 + </pre> + <a href="index.html">C Index</a> <p> - This is part of the Tribu System Documentation. - Copyright (C) 2020 - Tribu Team. + This is part of the LeetIO System Documentation. + Copyright (C) 2021 + LeetIO Team. See the file <a href="../../fdl-1.3-standalone.html">Gnu Free Documentation License</a> for copying conditions.</p> |