4f814f2024
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
143 lines
4.5 KiB
Makefile
143 lines
4.5 KiB
Makefile
# Configuration file with the commands configuration of the Red Bear OS image
|
|
|
|
$(BUILD)/harddrive.img: $(FSTOOLS) $(REPO_TAG)
|
|
ifeq ($(FSTOOLS_IN_PODMAN),1)
|
|
$(PODMAN_RUN) make $@
|
|
else
|
|
mkdir -p $(BUILD)
|
|
-$(FUMOUNT) $(MOUNT_DIR) || true
|
|
-$(FUMOUNT) /tmp/redox_installer || true
|
|
rm -rf $@ $@.partial $(MOUNT_DIR)
|
|
FILESYSTEM_SIZE=$(FILESYSTEM_SIZE) && \
|
|
if [ -z "$$FILESYSTEM_SIZE" ] ; then \
|
|
FILESYSTEM_SIZE=$(shell $(INSTALLER) --filesystem-size -c $(FILESYSTEM_CONFIG)); \
|
|
fi && \
|
|
truncate -s "$$FILESYSTEM_SIZE"m $@.partial
|
|
umask 002 && $(INSTALLER) $(INSTALLER_OPTS) -c $(FILESYSTEM_CONFIG) $@.partial
|
|
mv $@.partial $@
|
|
endif
|
|
|
|
$(LIVE_IMG): $(FSTOOLS) $(REPO_TAG)
|
|
ifeq ($(FSTOOLS_IN_PODMAN),1)
|
|
$(PODMAN_RUN) make $@
|
|
else
|
|
mkdir -p $(LIVE_BUILD)
|
|
rm -rf $@ $@.partial
|
|
-$(FUMOUNT) /tmp/redox_installer || true
|
|
FILESYSTEM_SIZE=$(FILESYSTEM_SIZE) && \
|
|
if [ -z "$$FILESYSTEM_SIZE" ] ; then \
|
|
FILESYSTEM_SIZE=$(shell $(INSTALLER) --filesystem-size -c $(FILESYSTEM_CONFIG)); \
|
|
fi && \
|
|
truncate -s "$$FILESYSTEM_SIZE"m $@.partial
|
|
umask 002 && $(INSTALLER) $(INSTALLER_OPTS) -c $(FILESYSTEM_CONFIG) --write-bootloader="$(LIVE_BOOTLOADER)" --live $@.partial
|
|
mv $@.partial $@
|
|
endif
|
|
|
|
$(LIVE_ISO): $(LIVE_IMG) redbear.ipxe
|
|
ifeq ($(FSTOOLS_IN_PODMAN),1)
|
|
$(PODMAN_RUN) make $@
|
|
else
|
|
mkdir -p $(LIVE_BUILD)
|
|
rm -rf $@ $@.partial
|
|
tmpdir="$$(mktemp -d)"; \
|
|
esp_img="$$tmpdir/efiboot.img"; \
|
|
trap 'rm -rf "$$tmpdir"' EXIT; \
|
|
mkdir -p "$$tmpdir/EFI/BOOT"; \
|
|
BOOTLOADER_LIVE_BIOS=""; \
|
|
for path in recipes/core/bootloader/target/*/stage/usr/lib/boot/bootloader-live.bios repo/*/*/bootloader/*/usr/lib/boot/bootloader-live.bios; do \
|
|
if [ -f "$$path" ]; then \
|
|
BOOTLOADER_LIVE_BIOS="$$path"; \
|
|
break; \
|
|
fi; \
|
|
done; \
|
|
live_size="$$(stat -c%s "$(LIVE_IMG)")"; \
|
|
esp_size="$$((live_size + 64 * 1024 * 1024))"; \
|
|
truncate -s "$$esp_size" "$$esp_img"; \
|
|
mkfs.fat -F 32 "$$esp_img" >/dev/null; \
|
|
python3 local/scripts/fat_tool.py mkdir "$$esp_img" 0 EFI; \
|
|
python3 local/scripts/fat_tool.py mkdir "$$esp_img" 0 EFI/BOOT; \
|
|
python3 local/scripts/fat_tool.py cp-in "$$esp_img" 0 "$(LIVE_BOOTLOADER)" EFI/BOOT/BOOTX64.EFI; \
|
|
python3 local/scripts/fat_tool.py cp-in "$$esp_img" 0 "$(LIVE_IMG)" redox-live.iso; \
|
|
cp "$(LIVE_BOOTLOADER)" "$$tmpdir/EFI/BOOT/BOOTX64.EFI"; \
|
|
cp redbear.ipxe "$$tmpdir/redbear.ipxe"; \
|
|
if [ -n "$$BOOTLOADER_LIVE_BIOS" ]; then \
|
|
cp "$$BOOTLOADER_LIVE_BIOS" "$$tmpdir/bootloader-live.bios"; \
|
|
xorriso -as mkisofs -R -J -V "REDBEARLIVE" -o $@.partial \
|
|
-b bootloader-live.bios -no-emul-boot \
|
|
-eltorito-alt-boot -e efiboot.img -no-emul-boot \
|
|
"$$tmpdir" >/dev/null; \
|
|
else \
|
|
xorriso -as mkisofs -R -J -V "REDBEARLIVE" -o $@.partial \
|
|
-eltorito-alt-boot -e efiboot.img -no-emul-boot \
|
|
"$$tmpdir" >/dev/null; \
|
|
fi
|
|
mv $@.partial $@
|
|
cp redbear.ipxe $(LIVE_IPXE)
|
|
endif
|
|
|
|
$(BUILD)/filesystem.img: $(FSTOOLS) $(REPO_TAG)
|
|
ifeq ($(FSTOOLS_IN_PODMAN),1)
|
|
$(PODMAN_RUN) make $@
|
|
else
|
|
mkdir -p $(BUILD)
|
|
-$(FUMOUNT) $(MOUNT_DIR) || true
|
|
rm -rf $@ $@.partial $(MOUNT_DIR)
|
|
-$(FUMOUNT) /tmp/redox_installer || true
|
|
FILESYSTEM_SIZE=$(FILESYSTEM_SIZE) && \
|
|
if [ -z "$$FILESYSTEM_SIZE" ] ; then \
|
|
FILESYSTEM_SIZE=$(shell $(INSTALLER) --filesystem-size -c $(FILESYSTEM_CONFIG)); \
|
|
fi && \
|
|
truncate -s "$$FILESYSTEM_SIZE"m $@.partial
|
|
$(REDOXFS_MKFS) $(REDOXFS_MKFS_FLAGS) $@.partial
|
|
mkdir -p $(MOUNT_DIR)
|
|
$(REDOXFS) $@.partial $(MOUNT_DIR)
|
|
sleep 1
|
|
pgrep redoxfs
|
|
umask 002 && $(INSTALLER) $(INSTALLER_OPTS) -c $(FILESYSTEM_CONFIG) $(MOUNT_DIR)
|
|
sync
|
|
-$(FUMOUNT) $(MOUNT_DIR) || true
|
|
rm -rf $(MOUNT_DIR)
|
|
mv $@.partial $@
|
|
endif
|
|
|
|
mount: $(FSTOOLS) FORCE
|
|
ifeq ($(FSTOOLS_IN_PODMAN),1)
|
|
$(PODMAN_RUN) make $@
|
|
else
|
|
@mkdir -p $(MOUNT_DIR)
|
|
$(REDOXFS) $(BUILD)/harddrive.img $(MOUNT_DIR)
|
|
@sleep 2
|
|
@echo "\033[1;36;49mharddrive.img mounted ($$(pgrep redoxfs))\033[0m"
|
|
endif
|
|
|
|
mount_extra: $(FSTOOLS) FORCE
|
|
ifeq ($(FSTOOLS_IN_PODMAN),1)
|
|
$(PODMAN_RUN) make $@
|
|
else
|
|
@mkdir -p $(MOUNT_DIR)
|
|
$(REDOXFS) $(BUILD)/extra.img $(MOUNT_DIR)
|
|
@sleep 2
|
|
@echo "\033[1;36;49mextra.img mounted ($$(pgrep redoxfs))\033[0m"
|
|
endif
|
|
|
|
mount_live: $(FSTOOLS) FORCE
|
|
ifeq ($(FSTOOLS_IN_PODMAN),1)
|
|
$(PODMAN_RUN) make $@
|
|
else
|
|
@mkdir -p $(MOUNT_DIR)
|
|
$(REDOXFS) $(LIVE_IMG) $(MOUNT_DIR)
|
|
@sleep 2
|
|
@echo "\033[1;36;49m$(notdir $(LIVE_IMG)) mounted ($$(pgrep redoxfs))\033[0m"
|
|
endif
|
|
|
|
unmount: FORCE
|
|
ifeq ($(FSTOOLS_IN_PODMAN),1)
|
|
$(PODMAN_RUN) make $@
|
|
else
|
|
@sync
|
|
-$(FUMOUNT) $(MOUNT_DIR)
|
|
@rm -rf $(MOUNT_DIR)
|
|
@-$(FUMOUNT) /tmp/redox_installer 2>/dev/null || true
|
|
@echo "\033[1;36;49mFilesystem unmounted\033[0m"
|
|
endif
|