en:docs:boot:freeldr:history

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
en:docs:boot:freeldr:history [2013/03/11 15:53] valeriusen:docs:boot:freeldr:history [2019/01/13 20:15] (current) valerius
Line 1: Line 1:
-== Project history ==+===== Project history =====
  
 In 1999, David Zimmerli wrote an [[http://www.edm2.com/0705/freeldr/freeldr.html|article]] in [[http://www.edm2.com/|EDM/2]] in which he inaugurated the project aiming to replace OS2LDR, [[wp>OS/2]] operation system loader. He wrote a stub program which was loaded by the boot partition [[en:docs:ifs|MicroFSD]] and tested the use of its routines. The project was not finished until [[en:start|osFree]] project in 2003 has taken its sourcecode as a starting point of [[en:start|osFree]] kernel loader implementation. We left the name of the project as is because it resembled the name of [[en:start|osFree]] project, is free and [[wp>FOSS|opensource]], and used Zimmerli's program as a base. It was rewritten, so none of original code remained in it, but we decided leave the name as is. It's primary goal is to load [[wp>L4_microkernel_family|L4 microkernel]], but we decided to make it as general purpose as [[http://www.gnu.org/software/grub/|GRUB]], and to fix some [[http://www.gnu.org/software/grub/|GRUB]]'s misfeatures and continue its general concepts, like [[http://www.gnu.org/software/grub/grub-2.en.html#multiboot|multiboot]] compliance and OS-neutrality [[en:docs:boot:freeldr:history]]. We make our loader more modular and extensible. And, we developing support for kernels, other than [[http://www.gnu.org/software/grub/grub-2.en.html#multiboot|multiboot]] ones. Loading of [[wp>Linux|Linux]]-like kernels and support for [[wp>Chainloading|chainloading]] unsupported kernels were moved to separate loader modules too. They were implemented as a separate [[http://www.gnu.org/software/grub/grub-2.en.html#multiboot|multiboot]] kernels. The [[http://www.gnu.org/software/grub/grub-2.en.html#multiboot|multiboot]] kernel for loading [[wp>OS/2|OS/2]] is being implemented now. [[wp>Windows_NT|WinNT]] can be loaded by [[wp>Chainloading|chainloading]] the NTLDR. We decided to leave only [[http://www.gnu.org/software/grub/grub-2.en.html#multiboot|multiboot]] support in base loader. Now [[wp>L4_microkernel_family|L4]], [[http://freedos-32.sourceforge.net/|FreeDOS32]], [[http://www.reactos.org/|ReactOS]] and other [[http://www.gnu.org/software/grub/grub-2.en.html#multiboot|multiboot]] compliant kernels can be loaded too. In 1999, David Zimmerli wrote an [[http://www.edm2.com/0705/freeldr/freeldr.html|article]] in [[http://www.edm2.com/|EDM/2]] in which he inaugurated the project aiming to replace OS2LDR, [[wp>OS/2]] operation system loader. He wrote a stub program which was loaded by the boot partition [[en:docs:ifs|MicroFSD]] and tested the use of its routines. The project was not finished until [[en:start|osFree]] project in 2003 has taken its sourcecode as a starting point of [[en:start|osFree]] kernel loader implementation. We left the name of the project as is because it resembled the name of [[en:start|osFree]] project, is free and [[wp>FOSS|opensource]], and used Zimmerli's program as a base. It was rewritten, so none of original code remained in it, but we decided leave the name as is. It's primary goal is to load [[wp>L4_microkernel_family|L4 microkernel]], but we decided to make it as general purpose as [[http://www.gnu.org/software/grub/|GRUB]], and to fix some [[http://www.gnu.org/software/grub/|GRUB]]'s misfeatures and continue its general concepts, like [[http://www.gnu.org/software/grub/grub-2.en.html#multiboot|multiboot]] compliance and OS-neutrality [[en:docs:boot:freeldr:history]]. We make our loader more modular and extensible. And, we developing support for kernels, other than [[http://www.gnu.org/software/grub/grub-2.en.html#multiboot|multiboot]] ones. Loading of [[wp>Linux|Linux]]-like kernels and support for [[wp>Chainloading|chainloading]] unsupported kernels were moved to separate loader modules too. They were implemented as a separate [[http://www.gnu.org/software/grub/grub-2.en.html#multiboot|multiboot]] kernels. The [[http://www.gnu.org/software/grub/grub-2.en.html#multiboot|multiboot]] kernel for loading [[wp>OS/2|OS/2]] is being implemented now. [[wp>Windows_NT|WinNT]] can be loaded by [[wp>Chainloading|chainloading]] the NTLDR. We decided to leave only [[http://www.gnu.org/software/grub/grub-2.en.html#multiboot|multiboot]] support in base loader. Now [[wp>L4_microkernel_family|L4]], [[http://freedos-32.sourceforge.net/|FreeDOS32]], [[http://www.reactos.org/|ReactOS]] and other [[http://www.gnu.org/software/grub/grub-2.en.html#multiboot|multiboot]] compliant kernels can be loaded too.
Line 11: Line 11:
 But then it was realized, that the 16-bit internals make more difficult implementing the loader extensions and access the whole machine physical memory. The 64k limitation makes it hard to use more than 64k in loader executable. We were planned to use MSDOS style executables first. As our [[wp>bootloader|bootloader]] was written in C with small amount of assembly code, the 64k could be reached soon. Then we decided to switch to FLAT 32-bits memory model and protected mode, and take [[http://www.gnu.org/software/grub/|GRUB]] scheme as a sample. But then it was realized, that the 16-bit internals make more difficult implementing the loader extensions and access the whole machine physical memory. The 64k limitation makes it hard to use more than 64k in loader executable. We were planned to use MSDOS style executables first. As our [[wp>bootloader|bootloader]] was written in C with small amount of assembly code, the 64k could be reached soon. Then we decided to switch to FLAT 32-bits memory model and protected mode, and take [[http://www.gnu.org/software/grub/|GRUB]] scheme as a sample.
  
-Then, in the beginning of 2007, the new 32-bit protected mode loader was started, almost from scratch. We were still reusing [[http://www.gnu.org/software/grub/|GRUB]] routines for base [[http://www.gnu.org/software/grub/grub-2.en.html#multiboot|multiboot]] support. The [[http://www.gnu.org/software/grub/|GRUB]] filesystem support code was recomposed to be loaded as separate loader plug-in modules. ([[http://www.gnu.org/software/grub/|GRUB]] has all FS support code compiled-in. We decided to move it to a separate "blackboxes"). Also, we proposed to introduce the new kinds of blackboxes to support different transparent decompression algorithms (http://www.gnu.org/software/grub|GRUB]] had ungzipping on-the fly support, which was compiled-in too), terminal access, executable formats support etc.+Then, in the beginning of 2007, the new 32-bit protected mode loader was started, almost from scratch. We were still reusing [[http://www.gnu.org/software/grub/|GRUB]] routines for base [[http://www.gnu.org/software/grub/grub-2.en.html#multiboot|multiboot]] support. The [[http://www.gnu.org/software/grub/|GRUB]] filesystem support code was recomposed to be loaded as separate loader plug-in modules. ([[http://www.gnu.org/software/grub/|GRUB]] has all FS support code compiled-in. We decided to move it to a separate "blackboxes"). Also, we proposed to introduce the new kinds of blackboxes to support different transparent decompression algorithms ([[http://www.gnu.org/software/grub|GRUB]] had ungzipping on-the fly support, which was compiled-in too), terminal access, executable formats support etc.
  
 [[en:docs:boot:freeldr:history]] [[en:docs:boot:freeldr:history]]