mirror of
https://gitlab.com/sortix/sortix.git
synced 2023-02-13 20:55:38 -05:00
Load ports in their own initrds.
This commit is contained in:
parent
c10628a2e2
commit
170ccfcc89
3 changed files with 97 additions and 39 deletions
90
Makefile
90
Makefile
|
@ -58,7 +58,10 @@ include build-aux/dirs.mak
|
||||||
|
|
||||||
BUILD_NAME:=sortix-$(VERSION)-$(MACHINE)
|
BUILD_NAME:=sortix-$(VERSION)-$(MACHINE)
|
||||||
|
|
||||||
INITRD:=$(SORTIX_BUILDS_DIR)/$(BUILD_NAME).initrd
|
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
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: sysroot
|
all: sysroot
|
||||||
|
@ -235,13 +238,8 @@ sysroot-ports: sysroot-fsh sysroot-base-headers sysroot-system sysroot-source
|
||||||
MAKEFLAGS="$(MAKEFLAGS)" \
|
MAKEFLAGS="$(MAKEFLAGS)" \
|
||||||
build-aux/build-ports.sh
|
build-aux/build-ports.sh
|
||||||
|
|
||||||
.PHONY: sysroot-overlay
|
|
||||||
sysroot-overlay: sysroot-fsh sysroot-system sysroot-ports
|
|
||||||
! [ -d "$(SYSROOT_OVERLAY)" ] || \
|
|
||||||
cp -RT --preserve=mode,timestamp,links "$(SYSROOT_OVERLAY)" "$(SYSROOT)"
|
|
||||||
|
|
||||||
.PHONY: sysroot
|
.PHONY: sysroot
|
||||||
sysroot: sysroot-system sysroot-source sysroot-ports sysroot-overlay
|
sysroot: sysroot-system sysroot-source sysroot-ports
|
||||||
|
|
||||||
$(SORTIX_REPOSITORY_DIR):
|
$(SORTIX_REPOSITORY_DIR):
|
||||||
mkdir -p $@
|
mkdir -p $@
|
||||||
|
@ -264,7 +262,6 @@ clean-ports:
|
||||||
.PHONY: clean-builds
|
.PHONY: clean-builds
|
||||||
clean-builds:
|
clean-builds:
|
||||||
rm -rf "$(SORTIX_BUILDS_DIR)"
|
rm -rf "$(SORTIX_BUILDS_DIR)"
|
||||||
rm -f sortix.initrd
|
|
||||||
rm -f sortix.iso
|
rm -f sortix.iso
|
||||||
|
|
||||||
.PHONY: clean-release
|
.PHONY: clean-release
|
||||||
|
@ -290,7 +287,7 @@ mostlyclean: clean-core clean-ports clean-builds clean-release clean-sysroot
|
||||||
distclean: clean-core clean-ports clean-builds clean-release clean-repository clean-sysroot
|
distclean: clean-core clean-ports clean-builds clean-release clean-repository clean-sysroot
|
||||||
|
|
||||||
.PHONY: most-things
|
.PHONY: most-things
|
||||||
most-things: sysroot initrd iso
|
most-things: sysroot iso
|
||||||
|
|
||||||
.PHONY: everything
|
.PHONY: everything
|
||||||
everything: most-things
|
everything: most-things
|
||||||
|
@ -334,32 +331,33 @@ release-all-archs:
|
||||||
|
|
||||||
# Initial ramdisk
|
# Initial ramdisk
|
||||||
|
|
||||||
$(INITRD): sysroot
|
$(LIVE_INITRD): sysroot
|
||||||
mkdir -p `dirname $(INITRD)`
|
mkdir -p `dirname $(LIVE_INITRD)`
|
||||||
rm -rf $(INITRD).live
|
rm -rf $(LIVE_INITRD).d
|
||||||
mkdir -p $(INITRD).live
|
mkdir -p $(LIVE_INITRD).d
|
||||||
mkdir -p $(INITRD).live/etc
|
mkdir -p $(LIVE_INITRD).d/etc
|
||||||
mkdir -p $(INITRD).live/etc/init
|
mkdir -p $(LIVE_INITRD).d/etc/init
|
||||||
echo single-user > $(INITRD).live/etc/init/target
|
echo single-user > $(LIVE_INITRD).d/etc/init/target
|
||||||
echo "root::0:0:root:/root:sh" > $(INITRD).live/etc/passwd
|
echo "root::0:0:root:/root:sh" > $(LIVE_INITRD).d/etc/passwd
|
||||||
echo "root::0:root" > $(INITRD).live/etc/group
|
echo "root::0:root" > $(LIVE_INITRD).d/etc/group
|
||||||
mkdir -p $(INITRD).live/home
|
mkdir -p $(LIVE_INITRD).d/home
|
||||||
mkdir -p $(INITRD).live/root -m 700
|
mkdir -p $(LIVE_INITRD).d/root -m 700
|
||||||
cp -RT "$(SYSROOT)/etc/skel" $(INITRD).live/root
|
cp -RT "$(SYSROOT)/etc/skel" $(LIVE_INITRD).d/root
|
||||||
cp doc/welcome $(INITRD).live/root
|
cp doc/welcome $(LIVE_INITRD).d/root
|
||||||
printf '' > $(INITRD).filter
|
tix-collection $(LIVE_INITRD).d create --platform=$HOST --prefix= --disable-multiarch --generation=2
|
||||||
echo "exclude /dev" >> $(INITRD).filter
|
mkinitrd --format=sortix-initrd-2 $(LIVE_INITRD).d -o $(LIVE_INITRD)
|
||||||
echo "exclude /src/sysroot" >> $(INITRD).filter
|
rm -rf $(LIVE_INITRD).d
|
||||||
echo "exclude /tmp" >> $(INITRD).filter
|
|
||||||
mkinitrd --format=sortix-initrd-2 --filter=$(INITRD).filter "$(SYSROOT)" "$(INITRD).live" -o $(INITRD)
|
|
||||||
rm -f $(INITRD).filter
|
|
||||||
rm -rf $(INITRD).live
|
|
||||||
|
|
||||||
.PHONY: initrd
|
.PHONY: $(OVERLAY_INITRD)
|
||||||
initrd: $(INITRD)
|
$(OVERLAY_INITRD): sysroot
|
||||||
|
test ! -d "$(SYSROOT_OVERLAY)" || \
|
||||||
|
mkinitrd --format=sortix-initrd-2 "$(SYSROOT_OVERLAY)" -o $(OVERLAY_INITRD)
|
||||||
|
|
||||||
sortix.initrd: $(INITRD)
|
$(SRC_INITRD): sysroot
|
||||||
cp $(INITRD) sortix.initrd
|
mkinitrd --format=sortix-initrd-2 --manifest="$(SYSROOT)/tix/manifest/src" "$(SYSROOT)" -o $(SRC_INITRD)
|
||||||
|
|
||||||
|
$(SYSTEM_INITRD): sysroot
|
||||||
|
mkinitrd --format=sortix-initrd-2 --manifest="$(SYSROOT)/tix/manifest/system" "$(SYSROOT)" -o $(SYSTEM_INITRD)
|
||||||
|
|
||||||
# Packaging
|
# Packaging
|
||||||
|
|
||||||
|
@ -368,23 +366,41 @@ $(SORTIX_BUILDS_DIR):
|
||||||
|
|
||||||
# Bootable images
|
# Bootable images
|
||||||
|
|
||||||
$(SORTIX_BUILDS_DIR)/$(BUILD_NAME).iso: sysroot $(INITRD) $(SORTIX_BUILDS_DIR)
|
$(SORTIX_BUILDS_DIR)/$(BUILD_NAME).iso: sysroot $(LIVE_INITRD) $(OVERLAY_INITRD) $(SRC_INITRD) $(SYSTEM_INITRD) $(SORTIX_BUILDS_DIR)
|
||||||
rm -rf $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso
|
rm -rf $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso
|
||||||
mkdir -p $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso
|
mkdir -p $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso
|
||||||
mkdir -p $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot
|
mkdir -p $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot
|
||||||
|
mkdir -p $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/repository
|
||||||
|
SORTIX_PORTS_DIR="$(SORTIX_PORTS_DIR)" \
|
||||||
|
SORTIX_REPOSITORY_DIR="$(SORTIX_REPOSITORY_DIR)" \
|
||||||
|
SYSROOT="$(SYSROOT)" \
|
||||||
|
HOST="$(HOST)" \
|
||||||
|
build-aux/iso-repository.sh $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/repository
|
||||||
ifeq ($(SORTIX_ISO_COMPRESSION),xz)
|
ifeq ($(SORTIX_ISO_COMPRESSION),xz)
|
||||||
xz -c "$(SYSROOT)/boot/sortix.bin" > $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/sortix.bin.xz
|
xz -c "$(SYSROOT)/boot/sortix.bin" > $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/sortix.bin.xz
|
||||||
xz -c $(INITRD) > $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/sortix.initrd.xz
|
xz -c $(LIVE_INITRD) > $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/live.initrd.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
|
||||||
build-aux/iso-grub-cfg.sh --platform $(HOST) --version $(VERSION) $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso
|
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
|
grub-mkrescue --compress=xz -o $(SORTIX_BUILDS_DIR)/$(BUILD_NAME).iso $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso
|
||||||
else ifeq ($(SORTIX_ISO_COMPRESSION),gzip)
|
else ifeq ($(SORTIX_ISO_COMPRESSION),gzip)
|
||||||
gzip -c "$(SYSROOT)/boot/sortix.bin" > $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/sortix.bin.gz
|
gzip -c "$(SYSROOT)/boot/sortix.bin" > $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/sortix.bin.gz
|
||||||
gzip -c $(INITRD) > $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/sortix.initrd.gz
|
gzip -c $(LIVE_INITRD) > $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/live.initrd.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
|
||||||
build-aux/iso-grub-cfg.sh --platform $(HOST) --version $(VERSION) $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso
|
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
|
grub-mkrescue --compress=gz -o $(SORTIX_BUILDS_DIR)/$(BUILD_NAME).iso $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso
|
||||||
else # none
|
else # none
|
||||||
cp "$(SYSROOT)/boot/sortix.bin" $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/sortix.bin
|
cp "$(SYSROOT)/boot/sortix.bin" $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/sortix.bin
|
||||||
cp $(INITRD) $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/sortix.initrd
|
cp $(LIVE_INITRD) $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/live.initrd
|
||||||
|
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
|
||||||
build-aux/iso-grub-cfg.sh --platform $(HOST) --version $(VERSION) $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso
|
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
|
grub-mkrescue -o $(SORTIX_BUILDS_DIR)/$(BUILD_NAME).iso $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -84,7 +84,7 @@ maybe_compressed() {
|
||||||
echo "$1.xz"
|
echo "$1.xz"
|
||||||
elif [ -e "$1.gz" ]; then
|
elif [ -e "$1.gz" ]; then
|
||||||
echo "$1.gz"
|
echo "$1.gz"
|
||||||
else
|
elif [ -e "$1" ]; then
|
||||||
echo "$1"
|
echo "$1"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -98,7 +98,10 @@ menuentry() {
|
||||||
args=""
|
args=""
|
||||||
[ -n "$2" ] && args=" $2"
|
[ -n "$2" ] && args=" $2"
|
||||||
kernel=$(maybe_compressed boot/sortix.bin)
|
kernel=$(maybe_compressed boot/sortix.bin)
|
||||||
initrd=$(maybe_compressed boot/sortix.initrd)
|
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)
|
||||||
printf "menuentry \"Sortix (%s)\" {\n" "$1"
|
printf "menuentry \"Sortix (%s)\" {\n" "$1"
|
||||||
case $platform in
|
case $platform in
|
||||||
x86_64-*)
|
x86_64-*)
|
||||||
|
@ -116,10 +119,21 @@ EOF
|
||||||
echo -n "Loading /$kernel ($(human_size $kernel)) ... "
|
echo -n "Loading /$kernel ($(human_size $kernel)) ... "
|
||||||
multiboot /$kernel$args
|
multiboot /$kernel$args
|
||||||
echo done
|
echo done
|
||||||
|
EOF
|
||||||
|
for initrd in $system_initrd $src_initrd $live_initrd $overlay_initrd; do
|
||||||
|
cat << EOF
|
||||||
echo -n "Loading /$initrd ($(human_size $initrd)) ... "
|
echo -n "Loading /$initrd ($(human_size $initrd)) ... "
|
||||||
module /$initrd
|
module /$initrd
|
||||||
echo done
|
echo done
|
||||||
EOF
|
EOF
|
||||||
|
done
|
||||||
|
find repository | grep -E '^(.*/)?.*\.tix\.tar\.xz$' | LC_ALL=C sort | while read tix; do
|
||||||
|
cat << EOF
|
||||||
|
echo -n "Loading /$tix$I ($(human_size $tix)) ... "
|
||||||
|
module /$tix
|
||||||
|
echo done
|
||||||
|
EOF
|
||||||
|
done
|
||||||
printf "}\n"
|
printf "}\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
28
build-aux/iso-repository.sh
Executable file
28
build-aux/iso-repository.sh
Executable file
|
@ -0,0 +1,28 @@
|
||||||
|
#!/bin/sh -e
|
||||||
|
|
||||||
|
# Detect if the environment isn't set up properly.
|
||||||
|
if [ -z "$HOST" ]; then
|
||||||
|
echo "$0: error: You need to set \$HOST" >&2
|
||||||
|
exit 1
|
||||||
|
elif [ -z "$SORTIX_REPOSITORY_DIR" ]; then
|
||||||
|
echo "$0: error: You need to set \$SORTIX_REPOSITORY_DIR" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! [ -d "$SORTIX_REPOSITORY_DIR" ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
SORTIX_REPOSITORY_DIR="$SORTIX_REPOSITORY_DIR/$HOST"
|
||||||
|
if ! [ -d "$SORTIX_REPOSITORY_DIR" ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "$1"
|
||||||
|
|
||||||
|
if [ -z "${PACKAGES+x}" ]; then
|
||||||
|
cp -RT "$SORTIX_REPOSITORY_DIR" "$1"
|
||||||
|
else
|
||||||
|
for PACKAGE in $PACKAGES; do
|
||||||
|
cp "$SORTIX_REPOSITORY_DIR/$PACKAGE.tix.tar.xz" "$1"
|
||||||
|
done
|
||||||
|
fi
|
Loading…
Reference in a new issue