refactor: reorganize bootloader source code
	
		
			
	
		
	
	
		
	
		
			Some checks are pending
		
		
	
	
		
			
				
	
				Build / test (push) Waiting to run
				
					
					
				
			
		
			
				
	
				Docs / test (push) Waiting to run
				
					
					
				
			
		
		
	
	
				
					
				
			
		
			Some checks are pending
		
		
	
	Build / test (push) Waiting to run
				Docs / test (push) Waiting to run
				This commit is contained in:
		
							parent
							
								
									a4d5179982
								
							
						
					
					
						commit
						74e09f7b33
					
				
					 23 changed files with 253 additions and 203 deletions
				
			
		
							
								
								
									
										13
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										13
									
								
								Makefile
									
										
									
									
									
								
							|  | @ -4,12 +4,13 @@ TOPDIR     := $(dir $(realpath $(lastword $(MAKEFILE_LIST)))) | |||
| SYSROOTDIR := $(TOPDIR)/sysroot | ||||
| TOOLSDIR   := $(TOPDIR)/tools | ||||
| 
 | ||||
| RM = echo | ||||
| AS = fasm | ||||
| RM = rm -f | ||||
| 
 | ||||
| MK_BUGREPORT := \"https://git.cute.engineering/d0p1/StupidOS/issues\" | ||||
| MK_COMMIT    := \"$(shell git rev-parse --short HEAD)\" | ||||
| 
 | ||||
| SUBDIRS	:= tools include boot kernel lib bin | ||||
| SUBDIRS	:= external tools include boot kernel lib bin | ||||
| 
 | ||||
| TARGET	= stupid.tar.gz floppy_boot.img | ||||
| ifneq ($(OS),Windows_NT) | ||||
|  | @ -28,7 +29,7 @@ clean: GOAL:=clean | |||
| .PHONY: $(SUBDIRS) | ||||
| $(SUBDIRS): | ||||
| 	@echo "📁 $@" | ||||
| 	DESTDIR=$(SYSROOTDIR) $(MAKE) -C $@ $(GOAL) | ||||
| 	@DESTDIR=$(SYSROOTDIR) $(MAKE) -C $@ $(GOAL) | ||||
| 
 | ||||
| .PHONY: stupid.iso | ||||
| stupid.iso: $(SUBDIRS) | ||||
|  | @ -46,8 +47,8 @@ stupid.tar.gz: $(SUBDIRS) | |||
| floppy_boot.img: $(SUBDIRS) | ||||
| 	dd if=/dev/zero of=$@ bs=512 count=1440 | ||||
| 	mformat -C -f 1440 -i $@ | ||||
| 	dd if=boot/bootsector.bin of=$@ conv=notrunc | ||||
| 	mcopy -i $@ boot/stpdboot.sys ::/STPDBOOT.SYS | ||||
| 	dd if=boot/bootsect/bootsector.bin of=$@ conv=notrunc | ||||
| 	mcopy -i $@ boot/loader/stpdldr.sys ::/STPDLDR.SYS | ||||
| 	mcopy -i $@ kernel/vmstupid.sys ::/VMSTUPID.SYS | ||||
| 
 | ||||
| .PHONY: run | ||||
|  | @ -63,4 +64,4 @@ run: all | |||
| 
 | ||||
| .PHONY: clean | ||||
| clean: $(SUBDIRS) | ||||
| 	$(RM) $(TARGET) $(SYSROOTDIR) | ||||
| 	$(RM) $(TARGET)  | ||||
|  |  | |||
|  | @ -1,5 +1,3 @@ | |||
| SUBDIRS = cmd | ||||
| 
 | ||||
| TOPGOALS = all clean install | ||||
| 
 | ||||
| SUBDIRS = cmd | ||||
|  | @ -7,7 +5,7 @@ SUBDIRS = cmd | |||
| .PHONY: $(SUBDIRS) | ||||
| $(SUBDIRS): | ||||
| 	@echo "📁 bin/$@" | ||||
| 	DESTDIR=$(DESTDIR)/bin $(MAKE) -C $@ $(MAKECMDGOALS) | ||||
| 	@DESTDIR=$(DESTDIR)/bin $(MAKE) -C $@ $(MAKECMDGOALS) | ||||
| 
 | ||||
