The GNU/Fiwix Operating System

The GNU/Fiwix project began during the summer of 1997. In fact, even before than I had running around my head the idea to design and implement a new UNIX-like operating system. But it was not until 1997 that it started to become a reality.The Project


The objective of the GNU/Fiwix project is to design and to implement a UNIX based architecture kernel exclusively for educational purposes, while keeping the kernel as simple as possible for the students’ benefit. The advantage of having a complete UNIX-like operating system, with detailed documentation of each line of source code, with good availability of its development team, could be a great benefit for schools, as well as for the computer science faculty, at least here in my country.


Do not think of GNU/Fiwix as a new UNIX flavor with its own system utilities, libraries and compilers, etc. Think about GNU/Fiwix as a new Linux-like kernel that follows the GNU/Linux philosophy and takes the same advantage of the existing GNU applications.


Fiwix is probably the first kernel highly compatible (within its current limitations, of course) with the basics of the Linux kernel. That means any ELF-i386 binary compiled in a GNU/Linux system, can be executed natively in a GNU/Fiwix system (without any type of emulation).


I think the Linux kernel is currently too big for a student of computer science to be able to understand its internal structure and to study how it works, and tomorrow it will be even bigger than it is today. In contrast, the Fiwix kernel, due to its minimal structure, can be the entry-level kernel and can therefore be more suitable for education. For obvious reasons, this project is only focused on students of computer science and new OS enthusiasts who want to know more about the internal operation of a Unix-like operating system.


License


All the project and its source code will be officially presented under the GPL license when the kernel version reaches 1.0.0. This allows me to assure several things. First, the certainty that the source code of all the system will be available for everybody and simultaneously will be protected under the GPL license. Second, it will allow me to assure that all the students will have all the final source code at the same time. And third, if the educational kernel is coded by only one person, it will be more useful and understandable for students.


Fiwix will officially see the light when I have completed all the following features:



* GRUB Multiboot Specification compliant.
* Fully 32bit protected mode (Intel 386 processor or higher).
* Real multitask (kernel tasks at level 0).
* Protected task environment (independent memory address per process).
o Interrupt and exception management.
o Semaphores.
o Signals.
o Virtual memory management up to 4GB.
o Demand paging.
– Swapping.
o Linux system calls compatibility.
o Linux ELF-386 executable format support (statically and dynamically linked).
o Round-Robin based scheduler algorythm.
+ Virtual FileSystem
+ ext2.
– proc.
– ISO8859.
o Keyboard driver with spanish/catalan keymaps (hard coded).
– Serial and parallel device drivers.
+ Floppy disk device driver and DMA management.
+ IDE/ATA hard disk device driver.
– ATAPI cdrom device driver.

Legend:
* = completed.
o = almost completed.
+ = currently functional.
– = not started yet.



As you can see, some of the basic components of modern kernels, like the networking subsystem, windowing system (X11) and device drivers like ethernet cards, mouse, etc), will not be included in the first official release.


They will be developed and implemented for later releases.


Test


The current 0.1.0 version of the kernel is highly functional and very user interactive, though you should not use it in a mission critical environment. It boots using GRUB Multiboot loader (see Screenshot 1)




and it uses the same version of /sbin/init, /sbin/mingetty and /bin/login than appeared in the RedHat 4.2 to boot up the system (see Screenshot 2).




At the login, you can enter “root” as user and “root” again as password. Currently there is a floppy image with an EXT2 live-filesystem, where you can find the wonderful Busybox utility, which lets you play with some basic UNIX/Linux commands (see Screenshot 3).




I’m preparing a more real EXT2 live-filesystem image for hard disk drives, to be able to have a more beautiful experience testing with GNU/Fiwix. It will be available soon at ftp://ftp.fiwix.org/pub/Fiwix


Writing into filesystem is still not implemented in the kernel, so there is no danger to damage any possible partitions of your hard disk. This is why you can see error messages during GNU/Fiwix boot up.


You can grab this current version 0.1.0, downloading the GNU/Fiwix floppy image from http://www.fiwix.org/english/download.html”.


Happy “poor” hacking!


About the Author
My name is Jordi Sanfeliu and I am 36 years old. I live in a little town near Barcelona. I’m currently developing a new UNIX/Linux-like kernel exclusively for educational use and, why not, as a challenge for myself. Like many of us, I use my spare time (night, mostly) to develop the kernel and try to learn how UNIX/Linux kernels work internally. I don’t have any degree in computer science or engineering. I am not a very experienced C programmer nor do I have a masters degree in any type of computer science. I simply work by intuition and probably many parts of the system needs the adjustment of an expert hand. However, what I do have is real-world experience. I have been a UNIX systems administrator for more than 15 years and my dedication to interesting projects is always 100%. I have obtained all the documentation from the Internet and have studied many books on the subject.

27 Comments

  1. 2003-10-16 6:37 pm
  2. 2003-10-16 6:50 pm
  3. 2003-10-16 7:29 pm
  4. 2003-10-16 7:54 pm
  5. 2003-10-16 8:02 pm
  6. 2003-10-16 10:01 pm
  7. 2003-10-16 10:09 pm
  8. 2003-10-16 10:31 pm
  9. 2003-10-16 11:11 pm
  10. 2003-10-17 12:30 am
  11. 2003-10-17 12:39 am
  12. 2003-10-17 2:06 am
  13. 2003-10-17 2:39 am
  14. 2003-10-17 2:51 am
  15. 2003-10-17 3:18 am
  16. 2003-10-17 3:37 am
  17. 2003-10-17 3:39 am
  18. 2003-10-17 6:25 am
  19. 2003-10-17 6:32 am
  20. 2003-10-17 7:43 am
  21. 2003-10-17 8:11 am
  22. 2003-10-17 12:48 pm
  23. 2003-10-17 2:51 pm
  24. 2003-10-17 4:21 pm
  25. 2003-10-17 5:55 pm
  26. 2003-10-17 10:22 pm
  27. 2003-10-17 10:37 pm