From 087825fa8b09b6c31f6a41086855354728efd378 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 7 Sep 2022 08:28:12 -0600 Subject: [PATCH] Refactor of disk image handling --- Makefile | 13 +++++------ bochs.i686 | 2 +- bochs.x86_64 | 2 +- mk/bochs.mk | 2 +- mk/disk.mk | 18 ++++----------- mk/qemu.mk | 57 ++++++++++++++++++++++++++---------------------- mk/virtualbox.mk | 2 +- 7 files changed, 44 insertions(+), 52 deletions(-) diff --git a/Makefile b/Makefile index e22fe84..12f575c 100644 --- a/Makefile +++ b/Makefile @@ -4,13 +4,11 @@ include mk/config.mk # Dependencies include mk/depends.mk -all: build/harddrive.bin +all: build/harddrive.img coreboot: build/coreboot.elf -live: build/livedisk.bin - -iso: build/livedisk.iso +live: build/livedisk.iso rebuild: touch $(FILESYSTEM_CONFIG) @@ -62,15 +60,14 @@ include mk/bochs.mk include mk/virtualbox.mk # CI image target +IMG_TAG?=$(shell git describe --tags) ci-img: FORCE $(MAKE) INSTALLER_FLAGS= \ - build/harddrive.bin.gz \ - build/livedisk.bin.gz \ + build/harddrive.img.gz \ build/livedisk.iso.gz rm -rf build/img mkdir -p build/img - cp "build/harddrive.bin.gz" "build/img/redox_$(IMG_TAG)_harddrive.bin.gz" - cp "build/livedisk.bin.gz" "build/img/redox_$(IMG_TAG)_livedisk.bin.gz" + cp "build/harddrive.img.gz" "build/img/redox_$(IMG_TAG)_harddrive.img.gz" cp "build/livedisk.iso.gz" "build/img/redox_$(IMG_TAG)_livedisk.iso.gz" cd build/img && sha256sum -b * > SHA256SUM diff --git a/bochs.i686 b/bochs.i686 index 8f4d5a1..d5b8333 100644 --- a/bochs.i686 +++ b/bochs.i686 @@ -1,6 +1,6 @@ megs: 1024 boot: disk -ata0-master: type=disk, path="build/harddrive.bin", mode=flat +ata0-master: type=disk, path="build/harddrive.img", mode=flat #com1: enabled=1, mode=file, dev=build/serial.log cpu: model=p2_klamath diff --git a/bochs.x86_64 b/bochs.x86_64 index ec6fd4a..f318dec 100644 --- a/bochs.x86_64 +++ b/bochs.x86_64 @@ -1,6 +1,6 @@ megs: 1024 boot: disk -ata0-master: type=disk, path="build/harddrive.bin", mode=flat +ata0-master: type=disk, path="build/harddrive.img", mode=flat #com1: enabled=1, mode=file, dev=build/serial.log #cpu: model=corei7_haswell_4770 diff --git a/mk/bochs.mk b/mk/bochs.mk index 964dba5..0a8bd1d 100644 --- a/mk/bochs.mk +++ b/mk/bochs.mk @@ -1,2 +1,2 @@ -bochs: build/harddrive.bin +bochs: build/harddrive.img bochs -f bochs.$(ARCH) diff --git a/mk/disk.mk b/mk/disk.mk index 3eb68f7..e11c72c 100644 --- a/mk/disk.mk +++ b/mk/disk.mk @@ -1,4 +1,4 @@ -build/harddrive.bin: $(FILESYSTEM_CONFIG) +build/harddrive.img: $(FILESYSTEM_CONFIG) $(HOST_CARGO) build --manifest-path installer/Cargo.toml --release mkdir -p build rm -rf $@ $@.partial @@ -6,7 +6,7 @@ build/harddrive.bin: $(FILESYSTEM_CONFIG) $(INSTALLER) -c $(FILESYSTEM_CONFIG) $@.partial mv $@.partial $@ -build/livedisk.bin: $(FILESYSTEM_CONFIG) +build/livedisk.iso: $(FILESYSTEM_CONFIG) $(HOST_CARGO) build --manifest-path installer/Cargo.toml --release mkdir -p build rm -rf $@ $@.partial @@ -14,27 +14,17 @@ build/livedisk.bin: $(FILESYSTEM_CONFIG) $(INSTALLER) -c $(FILESYSTEM_CONFIG) --live $@.partial mv $@.partial $@ -build/livedisk.iso: build/livedisk.bin - rm -rf build/iso/ $@.partial - mkdir -p build/iso/ - cp -v $< build/iso/livedisk.bin - genisoimage -o $@.partial \ - -hard-disk-boot \ - -b livedisk.bin \ - build/iso/ - mv $@.partial $@ - mount: FORCE mkdir -p build/filesystem/ $(HOST_CARGO) build --manifest-path redoxfs/Cargo.toml --release --bin redoxfs - redoxfs/target/release/redoxfs build/harddrive.bin build/filesystem/ + redoxfs/target/release/redoxfs build/harddrive.img build/filesystem/ sleep 2 pgrep redoxfs mount_extra: FORCE mkdir -p build/filesystem/ $(HOST_CARGO) build --manifest-path redoxfs/Cargo.toml --release --bin redoxfs - redoxfs/target/release/redoxfs build/extra.bin build/filesystem/ + redoxfs/target/release/redoxfs build/extra.img build/filesystem/ sleep 2 pgrep redoxfs diff --git a/mk/qemu.mk b/mk/qemu.mk index a1197ba..c6307d5 100644 --- a/mk/qemu.mk +++ b/mk/qemu.mk @@ -42,9 +42,9 @@ else endif ifeq ($(live),yes) - HARDDRIVE=build/livedisk.bin + DISK=build/livedisk.iso else - HARDDRIVE=build/harddrive.bin + DISK=build/harddrive.img endif ifeq ($(serial),no) @@ -102,50 +102,55 @@ ifeq ($(UNAME),Linux) endif ifeq ($(UNAME),Linux) -build/extra.bin: +build/extra.img: fallocate --posix --length 1G $@ else -build/extra.bin: +build/extra.img: truncate -s 1g $@ endif build/firmware.rom: cp $(QEMU_EFI) $@ -qemu: $(HARDDRIVE) $(FIRMWARE) build/extra.bin +qemu: $(DISK) $(FIRMWARE) build/extra.img $(QEMU) $(QEMUFLAGS) \ - -drive file=$(HARDDRIVE),format=raw \ - -drive file=build/extra.bin,format=raw + -drive file=$(DISK),format=raw \ + -drive file=build/extra.img,format=raw -qemu_no_build: $(FIRMWARE) build/extra.bin +qemu_no_build: $(FIRMWARE) build/extra.img $(QEMU) $(QEMUFLAGS) \ - -drive file=$(HARDDRIVE),format=raw \ - -drive file=build/extra.bin,format=raw + -drive file=$(DISK),format=raw \ + -drive file=build/extra.img,format=raw -qemu_nvme: $(HARDDRIVE) $(FIRMWARE) build/extra.bin +qemu_cdrom: $(DISK) $(FIRMWARE) build/extra.img $(QEMU) $(QEMUFLAGS) \ - -drive file=$(HARDDRIVE),format=raw,if=none,id=drv0 -device nvme,drive=drv0,serial=NVME_SERIAL \ - -drive file=build/extra.bin,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA + -boot d -cdrom $(DISK) \ + -drive file=build/extra.img,format=raw -qemu_nvme_no_build: $(FIRMWARE) build/extra.bin +qemu_cdrom_no_build: $(FIRMWARE) build/extra.img $(QEMU) $(QEMUFLAGS) \ - -drive file=$(HARDDRIVE),format=raw,if=none,id=drv0 -device nvme,drive=drv0,serial=NVME_SERIAL \ - -drive file=build/extra.bin,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA + -boot d -cdrom $(DISK) \ + -drive file=build/extra.img,format=raw -qemu_iso: build/livedisk.iso $(FIRMWARE) build/extra.bin +qemu_nvme: $(DISK) $(FIRMWARE) build/extra.img $(QEMU) $(QEMUFLAGS) \ - -boot d -cdrom build/livedisk.iso \ - -drive file=build/extra.bin,format=raw + -drive file=$(DISK),format=raw,if=none,id=drv0 -device nvme,drive=drv0,serial=NVME_SERIAL \ + -drive file=build/extra.img,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA -qemu_iso_no_build: $(FIRMWARE) build/extra.bin +qemu_nvme_no_build: $(FIRMWARE) build/extra.img $(QEMU) $(QEMUFLAGS) \ - -boot d -cdrom build/livedisk.iso \ - -drive file=build/extra.bin,format=raw + -drive file=$(DISK),format=raw,if=none,id=drv0 -device nvme,drive=drv0,serial=NVME_SERIAL \ + -drive file=build/extra.img,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA -qemu_extra: $(FIRMWARE) build/extra.bin +qemu_usb: $(DISK) $(FIRMWARE) $(QEMU) $(QEMUFLAGS) \ - -drive file=build/extra.bin,format=raw + -drive if=none,id=usbstick,format=raw,file=$(DISK) \ + -device usb-storage,drive=usbstick -qemu_nvme_extra: $(FIRMWARE) build/extra.bin +qemu_extra: $(FIRMWARE) build/extra.img $(QEMU) $(QEMUFLAGS) \ - -drive file=build/extra.bin,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA + -drive file=build/extra.img,format=raw + +qemu_nvme_extra: $(FIRMWARE) build/extra.img + $(QEMU) $(QEMUFLAGS) \ + -drive file=build/extra.img,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA diff --git a/mk/virtualbox.mk b/mk/virtualbox.mk index 7483aac..e718629 100644 --- a/mk/virtualbox.mk +++ b/mk/virtualbox.mk @@ -1,4 +1,4 @@ -virtualbox: build/harddrive.bin +virtualbox: build/harddrive.img echo "Delete VM" -$(VBM) unregistervm Redox --delete; \ if [ $$? -ne 0 ]; \