Build bootable ISO image

This commit is contained in:
Alex Kotov 2022-11-27 15:54:45 +04:00
parent 22d983f1fe
commit d565cebb97
Signed by: kotovalexarian
GPG Key ID: 553C0EBBEB5D5F08
5 changed files with 40 additions and 11 deletions

3
.gitignore vendored
View File

@ -1,4 +1,7 @@
/build_config.rb.lock
/image.iso
/dest/*
!/dest/.keep
/rootfs/boot/mrubyvisor.multiboot2

View File

@ -1,4 +1,4 @@
.PHONY: clean
.PHONY: $(MRUBYVISOR)
CCPREFIX = /home/kotovalexarian/repos/global/tailix/cross/root/bin/x86_64-elf-
@ -6,27 +6,48 @@ AR = $(CCPREFIX)ar
AS = $(CCPREFIX)as
CC = $(CCPREFIX)gcc
LD = $(CCPREFIX)ld
RAKE = rake
RANLIB = $(CCPREFIX)ranlib
RAKE = rake
ABS_REPO = $(shell pwd)
ROOT = $(shell pwd)
DEST = $(ROOT)/dest
MRUBY_CONFIG = $(ROOT)/build_config.rb
IMAGE = image.iso
ROOTFS = rootfs
DEST = dest
GRUBCFG = $(ROOTFS)/boot/grub/grub.cfg
LIBKERNAUX = $(DEST)/lib/libkernaux.a
LIBMRUBY = $(DEST)/lib/libmruby.a
MRUBYVISOR = $(ROOTFS)/boot/mrubyvisor.multiboot2
MRUBY_NAME = mrubyvisor
clean:
rm -rf $(DEST)/*
all: runc
dest/lib/libkernaux.a:
runc: $(IMAGE)
qemu-system-x86_64 -cdrom $< -serial stdio -display none
runw: $(IMAGE)
qemu-system-x86_64 -cdrom $< -serial stdio
clean:
rm -rf $(MRUBYVISOR) $(DEST)/*
$(IMAGE): $(GRUBCFG) $(MRUBYVISOR)
grub-mkrescue $(ROOTFS) -o $@
$(MRUBYVISOR): $(LIBKERNAUX) $(LIBMRUBY)
make -C src mrubyvisor.multiboot2
cp src/mrubyvisor.multiboot2 $@
$(LIBKERNAUX):
cd vendor/libkernaux && ./autogen.sh
cd vendor/libkernaux && ./configure --host='x86_64-elf' --prefix='$(DEST)' --enable-freestanding --with-drivers --with-libc AR='$(AR)' AS='$(AS)' CC='$(CC)' LD='$(LD)' RANLIB='$(RANLIB)'
cd vendor/libkernaux && ./configure --host='x86_64-elf' --prefix='$(ABS_REPO)/$(DEST)' --enable-freestanding --with-drivers --with-libc AR='$(AR)' AS='$(AS)' CC='$(CC)' LD='$(LD)' RANLIB='$(RANLIB)'
cd vendor/libkernaux && make
cd vendor/libkernaux && make install
dest/lib/libmruby.a: dest/lib/libkernaux.a
cd vendor/mruby && $(RAKE) MRUBY_CONFIG='$(MRUBY_CONFIG)' CROSS_AR='$(AR)' CROSS_CC='$(CC)' CROSS_LD='$(LD)'
$(LIBMRUBY): $(LIBKERNAUX)
cd vendor/mruby && $(RAKE) MRUBY_CONFIG='$(ABS_REPO)/build_config.rb' CROSS_AR='$(AR)' CROSS_CC='$(CC)' CROSS_LD='$(LD)'
mkdir -p $(DEST)/include $(DEST)/lib
cp vendor/mruby/build/$(MRUBY_NAME)/lib/libmruby.a $(DEST)/lib
cp -r vendor/mruby/include/* $(DEST)/include

View File

@ -0,0 +1,5 @@
set timeout=0
menuentry "mrubyvisor" {
multiboot2 /boot/mrubyvisor.multiboot2
}

0
src/Makefile Normal file
View File

View File