| .PHONY: $(TOPGOALS) | ||||
| $(TOPGOALS): $(SUBDIRS) | ||||
|  |  | |||
|  | @ -1,11 +1,13 @@ | |||
| 	format COFF | ||||
| 
 | ||||
| 	section '.text' code | ||||
| 
 | ||||
| 	public main | ||||
| main: | ||||
| 	int 0x2A | ||||
| 
 | ||||
| 	section '.data' data | ||||
| 
 | ||||
| 	INCLUDE 'builtins.inc' | ||||
| 	format COFF | ||||
| 
 | ||||
| 	section '.text' code | ||||
| 
 | ||||
| 	public main | ||||
| 	public _start | ||||
| _start:	 | ||||
| main: | ||||
| 	int 0x2A | ||||
| 
 | ||||
| 	section '.data' data | ||||
| 
 | ||||
| 	INCLUDE 'builtins.inc' | ||||
|  |  | |||
|  | @ -1,39 +1,11 @@ | |||
| AS = fasm | ||||
| RM = rm | ||||
| TOPGOALS = all clean install | ||||
| 
 | ||||
| TARGET = bootsector.bin stpdboot.sys bootia32.efi | ||||
| SUBDIRS = bootsect loader efi | ||||
| 
 | ||||
| STAGE0_SRCS	= boot0.asm \
 | ||||
| 			const.inc \
 | ||||
| 			fat12.inc | ||||
| .PHONY: $(SUBDIRS) | ||||
| $(SUBDIRS): | ||||
| 	@echo "📁 boot/$@" | ||||
| 	@DESTDIR=$(DESTDIR) $(MAKE) -C $@ $(MAKECMDGOALS) | ||||
| 
 | ||||
| STAGE1_SRCS	= boot1.asm \
 | ||||
| 			const.inc \
 | ||||
| 			a20.inc \
 | ||||
| 			multiboot.inc | ||||
| 
 | ||||
| BOOTIA32_EFI_SRCS = bootia32.asm \
 | ||||
| 					uefi.inc | ||||
| 
 | ||||
| .PHONY: all | ||||
| all: $(TARGET) | ||||
| 
 | ||||
| bootsector.bin: $(STAGE0_SRCS) | ||||
| 	$(AS) boot0.asm $@ | ||||
| 
 | ||||
| stpdboot.sys: $(STAGE1_SRCS) | ||||
| 	$(AS) boot1.asm $@ | ||||
| 
 | ||||
| bootia32.efi: $(BOOTIA32_EFI_SRCS) | ||||
| 	$(AS) bootia32.asm $@ | ||||
| 
 | ||||
| .PHONY: clean | ||||
| clean: | ||||
| 	$(RM) $(TARGET) | ||||
| 
 | ||||
| .PHONY: install | ||||
| install: $(TARGET) | ||||
| 	@ mkdir -p $(DESTDIR) | ||||
| 	install stpdboot.sys $(DESTDIR) | ||||
| 	@ mkdir -p $(DESTDIR)/EFI/BOOT | ||||
| 	install bootia32.efi $(DESTDIR)/EFI/BOOT | ||||
| .PHONY: $(TOPGOALS) | ||||
| $(TOPGOALS): $(SUBDIRS) | ||||
|  |  | |||
							
								
								
									
										120
									
								
								boot/boot0.asm
									
										
									
									
									
								
							
							
						
						
									
										120
									
								
								boot/boot0.asm
									
										
									
									
									
								
							|  | @ -1,120 +0,0 @@ | |||
|         INCLUDE 'const.inc' | ||||
| 
 | ||||
|         ORG STAGE0_BASE | ||||
|         USE16 | ||||
| 
 | ||||
