Hello everybody:
I'm doing an OS for X86. This has been brewing since March, I'd like any feedback on things people like/dislike in Linux. as my OS resembles it somewhat.
A tiny operate system has work on i386. I'll add more features like virtual file-system, virtual memory and general device driver.
BTW, it's only a toy (just a hobby), I only want to know machanism of linux, and won't be big and professional like Linux.
Buddy (buddy.zhang@aliyun.com) ^_^
OS information:
Item | contents |
---|---|
OS Name | BiscuitOS |
Release Version | V0.0.2 |
Target Platform | I386(X86 family) |
Emulator | Qemu |
Memory limit | 16 M |
Disk | Floppy |
Rootfs | none |
Host Machine | Ubuntu16.04 |
Paging | Support |
Segmenting | Support |
Bit | 32-bit |
This OS running on X86 machine, if you don't have X86 machine, you
can use X86 emulator to run OS. This OS have ran on qemu
, qemu
is
an useful X86 emulator to emulate environment of X86. Please follow
specific steps to make it work.
-
Install essential tools
sudo apt-get install qemu sudo apt-get install figlet gcc make gdb git sudo apt-get install cflow graphviz gawk indent
If you use 64 bit system, please install 32 bit library.
sudo apt-get install lib32z1 lib32z1-dev
-
Download source code
Download souce code from github, please connect network first.
git clone https://github.com/BuddyZhang1/BiscuitOS.git
-
Compile BiscuitOS
make clean make make start
-
Debug BiscuitOS
If you want to debug BiscuitOS, please open debug macro on top Makefile.
vi */BiscuitOS/Makefile --- DEBUG := +++ DEBUG := 1
Then, recompile source code.
make clean make
Now, we can start to debug OS. On Host:
make debug
On Target:
You can utilize
gdb
to single debug and so on. follow these steps:gdb tools/build/system (gdb)target remote :1234 (gdb)b main (gdb)c (gdb)n or (gdb)s
You can also utilize
objdump
to get more useful information, such as:objdump -x -s -S -dh tools/build/system
If you want to debug
bootsect.s
andsetup.s
, you should follow these steps:gdb tools/build/.debug_bootsect or gdb tools/build/.debug_setup (gdb)target remote :1234 (gdb)b *0x7C00 (gdb)c (gdb)d (gdb)(delete break?)y (gdb)ni or (gdb)si
You can also uitlize
objdump
to get more useful information,like:objdump -x -s -S -dh tools/build/.debug_bootsect
-
Draw calling graph
BiscuitOS supports automatic draw calling graph of function. If you want to utilize this tools, you should follow these steps:
cd */BiscuitOS/ make draw FUN=xxx
Basic command
make draw
that draws a new calling graph, you should input function name (likemake draw FUN=printk
).And, The
firefox
browser will display the calling graph.Note! This tools base on
firefox
browser, so you should installfirefox
on your PC.
I have collected more useful documentions, you can access my github to get it. The github link:
https://github.com/BuddyZhang1/Book-Segment
If you have any new source code or problem, you can send email to me. This is my frequently used email:
buddy.zhang@aliyun.com
Software is like sex. It's better when it's free
--- Linus Torvalds