SeaOS 0.2 Beta 1
Posted: Wed Jul 25, 2012 10:10 pm
After much work, long nights, and plenty of swearing, I am releasing the first beta the next version of my OS: 0.2-beta1.
Please read the README and the release notes for more information. Included is the source code, hard drive image and CD image. The CD image is missing most programs, and is only useful to show that the system properly boots up on real hardware. The CD image does not load the ata driver by default, so your data is safe. Also, due to the way the initrd is loaded, the CD image currently requires around 400MB of ram to boot up...(kinda sucky, yes). This will be fixed soon. If it boots up to the point where it the OS says its out of memory, then I'm counting that as "working on real hardware". See the README for more info.
This OS is very UNIX-y. For all of you out there who say that creating a UNIX clone is a waste of time and boring, thats fine for you. I used this project for two things: to learn about OS's, and for fun. I accomplished both. Version 0.2 is all about getting a solid base to work from. I implemented POSIX and UNIX-y APIs from the specifications, designing the implementations myself (the most fun, IMO). In the next version I will work on expanding the OS in my own way (probably away from POSIX) and adding my own APIs. That way it will no longer be a pure unix clone, but will combine with my own stuff.
TL;DR: yes, its unix-y. I don't care. I will change that in the next release, this was just to get a solid thing to work from.
The kernel got a major overhaul from 0.1. The two biggest fixes were resource locking and the VFS. In 0.1 there were bugs in the mutex code that resulted in critical sections only being very unlikely to be interrupted. Now they wont be at all. That paved the way for getting the resources themselves properly implemented. The VFS had a pretty significant overhaul and now is much more stable (though theres still work to be done). The cache is now implemented as a hash table instead of a tree, which has sped things up significantly. I fixed a number of stability bugs in the memory manager, and the end result was a much more stable system. I also properly implemented a much larger number of POSIX functions in the library, and fixed a lot of old ones. Suddenly, things were much easier to port. I got bash working with minimal effort, and realized that the system was coming along quite nicely.
Here is a list of ported packages:
bash binutils coreutils diffutils e2fsprogs findutils fortune gawk gcc grep grub less make nano nasm ncurses newlib patch readline seaos-util sed termcap which
I also wrote several utilities for some OS dependant things: login, losetup, lscpu, modprobe, lspci, mount, passwd, ps, shutdown, umount, and useradd
This operating system is self-hosting! You can compile the sources for the kernel and apps just as you would on linux and install them within the system and it will work! You can even try editing the sources with nano! (hint: try editing /usr/src/sea/kernel/init/main.c and changing the kprintf line around line 169 for proof that it worked).
Some fun things to try:
* cd to /usr/src/seaos-util and run `./configure --prefix=/; make; make install'. This will let you
compile the applications for seaos and install them.
* cd to /usr/src/sea and run `./configure; make; make install'. This lets you recompile and install the
kernel.
* use nano to edit files!
* create users with `useradd joe' (or whatever login you want).
* change your password with `passwd'!
* run sh explode (if you're curious as to what this does, look at /bin/explode [its a shell script]).
* play around with the included software!
* read the man pages of various programs!
`man cat', for example
There is a list of known bugs in the release notes. If you find more, please contact me about it.
The source can be obtained here: http://seaos-os.googlecode.com/files/se ... rc.tar.bz2
The images can be obtained here: http://seaos-os.googlecode.com/files/se ... ld.tar.bz2
Project pages:
* kernel: http://code.google.com/p/seaos-kernel/
* apps : http://code.google.com/p/seaos-apps/
* system: http://code.google.com/p/seaos-os/
Thanks to everyone here at OSdev! Enjoy testing it!
-JL
Please read the README and the release notes for more information. Included is the source code, hard drive image and CD image. The CD image is missing most programs, and is only useful to show that the system properly boots up on real hardware. The CD image does not load the ata driver by default, so your data is safe. Also, due to the way the initrd is loaded, the CD image currently requires around 400MB of ram to boot up...(kinda sucky, yes). This will be fixed soon. If it boots up to the point where it the OS says its out of memory, then I'm counting that as "working on real hardware". See the README for more info.
This OS is very UNIX-y. For all of you out there who say that creating a UNIX clone is a waste of time and boring, thats fine for you. I used this project for two things: to learn about OS's, and for fun. I accomplished both. Version 0.2 is all about getting a solid base to work from. I implemented POSIX and UNIX-y APIs from the specifications, designing the implementations myself (the most fun, IMO). In the next version I will work on expanding the OS in my own way (probably away from POSIX) and adding my own APIs. That way it will no longer be a pure unix clone, but will combine with my own stuff.
TL;DR: yes, its unix-y. I don't care. I will change that in the next release, this was just to get a solid thing to work from.
The kernel got a major overhaul from 0.1. The two biggest fixes were resource locking and the VFS. In 0.1 there were bugs in the mutex code that resulted in critical sections only being very unlikely to be interrupted. Now they wont be at all. That paved the way for getting the resources themselves properly implemented. The VFS had a pretty significant overhaul and now is much more stable (though theres still work to be done). The cache is now implemented as a hash table instead of a tree, which has sped things up significantly. I fixed a number of stability bugs in the memory manager, and the end result was a much more stable system. I also properly implemented a much larger number of POSIX functions in the library, and fixed a lot of old ones. Suddenly, things were much easier to port. I got bash working with minimal effort, and realized that the system was coming along quite nicely.
Here is a list of ported packages:
bash binutils coreutils diffutils e2fsprogs findutils fortune gawk gcc grep grub less make nano nasm ncurses newlib patch readline seaos-util sed termcap which
I also wrote several utilities for some OS dependant things: login, losetup, lscpu, modprobe, lspci, mount, passwd, ps, shutdown, umount, and useradd
This operating system is self-hosting! You can compile the sources for the kernel and apps just as you would on linux and install them within the system and it will work! You can even try editing the sources with nano! (hint: try editing /usr/src/sea/kernel/init/main.c and changing the kprintf line around line 169 for proof that it worked).
Some fun things to try:
* cd to /usr/src/seaos-util and run `./configure --prefix=/; make; make install'. This will let you
compile the applications for seaos and install them.
* cd to /usr/src/sea and run `./configure; make; make install'. This lets you recompile and install the
kernel.
* use nano to edit files!
* create users with `useradd joe' (or whatever login you want).
* change your password with `passwd'!
* run sh explode (if you're curious as to what this does, look at /bin/explode [its a shell script]).
* play around with the included software!
* read the man pages of various programs!
`man cat', for example
There is a list of known bugs in the release notes. If you find more, please contact me about it.
The source can be obtained here: http://seaos-os.googlecode.com/files/se ... rc.tar.bz2
The images can be obtained here: http://seaos-os.googlecode.com/files/se ... ld.tar.bz2
Project pages:
* kernel: http://code.google.com/p/seaos-kernel/
* apps : http://code.google.com/p/seaos-apps/
* system: http://code.google.com/p/seaos-os/
Thanks to everyone here at OSdev! Enjoy testing it!
-JL