|         jmp short _start | ||||
|         nop | ||||
| 
 | ||||
|         ; Boot Record | ||||
| OEM_identifier      db 'STUPID  ' | ||||
| bytes_per_sector    dw 512 | ||||
| sectors_per_cluster db 1 | ||||
| reserved_sectors    dw 1 | ||||
| FAT_count           db 2 | ||||
| root_dir_entries    dw 224 | ||||
| total_sectors       dw 2880 | ||||
| media_desc_type     db 0xF0 | ||||
| sectors_per_FAT     dw 9 | ||||
| sectors_per_track   dw 18 | ||||
| heads_per_cylinder  dw 2 | ||||
| hidden_sectors      dd 0 | ||||
| large_sector_count  dd 0 | ||||
| 
 | ||||
|         ; Extended Boot Record | ||||
| drive_number db 0x0 | ||||
| reserved     db 0x0 | ||||
| signature    db 0x29   ; 0x28 or 0x29 | ||||
| volume_id    dd 0xB00B135 ; hope mine will grow :'( | ||||
| volume_label db 'Stupid Boot' | ||||
| system_id    db 'FAT12  ' | ||||
| 
 | ||||
| 
 | ||||
| _start: | ||||
|         cli | ||||
|         cld | ||||
|         jmp 0x0:.canonicalize_cs | ||||
| 
 | ||||
| .canonicalize_cs: | ||||
|         xor ax, ax | ||||
|         mov ds, ax | ||||
|         mov ss, ax | ||||
|         mov es, ax | ||||
|         mov sp, 0x7c00 | ||||
| 
 | ||||
|         mov [drive_number], dl | ||||
| 
 | ||||
|         ; reset floppy disk | ||||
| @@: | ||||
|         mov dl, [drive_number] | ||||
|         xor ah, ah | ||||
|         int 0x13 | ||||
|         jc @b | ||||
| 
 | ||||
|         call fat_load_root | ||||
| 
 | ||||
|         ; search in root directory | ||||
| 
 | ||||
|         mov si, kernel_file | ||||
|         call fat_search_root | ||||
|         jc .error_not_found | ||||
|         mov [kernel_start], ax | ||||
| 
 | ||||
|         mov si, stage1_file | ||||
|         call fat_search_root | ||||
|         jc .error_not_found | ||||
|         mov [stage1_start], ax | ||||
| 
 | ||||
|         ; load fat | ||||
|         xor ax, ax | ||||
|         mov al, [FAT_count] | ||||
|         mul word [sectors_per_FAT] | ||||
|         mov cx, ax | ||||
|         mov ax, [reserved_sectors] | ||||
| 
 | ||||
|         xor bx, bx | ||||
| 
 | ||||
|         call disk_read_sectors | ||||
| 
 | ||||
|         ; preload kernel | ||||
|         mov ax, KERNEL_PRELOAD/0x10 | ||||
|         mov es, ax | ||||
|         mov ax, [kernel_start] | ||||
|         xor bx, bx | ||||
|         call fat_load_binary | ||||
| 
 | ||||
|         ; load stage 2 | ||||
|         mov ax, STAGE1_BASE/0x10 | ||||
|         mov es, ax | ||||
|         mov ax, [stage1_start] | ||||
|         xor bx, bx | ||||
|         call fat_load_binary | ||||
| 
 | ||||
|         jmp 0x0:STAGE1_BASE | ||||
| 
 | ||||
| .error_not_found: | ||||
|         push si | ||||
|         mov si, msg_error | ||||
|         call bios_print | ||||
|         pop si | ||||
|         call bios_print | ||||
|         mov si, msg_not_found | ||||
|         call bios_print | ||||
|         hlt | ||||
|         jmp $ | ||||
| 
 | ||||
|         INCLUDE "utils.inc" | ||||
|         INCLUDE "fat12.inc" | ||||
| 
 | ||||
| msg_error                  db "ERROR: ", 0 | ||||
| msg_not_found              db " not found", CR, LF, 0 | ||||
| 
 | ||||
