mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-10-27 20:58:22 +00:00
Merge pull request #10 from techflashYT/usb-img
scripts,Makefile: add creation of bootable disk images
This commit is contained in:
@@ -3,10 +3,12 @@ builds
|
||||
host-builds
|
||||
host-pkgs
|
||||
iso
|
||||
img
|
||||
jinx
|
||||
pkgs
|
||||
sources
|
||||
astral.iso
|
||||
astral-bootable.img
|
||||
kernel-src/include/limine.h
|
||||
kernel-src/include/printf.h
|
||||
kernel-src/include/build.h
|
||||
|
||||
@@ -1,16 +1,20 @@
|
||||
ISODIR=$(shell pwd)/iso
|
||||
IMGDIR=$(shell pwd)/img
|
||||
ISO=astral.iso
|
||||
IMG=astral-bootable.img
|
||||
DISKNAME=hdd.img
|
||||
LIMINEDIR=$(shell pwd)/host-pkgs/limine/usr/local/share/limine/
|
||||
KERNEL=$(shell pwd)/builds/astral/astral
|
||||
QEMUFLAGS=-M q35 -cdrom $(ISO) -m 4g -smp cpus=1 -no-shutdown -no-reboot -monitor stdio -debugcon file:/dev/stdout -serial file:/dev/stdout -netdev user,id=net0 -device virtio-net,netdev=net0 -object filter-dump,id=f1,netdev=net0,file=netdump.dat
|
||||
QEMUFLAGS=-M q35 -m 4g -smp cpus=1 -no-shutdown -no-reboot -monitor stdio -debugcon file:/dev/stdout -serial file:/dev/stdout -netdev user,id=net0 -device virtio-net,netdev=net0 -object filter-dump,id=f1,netdev=net0,file=netdump.dat
|
||||
QEMUISOFLAGS=-cdrom $(ISO)
|
||||
QEMUDISKFLAGS=-drive file=$(DISKNAME),if=none,id=nvme -device nvme,serial=deadc0ff,drive=nvme -boot order=dc
|
||||
QEMUIMGFLAGS=-drive file=$(IMG),if=none,id=usb -device nec-usb-xhci,id=xhci -device usb-storage,bus=xhci.0,drive=usb,removable=on
|
||||
INITRD=$(shell pwd)/initrds/initrd
|
||||
DISTROTYPE=full
|
||||
|
||||
MINIMALPACKAGES=mlibc bash coreutils init distro-files vim nano mount netd shadow sudo neofetch
|
||||
|
||||
.PHONY: all kernel clean clean-kernel iso initrd full minimal disk
|
||||
.PHONY: all kernel clean clean-kernel iso img initrd full minimal disk
|
||||
|
||||
all: jinx
|
||||
git submodule update --init --recursive
|
||||
@@ -19,9 +23,11 @@ all: jinx
|
||||
make build-$(DISTROTYPE)
|
||||
make $(ISO)
|
||||
@echo
|
||||
@echo "|------------------------------------------------------------------------------------------|"
|
||||
@echo "|To regenerate the initrd, run 'make initrd iso'. To generate a disk image, run 'make disk'|"
|
||||
@echo "|------------------------------------------------------------------------------------------|"
|
||||
@echo "|--------------------------------------------------------------|"
|
||||
@echo "| To regenerate the initrd, run 'make initrd iso'. |"
|
||||
@echo "| To generate a bootable USB/HDD image, run 'make initrd img'. |"
|
||||
@echo "| To generate a disk image, run 'make disk'. |"
|
||||
@echo "|--------------------------------------------------------------|"
|
||||
@echo
|
||||
|
||||
jinx:
|
||||
@@ -29,6 +35,7 @@ jinx:
|
||||
chmod +x jinx
|
||||
|
||||
iso: $(ISO)
|
||||
img: $(IMG)
|
||||
|
||||
$(ISO): limine.conf liminebg.bmp $(KERNEL) $(INITRD)-$(DISTROTYPE)
|
||||
mkdir -p $(ISODIR)
|
||||
@@ -36,6 +43,13 @@ $(ISO): limine.conf liminebg.bmp $(KERNEL) $(INITRD)-$(DISTROTYPE)
|
||||
cp $(KERNEL) liminebg.bmp limine.conf $(LIMINEDIR)/limine-bios.sys $(LIMINEDIR)/limine-bios-cd.bin $(LIMINEDIR)/limine-uefi-cd.bin $(ISODIR)
|
||||
xorriso -as mkisofs -b limine-bios-cd.bin -no-emul-boot -boot-load-size 4 -boot-info-table --efi-boot limine-uefi-cd.bin -efi-boot-part --efi-boot-image --protective-msdos-label $(ISODIR) -o $(ISO)
|
||||
|
||||
$(IMG): limine.conf liminebg.bmp $(KERNEL) $(INITRD)-$(DISTROTYPE)
|
||||
mkdir -p $(IMGDIR)/EFI/BOOT
|
||||
ln -f $(INITRD)-$(DISTROTYPE) $(IMGDIR)/initrd
|
||||
cp $(KERNEL) liminebg.bmp limine.conf $(LIMINEDIR)/limine-bios.sys $(IMGDIR)
|
||||
cp $(LIMINEDIR)/BOOT{IA32,X64}.EFI $(IMGDIR)/EFI/BOOT
|
||||
./genbootimg.sh 1G $(IMG) $(IMGDIR)
|
||||
|
||||
# ------ build targets ------
|
||||
|
||||
build-full:
|
||||
@@ -95,19 +109,28 @@ clean:
|
||||
# ------ run targets ------
|
||||
|
||||
run:
|
||||
qemu-system-x86_64 $(QEMUFLAGS)
|
||||
qemu-system-x86_64 $(QEMUFLAGS) $(QEMUISOFLAGS)
|
||||
|
||||
run-gdb:
|
||||
qemu-system-x86_64 $(QEMUFLAGS) -S -s
|
||||
qemu-system-x86_64 $(QEMUFLAGS) $(QEMUISOFLAGS) -S -s
|
||||
|
||||
run-kvm:
|
||||
qemu-system-x86_64 $(QEMUFLAGS) -enable-kvm -cpu host
|
||||
qemu-system-x86_64 $(QEMUFLAGS) $(QEMUISOFLAGS) -enable-kvm -cpu host
|
||||
|
||||
run-disk:
|
||||
qemu-system-x86_64 $(QEMUFLAGS) $(QEMUDISKFLAGS)
|
||||
qemu-system-x86_64 $(QEMUFLAGS) $(QEMUISOFLAGS) $(QEMUDISKFLAGS)
|
||||
|
||||
run-disk-gdb:
|
||||
qemu-system-x86_64 $(QEMUFLAGS) $(QEMUDISKFLAGS) -S -s
|
||||
qemu-system-x86_64 $(QEMUFLAGS) $(QEMUISOFLAGS) $(QEMUDISKFLAGS) -S -s
|
||||
|
||||
run-disk-kvm:
|
||||
qemu-system-x86_64 $(QEMUFLAGS) $(QEMUDISKFLAGS) -enable-kvm -cpu host
|
||||
qemu-system-x86_64 $(QEMUFLAGS) $(QEMUISOFLAGS) $(QEMUDISKFLAGS) -enable-kvm -cpu host
|
||||
|
||||
run-img:
|
||||
qemu-system-x86_64 $(QEMUFLAGS) $(QEMUIMGFLAGS)
|
||||
|
||||
run-img-gdb:
|
||||
qemu-system-x86_64 $(QEMUFLAGS) $(QEMUIMGFLAGS) -S -s
|
||||
|
||||
run-img-kvm:
|
||||
qemu-system-x86_64 $(QEMUFLAGS) $(QEMUIMGFLAGS) -enable-kvm -cpu host
|
||||
|
||||
Executable
+44
@@ -0,0 +1,44 @@
|
||||
#!/usr/bin/bash
|
||||
|
||||
if [ $# != 3 ]
|
||||
then
|
||||
echo "usage: $0 size diskname"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z $1 ]
|
||||
then
|
||||
echo "please pass a non empty size"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z $2 ]
|
||||
then
|
||||
echo "please pass a non empty disk name"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z $3 ]
|
||||
then
|
||||
echo "please pass a non empty imgdir"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
# most of the below shamelessly stolen from
|
||||
# https://github.com/limine-bootloader/limine-c-template/blob/trunk/GNUmakefile
|
||||
# at commit 7310a9b098731cbd4242ed82f5c9b9c60ae14919
|
||||
|
||||
rm -f "$2"
|
||||
truncate -s "$1" "$2"
|
||||
sgdisk "$2" -n 1:2048 -t 1:ef00
|
||||
host-pkgs/limine/usr/local/bin/limine bios-install "$2"
|
||||
mformat -i "$2@@1M"
|
||||
mmd -i "$2@@1M" ::/EFI ::/EFI/BOOT ::/boot ::/boot/limine
|
||||
|
||||
img="$PWD/$2"
|
||||
|
||||
cd "$3"
|
||||
#find . -type d -exec mmd -i "$img@@1M" ::{} \;
|
||||
# FIXME ^^^ breaks, but there's no dirs yet, so it doesn't matter :P
|
||||
find . -type f -exec mcopy -i "$img@@1M" {} ::{} \;
|
||||
Reference in New Issue
Block a user