Hello,
when creating a long mode, AMD64 kernel there is a lot of legacy stuff to initialize and a lot of work to do, until you can start with the 'real' parts of your kernel. I wanted a clean environment without all this lengthy setup work (and even real mode code for AP startup!), so I first looked at Pure64 from ReturnInfinity, but - despite that they are doing a great job - I didn't like to be restricted to FAT16, so I decided to write Hydrogen and combine the hardware and file system support of GRUB2 with the idea of a loader that gives you a clean environment you can work with.
Hydrogen loads ELF64 kernels, boots all APs into long mode, configures the system's I/O APICs (with configurable vectors and masks for IRQs) and brings the physical and virtual memory to a defined state. See the README.mdown file in my github repo [1], as well as the example kernel, for more detailed info.
I hope you guys like it,
Farok
[1] https://github.com/farok/Hydrogen
Hydrogen 0.1
Hydrogen 0.1
Last edited by Qeroq on Mon Nov 14, 2011 2:22 pm, edited 1 time in total.
https://github.com/qero/Hydrogen (Loader for AMD64 kernels running on top of GRUB2)
Re: Hydrogen 0.1
Hello, very nice work but you may want to consider another name than hydrogen to avoid confusion, as f2 is using the name in his OS and assembler.
http://f2.codercat.org/
http://f2.codercat.org/
My hero, is Mel.
Re: Hydrogen 0.1
Yes, keep up the good work. Carbon is nice too.
If a trainstation is where trains stop, what is a workstation ?
Re: Hydrogen 0.1
nice! Name suggestion: helium, berillium. But I found a typo - Its return(infinity) not PureInfinity. Im using your bootloader (finally something open source and not grubby).
Get back to work!
Github
Github
Re: Hydrogen 0.1
Congratulations on the release! Multiple file system support was a large request for Pure64 but not really in the roadmap. I see that you have the IO-APIC working as well. I will be taking a look at your code to see how you did it.
Best regards,
-Ian
Best regards,
-Ian
BareMetal OS - http://www.returninfinity.com/
Mono-tasking 64-bit OS for x86-64 based computers, written entirely in Assembly
Mono-tasking 64-bit OS for x86-64 based computers, written entirely in Assembly
Re: Hydrogen 0.1
Is it possible to have 32-bit kernel support too or is it just for 64-bit kernels? Will there be multi-architectual support?
Fudge - Simplicity, clarity and speed.
http://github.com/Jezze/fudge/
http://github.com/Jezze/fudge/
Re: Hydrogen 0.1
I'm trying to keep it as simple and small as possible, so Hydrogen will only support 64 bit kernels. It would be possible though to implement a 32 bit loader that provides the same interface to the loaded kernel. That would be the better approach anyway, as almost all parts of Hydrogen are 64 bit specific and written in 64 bit assembly.
https://github.com/qero/Hydrogen (Loader for AMD64 kernels running on top of GRUB2)
Re: Hydrogen 0.1
Have you considered putting up a drive image that contains everything needed to boot up a virtual machine?
Thanks again for the I/O APIC information.. I have now enabled it in Pure64.
-Ian
Thanks again for the I/O APIC information.. I have now enabled it in Pure64.
-Ian
BareMetal OS - http://www.returninfinity.com/
Mono-tasking 64-bit OS for x86-64 based computers, written entirely in Assembly
Mono-tasking 64-bit OS for x86-64 based computers, written entirely in Assembly
Re: Hydrogen 0.1
While putting up an ISO9660 image would be rather pointless, I guess, as the kernel needs to be written to image anyway, a hard-drive image makes more sense though, but writing the kernel to that image wouldn't be that less work than simply building it by one's own. Additionally a network boot iso would suffer from the problem that the TFTP server's IP and port would be required to be hardcoded afaik.
https://github.com/qero/Hydrogen (Loader for AMD64 kernels running on top of GRUB2)