| kernel_file db "VMSTUPIDSYS", 0 | ||||
| stage1_file db "STPDBOOTSYS", 0 | ||||
| 
 | ||||
| kernel_start dw 0x0 | ||||
| stage1_start dw 0x0 | ||||
| 
 | ||||
| 
 | ||||
|         rb 0x7C00+512-2-$ | ||||
|         db 0x55, 0xAA | ||||
							
								
								
									
										18
									
								
								boot/bootsect/Makefile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								boot/bootsect/Makefile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,18 @@ | |||
| TARGET = bootsector.bin | ||||
| 
 | ||||
| FLOPPY_SRCS	= floppy.asm \
 | ||||
| 			../common/const.inc \
 | ||||
| 			../common/fat12.inc | ||||
| 
 | ||||
| .PHONY: all | ||||
| all: $(TARGET) | ||||
| 
 | ||||
| bootsector.bin: $(FLOPPY_SRCS) | ||||
| 	$(AS) floppy.asm $@ | ||||
| 
 | ||||
| .PHONY: clean | ||||
| clean: | ||||
| 	$(RM) $(TARGET) | ||||
| 
 | ||||
| .PHONY: install | ||||
| install: $(TARGET) | ||||
							
								
								
									
										122
									
								
								boot/bootsect/floppy.asm
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										122
									
								
								boot/bootsect/floppy.asm
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,122 @@ | |||
| 	format binary | ||||
| 	use16 | ||||
| 
 | ||||
| 	include '../common/const.inc' | ||||
| 
 | ||||
| 	org BOOTSECT_BASE | ||||
| 
 | ||||
| 	jmp short _start | ||||
| 	nop | ||||
| 
 | ||||
| 	; Boot Record | ||||
| OEM_identifier      db 'STUPID  ' | ||||
| bytes_per_sector    dw 512 | ||||
| sectors_per_cluster db 1 | ||||
| reserved_sectors    dw 1 | ||||
| FAT_count           db 2 | ||||
| root_dir_entries    dw 224 | ||||
| total_sectors       dw 2880 | ||||
| media_desc_type     db 0xF0 | ||||
| sectors_per_FAT     dw 9 | ||||
| sectors_per_track   dw 18 | ||||
| heads_per_cylinder  dw 2 | ||||
| hidden_sectors      dd 0 | ||||
| large_sector_count  dd 0 | ||||
| 
 | ||||
| 	; Extended Boot Record | ||||
| drive_number db 0x0 | ||||
| reserved     db 0x0 | ||||
| signature    db 0x29   		; 0x28 or 0x29 | ||||
| volume_id    dd 0xB00B135 	; hope mine will grow :'( | ||||
| volume_label db 'Stupid Boot' | ||||
| system_id    db 'FAT12  ' | ||||
| 
 | ||||
| 
 | ||||
| _start: | ||||
| 	cli | ||||
| 	cld | ||||
| 	jmp 0x0:.canonicalize_cs | ||||
| 
 | ||||
| .canonicalize_cs: | ||||
| 	xor ax, ax | ||||
| 	mov ds, ax | ||||
| 	mov ss, ax | ||||
| 	mov es, ax | ||||
| 	mov sp, 0x7c00 | ||||
| 
 | ||||
| 	mov [drive_number], dl | ||||
| 
 | ||||
| 	; reset floppy disk | ||||
| @@: | ||||
| 	mov dl, [drive_number] | ||||
| 	xor ah, ah | ||||
| 	int 0x13 | ||||
| 	jc @b | ||||
| 
 | ||||
| 	call fat_load_root | ||||
| 
 | ||||
| 	; search in root directory | ||||
| 
 | ||||
| 	mov si, kernel_file | ||||
| 	call fat_search_root | ||||
| 	jc .error_not_found | ||||
| 	mov [kernel_start], ax | ||||
| 
 | ||||
| 	mov si, stage1_file | ||||
| 	call fat_search_root | ||||
| 	jc .error_not_found | ||||
| 	mov [stage1_start], ax | ||||
| 
 | ||||
