Linux 0.01 remake

Linux 0.01

0.01 is the first version of linux (also called freax ;) ), released on september 1991 by linus.

You can download the original version here

You can't do too much with this os, exept learning how os work.

So don't try to run X application on it :)

If you want more information then read this



Linux-0.01 is realy too old, so you can't build it in your modern computer .

If you really want, then you will have to :

- install an old version of minix with Bruce Evan's patch. (you should find more info thank' to google). (you can use an emulator)

- Install gcc-1.40 and install it on your patched minix

- build your old linux and enjoy ! (you will have to update include/config.h, inclulde/linux/hdreg.h, init/main.c and kernel/hd.c )

- you shoul be able to install an old version of bash.

I never try to build the original version of this linux. I started linux-0.01-remake in order to build it directly on my computer using debian etch instead of minix 1.x



Linux 0.01 - remake

The main goal of this project is :

- to build linux 0.1 from modern linux (I use debian etch for bootstrap)

- to use gcc-4.x

- to run binary in userland. ( I use elf format because I had some problem with a.out with gcc-4.x

- more inportant : learning lot of things about OS dev.

Don't forget that linux 0.01 is really no too difficult to understand, and code source is not too big :)



For now the kernel can be executed.

Linus used gcc-1.40 which is too old, and I have done sevral change in order to compile it on newer gcc.



Note :

- I have not yet tested it on real hardware ! I'm runing qemu emulator for testing.

- They may be some bug, if you find one, plese let me know

- I have probably done some thing the wrong way : I'm not a kernel hacker.

hdd

linux-0.01 use old CHS : head value is coded in 6 bit so you can't have more than 63 head (1023 for cylinder, and 63 for sector) If you HDD has too much head, sector or cylinder, then use fdisk to adjust them.

userland program

Ok it"s cool to run the kernel alone, but it's better to run on it some "userland" program :)



more seriously, you will have to build the program :

- in elf binary format

- don't forget to do a static link, because linux don't use shared library ;)

- don't forget to use option -nostdlib and -nostdinc. We can't use the std lib of the host !

- you can use function which are in lib folder, and in include folder.

- you can use dietlibc ( and maybe uclibc )





screenshot

"basic command"trying to build linux 0.01 ...vimvim in action