1
1
Fork 0
kernel/README.md

1.8 KiB

rOSka

  • Probably useless hobby OS project
  • Targets 32bit legacy systems with graphical framebuffer
  • Boots with multiboot compatible bootloader, such as GRUB
  • Assembles with FASM
  • We'll probably use ext2 filesystem

GRUB disk creation

  1. Format disk. Create ext2 partition
  2. Create directory mnt and mount your partition to it
        mkdir mnt
        sudo mount /dev/sdX1 mnt
    
  3. Intall grub using sudo grub-install --target=i386-pc --removable --boot-dir=mnt/boot /dev/sdX
  4. Create config
        menuentry "rOSka" {
            multiboot /boot/roska.bin
            boot
        }
    
  5. Copy assembled kernel to mnt/boot/roska.bin

extlinux disk creation

  1. Format disk. Create ext2 partition and mark it active boot partition.
  2. Add syslinux to bootloader sudo dd if=/usr/lib/syslinux/bios/mbr.bin of=/dev/sdX
  3. Create directory mnt and mount your partition to it. Add boot directory to it.
        mkdir mnt
        sudo mount /dev/sdX1 mnt
        sudo mkdir mnt/boot
    
  4. Install extlinux(syslinux)
    sudo extlinux --install --device /dev/sdX1 mnt/boot
    sudo cp /usr/lib/syslinux/bios/libcom32.c32 mnt/boot/
    sudo cp /usr/lib/syslinux/bios/mboot.c32 mnt/boot/
    
  5. Create config
        DEFAULT rOSka
        LABEL rOSka
            SAY extlinux is booting rOSka...
            KERNEL /boot/mboot.c32
            APPEND /boot/roska.bin
    
  6. Copy assembled kernel to mnt/boot/roska.bin
  7. Have no video because naughty implementation doesn't tell us the framebuffer address :(

Oh yeah heres a montrosity I currently use. fasm roska.fasm && sudo mount /dev/sdd1 mnt/ && sudo cp roska.bin mnt/boot/roska.bin && sudo umount /dev/sdd1 && sudo sync && sudo qemu-system-i386 /dev/sdd