| 	; load fat | ||||
| 	xor ax, ax | ||||
| 	mov al, [FAT_count] | ||||
| 	mul word [sectors_per_FAT] | ||||
| 	mov cx, ax | ||||
| 	mov ax, [reserved_sectors] | ||||
| 
 | ||||
| 	xor bx, bx | ||||
| 
 | ||||
| 	call disk_read_sectors | ||||
| 
 | ||||
| 	; preload kernel | ||||
| 	mov ax, KERNEL_PRELOAD/0x10 | ||||
| 	mov es, ax | ||||
| 	mov ax, [kernel_start] | ||||
| 	xor bx, bx | ||||
| 	call fat_load_binary | ||||
| 
 | ||||
| 	; load stage 2 | ||||
| 	mov ax, LOADER_BASE/0x10 | ||||
| 	mov es, ax | ||||
| 	mov ax, [stage1_start] | ||||
| 	xor bx, bx | ||||
| 	call fat_load_binary | ||||
| 
 | ||||
| 	jmp 0x0:LOADER_BASE | ||||
| 
 | ||||
| .error_not_found: | ||||
| 	push si | ||||
| 	mov si, msg_error | ||||
| 	call bios_print | ||||
| 	pop si | ||||
| 	call bios_print | ||||
| 	mov si, msg_not_found | ||||
| 	call bios_print | ||||
| 	hlt | ||||
| 	jmp $ | ||||
| 
 | ||||
| 	include '../common/bios.inc' | ||||
| 	include '../common/fat12.inc' | ||||
| 
 | ||||
| msg_error                  db "ERROR: ", 0 | ||||
| msg_not_found              db " not found", CR, LF, 0 | ||||
| 
 | ||||
| kernel_file db "VMSTUPIDSYS", 0 | ||||
| stage1_file db "STPDLDR SYS", 0 | ||||
| 
 | ||||
| kernel_start dw 0x0 | ||||
| stage1_start dw 0x0 | ||||
| 
 | ||||
| 
 | ||||
| 	rb 0x7C00+512-2-$ | ||||
| 	db 0x55, 0xAA | ||||
|  | @ -2,8 +2,8 @@ CR   = 0x0D | |||
| LF   = 0x0A | ||||
| 
 | ||||
| ; -------- Address ---------- | ||||
| STAGE0_BASE    = 0x7C00 | ||||
| STAGE1_BASE    = 0x1000 | ||||
| BOOTSECT_BASE  = 0x7C00 | ||||
| LOADER_BASE    = 0x1000 | ||||
| MULTIBOOT_BASE = 0x100000 | ||||
| DISK_BUFFER    = 0x8000 | ||||
| KERNEL_PRELOAD = 0xF000 | ||||
							
								
								
									
										6
									
								
								boot/common/macro.inc
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								boot/common/macro.inc
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | |||
| macro defn name | ||||
| { | ||||
| 	virtual at 0 | ||||
| 		name name | ||||
| 	end virtual | ||||
| } | ||||
							
								
								
									
										21
									
								
								boot/efi/Makefile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								boot/efi/Makefile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,21 @@ | |||
| TARGET = BOOTIA32.EFI | ||||
| 
 | ||||
| BOOTIA32_EFI_SRCS = bootia32.asm \
 | ||||
| 					uefi.inc \
 | ||||
| 					../common/const.inc \
 | ||||
| 					../common/macro.inc | ||||
| 
 | ||||
| .PHONY: all | ||||
| all: $(TARGET) | ||||
| 
 | ||||
| BOOTIA32.EFI: $(BOOTIA32_EFI_SRCS) | ||||
| 	$(AS) bootia32.asm $@ | ||||
| 
 | ||||
| .PHONY: clean | ||||
| clean: | ||||
| 	$(RM) $(TARGET) | ||||
| 
 | ||||
