diff options
Diffstat (limited to 'dev/c/index.html')
-rw-r--r-- | dev/c/index.html | 87 |
1 files changed, 1 insertions, 86 deletions
diff --git a/dev/c/index.html b/dev/c/index.html index 684c7d2..1c3b478 100644 --- a/dev/c/index.html +++ b/dev/c/index.html @@ -7,92 +7,6 @@ <body> <a href="../index.html">Development Index</a> - <h1>System Development</h1> - - <p>System development requires debug kernel know how, - in this example will be used qemu and gdb. A simple init - program is created. Create init.S;</p> - - <pre> - .global _start - _start: - mov $1, %rax - mov $1, %rdi - mov $message, %rsi - mov $message_len, %rdx - syscall - jmp . - message: .ascii "FOOBAR FOOBAR FOOBAR FOOBAR FOOBAR FOOBAR FOOBAR\n" - .equ message_len, . - message - </pre> - - <p>Assemble, link and create simple initial ram disk;</p> - - <pre> - mkdir d - as --64 -o init.o init.S # assemble - ld -o d/init init.o # link - cd d - find . | cpio -o -H newc | gzip > ../rootfs.cpio.gz - </pre> - - <p>Clean temporary directory;</p> - - <pre> - cd .. - rm -r d/ - </pre> - - <p>Can be used C to create init program;</p> - - <pre> - #include <stdio.h> - #include <unistd.h> - - int main() { - printf("FOOBAR FOOBAR FOOBAR FOOBAR FOOBAR FOOBAR FOOBAR\n"); - sleep(0xFFFFFFFF); - return 0; - } - </pre> - - <pre> - $ gcc -static init.c -o init - </pre> - - <p>Test qemu, kernel and simple init program, you should see - "FOOBAR FOOBAR FOOBAR FOOBAR FOOBAR FOOBAR FOOBAR";</p> - - <pre> - $ qemu-system-x86_64 -enable-kvm --kernel arch/x86_64/boot/bzImage \ - --initrd rootfs.cpio.gz - </pre> - - <p>If everything goes well you can start qemu without start CPU at - startup (-S) and with gdb server on TCP port 1234 (-s).</p> - - <pre> - $ qemu-system-x86_64 -enable-kvm --kernel arch/x86/boot/bzImage \ - --initrd rootfs.cpio.gz \ - -S -s - </pre> - - <p>On another terminal start gdb;</p> - - <pre> - gdb \ - -ex "add-auto-load-safe-path $(pwd)" \ - -ex "file vmlinux" \ - -ex 'set arch i386:x86-64:intel' \ - -ex 'target remote localhost:1234' \ - -ex 'break start_kernel' \ - -ex 'continue' \ - -ex 'disconnect' \ - -ex 'set arch i386:x86-64' \ - -ex 'target remote localhost:1234' - </pre> - - <h1>C & GDB</h1> <p><a href="http://blog.fourthbit.com/2013/06/18/creating-an-open-source-program-in-c-with-autotools-part-1-of-2/">C program with autotools</a> @@ -172,6 +86,7 @@ <pre> strace -c ./program </pre> + <a href="../index.html">Development Index</a> <p> This is part of the c9-doc Manual. |