SeaOS 0.2 Beta 1

This forums is for OS project announcements including project openings, new releases, update notices, test requests, and job openings (both paying and volunteer).
Post Reply
User avatar
piranha
Member
Member
Posts: 1391
Joined: Thu Dec 21, 2006 7:42 pm
Location: Unknown. Momentum is pretty certain, however.
Contact:

SeaOS 0.2 Beta 1

Post by piranha »

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
SeaOS: Adding VT-x, networking, and ARM support
dbittman on IRC, @danielbittman on twitter
https://dbittman.github.io
jrepan
Posts: 11
Joined: Sat Feb 27, 2010 8:05 am
Location: Estonia

Re: SeaOS 0.2 Beta 1

Post by jrepan »

Doesn't work for me, using hd.img from seaos-0.2-b1-build.tar.bz2 with QEMU 1.1.1(qemu-system-i386 -hda hd.img).

Code: Select all

          ~ SeaOS Version 0.2-b1 Booting Up ~                                             
          [mm]: 127 MB available memory (page size=0x1000, kmalloc=slab: ok)              
          [vfs]: Initrd loaded (15 files, 3402 KB: ok)                                    
          [kernel]: Kernel is setup (19:52:46, /sys/kernel, kv=44, ts=5908 bytes: ok)     
          [kernel]: Setting up environment...done (i/o/e=301 [tty1]: ok)                  
          Something stirs and something tries, and starts to climb towards the light.     
          Loading modules...                                                              
          /dev/hda1: Note: if several inode or block bitmap blocks or part                
          of the inode table require relocation, you may wish to try                      
          running e2fsck with the '-b 8193' option first.  The problem                    
          may lie only with the primary block group descriptors, and                      
          the backup block group descriptors may be OK.                                   
                                                                                          
          /dev/hda1: Block bitmap for group 16 is not in group.  (block 0)                
                                                                                          
                                                                                          
          /dev/hda1: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.                         
                  (i.e., without -a or -p options)                                        
          Mounting filesystems: / mount: /dev/hda1 -> /mnt: Not a directory               
          dev mount: * -> /mnt/dev: No such file or directory                             
          proc mount: * -> /mnt/proc: No such file or directory                           
          tmp mount: * -> /mnt/tmp: No such file or directory                             
          done                                                                            
          chroot: failed to run command '/bin/sh': No such file or directory 
User avatar
gravaera
Member
Member
Posts: 737
Joined: Tue Jun 02, 2009 4:35 pm
Location: Supporting the cause: Use \tabs to indent code. NOT \x20 spaces.

Re: SeaOS 0.2 Beta 1

Post by gravaera »

Yo:

No computer of my own right now, but dropping by to say, congrats on a new beta release, and to wish you continued success :)

--Peace out,
gravaera
17:56 < sortie> Paging is called paging because you need to draw it on pages in your notebook to succeed at it.
User avatar
piranha
Member
Member
Posts: 1391
Joined: Thu Dec 21, 2006 7:42 pm
Location: Unknown. Momentum is pretty certain, however.
Contact:

Re: SeaOS 0.2 Beta 1

Post by piranha »

Doesn't work for me, using hd.img from seaos-0.2-b1-build.tar.bz2 with QEMU 1.1.1(qemu-system-i386 -hda hd.img).
Hmm, yes, I get the same. I'd been using Qemu 1.0 and bochs to test it. I'll look into the error.

-JL
SeaOS: Adding VT-x, networking, and ARM support
dbittman on IRC, @danielbittman on twitter
https://dbittman.github.io
Post Reply