| .PHONY: install | ||||
| install: $(TARGET) | ||||
| 	@ mkdir -p $(DESTDIR)/EFI/BOOT | ||||
| 	install $(TARGET) $(DESTDIR)/EFI/BOOT | ||||
|  | @ -3,6 +3,8 @@ | |||
| 
 | ||||
| 	section '.text' code executable readable | ||||
| 
 | ||||
| 	include '../common/const.inc' | ||||
| 	include '../common/macro.inc' | ||||
| 	include 'uefi.inc' | ||||
| 
 | ||||
| 	; ESP     => return address | ||||
|  | @ -29,14 +31,15 @@ efimain: | |||
| 
 | ||||
| 	jmp $ | ||||
| 
 | ||||
| 	xor eax, eax | ||||
| 	ret | ||||
| 
 | ||||
| 
 | ||||
| 	section '.reloc' fixups data discardable | ||||
| 
 | ||||
| 	section '.data' data readable writeable | ||||
| 
 | ||||
| hello_msg du 'StupidOS EFI Bootloader', 13, 10, 0 | ||||
| hello_msg   du 'StupidOS EFI Bootloader', 13, 10, 0 | ||||
| kernel_file du 'vmstupid.sys', 0 | ||||
| 
 | ||||
| handle       dd ? | ||||
| system_table dd ?  | ||||
|  | @ -1,10 +1,3 @@ | |||
| macro defn name | ||||
| { | ||||
| 	virtual at 0 | ||||
| 		name name | ||||
| 	end virtual | ||||
| } | ||||
| 
 | ||||
