diff options
author | Silvino Silva <silvino@bk.ru> | 2017-10-09 01:19:10 +0100 |
---|---|---|
committer | Silvino Silva <silvino@bk.ru> | 2017-10-09 01:19:10 +0100 |
commit | 46f82a26c6679573c1699311950f8699f09aedf3 (patch) | |
tree | 534f6c62b590298968d22b32a4d36366e0d583f2 /dev/c/index.html | |
parent | c0148601ebe2196375f26572624590cad2751845 (diff) | |
parent | b3a6bc5ad6b8f294efcbcf3c0039626918eccd69 (diff) | |
download | doc-46f82a26c6679573c1699311950f8699f09aedf3.tar.gz |
Merge branch 'h-0.3.2' into develop
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. |