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.
This sounds like a cool little project you’ve got going here. Best of luck with it.
Or is this a mostly cleanroom implementation?
Just curious, cos you’ve accomplished a lot.
Taras
From the article:
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 objectives stated above sound nearly identical to those of the MINIX operating system: http://www.cs.vu.nl/~ast/minix.html
True, but Minix is very outdated. I am glad to see there an upcoming educational system which meets the current implementation attemps of kernel developing.
It’s unfortunate that the keys will be hardcoded to Spanish. Looks like a great project though.
We used BSD for this type of thing when I went through CS (1998 or so). Maybe I could do it now, but I was completely lost trying to make changes in the system.
This is a from-scratch implementation, althrough to do it, I needed to study source code of more than 50 OS projects on the inet.
Books like “The Design of the UNIX Operating System” of Maurice J Bach, help a lot.
And of course, a lot of patience and try-error loops 🙂
(Ensimag, Grenoble, France), and it’s very formative.
What would be interesting is a document relating the books who helped you, the specifications (such as the multiboot standard, …), the tools you use (for example,
we used an OS loader called OSMon from which we were able to launch and relaunch our buggy OS, and to debug it through the serial line with gdb installed on an other computer)
My 2 cents about the educational aspect.
Good luck with it, give GNU/Linux a run for their money
I think this is a great idea. i’d love to get into kernel programming, but all the kernels I’ve looked at (Linux, FreeBSD, Darwin) are poorly commented (from a beginners standpoint). If this is as well commented as he says it’s going to be, then that will be great.
How does the design of Unix compare to Windows XP? Is Unix based on NT technology, or another programming methadology?
UNIX is older, if you websearch for UNIX history you’ll find its very long and confused, the first versions were written in 1969 by technicians at a telephony company in the USA
NT was written from scratch in the 80s by a design team some of whom had previously worked on the VMS operating system, drawing cues from that OS, from O/S2 which NT was originally developed as a version of and partly from UNIX
Both have acquired some tricks from each other but the codebases are in the main separate ( NT may include some licenced and some opensource UNIX code but the opposite probably does not apply. )
“UNIX is older, if you websearch for UNIX history you’ll find its very long and confused, the first versions were written in 1969 by technicians at a telephony company in the USA”
However, we’re talking about POSIX and UNIX standards. The history of the UNIX OS is, except for standards and thus common things, seperate from ie. this OS or GNU/Linux.
“NT was written from scratch in the 80s by a design team some of whom had previously worked on the VMS operating system””
Liar. VMS was written from scratch in the 70s or 80s. That wasn’t NT. Microsoft was still small during that time, there was no NT. There was no NT kernel. Only around ’94 (90s) after MS got money from MSDOS, the VMS team made large parts of the NT kernel (of which designs currently little is over anymore. Plus it’s stability is nothing next to OpenVMS). During that time, MS made the Windows GUI.
“from O/S2 which NT was originally developed as a version of and partly from UNIX”
OS/2 has nothing to do with Windows NT.
“Both have acquired some tricks from each other but the codebases are in the main separate ( NT may include some licenced and some opensource UNIX code but the opposite probably does not apply. )”
BSD is written FROM SCRATCH. GNU/Linux is written FROM SCRATCH. In fact, any current ”Unix-like” (which is written according to POSIX and UNIX _standards_) are written from scratch.
NT has some BSDL code.
> Liar
That seems a little harsh. I just think he was misimformed.
> OS/2 has nothing to do with Windows NT
I’m no expert on this but I’m pretty sure NTFS came from OS/2’s file system HPFS.
Encantat de veure programadors catalans de kernels amb talent com tu , Felicitats Jordi!.
Nice to see catalan kernel talented programers like you , keep up great work!
🙂
> I’m no expert on this but I’m pretty sure NTFS came from > OS/2’s file system HPFS.
Yea I have to agree with that. OS/2 was created together by MS and IBM as far as I am aware and then MS took their own path. Windows NT 4.0 has OS/2 code in it.
When MS released Windows 95, around the 1995 period, IBM released a version of OS/2 in 1996. OS/2 can run Windows 3.1 applications because of the similar source as the Windows 3.1 OS. However, MS with Windows 95 and NT took their own path and OS/2 did not include native support for Windows 95 software because it was too expensive for them when they tried to get a license from MS. IBM thought OS/2 was something really big at that time and it was however things changed.
The things I said above is as far as my knowledge goes. I could be wrong or some of the information may not be 100%. If anyone knows better, correct me if I am wrong
That telephony company is AT&T
I have heard about the VMS theory too, well now I am totally confused.
The VMS theory is more than that, both systems are remarkably similar. According to an article from Mr. Mark Russinovich:
“NT’s processes are virtually the same as VMS’s processes (Table 2, page 118, shows a comparison of VMS and NT processes). In NT, as in VMS, the process scheduler implements 32 priority levels. The process with the highest priority is always running, and processes with equal priority are scheduled in a round-robin pattern. The system considers the 16 high-priority levels realtime or fixed priorities, because the process scheduler doesn’t manipulate priority in processes the system assigns to that range. The 16 low-priority levels (except 0, which the system reserves for the idle thread that executes when nothing else can) are dynamic because the scheduler, often with the input of device drivers, bumps priorities up in reaction to various conditions, such as when the process receives input from a device. This bumping procedure is called boosting. A defining aspect of the NT and VMS schedulers is that they never lower a process’ priority below the priority level the application programmed. To handle CPU hogging, in which a process burns CPU cycles without regard to other processes in the system, the scheduler boosts the priority of starved processes that haven’t executed for a defined period. Both VMS 5.0 and NT 3.1 schedulers support symmetric multiprocessing (SMP), which let them execute processes simultaneously on different CPUs in order to increase applications’ performance.
A major difference between NT process management and VMS process management is that NT processes contain one or more threads of execution, and NT’s scheduler gives CPU time to threads, not processes. Digital didn’t introduce kernel threads into VMS until version 7.0 in 1995. This addition is one of several enhancements Digital has made to VMS since NT’s release that appear to be in response to NT capabilities. In turn, Microsoft added lightweight user-mode threads support to NT 4.0 in 1996, which it copied from the VMS implementation of threads.
…..
NT’s I/O Manager is closely based on VMS’s I/O Manager. Both OS’s I/O Manager support a layered-driver model throughout the device driver stacks for different device types and implements asynchronous packet-based I/O commands, and its device drivers dynamically load and unload. Stackable and loadable drivers make NT and VMS very extensible. Either OS can divide functionality among several device drivers, with each driver implementing a different abstraction level. For example, the system can insert a fault-tolerant disk driver between a file system driver and a disk driver. This configuration lets the fault-tolerant disk driver receive a request the system sends to one logical drive (e.g., the C drive), then send the request to multiple physical drives to implement mirroring or striping. Asynchronous I/O enables applications and the kernel subsystems to initiate device requests and work while the requests are in progress, rather than wait idly for the requests to complete. NT’s device driver architecture and interrupt-request priority scheme are based on VMS. Descriptions of these aspects of the I/O Manager are applicable to both OSs with little variation.”
These similarities forced M$ to pay up $100Million to DEC in the mid-90s….
Thank you for that info whaaa, greatly appreciated.
Microsoft and IBM started work on their new combined project at around 1987, and called it OS/2. IBM was planning on tying it in with their new Personal System/2s, ergo the name of Operating System/2.
It originally ran on 16-bit 286s with memory protection. This cramped its style somewhat and MS and IBM came to blows over porting it to the 386. Microsoft spun off its copy of the OS/2 source code and joined it with the VMS-clone thing that Cutler always wanted.
Meanwhile, IBM was held prisoner to OS/2 by the OS/2 Team, a grass-roots group of OS/2 supporters and (occasionally) fanatics.
OS/2 2.0 G.A. was released about 1992 – that’s when I got my copy of it. My copy of NT 3.1 came out around 1993, though I bought it earlier this very year.
OS/2 is still a more polished product – it wasn’t until NT 4.0 that NT began to get anywhere near the end-user sophistication that OS/2 2.0 had.
>>The objectives stated above sound nearly identical to those of the MINIX operating system: http://www.cs.vu.nl/~ast/minix.html
Wasn’t linux in the beginning a small project for a MINIX replica(correct me if i’m wrong). Wonder what’s this project stands in 10 years into the future. After all, AFAIK linux was also just a small education project…
..and I have already forgotten what the hell was the article about. People, would it hurt so much to stick a little bit to the subject of the article?
Where is the well commented kernel source? The documentation link doesnt work, and the only downloads I could find were a boot disk image and project poster..
Wheres the source you ask? Well if you read the breif article you would realize that the source won’t be released under the GPL *UNTIL* version 1.0.0
The reasoning is so that 1 person will develop it, so it will have consistancy in programming style.
–Skwirl++
Moltes gràcies. El que menys m’esperava és ser felicitat per un català. I és que som collonuts. 😉
Many thanks. It was a surprise to be congratulated by a catalan. Indeed we are a very cool people. 😉
To all of people that has interested in the GNU/Fiwix:
(My english is poor, so … patience and …ssshhh. 😉
THANK YOU VERY MUCH, to all people that in some way, has explained his positions about this project.
Although maybe you dont know, your thoughts has been very appreciated.
Thank you again.