Building a bootloader in under 15 minutes
Posted: Fri Sep 03, 2021 5:57 pm
Hi all
I'd like to share with you something I've kept stored for a while which some of you may find interesting/funny.
I've been doing low level development (especially operating systems) for a long time now and I teach computer architecture (amongst other subjects) in a university. A while ago I gave my students an assignment consisting of them developing their own boot loader and a simple payload just printing a message (wasn't their only assignment, actually).
I gave them about half of the semester to do it and in the end they challenged me to see how fast I could complete the same assignment I gave them (though they'd been warned I'd never give them any assignment I hadn't completed myself before). I accepted the challenge and even let them record me doing it.
Disclaimer: It may not be the prettiest and most correct code and there's probably some nasty bugs there (some stuff probably could have been written better - for instance, I totally forgot the far jump to 0:0x7C00/0x07C0:0, amongst other stuff) but have in mind that I was doing it as a challenge and in real time to punk them. In the end I completed it in under 15 minutes which came out as funny demo. (Is there a Guinness record for fastest OS development?)
As it was done just as a joke, it was developed just to boot in classic BIOS mode, under MBR, not even entering protected mode neither caring for partitions. Test setup was a VirtualBox virtual machine with two virtual hard drives, one with the host OS, and another with 1GB for the tests. Host OS was Ubuntu 20.04 (kind of got hooked to Manjaro since then).
I did try to not leave out some best practices at least, but I think we'll all agree that in this situation, it would be kind of hard to keep up with that.
You can check it out here: https://www.youtube.com/watch?v=0E0FKjvTA0M
I'm going to try and post more videos about OS development and coding in general, hopefully with more attention to detail, but most will be speedruns just because I found the idea to be fun and challenging.
I'm totally open to suggestions of topics you'd like to see covered that could complement OSDev.org's content (been a long time visitor, but only now registered) and constructive criticism about the video. After doing this first video, I actually became excited with the idea of doing some follow ups and covering some more advanced topics in detail.
Also, only recently I started getting some tiny bits of free time so I'm also hoping that I finally get the time to start contributing text content to the site, as I've got a major trove of decades of information and documents stashed in my PC.
Keep on coding and don't give up.
I'd like to share with you something I've kept stored for a while which some of you may find interesting/funny.
I've been doing low level development (especially operating systems) for a long time now and I teach computer architecture (amongst other subjects) in a university. A while ago I gave my students an assignment consisting of them developing their own boot loader and a simple payload just printing a message (wasn't their only assignment, actually).
I gave them about half of the semester to do it and in the end they challenged me to see how fast I could complete the same assignment I gave them (though they'd been warned I'd never give them any assignment I hadn't completed myself before). I accepted the challenge and even let them record me doing it.
Disclaimer: It may not be the prettiest and most correct code and there's probably some nasty bugs there (some stuff probably could have been written better - for instance, I totally forgot the far jump to 0:0x7C00/0x07C0:0, amongst other stuff) but have in mind that I was doing it as a challenge and in real time to punk them. In the end I completed it in under 15 minutes which came out as funny demo. (Is there a Guinness record for fastest OS development?)
As it was done just as a joke, it was developed just to boot in classic BIOS mode, under MBR, not even entering protected mode neither caring for partitions. Test setup was a VirtualBox virtual machine with two virtual hard drives, one with the host OS, and another with 1GB for the tests. Host OS was Ubuntu 20.04 (kind of got hooked to Manjaro since then).
I did try to not leave out some best practices at least, but I think we'll all agree that in this situation, it would be kind of hard to keep up with that.
You can check it out here: https://www.youtube.com/watch?v=0E0FKjvTA0M
I'm going to try and post more videos about OS development and coding in general, hopefully with more attention to detail, but most will be speedruns just because I found the idea to be fun and challenging.
I'm totally open to suggestions of topics you'd like to see covered that could complement OSDev.org's content (been a long time visitor, but only now registered) and constructive criticism about the video. After doing this first video, I actually became excited with the idea of doing some follow ups and covering some more advanced topics in detail.
Also, only recently I started getting some tiny bits of free time so I'm also hoping that I finally get the time to start contributing text content to the site, as I've got a major trove of decades of information and documents stashed in my PC.
Keep on coding and don't give up.