Differences between version 11 and predecessor to the previous major change of KernelDevelopment.
Other diffs: Previous Revision, Previous Author, or view the Annotated Edit History
| Newer page: | version 11 | Last edited on Monday, October 17, 2005 1:30:51 pm | by IanMcDonald | Revert |
| Older page: | version 10 | Last edited on Saturday, October 15, 2005 2:27:36 pm | by IanMcDonald | Revert |
@@ -1,47 +1,9 @@
-This page is going to be
about LinuxKernel development.
+This page is about LinuxKernel development.
There are useful tools for kernel development available such as [Ostra] and [Sparse].
Today most KernelDevelopment is done with [Git]. See KernelDevelopmentWithGit for more details.
-
-To debug a kernel crash you can use objdump to show the assembler for the routine shown and if debug symbols from kernel hacking menu are turned on then you can see the C code also. There will be a hex offset in the crash output and just use that to find the valid line of code/assembler. For example:
-<tt>
-objdump -r -S -l --disassemble net/dccp/ipv4.o
-</tt>
-
-NB. You need to be at the top level of the kernel tree for this to pick up your C files.
-
-If you don't have access to the code you can also debug on some crash dumps e.g. crash dump output as shown by Dave Miller.
-<verbatim>
-EIP is at ip_queue_xmit+0x14/0x4c0
- ...
-Code: 44 24 04 e8 6f 05 00 00 e9 e8 fe ff ff 8d 76 00 8d bc 27 00 00
-00 00 55 57 56 53 81 ec bc 00 00 00 8b ac 24 d0 00 00 00 8b 5d 08
-<8b> 83 3c 01 00 00 89 44 24 14 8b 45 28 85 c0 89 44 24 18 0f 85
-
-Put the bytes into a "foo.s" file like this:
-
- .text
- .globl foo
-foo:
- .byte .... /* bytes from Code: part of OOPS dump */
-
-Compile it with "gcc -c -o foo.o foo.s" then look at the output
-of "objdump --disassemble foo.o".
-
-Output:
-
-ip_queue_xmit:
- push %ebp
- push %edi
- push %esi
- push %ebx
- sub $0xbc, %esp
- mov 0xd0(%esp), %ebp ! %ebp = arg0 (skb)
- mov 0x8(%ebp), %ebx ! %ebx = skb->sk
- mov 0x13c(%ebx), %eax ! %eax = inet_sk(sk)->opt
-</verbatim>
A couple of useful articles for kernel development from [IBM]: %%%
http://www-128.ibm.com/developerworks/linux/edu/l-dw-linux-kernelhack1-i.html %%%
http://www-128.ibm.com/developerworks/linux/edu/l-dw-linux-kernelhack2-i.html %%%
@@ -53,13 +15,15 @@
Here is a script that I use to copy my new kernel to other remote machines:
<verbatim>
#! /bin/bash
SRC=$HOME/linuxsrc/dccpwork
-VER=2.6.14-rc1
+VER=2.6.14-rc4
rm $HOME/tmp/lib/modules/$VER/build
rm $HOME/tmp/lib/modules/$VER/source
scp $SRC/System.map root@$1:/boot/System.map-$VER
scp $SRC/arch/i386/boot/bzImage root@$1:/boot/vmlinuz-$VER
scp -r $HOME/tmp/lib root@$1:/
</verbatim>
+----
+See also KernelDevelopmentDebugging
----
CategoryKernel
