omarrx024 wrote:
Rusky wrote:
But not to derail this! Nice work getting everything working together at this scale- a few hardware devices and simple userspace working. What are your goals moving forward? Do you have a target audience? Do you plan to support long mode? What pieces do you want to move into userspace, with what sort of syscall API? What design decisions can we already see that we might not have noticed?
Thanks! First, I plan to make this OS self-hosting with an installer (i.e. it can boot from a generic "installer CD" and install itself to a hard disk). I also want to add more hardware support: AHCI, HPET and USB are in my list, although USB is rather far. I really do this just for learning and for passing time; I don't expect an audience to ever use it. I do plan to support long mode, but not any time soon. 3rd party drivers will run in userspace; native graphics drivers, sound drivers and network drivers will all run in ring 3 and not be built-in to the kernel.
A smaller OS would be much more usable if it could be simply installed into a subfolder of the root directory (like "OS_Name_Folder") inside an already-existing partition (FAT, NTFS, Ext...) and if all installs of that OS could be searched and selected from a bootloader in all existing partitions from external media (avoiding installing or altering the most used booting configuration of the machine).
It all would be much easier if the bootloader was on a removable media like USB, floppy or CD/DVD, and if it just passed control to the OS on an existing formatted internal hard disk.
In this way the OS could be installed like any other regular application and then booted with, say, a configured USB stick to boot into it. Then nothing would need to be altered from the existing user OS and it would avoid keeping an exclusive hold on the machine against the rest of OSes and bootable system executive code applications/tests/demos.
It could well be a matter of creating a simple bootloader program based on FreeDOS installed into an external device or into the hard drive if we really need to make it our native OS.