| struc BOOLEAN | ||||
| { | ||||
| 	. db ? | ||||
							
								
								
									
										22
									
								
								boot/loader/Makefile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								boot/loader/Makefile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,22 @@ | |||
| TARGET = stpdldr.sys | ||||
| 
 | ||||
| LOADER_SRCS	= loader.asm \
 | ||||
| 				../common/const.inc \
 | ||||
| 				a20.inc \
 | ||||
| 				multiboot.inc | ||||
| 
 | ||||
| .PHONY: all | ||||
| all: $(TARGET) | ||||
| 
 | ||||
| 
 | ||||
| stpdldr.sys: $(LOADER_SRCS) | ||||
| 	$(AS) loader.asm $@ | ||||
| 
 | ||||
| .PHONY: clean | ||||
| clean: | ||||
| 	$(RM) $(TARGET) | ||||
| 
 | ||||
| .PHONY: install | ||||
| install: $(TARGET) | ||||
| 	@ mkdir -p $(DESTDIR) | ||||
| 	install $(TARGET) $(DESTDIR) | ||||
|  | @ -1,12 +1,14 @@ | |||
| 	INCLUDE 'const.inc' | ||||
| 	INCLUDE 'multiboot.inc' | ||||
| 	format binary | ||||
| 
 | ||||
| 	ORG STAGE1_BASE | ||||
| 	USE32 | ||||
| 	include '../common/const.inc' | ||||
| 	include 'multiboot.inc' | ||||
| 
 | ||||
| 	org LOADER_BASE | ||||
| 	use32 | ||||
| 
 | ||||
| 	jmp _start | ||||
| 
 | ||||
| 	ALIGN 4 | ||||
| 	align 4 | ||||
| multiboot_header: | ||||
| 	mb_header MultibootHeader multiboot_header | ||||
| 
 | ||||
|  | @ -14,7 +16,7 @@ _start: | |||
| 	cmp eax, MULTIBOOT_MAGIC | ||||
| 	je .multiboot | ||||
| 
 | ||||
| 	USE16 | ||||
| 	use16 | ||||
| 	;; non multiboot process | ||||
| 	push cs | ||||
| 	pop ds | ||||
|  | @ -46,16 +48,15 @@ _start: | |||
| 	hlt | ||||
| 	jmp $ | ||||
| 
 | ||||
| 	INCLUDE 'a20.inc' | ||||
| 	INCLUDE 'utils.inc' | ||||
| 	INCLUDE 'memory.inc' | ||||
| 	INCLUDE 'video.inc' | ||||
| 	include 'a20.inc' | ||||
| 	include '../common/bios.inc' | ||||
| 	include 'memory.inc' | ||||
| 	include 'video.inc' | ||||
| 
 | ||||
| msg_stage2       db "StupidOS Bootloader (Stage 1)", CR, LF, 0 | ||||
| msg_error_a20    db "ERROR: can't enable a20 line", CR, LF, 0 | ||||
| msg_error_memory db "ERROR: can't detect available memory", CR, LF, 0 | ||||
| 
 | ||||
| 
 | ||||
| 	;; | ||||
| bi_screen_width:	dw 0 | ||||
| bi_screen_height:	dw 0 | ||||
|  | @ -15,7 +15,7 @@ struc MultibootHeader addr | |||
| 
 | ||||
|         ; address fields (we'll just skip them) | ||||
|         .header_addr   dd addr | ||||
|         .load_addr     dd STAGE1_BASE | ||||
|         .load_addr     dd LOADER_BASE | ||||
|         .load_end_addr dd _edata | ||||
|         .bss_end_addr  dd _end | ||||
|         .entry_addr    dd _start | ||||
|  | @ -106,3 +106,11 @@ MULTIBOOT_MEMORY_RESERVED  = 0x2 | |||
| MULTIBOOT_MEMORY_ACPI      = 0x3 | ||||
| MULTIBOOT_MEMORY_NVS       = 0x4 | ||||
| MULTIBOOT_MEMORY_BADPARAM  = 0x5 | ||||
| 
 | ||||
| struc MultibootModule | ||||
| { | ||||
| 	.mod_start dd ? | ||||
| 	.mod_end   dd ? | ||||
| 	.cmdline   dd ? | ||||
| 	.pad       dd ? | ||||
| } | ||||
|  | @ -5,7 +5,7 @@ TOPGOALS = all clean install | |||
| .PHONY: $(SUBDIRS) | ||||
| $(SUBDIRS): | ||||
| 	@echo "📁 lib/$@" | ||||
| 	DESTDIR=$(DESTDIR)/lib $(MAKE) -C $@ $(MAKECMDGOALS) | ||||
| 	@DESTDIR=$(DESTDIR)/lib $(MAKE) -C $@ $(MAKECMDGOALS) | ||||
| 
 | ||||
| .PHONY: $(TOPGOALS) | ||||
| $(TOPGOALS): $(SUBDIRS) | ||||
|  |  | |||
|  | @ -17,3 +17,6 @@ coff-ld$(EXEXT): coff-ld.c | |||
| 
 | ||||
| .PHONY: install | ||||
| install: $(TARGET) | ||||
| 
 | ||||
| .PHONY: clean | ||||
| clean: | ||||
|  |  | |||
|  | @ -8,7 +8,7 @@ set default=0 | |||
| menuentry "StupidOS" { | ||||
|    echo "verify system integrity" | ||||
|    hashsum --hash sha256 --check /boot/hashfile --prefix / | ||||
|    multiboot /stpdboot.sys | ||||
|    multiboot /stpdldr.sys | ||||
|    module /vmstupid.sys | ||||
|    boot | ||||
| } | ||||
|  | @ -21,9 +21,9 @@ gen_iso_file() { | |||
| 	echo "$grub_config" > "$2/boot/grub/grub.cfg" | ||||
| 	(cd "$2";  | ||||
| 		sha256sum -b -t "vmstupid.sys" > "boot/hashfile"; | ||||
| 		sha256sum -b -t "stpdboot.sys" >> "boot/hashfile" | ||||
| 		sha256sum -b -t "stpdldr.sys" >> "boot/hashfile" | ||||
| 	) | ||||
| 	grub-file --is-x86-multiboot "$2/stpdboot.sys" || exit 1 | ||||
| 	grub-file --is-x86-multiboot "$2/stpdldr.sys" || exit 1 | ||||
| 
 | ||||
| 	grub-mkrescue -o $1 $2 | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue