2024-08-01 14:23:17 +02:00
|
|
|
#! /bin/bash
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
source ./info.sh
|
|
|
|
|
|
|
|
if [[ -z $ROOTFS_PATH ]]
|
|
|
|
then
|
|
|
|
echo "Error: ROOTFS PATH is not set!"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Mount
|
|
|
|
|
2024-08-01 14:42:33 +02:00
|
|
|
mount --bind /dev "$ROOTFS_PATH/dev"
|
|
|
|
mount -t tmpfs run "$ROOTFS_PATH/run" -o mode=0755,nosuid,nodev
|
|
|
|
mount -t proc proc "$ROOTFS_PATH/proc" -o nosuid,nodev,noexec
|
|
|
|
mount -t sysfs sys "$ROOTFS_PATH/sys" -o nosuid,nodev,noexec,ro
|
2024-08-01 14:23:17 +02:00
|
|
|
|
|
|
|
# Setup Chroot scripts
|
|
|
|
|
|
|
|
cp -rvf ./chroot_scripts "$ROOTFS_PATH/"
|
|
|
|
cp -rvf ./hooks "$ROOTFS_PATH/chroot_scripts/"
|
2024-08-01 18:16:30 +02:00
|
|
|
cp -rvf ./live-lists "$ROOTFS_PATH/chroot_scripts/"
|
2024-08-01 14:23:17 +02:00
|
|
|
cp -rvf ./pool-lists "$ROOTFS_PATH/chroot_scripts/"
|
|
|
|
cp -rvf ./rem-lists "$ROOTFS_PATH/chroot_scripts/"
|
|
|
|
cp -rvf ./info.sh "$ROOTFS_PATH/chroot_scripts/"
|
|
|
|
|
|
|
|
# Run chroot_script inside ROOTFS
|
|
|
|
|
|
|
|
chroot "$ROOTFS_PATH" bash -c "/chroot_scripts/0-chroot.sh"
|
|
|
|
rm -rfv "$ROOTFS_PATH/chroot_scripts"
|
|
|
|
|
|
|
|
# Unmount
|
|
|
|
|
2024-08-01 14:42:33 +02:00
|
|
|
umount "$ROOTFS_PATH/dev" || umount -lf "$ROOTFS_PATH/dev" || true
|
|
|
|
umount "$ROOTFS_PATH/run" || umount -lf "$ROOTFS_PATH/run" || true
|
|
|
|
umount "$ROOTFS_PATH/proc" || umount -lf "$ROOTFS_PATH/proc" || true
|
|
|
|
umount "$ROOTFS_PATH/sys" || umount -lf "$ROOTFS_PATH/sys" || true
|
2024-08-01 14:23:17 +02:00
|
|
|
|
|
|
|
# Generate Squashfs image
|
|
|
|
|
2024-08-01 14:42:33 +02:00
|
|
|
mksquashfs \
|
2024-08-01 14:23:17 +02:00
|
|
|
"$ROOTFS_PATH" \
|
2024-08-01 18:16:30 +02:00
|
|
|
"$LIVE_BOOT_LIVE_PATH/filesystem.squashfs" \
|
2024-08-01 14:49:39 +02:00
|
|
|
-noappend \
|
|
|
|
-comp xz \
|
|
|
|
-b 1M \
|
|
|
|
-Xdict-size 1M \
|
|
|
|
-Xbcj x86
|
2024-08-01 14:23:17 +02:00
|
|
|
|
2024-08-02 00:24:07 +02:00
|
|
|
# Copy Kernel to live (Disabled, Copy Kernels to refind instead)
|
2024-08-11 00:08:35 +02:00
|
|
|
#cp "$ROOTFS_PATH/boot"/vmlinuz-* \
|
|
|
|
# "$LIVE_BOOT_LIVE_PATH/vmlinuz" && \
|
|
|
|
#cp "$ROOTFS_PATH/boot"/initrd.img-* \
|
|
|
|
# "$LIVE_BOOT_LIVE_PATH/initrd" && \
|
|
|
|
#cp ./data/refind/refind_linux.conf \
|
|
|
|
# "$LIVE_BOOT_LIVE_PATH/refind_linux.conf"
|
|
|
|
|
|
|
|
# Generate bootable EFI Image from refind
|
|
|
|
|
|
|
|
# Copy kernel to refind
|
|
|
|
mkdir -p ./data/refind/EFI
|
2024-08-11 00:22:03 +02:00
|
|
|
cp -vf "$ROOTFS_PATH/boot"/vmlinuz-"$ISO_KERNEL" "./data/refind/EFI/vmlinuz"
|
|
|
|
cp -vf "$ROOTFS_PATH/boot"/initrd.img-"$ISO_KERNEL" "./data/refind/EFI/initrd"
|
2024-08-11 00:08:35 +02:00
|
|
|
|
2024-08-11 01:27:13 +02:00
|
|
|
REFIND_SIZE=$(($(du -s -B1048576 ./data/refind | cut -f1) + 10))
|
|
|
|
LIVE_SIZE=$(($(du -s -B1048576 $LIVE_BOOT_LIVE_PATH | cut -f1) + 10))
|
2024-08-11 00:36:00 +02:00
|
|
|
ISO_SIZE=$(($REFIND_SIZE + $LIVE_SIZE))
|
2024-08-11 00:46:50 +02:00
|
|
|
DD_BOOT_IMAGE="./efiboot.img"
|
|
|
|
DD_LIVE_IMAGE="./live.img"
|
2024-08-11 00:36:00 +02:00
|
|
|
|
2024-08-11 00:22:03 +02:00
|
|
|
# Create Refind Image
|
2024-08-11 01:27:13 +02:00
|
|
|
dd if=/dev/zero of="$DD_BOOT_IMAGE" bs=1M count=$REFIND_SIZE
|
2024-08-11 00:22:03 +02:00
|
|
|
mkfs.vfat -F 32 "$DD_BOOT_IMAGE"
|
2024-08-01 19:05:07 +02:00
|
|
|
for directory in $(find ./data/refind/EFI/ -type d | cut -d'/' -f4-)
|
|
|
|
do
|
2024-08-11 01:27:13 +02:00
|
|
|
echo "creating directory $directory in $DD_BOOT_IMAGE"
|
2024-08-11 00:22:03 +02:00
|
|
|
mmd -i "$DD_BOOT_IMAGE" ::"$(echo $directory | tr '[:lower:]' '[:upper:]' | sed 's:/*$::')"
|
2024-08-01 19:05:07 +02:00
|
|
|
done
|
|
|
|
|
2024-08-01 19:35:10 +02:00
|
|
|
for file in $(find ./data/refind/EFI/ -type f)
|
2024-08-01 19:05:07 +02:00
|
|
|
do
|
2024-08-11 01:27:13 +02:00
|
|
|
echo "copying file $file to $DD_BOOT_IMAGE"
|
2024-08-11 00:22:03 +02:00
|
|
|
mcopy -i "$DD_BOOT_IMAGE" $file ::"$(echo $file | cut -d'/' -f4- | tr '[:lower:]' '[:upper:]')"
|
2024-08-01 19:05:07 +02:00
|
|
|
done
|
2024-08-01 18:05:23 +02:00
|
|
|
|
2024-08-11 01:47:05 +02:00
|
|
|
# Create System Image
|
|
|
|
|
|
|
|
xorriso \
|
|
|
|
-as mkisofs \
|
|
|
|
-iso-level 3 \
|
|
|
|
-V "PikaOS 4" \
|
|
|
|
-isohybrid-gpt-basdat \
|
|
|
|
-o $DD_LIVE_IMAGE \
|
|
|
|
"$LIVE_BOOT_DATA_PATH"
|
2024-08-11 00:22:03 +02:00
|
|
|
|
2024-08-11 01:27:13 +02:00
|
|
|
# Join the 2 images into one
|
2024-08-11 01:47:05 +02:00
|
|
|
mkdir -p ./output
|
2024-08-11 01:27:13 +02:00
|
|
|
echo "joining images"
|
2024-08-11 00:22:03 +02:00
|
|
|
cat $DD_BOOT_IMAGE $DD_LIVE_IMAGE > "./output/$ISO_IMAGE".iso
|
2024-08-11 00:08:35 +02:00
|
|
|
|
|
|
|
# Generate an integrity sum
|
|
|
|
touch "./output/$ISO_IMAGE".md5
|
|
|
|
md5sum "./output/$ISO_IMAGE".iso > "./output/$ISO_IMAGE".md5
|