openfunix 0.1 released
Posted: Tue Nov 25, 2014 3:47 am
hi,buddies!
i am glad to announce that openfunix os 0.1.0 is available now.
What's OpenFunix?
openfunix is a new kernel written by shaun from scratch.It is a small, lightweight, and fast kernel designed for x86 arcs.
What's new in this release?
the main feature for this version up is Supporting for elf32 shared library loading.
as we all know, the elf shared library loading work in linux kernel is taken by interpreter(ld-linux.so.6) which is running in userspace. kernel load the interpreter first into memory and transport control to interpreter when kernel find out that an app is dynamic linked, the interpreter then resolve dependencies and load libraries that app needed into memory, do relocation stuff, after all of these things done, interpreter jumps to app's entry point.
that's sounds good,reasonable, but for me, why we wouldn't put that job in kernel space? what's the bad things if we put it in kernel space? Actually i have taken a try, and i did it.
the shared library loading and relocating things all are located in kernel space in openfunix. feel free to try it out. anybody who has different opinions about it, please let me know.
HOW TOS
1.download floppy img and disk file.
http://forum.openfunix.com/download/file.php?id=6
2.extract the zip file, you will get two files:floppy and hd.disk.tar.gz, unpack the hd.disk.tar.gz, you will get the disk file(hd.disk, 1G size, formatted with ext2 filesystem).
3.run qemu with command below in linux box(make sure the floppy file and hd.disk file are in the same directory):
qemu -fda floppy.img -boot a -monitor stdio -drive id=disk,file=hd.disk,if=none -device ahci,id=ahci -device ide-drive,drive=disk,bus=ahci.0
4,if everything is ok, you will get this pic: when kernel starts over, it will ask you to input password, type this: op3nfunix
now you can run any app you like, the app "hello" in /root directory is compiled with libc.so(actually it's newlib ).
when you run hello with command:exec /root/hello, the kernel loads hello binary file first and then libc.so(in /lib/), handle relocation works for libc.so.
tips:you can close kernel logs by using command: loglevel 4
enjoy.
i am glad to announce that openfunix os 0.1.0 is available now.
What's OpenFunix?
openfunix is a new kernel written by shaun from scratch.It is a small, lightweight, and fast kernel designed for x86 arcs.
What's new in this release?
the main feature for this version up is Supporting for elf32 shared library loading.
as we all know, the elf shared library loading work in linux kernel is taken by interpreter(ld-linux.so.6) which is running in userspace. kernel load the interpreter first into memory and transport control to interpreter when kernel find out that an app is dynamic linked, the interpreter then resolve dependencies and load libraries that app needed into memory, do relocation stuff, after all of these things done, interpreter jumps to app's entry point.
that's sounds good,reasonable, but for me, why we wouldn't put that job in kernel space? what's the bad things if we put it in kernel space? Actually i have taken a try, and i did it.
the shared library loading and relocating things all are located in kernel space in openfunix. feel free to try it out. anybody who has different opinions about it, please let me know.
HOW TOS
1.download floppy img and disk file.
http://forum.openfunix.com/download/file.php?id=6
2.extract the zip file, you will get two files:floppy and hd.disk.tar.gz, unpack the hd.disk.tar.gz, you will get the disk file(hd.disk, 1G size, formatted with ext2 filesystem).
3.run qemu with command below in linux box(make sure the floppy file and hd.disk file are in the same directory):
qemu -fda floppy.img -boot a -monitor stdio -drive id=disk,file=hd.disk,if=none -device ahci,id=ahci -device ide-drive,drive=disk,bus=ahci.0
4,if everything is ok, you will get this pic: when kernel starts over, it will ask you to input password, type this: op3nfunix
now you can run any app you like, the app "hello" in /root directory is compiled with libc.so(actually it's newlib ).
when you run hello with command:exec /root/hello, the kernel loads hello binary file first and then libc.so(in /lib/), handle relocation works for libc.so.
tips:you can close kernel logs by using command: loglevel 4
enjoy.