From a4a4f588d4c0aeb5e1d580196f02c54e75197683 Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Sun, 25 Jun 2023 21:59:49 -0400 Subject: Store large files in subvolumes These files should never be mixed into the same directories as source code, since source code should be backed up by filesystem snapshot, and these should not. This change includes file renames in this repository and in two of its submodules. --- Makefile | 37 ++++++++++++++++--------------------- fsmgr | 2 +- import-grub-bootx64-efi | 2 +- partitions/Makefile | 33 ++++++++++++++++++++------------- partitions/part5.conf | 2 +- partitions/part6.conf | 2 +- partitions/part7.conf | 2 +- partitions/part8.conf | 2 +- src/partvi | 4 ++-- 9 files changed, 44 insertions(+), 42 deletions(-) diff --git a/Makefile b/Makefile index f7b88c7..c1dfb8a 100644 --- a/Makefile +++ b/Makefile @@ -91,7 +91,7 @@ SUDO_MAKE = sudo MAKEFLAGS="$$MAKEFLAGS" $(MAKE) .PHONY: install-configuration install-bootserver install-boot-server start-bootserver install-boot-server: install-bootserver -install-bootserver: | rootfs/samizdat.btrfs +install-bootserver: | $(rootfs) exit 1; sudo initrd.sh $(SUDO_MAKE) instdir=/ real-install-bootserver start-bootserver @@ -138,30 +138,24 @@ update-submodules: install-submodules: cmd=install install-submodules: update-submodules $(INSTALL_SUBMODULES) -GOLD = -ifdef GOLD -rootfs = samizdat-gold.seed.btrfs -patchfs = -else -rootfs = samizdat.seed.btrfs +rootfs = rootfs/_filesystem/samizdat.seed.btrfs patchfs = $(patsubst %.seed.btrfs,%.patch.btrfs,$(rootfs)) -endif -rootfs_verity = $(addprefix rootfs/,$(addsuffix .verity,$(rootfs) $(patchfs))) +rootfs_verity = $(addsuffix .verity,$(rootfs) $(patchfs)) .PHONY: rootfs rootfs-deps rootfs-deps: [ -e install-submodules-stamp ] || make install-submodules-stamp [ -e install-stamp ] || $(SUDO_MAKE) install-stamp -btrfs_images = $(addprefix rootfs/, $(rootfs) $(patchfs)) +btrfs_images = $(rootfs) $(patchfs) rootfs-clean: make -C rootfs clean all rootfs: rootfs-deps $(btrfs_images) $(rootfs_verity) sudo mkdir -p /srv/nbd - sudo ln -sf "$$PWD"/rootfs/$(rootfs) /srv/nbd/samizdat.btrfs + sudo ln -sf "$$PWD"/$(rootfs) /srv/nbd/samizdat.btrfs ifneq (,$(patchfs)) - sudo ln -sf "$$PWD"/rootfs/$(patchfs) /srv/nbd/samizdat.patch.btrfs + sudo ln -sf "$$PWD"/$(patchfs) /srv/nbd/samizdat.patch.btrfs endif FORCE: @@ -170,12 +164,12 @@ $(btrfs_images): FORCE boot: rootfs sudo ./src/mkinitramfs-samizdat - sudo ROOTFS=rootfs/$(rootfs) ./src/parted-usb.sh + sudo ROOTFS=$(rootfs) ./src/parted-usb.sh fastboot: rootfs sudo qemu.sh -samizdat.netinst.iso: | rootfs/samizdat.btrfs +samizdat.netinst.iso: | $(rootfs) exit 1; sudo initrd.sh sudo xorriso-usb.sh $(reuse_child) --bootloader --out $@ @@ -207,7 +201,7 @@ verity_root_hash = $(shell sed -ne 's/^Root hash:[ \t]*//p' $<) root_hash = $(shell sed -ne 's/^Root hash: *//p' < $<.log) -veritymount: rootfs/samizdat.seed.btrfs.verity.log +veritymount: $(rootfs).verity.log @sudo veritysetup remove samizverity >/dev/null 2>&1 || true sudo veritysetup create samizverity $(basename $(basename $<)) \ $(basename $<) \ @@ -227,8 +221,7 @@ apt = $(shell which apt || which apt-get) apt-get-update-stamp: @if $(stale); then set -x; sudo $(apt) update && touch $@; fi -rootfs/seed.iso: $(addprefix rootfs/samizdat.seed.btrf, s \ - $(if $(VERITY), s.verity s.verity.log)) +rootfs/seed.iso: $(rootfs) $(if $(VERITY),$(addprefix $(rootfs),.verity .verity.log)) rm -f $@~tmp touch $@~tmp fallocate -n -l 10G $@~tmp @@ -287,9 +280,11 @@ upgrade-key: upgrade key .PHONY: usb key emu testinitrdkey testinitrd total-destroy persist -persist: | partitions/persist.img -partitions/persist.img: - make -C partitions $(notdir $@) +PERSIST_FILE = partitions/_liveboot/persist.img + +persist: | $(PERSIST_FILE) +$(PERSIST_FILE): + $(MAKE) -C partitions $(patsubst partitions/%,%,$@) usb emu efi: initrd rootfs key keymu emu-key: initrd @@ -297,7 +292,7 @@ cleanmu: rootfs-clean total-destroy emu mu: up cleanmu usb emu key keymu emu-key total-destroy efi: - make -C partitions clean $@ + $(MAKE) -C partitions clean $@ testinitrdkey: keymu testinitrd: emu diff --git a/fsmgr b/fsmgr index 041fde0..60f8cbc 160000 --- a/fsmgr +++ b/fsmgr @@ -1 +1 @@ -Subproject commit 041fde012385cd83876573edd97e30d25f4fb893 +Subproject commit 60f8cbcdd073854e6ea804b3129010dffbf0cdef diff --git a/import-grub-bootx64-efi b/import-grub-bootx64-efi index 1dcb942..2d4e384 160000 --- a/import-grub-bootx64-efi +++ b/import-grub-bootx64-efi @@ -1 +1 @@ -Subproject commit 1dcb9429626603052fe4d307d7deb29c7182f1da +Subproject commit 2d4e384597040b63b8bc34b8db32a9c4e0f39afc diff --git a/partitions/Makefile b/partitions/Makefile index 1007a5c..91a60d9 100644 --- a/partitions/Makefile +++ b/partitions/Makefile @@ -1,29 +1,36 @@ .PHONY: all clean -all: whole.img +whole = _build/whole.img +key = _build/key.img + +all: $(whole) stage0_efi_file = ../import-grub-bootx64-efi/3/BOOTX64.EFI $(stage0_efi_file): make -C ../import-grub-bootx64-efi ver=3 -whole.img: $(stage0_efi_file) +$(whole): $(stage0_efi_file) partvi -key.img: $(stage0_efi_file) +$(key): $(stage0_efi_file) partvi key +_liveboot: + btrfs subvolume create $@ + PERSIST_SIZE=20G -persist.img: +PERSIST_FILE=_liveboot/persist.img +$(PERSIST_FILE): | _liveboot [ ! -e $@ ] fallocate -l "$(PERSIST_SIZE)" $@ truncate -s 0 $@ truncate -s "$(PERSIST_SIZE)" $@ -persist := $(shell [ -e persist.img ] && printf %s '-drive file=persist.img,media=disk,driver=raw' || true) +optional_persist_disk != [ ! -e $(PERSIST_FILE) ] || printf %s '-drive file=$(PERSIST_FILE),media=disk,driver=raw' .PHONY: usb emu key emu-key keymu -usb: whole.img +usb: $(whole) usb=$$(usb) && sudo dd status=progress if="$<" of="$$usb" # QEMU_DISPLAY_OPTIONS = -nographic @@ -34,16 +41,16 @@ QEMU_OPTIONS = $(QEMU_BIOS_OPTIONS) $(QEMU_DISPLAY_OPTIONS) define emu NO_AT_BRIDGE=1 qemu-system-x86_64 ${QEMU_OPTIONS} -m 800 -enable-kvm -boot c \ -drive file=$(1),media=disk,driver=raw \ - $(persist) + $(optional_persist_disk) endef -emu: whole.img +emu: $(whole) $(call emu,$<) -emu-key keymu: key.img +emu-key keymu: $(key) $(call emu,$<) -key: key.img +key: $(key) usb=$$(usb) && \ sudo dd status=progress bs=1048576 if="$<" of="$$usb" && \ sudo $(call emu,"$$usb") @@ -56,9 +63,9 @@ efi-ventoy: ventoy-efi-example.img $(call emu,$<) clean: - rm -rf _build whole.img key.img + rm -rf _build .PHONY: total-destroy total-destroy: clean - rm -f persist.img - $(MAKE) persist.img + rm -f $(PERSIST_FILE) + $(MAKE) $(PERSIST_FILE) diff --git a/partitions/part5.conf b/partitions/part5.conf index 08e4196..25d1fdb 100644 --- a/partitions/part5.conf +++ b/partitions/part5.conf @@ -1,3 +1,3 @@ name=samizdat-root-seed type=dm-verity-data -data_path=../rootfs/samizdat.seed.btrfs +data_path=../rootfs/_filesystem/samizdat.seed.btrfs diff --git a/partitions/part6.conf b/partitions/part6.conf index 0075c91..d3f7515 100644 --- a/partitions/part6.conf +++ b/partitions/part6.conf @@ -1,3 +1,3 @@ name=samizdat-root-seed-verity type=dm-verity-hashes -data_path=../rootfs/samizdat.seed.btrfs +data_path=../rootfs/_filesystem/samizdat.seed.btrfs diff --git a/partitions/part7.conf b/partitions/part7.conf index 7a77685..aaeee4e 100644 --- a/partitions/part7.conf +++ b/partitions/part7.conf @@ -1,3 +1,3 @@ name=samizdat-rootfs type=dm-verity-data -data_path=../rootfs/samizdat.patch.btrfs +data_path=../rootfs/_filesystem/samizdat.patch.btrfs diff --git a/partitions/part8.conf b/partitions/part8.conf index 8298fd3..9dc22fe 100644 --- a/partitions/part8.conf +++ b/partitions/part8.conf @@ -1,3 +1,3 @@ name=samizdat-root-patch-verity type=dm-verity-hashes -data_path=../rootfs/samizdat.patch.btrfs +data_path=../rootfs/_filesystem/samizdat.patch.btrfs diff --git a/src/partvi b/src/partvi index e34eef6..673b141 100755 --- a/src/partvi +++ b/src/partvi @@ -330,9 +330,9 @@ mkdir -p "$builddir" if [ "$SKIP_ROOTFS_COPY" ] then - target=key.img + target=$builddir/key.img else - target=whole.img + target=$builddir/whole.img fi -- cgit v1.2.3