60 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# 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
 | 
						|
    ``` mnt/boot/grub/grub.cfg
 | 
						|
        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
 | 
						|
    ``` mnt/boot/syslinux.cfg
 | 
						|
        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`
 |