diff --git a/Makefile b/Makefile index dc0ec390..f50c24a9 100644 --- a/Makefile +++ b/Makefile @@ -73,10 +73,10 @@ include build-aux/dirs.mak BUILD_NAME:=sortix-$(RELEASE)-$(MACHINE) -LIVE_INITRD:=$(SORTIX_BUILDS_DIR)/$(BUILD_NAME).live.initrd -OVERLAY_INITRD:=$(SORTIX_BUILDS_DIR)/$(BUILD_NAME).overlay.initrd -SRC_INITRD:=$(SORTIX_BUILDS_DIR)/$(BUILD_NAME).src.initrd -SYSTEM_INITRD:=$(SORTIX_BUILDS_DIR)/$(BUILD_NAME).system.initrd +LIVE_INITRD:=$(SORTIX_BUILDS_DIR)/$(BUILD_NAME).live.tar +OVERLAY_INITRD:=$(SORTIX_BUILDS_DIR)/$(BUILD_NAME).overlay.tar +SRC_INITRD:=$(SORTIX_BUILDS_DIR)/$(BUILD_NAME).src.tar +SYSTEM_INITRD:=$(SORTIX_BUILDS_DIR)/$(BUILD_NAME).system.tar .PHONY: all all: sysroot @@ -455,7 +455,6 @@ $(LIVE_INITRD): sysroot echo "include /etc/default/passwd.d/*" >> $(LIVE_INITRD).d/etc/passwd echo "root::0:root" > $(LIVE_INITRD).d/etc/group echo "include /etc/default/group.d/*" >> $(LIVE_INITRD).d/etc/group - mkdir -p $(LIVE_INITRD).d/home mkdir -p $(LIVE_INITRD).d/root -m 700 cp -RT "$(SYSROOT)/etc/skel" $(LIVE_INITRD).d/root (echo "You can view the documentation for new users by typing:" && \ @@ -466,19 +465,23 @@ $(LIVE_INITRD): sysroot echo && \ echo " man installation") > $(LIVE_INITRD).d/root/welcome tix-collection $(LIVE_INITRD).d create --platform=$(HOST) --prefix= --generation=2 - mkinitrd --format=sortix-initrd-2 $(LIVE_INITRD).d -o $(LIVE_INITRD) + LC_ALL=C ls -A $(LIVE_INITRD).d | \ + tar -cf $(LIVE_INITRD) -C $(LIVE_INITRD).d --numeric-owner --owner=0 --group=0 -T - rm -rf $(LIVE_INITRD).d .PHONY: $(OVERLAY_INITRD) $(OVERLAY_INITRD): sysroot test ! -d "$(SYSROOT_OVERLAY)" || \ - mkinitrd --format=sortix-initrd-2 "$(SYSROOT_OVERLAY)" -o $(OVERLAY_INITRD) + LC_ALL=C ls -A "$(SYSROOT_OVERLAY)" | \ + tar -cf $(OVERLAY_INITRD) -C "$(SYSROOT_OVERLAY)" --numeric-owner --owner=0 --group=0 -T - $(SRC_INITRD): sysroot - mkinitrd --format=sortix-initrd-2 --manifest="$(SYSROOT)/tix/manifest/src" "$(SYSROOT)" -o $(SRC_INITRD) + sed -E 's,^/,,' "$(SYSROOT)/tix/manifest/src" | \ + tar -cf $(SRC_INITRD) -C "$(SYSROOT)" --numeric-owner --owner=0 --group=0 --no-recursion -T - tix/manifest/src $(SYSTEM_INITRD): sysroot - mkinitrd --format=sortix-initrd-2 --manifest="$(SYSROOT)/tix/manifest/system" "$(SYSROOT)" -o $(SYSTEM_INITRD) + sed -E 's,^/,,' "$(SYSROOT)/tix/manifest/system" | \ + tar -cf $(SYSTEM_INITRD) -C "$(SYSROOT)" --numeric-owner --owner=0 --group=0 --no-recursion -T - tix/manifest/system # Packaging @@ -499,29 +502,29 @@ $(SORTIX_BUILDS_DIR)/$(BUILD_NAME).iso: sysroot $(LIVE_INITRD) $(OVERLAY_INITRD) build-aux/iso-repository.sh $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/repository ifeq ($(SORTIX_ISO_COMPRESSION),xz) xz -c "$(SYSROOT)/boot/sortix.bin" > $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/sortix.bin.xz - xz -c $(LIVE_INITRD) > $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/live.initrd.xz + xz -c $(LIVE_INITRD) > $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/live.tar.xz test ! -e "$(OVERLAY_INITRD)" || \ - xz -c $(OVERLAY_INITRD) > $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/overlay.initrd.xz - xz -c $(SRC_INITRD) > $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/src.initrd.xz - xz -c $(SYSTEM_INITRD) > $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/system.initrd.xz + xz -c $(OVERLAY_INITRD) > $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/overlay.tar.xz + xz -c $(SRC_INITRD) > $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/src.tar.xz + xz -c $(SYSTEM_INITRD) > $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/system.tar.xz build-aux/iso-grub-cfg.sh --platform $(HOST) --version $(VERSION) $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso grub-mkrescue --compress=xz -o $(SORTIX_BUILDS_DIR)/$(BUILD_NAME).iso $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso else ifeq ($(SORTIX_ISO_COMPRESSION),gzip) gzip -c "$(SYSROOT)/boot/sortix.bin" > $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/sortix.bin.gz - gzip -c $(LIVE_INITRD) > $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/live.initrd.gz + gzip -c $(LIVE_INITRD) > $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/live.tar.gz test ! -e "$(OVERLAY_INITRD)" || \ - gzip -c $(OVERLAY_INITRD) > $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/overlay.initrd.gz - gzip -c $(SRC_INITRD) > $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/src.initrd.gz - gzip -c $(SYSTEM_INITRD) > $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/system.initrd.gz + gzip -c $(OVERLAY_INITRD) > $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/overlay.tar.gz + gzip -c $(SRC_INITRD) > $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/src.tar.gz + gzip -c $(SYSTEM_INITRD) > $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/system.tar.gz build-aux/iso-grub-cfg.sh --platform $(HOST) --version $(VERSION) $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso grub-mkrescue --compress=gz -o $(SORTIX_BUILDS_DIR)/$(BUILD_NAME).iso $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso else # none cp "$(SYSROOT)/boot/sortix.bin" $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/sortix.bin - cp $(LIVE_INITRD) $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/live.initrd + cp $(LIVE_INITRD) $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/live.tar test ! -e "$(OVERLAY_INITRD)" || \ - cp $(OVERLAY_INITRD) $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/overlay.initrd - cp $(SRC_INITRD) $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/src.initrd - cp $(SYSTEM_INITRD) $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/system.initrd + cp $(OVERLAY_INITRD) $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/overlay.tar + cp $(SRC_INITRD) $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/src.tar + cp $(SYSTEM_INITRD) $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/system.tar build-aux/iso-grub-cfg.sh --platform $(HOST) --version $(VERSION) $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso grub-mkrescue -o $(SORTIX_BUILDS_DIR)/$(BUILD_NAME).iso $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso endif @@ -555,25 +558,25 @@ $(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot: $(SORTIX_RELEASE_DIR)/$(RELEAS $(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot/sortix.bin.xz: sysroot $(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot xz -c "$(SYSROOT)/boot/sortix.bin" > $@ -$(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot/live.initrd.xz: $(LIVE_INITRD) $(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot +$(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot/live.tar.xz: $(LIVE_INITRD) $(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot xz -c $< > $@ -$(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot/overlay.initrd.xz: $(OVERLAY_INITRD) $(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot +$(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot/overlay.tar.xz: $(OVERLAY_INITRD) $(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot test ! -e $< || xz -c $< > $@ -$(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot/src.initrd.xz: $(SRC_INITRD) $(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot +$(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot/src.tar.xz: $(SRC_INITRD) $(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot xz -c $< > $@ -$(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot/system.initrd.xz: $(SYSTEM_INITRD) $(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot +$(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot/system.tar.xz: $(SYSTEM_INITRD) $(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot xz -c $< > $@ .PHONY: release-boot release-boot: \ $(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot/sortix.bin.xz \ - $(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot/live.initrd.xz \ - $(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot/overlay.initrd.xz \ - $(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot/src.initrd.xz \ - $(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot/system.initrd.xz \ + $(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot/live.tar.xz \ + $(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot/overlay.tar.xz \ + $(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot/src.tar.xz \ + $(SORTIX_RELEASE_DIR)/$(RELEASE)/$(MACHINE)/boot/system.tar.xz \ .PHONY: release-iso release-iso: $(SORTIX_RELEASE_DIR)/$(RELEASE)/builds/$(BUILD_NAME).iso diff --git a/build-aux/iso-grub-cfg.sh b/build-aux/iso-grub-cfg.sh index 66637e3e..03c0b59c 100755 --- a/build-aux/iso-grub-cfg.sh +++ b/build-aux/iso-grub-cfg.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright (c) 2018, 2022 Jonas 'Sortie' Termansen. +# Copyright (c) 2018, 2022, 2023 Jonas 'Sortie' Termansen. # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -111,10 +111,10 @@ isinset() { cd "$directory" kernel=$(maybe_compressed boot/sortix.bin) -live_initrd=$(maybe_compressed boot/live.initrd) -overlay_initrd=$(maybe_compressed boot/overlay.initrd) -src_initrd=$(maybe_compressed boot/src.initrd) -system_initrd=$(maybe_compressed boot/system.initrd) +live_initrd=$(maybe_compressed boot/live.tar) +overlay_initrd=$(maybe_compressed boot/overlay.tar) +src_initrd=$(maybe_compressed boot/src.tar) +system_initrd=$(maybe_compressed boot/system.tar) ports=$(ls repository | grep -E '\.tix\.tar\.xz$' | sed -E 's/\.tix\.tar\.xz$//') diff --git a/kernel/.gitignore b/kernel/.gitignore index d0c005ae..502f4eaf 100644 --- a/kernel/.gitignore +++ b/kernel/.gitignore @@ -4,7 +4,6 @@ *.iso *.so *.a -*.initrd *.out kb/default-kblayout kb/default-kblayout.h diff --git a/share/man/man7/initrd.7 b/share/man/man7/initrd.7 index df919e74..477f6d5d 100644 --- a/share/man/man7/initrd.7 +++ b/share/man/man7/initrd.7 @@ -8,7 +8,9 @@ .Pa /boot/sortix.initrd .Sh DESCRIPTION .Pa /boot/sortix.initrd -is an archive of a minimal userland loaded by the bootloader and passed to the +is a +.Xr tar 1 +archive of a minimal userland loaded by the bootloader and passed to the .Xr kernel 7 that extracts it into the initial kernel memory root filesystem. The kernel invokes the @@ -16,20 +18,13 @@ The kernel invokes the extracted from the initrd as .Pa /sbin/init . .Pp -The initrd is in the custom format made by -.Xr mkinitrd 8 -and can be viewed with -.Xr initrdfs 8 . -.Pp The .Xr update-initrd 8 program creates a minimal initrd that locates the root filesystem and chain boots it as described in .Xr init 8 . .Sh SEE ALSO -.Xr initrd 7 , +.Xr tar 1 , .Xr kernel 7 , .Xr init 8 , -.Xr initrdfs 8 , -.Xr mkinitrd 8 , .Xr update-initrd 8 diff --git a/share/man/man7/release-iso-bootconfig.7 b/share/man/man7/release-iso-bootconfig.7 index 2900236b..eeea2baf 100644 --- a/share/man/man7/release-iso-bootconfig.7 +++ b/share/man/man7/release-iso-bootconfig.7 @@ -384,13 +384,13 @@ as a multiboot module with the command line. .Pp Load -.Pa /boot/system.initrd.xz , -.Pa /boot/src.initrd.xz +.Pa /boot/system.tar.xz , +.Pa /boot/src.tar.xz (if .Sy $enable_src ) , -.Pa /boot/live.initrd.xz , +.Pa /boot/live.tar.xz , and -.Pa /boot/overlay.initrd.xz +.Pa /boot/overlay.tar.xz (only if a .Pa sysroot-overlay directory existed when making the release .iso) diff --git a/update-initrd/update-initrd b/update-initrd/update-initrd index 9823b884..0d767eec 100755 --- a/update-initrd/update-initrd +++ b/update-initrd/update-initrd @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright (c) 2015, 2016, 2017 Jonas 'Sortie' Termansen. +# Copyright (c) 2015, 2016, 2017, 2023 Jonas 'Sortie' Termansen. # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -14,7 +14,7 @@ # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # # update-initrd -# Generate a mkinitrd that locates and chain boots the real root filesystem. +# Generate an initrd(7) that locates and chain boots the real root filesystem. set -e @@ -86,4 +86,6 @@ require chain exit-code EOF fi mkdir -p "$sysroot/boot" -mkinitrd --format=sortix-initrd-2 "$tmp" -o "$sysroot/boot/sortix.initrd" > /dev/null +LC_AL=C ls -A "$tmp" | +tar -C "$tmp" -cf "$sysroot/boot/sortix.initrd" \ + --numeric-owner --owner=0 --group=0 -T - diff --git a/update-initrd/update-initrd.8 b/update-initrd/update-initrd.8 index 1900e58b..bc954ef0 100644 --- a/update-initrd/update-initrd.8 +++ b/update-initrd/update-initrd.8 @@ -63,12 +63,11 @@ directory instead and store the result as .Nm will exit 0 on success and non-zero otherwise. .Sh SEE ALSO +.Xr tar 1 , .Xr fstab 5 , .Xr initrd 7 , .Xr disked 8 , .Xr extfs 8 , .Xr init 8 , -.Xr initrdfs 8 , -.Xr mkinitrd 8 , .Xr sysmerge 8 , .Xr update-grub 8