mirror of
https://github.com/t2linux/T2-Ubuntu.git
synced 2026-04-30 13:31:49 -07:00
113 lines
4.0 KiB
Bash
Executable File
113 lines
4.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -eu -o pipefail
|
|
ROOT_PATH=$(pwd)/work
|
|
OUTPUT_PATH=$(pwd)/output
|
|
FLAVOUR=$1
|
|
ISO_MOUNT_DIR="$ROOT_PATH/${FLAVOUR}-original" # Temporary mount point for the original ISO
|
|
VER=24.04
|
|
CODENAME=noble
|
|
KERNEL_VERSION=7.0.1
|
|
PKGREL=1
|
|
|
|
ISO_IMAGE=${FLAVOUR}-24.04.4-desktop-amd64.iso
|
|
ISO_IMAGE_OUTPUT="${OUTPUT_PATH}/${FLAVOUR}-${VER}-${KERNEL_VERSION}-t2-${CODENAME}.iso"
|
|
|
|
ISO_WORK_DIR="$ROOT_PATH/${FLAVOUR}-iso"
|
|
CHROOT_DIR="$ROOT_PATH/${FLAVOUR}-edit"
|
|
|
|
echo "ROOT_PATH=$ROOT_PATH"
|
|
echo "ISO_MOUNT_DIR=$ISO_MOUNT_DIR"
|
|
echo "ISO_WORK_DIR=$ISO_WORK_DIR"
|
|
echo "CHROOT_DIR=$CHROOT_DIR"
|
|
|
|
mkdir -p "$ROOT_PATH"
|
|
mkdir -p "$ISO_WORK_DIR"
|
|
mkdir -p "$CHROOT_DIR"
|
|
mkdir -p "$(dirname "$ISO_IMAGE_OUTPUT")"
|
|
touch "$ISO_IMAGE_OUTPUT"
|
|
|
|
echo >&2 "===]> Info: Installing required packages..."
|
|
apt update && apt update && \
|
|
DEBIAN_FRONTEND=noninteractive apt install -y tzdata \
|
|
&& apt install -y util-linux rsync squashfs-tools grub-pc-bin grub-common \
|
|
xorriso isolinux grub-efi-amd64-bin mtools dosfstools curl
|
|
|
|
echo >&2 "===]> Info: Download ISO..."
|
|
|
|
curl -L -o "$(pwd)/${ISO_IMAGE}" "https://cdimage.ubuntu.com/${FLAVOUR}/releases/${VER}/release/${ISO_IMAGE}"
|
|
|
|
# Run entrypoint.sh to extract and customize the ISO
|
|
echo >&2 "===]> Info: Starting extraction and customization..."
|
|
/bin/bash -c "
|
|
ISO_IMAGE=${ISO_IMAGE} \\
|
|
ISO_MOUNT_DIR=${ISO_MOUNT_DIR} \\
|
|
ISO_WORK_DIR=${ISO_WORK_DIR} \\
|
|
CHROOT_DIR=${CHROOT_DIR} \\
|
|
ROOT_PATH=${ROOT_PATH} \\
|
|
KERNEL_VERSION=${KERNEL_VERSION} \\
|
|
FLAVOUR=${FLAVOUR} \\
|
|
$(pwd)/01_edit_iso.sh"
|
|
|
|
# Enter the Chroot Environment and Apply Customizations
|
|
echo >&2 "===]> Info: Creating chroot environment... "
|
|
# Mount Required Filesystems for Chroot
|
|
mount --bind /dev "${CHROOT_DIR}/dev"
|
|
mount --bind /dev/pts "${CHROOT_DIR}/dev/pts"
|
|
mount --bind /proc "${CHROOT_DIR}/proc"
|
|
mount --bind /sys "${CHROOT_DIR}/sys"
|
|
|
|
mkdir -p "${CHROOT_DIR}/tmp/setup_files"
|
|
#rm -f "${CHROOT_DIR}/etc/resolv.conf"
|
|
#make a back up
|
|
cp -p "${CHROOT_DIR}/etc/resolv.conf" "${CHROOT_DIR}/etc/resolv.conf.backup"
|
|
cp -p /etc/resolv.conf "${CHROOT_DIR}/etc/resolv.conf"
|
|
cp "$(pwd)/chroot_iso.sh" "${CHROOT_DIR}/tmp/setup_files"
|
|
ls "${CHROOT_DIR}/tmp/setup_files"
|
|
echo >&2 "===]> Info: Running chroot environment... "
|
|
chroot "${CHROOT_DIR}" /bin/bash -c "KERNEL_VERSION=${KERNEL_VERSION} PKGREL=${PKGREL} /tmp/setup_files/chroot_iso.sh"
|
|
echo >&2 "===]> Info: Getting Kernel environment... "
|
|
T2_KERNEL=${KERNEL_VERSION}-${PKGREL}-t2-${CODENAME}
|
|
|
|
echo >&2 "===]> Info: Cleanup the chroot environment... "
|
|
# restore backup
|
|
cp -p "${CHROOT_DIR}/etc/resolv.conf.backup" "${CHROOT_DIR}/etc/resolv.conf"
|
|
umount "${CHROOT_DIR}/dev/pts"
|
|
umount "${CHROOT_DIR}/dev"
|
|
umount "${CHROOT_DIR}/proc"
|
|
umount "${CHROOT_DIR}/sys"
|
|
|
|
echo >&2 "===]> Info: Reset firmware flag for fresh boot... "
|
|
rm -f "${CHROOT_DIR}/etc/get_apple_firmware_attempted" || true
|
|
|
|
echo >&2 "===]> Info: Squashing $(echo ${FLAVOUR} | cut -c1 | tr '[a-z]' '[A-Z]')$(echo ${FLAVOUR} | cut -c2-) file system ... "
|
|
mksquashfs "$CHROOT_DIR" "$ISO_WORK_DIR/casper/filesystem.squashfs" -comp xz -noappend
|
|
|
|
# Run create_iso.sh to generate the new ISO
|
|
# echo "Creating the custom ISO..."
|
|
echo >&2 "===]> Info: Creating iso ... "
|
|
/bin/bash -c "
|
|
ISO_WORK_DIR=${ISO_WORK_DIR} \\
|
|
CHROOT_DIR=${CHROOT_DIR} \\
|
|
ISO_IMAGE_OUTPUT=${ISO_IMAGE_OUTPUT} \\
|
|
ROOT_PATH=${ROOT_PATH} \\
|
|
T2_KERNEL=${T2_KERNEL} \\
|
|
FLAVOUR=${FLAVOUR} \\
|
|
$(pwd)/02_create_iso.sh"
|
|
# split iso
|
|
|
|
ISO_SIZE=$(du -m "${OUTPUT_PATH}/${FLAVOUR}-${VER}-${KERNEL_VERSION}-t2-${CODENAME}.iso" | cut -f1)
|
|
if [ "$ISO_SIZE" -gt 6000 ]; then
|
|
SPLIT_SIZE=2000M
|
|
elif [ "$ISO_SIZE" -gt 4500 ]; then
|
|
SPLIT_SIZE=1500M
|
|
elif [ "$ISO_SIZE" -gt 3000 ]; then
|
|
SPLIT_SIZE=1000M
|
|
elif [ "$ISO_SIZE" -gt 2000 ]; then
|
|
SPLIT_SIZE=600M
|
|
else
|
|
SPLIT_SIZE=500M
|
|
fi
|
|
split -b ${SPLIT_SIZE} -x "${OUTPUT_PATH}/${FLAVOUR}-${VER}-${KERNEL_VERSION}-t2-${CODENAME}.iso" "${OUTPUT_PATH}/${FLAVOUR}-${VER}-${KERNEL_VERSION}-t2-${CODENAME}.iso."
|
|
sha256sum "${OUTPUT_PATH}"/*.iso > "${OUTPUT_PATH}/sha256-${FLAVOUR}-${VER}"
|