Grub2 multiboot1
This commit is contained in:
parent
589f2bb02e
commit
b157087658
|
@ -1,10 +0,0 @@
|
|||
KERNELIMG=$1
|
||||
KERNELBIN=$2
|
||||
sudo umount /mnt
|
||||
sudo losetup -d /dev/loop0
|
||||
sudo losetup /dev/loop0 $KERNELIMG -o 1048576
|
||||
sudo mount /dev/loop0 /mnt
|
||||
sudo cp $KERNELBIN /mnt/boot/
|
||||
sudo umount /mnt
|
||||
sudo losetup -d /dev/loop0
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
menuentry "HOS Multiboot [Dev]" {
|
||||
multiboot /HOS/kernel_multiboot.bin
|
||||
}
|
||||
menuentry "HOS Multiboot2 [Pending]" {
|
||||
multiboot2 /HOS/kernel_multiboot2.bin
|
||||
}
|
|
@ -0,0 +1,106 @@
|
|||
org 0x01000000
|
||||
|
||||
GRUB_LOADED_FLAG equ 0x2BADB002
|
||||
GRUB_MAGIC_NUMBER equ 0x1BADB002
|
||||
GRUB_FLAGS equ 0x10003
|
||||
GRUB_CHECK_SUM equ -(GRUB_MAGIC_NUMBER + GRUB_FLAGS)
|
||||
GRUB_HEADER_ADDR:
|
||||
dd GRUB_MAGIC_NUMBER
|
||||
dd GRUB_FLAGS
|
||||
dd GRUB_CHECK_SUM
|
||||
|
||||
dd GRUB_HEADER_ADDR
|
||||
dd GRUB_HEADER_ADDR
|
||||
dd 0
|
||||
dd 0
|
||||
dd GRUB_ENTRY_ADDR
|
||||
|
||||
|
||||
%include "pm.inc"
|
||||
|
||||
;GDT to load
|
||||
DESC_VOID: Descriptor 0,0,0
|
||||
DESC_GRAPH: Descriptor 0b8000h,0xffff,DA_DRW | DA_DPL3
|
||||
DESC_FLAT_C: Descriptor 0,0xfffff,DA_CR | DA_32 | DA_LIMIT_4K
|
||||
DESC_FLAT_RW: Descriptor 0,0xfffff,DA_DRW | DA_32 | DA_LIMIT_4K
|
||||
GDT_END:
|
||||
|
||||
GDT_LENGTH equ GDT_END - DESC_VOID - 1
|
||||
GDT_PTR:
|
||||
dw GDT_LENGTH
|
||||
dd DESC_VOID
|
||||
|
||||
;SELECTORS
|
||||
SLCT_CODE_0 equ DESC_FLAT_C - DESC_VOID
|
||||
SLCT_GRAPH_0 equ DESC_GRAPH - DESC_VOID
|
||||
SLCT_DATA_0 equ DESC_FLAT_RW - DESC_VOID
|
||||
|
||||
;Message
|
||||
DUMMY_MSG:
|
||||
db 'Loaded by multiboot1!',0
|
||||
|
||||
;stack
|
||||
times 1024 db 0
|
||||
_KERNEL_STACK:
|
||||
|
||||
GRUB_ENTRY_ADDR:
|
||||
[BITS 32]
|
||||
cli
|
||||
|
||||
cmp eax,GRUB_LOADED_FLAG
|
||||
jmp LOADED_BY_GRUB
|
||||
hlt
|
||||
LOADED_BY_GRUB:
|
||||
|
||||
mov eax,_KERNEL_STACK
|
||||
mov esp,eax
|
||||
|
||||
push dword 0
|
||||
popfd
|
||||
|
||||
lgdt [GDT_PTR]
|
||||
jmp SLCT_CODE_0:Reload_CS
|
||||
Reload_CS:
|
||||
mov ax,SLCT_DATA_0
|
||||
mov ss,ax
|
||||
mov ds,ax
|
||||
mov es,ax
|
||||
mov fs,ax
|
||||
mov ax,SLCT_GRAPH_0
|
||||
mov gs,ax
|
||||
|
||||
push DUMMY_MSG
|
||||
call _printf
|
||||
add esp,4
|
||||
|
||||
end:
|
||||
jmp end
|
||||
|
||||
_printf:
|
||||
;void printf(char* str)
|
||||
;EAX,ECX,EDX
|
||||
push ebp
|
||||
mov ebp,esp
|
||||
push edi
|
||||
push esi
|
||||
|
||||
mov edi,dword [ss:ebp+8]
|
||||
xor esi,esi
|
||||
xor ecx,ecx
|
||||
|
||||
.begin:
|
||||
mov al,byte [ds:edi]
|
||||
cmp al,0 ;0 ended
|
||||
je .end
|
||||
mov byte [gs:esi],al
|
||||
inc esi
|
||||
mov byte [gs:esi],0x0c
|
||||
inc edi
|
||||
inc esi
|
||||
jmp .begin
|
||||
.end:
|
||||
pop esi
|
||||
pop edi
|
||||
mov esp,ebp
|
||||
pop ebp
|
||||
|
|
@ -1,10 +1,9 @@
|
|||
org 0x01000000
|
||||
|
||||
;void HkSystemInit(PMULTIBOOT_INFO info)
|
||||
GRUB_LOADED_FLAG equ 0x36d76289
|
||||
GRUB_MAGIC_NUMBER equ 0xE85250D6
|
||||
GRUB_ARCHITECTURE equ 0x0
|
||||
GRUB_CHECK_SUM equ -(GRUB_MAGIC_NUMBER + GRUB_HEADER_LENGTH)
|
||||
GRUB_CHECK_SUM equ - (GRUB_MAGIC_NUMBER + GRUB_ARCHITECTURE + GRUB_HEADER_LENGTH)
|
||||
GRUB_HEADER_LENGTH equ (GRUB_HEADER_END - GRUB_HEADER_START)
|
||||
GRUB_HEADER_START:
|
||||
dd GRUB_MAGIC_NUMBER
|
||||
|
@ -14,13 +13,13 @@ dd GRUB_CHECK_SUM
|
|||
;===================
|
||||
;Address_tag
|
||||
GRUB_LOAD_BASE equ 0x01000000 ;1MB
|
||||
GRUB_ADDRESS_TAG_SIZE equ GRUB_ADDRESS_TAG_END - GRUB_HEADER_START
|
||||
GRUB_ADDRESS_TAG_SIZE equ GRUB_ADDRESS_TAG_END - GRUB_ADDRESS_TAG_START
|
||||
GRUB_ADDRESS_TAG_START:
|
||||
dw 0x2 ;type=2
|
||||
dw 0x0 ;flag=0
|
||||
dd GRUB_ADDRESS_TAG_SIZE; size
|
||||
dd 0; Since at the beginning of the file
|
||||
dd GRUB_LOAD_BASE
|
||||
dd GRUB_HEADER_START; Since at the beginning of the file
|
||||
dd GRUB_ENTRY
|
||||
dd 0 ;load end
|
||||
dd 0 ;bss
|
||||
GRUB_ADDRESS_TAG_END:
|
||||
|
@ -63,11 +62,15 @@ SLCT_CODE_0 equ DESC_FLAT_C - DESC_VOID
|
|||
SLCT_GRAPH_0 equ DESC_GRAPH - DESC_VOID
|
||||
SLCT_DATA_0 equ DESC_FLAT_RW - DESC_VOID
|
||||
|
||||
DUMMY_MSG:
|
||||
db 'Loaded by multiboot2!',0
|
||||
|
||||
;stack
|
||||
times 1024 db 0
|
||||
_KERNEL_STACK:
|
||||
|
||||
GRUB_ENTRY:
|
||||
[BITS 32]
|
||||
cli
|
||||
|
||||
cmp eax,GRUB_LOADED_FLAG
|
||||
|
@ -85,16 +88,17 @@ lgdt [GDT_PTR]
|
|||
jmp SLCT_CODE_0:Reload_CS
|
||||
Reload_CS:
|
||||
mov ax,cs
|
||||
mov ss,ax
|
||||
mov ax,SLCT_DATA_0
|
||||
mov ss,ax
|
||||
mov ds,ax
|
||||
mov es,ax
|
||||
mov fs,ax
|
||||
mov ax,SLCT_GRAPH_0
|
||||
mov gs,ax
|
||||
|
||||
push ebx
|
||||
push DUMMY_MSG
|
||||
call _printf
|
||||
add esp,4
|
||||
|
||||
_printf:
|
||||
;void printf(char* str)
|
||||
|
@ -112,11 +116,12 @@ xor ecx,ecx
|
|||
mov al,byte [ds:edi]
|
||||
cmp al,0 ;0 ended
|
||||
je .end
|
||||
mov byte [es:esi],al
|
||||
mov byte [gs:esi],al
|
||||
inc esi
|
||||
mov byte [es:esi],0xFF
|
||||
mov byte [gs:esi],0xFF
|
||||
inc edi
|
||||
inc esi
|
||||
jmp .begin
|
||||
.end:
|
||||
pop esi
|
||||
pop edi
|
|
@ -19,7 +19,7 @@ sudo losetup /dev/loop0 $KERNELIMG -o 1048576
|
|||
sudo losetup /dev/loop1 $KERNELIMG
|
||||
sudo mkfs.ext4 /dev/loop0
|
||||
sudo mount /dev/loop0 /mnt
|
||||
sudo grub-install --root-directory=/mnt --no-floppy /dev/loop1
|
||||
sudo grub-install --root-directory=/mnt --no-floppy --recheck /dev/loop1
|
||||
sudo grub-mkconfig -o /mnt/boot/grub/grub.cfg
|
||||
sudo umount /mnt
|
||||
sudo losetup -d /dev/loop0
|
|
@ -0,0 +1,12 @@
|
|||
sudo rm HOS.iso
|
||||
sudo nasm -f bin kernel_multiboot.asm -o kernel_multiboot.bin
|
||||
sudo nasm -f bin kernel_multiboot2.asm -o kernel_multiboot2.bin
|
||||
sudo mkdir temp_iso
|
||||
sudo mkdir temp_iso/HOS
|
||||
sudo mkdir temp_iso/boot
|
||||
sudo mkdir temp_iso/boot/grub
|
||||
sudo mv kernel_multiboot.bin temp_iso/HOS/kernel_multiboot.bin
|
||||
sudo mv kernel_multiboot2.bin temp_iso/HOS/kernel_multiboot2.bin
|
||||
sudo cp grub.cfg temp_iso/boot/grub/
|
||||
sudo grub-mkrescue -o HOS.iso temp_iso
|
||||
sudo rm -rf temp_iso
|
|
@ -1,24 +1,28 @@
|
|||
# configuration file generated by Bochs
|
||||
|
||||
plugin_ctrl: unmapped=1, biosdev=1, speaker=1, extfpuirq=1, parallel=1, serial=1, gameport=1
|
||||
config_interface: win32config
|
||||
display_library: nogui
|
||||
memory: host=64, guest=64
|
||||
display_library: win32
|
||||
magic_break: enabled=1
|
||||
memory: host=256, guest=512
|
||||
romimage: file="C:\Program Files (x86)\Bochs-2.6.6/BIOS-bochs-latest"
|
||||
vgaromimage: file="C:\Program Files (x86)\Bochs-2.6.6/VGABIOS-lgpl-latest"
|
||||
boot: disk
|
||||
boot: cdrom
|
||||
floppy_bootsig_check: disabled=0
|
||||
# no floppya
|
||||
# no floppyb
|
||||
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
|
||||
ata0-master: type=disk, path="C:\Users\Oscar\Documents\HOS\HOS.img", mode=flat, cylinders=1024, heads=4, spt=32, model="HOS", biosdetect=auto, translation=auto
|
||||
ata0-master: type=cdrom, path="C:\Users\Oscar\Desktop\HOS.iso", status=inserted, model="Generic 1234", biosdetect=auto
|
||||
ata0-slave: type=none
|
||||
ata1: enabled=0
|
||||
ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15
|
||||
ata1-master: type=none
|
||||
ata1-slave: type=none
|
||||
ata2: enabled=0
|
||||
ata3: enabled=0
|
||||
pci: enabled=1, chipset=i440fx
|
||||
vga: extension=vbe, update_freq=5
|
||||
cpu: count=1, ips=4000000, model=bx_generic, reset_on_triple_fault=1, cpuid_limit_winnt=0, ignore_bad_msrs=1, mwait_is_nop=0
|
||||
cpuid: level=6, stepping=3, model=3, family=6, vendor_string="Generic", brand_string="Generic CPU"
|
||||
cpuid: mmx=1, apic=xapic, simd=sse3, sse4a=0, misaligned_sse=0, sep=1, movbe=0, adx=0
|
||||
cpuid: level=6, stepping=3, model=3, family=6, vendor_string="GenuineIntel", brand_string=" Intel(R) Pentium(R) 4 CPU "
|
||||
cpuid: mmx=1, apic=xapic, simd=sse2, sse4a=0, misaligned_sse=0, sep=1, movbe=0, adx=0
|
||||
cpuid: aes=0, sha=0, xsave=0, xsaveopt=0, x86_64=1, 1g_pages=0, pcid=0, fsgsbase=0
|
||||
cpuid: smep=0, smap=0, mwait=1, vmx=1
|
||||
print_timestamps: enabled=0
|
||||
|
@ -29,10 +33,17 @@ clock: sync=none, time0=local, rtc_sync=0
|
|||
# no loader
|
||||
log: -
|
||||
logprefix: %t%e%d
|
||||
debug: action=ignore, pci=report
|
||||
debug: action=ignore
|
||||
info: action=report
|
||||
error: action=report
|
||||
panic: action=ask
|
||||
keyboard: type=mf, serial_delay=250, paste_delay=100000, user_shortcut=none
|
||||
mouse: type=ps2, enabled=0, toggle=ctrl+mbutton
|
||||
sound: driver="default", waveout=none, wavein=none
|
||||
speaker: enabled=1, mode=sound
|
||||
parport1: enabled=1, file=none
|
||||
parport2: enabled=0
|
||||
com1: enabled=1, mode=null
|
||||
com2: enabled=0
|
||||
com3: enabled=0
|
||||
com4: enabled=0
|
|
@ -0,0 +1,49 @@
|
|||
# configuration file generated by Bochs
|
||||
plugin_ctrl: unmapped=1, biosdev=1, speaker=1, extfpuirq=1, parallel=1, serial=1, gameport=1
|
||||
config_interface: win32config
|
||||
display_library: win32, options="gui_debug"
|
||||
magic_break: enabled=1
|
||||
memory: host=256, guest=512
|
||||
romimage: file="C:\Program Files (x86)\Bochs-2.6.6/BIOS-bochs-latest"
|
||||
vgaromimage: file="C:\Program Files (x86)\Bochs-2.6.6/VGABIOS-lgpl-latest"
|
||||
boot: cdrom
|
||||
floppy_bootsig_check: disabled=0
|
||||
# no floppya
|
||||
# no floppyb
|
||||
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
|
||||
ata0-master: type=cdrom, path="C:\Users\Oscar\Desktop\HOS.iso", status=inserted, model="Generic 1234", biosdetect=auto
|
||||
ata0-slave: type=none
|
||||
ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15
|
||||
ata1-master: type=none
|
||||
ata1-slave: type=none
|
||||
ata2: enabled=0
|
||||
ata3: enabled=0
|
||||
pci: enabled=1, chipset=i440fx
|
||||
vga: extension=vbe, update_freq=5
|
||||
cpu: count=1, ips=4000000, model=bx_generic, reset_on_triple_fault=1, cpuid_limit_winnt=0, ignore_bad_msrs=1, mwait_is_nop=0
|
||||
cpuid: level=6, stepping=3, model=3, family=6, vendor_string="GenuineIntel", brand_string=" Intel(R) Pentium(R) 4 CPU "
|
||||
cpuid: mmx=1, apic=xapic, simd=sse2, sse4a=0, misaligned_sse=0, sep=1, movbe=0, adx=0
|
||||
cpuid: aes=0, sha=0, xsave=0, xsaveopt=0, x86_64=1, 1g_pages=0, pcid=0, fsgsbase=0
|
||||
cpuid: smep=0, smap=0, mwait=1, vmx=1
|
||||
print_timestamps: enabled=0
|
||||
port_e9_hack: enabled=0
|
||||
private_colormap: enabled=0
|
||||
clock: sync=none, time0=local, rtc_sync=0
|
||||
# no cmosimage
|
||||
# no loader
|
||||
log: -
|
||||
logprefix: %t%e%d
|
||||
debug: action=ignore
|
||||
info: action=report
|
||||
error: action=report
|
||||
panic: action=ask
|
||||
keyboard: type=mf, serial_delay=250, paste_delay=100000, user_shortcut=none
|
||||
mouse: type=ps2, enabled=0, toggle=ctrl+mbutton
|
||||
sound: driver="default", waveout=none, wavein=none
|
||||
speaker: enabled=1, mode=sound
|
||||
parport1: enabled=1, file=none
|
||||
parport2: enabled=0
|
||||
com1: enabled=1, mode=null
|
||||
com2: enabled=0
|
||||
com3: enabled=0
|
||||
com4: enabled=0
|
Loading…
Reference in New Issue