-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpackage.sh
More file actions
executable file
·68 lines (58 loc) · 2.11 KB
/
package.sh
File metadata and controls
executable file
·68 lines (58 loc) · 2.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/bin/sh
set -e
# Sanity checks
# Check if we are running in the correct environment
if [ -z "$BUILD_DIR" ] || [ -z "$OUT" ] || [ -z "$LIMINE_DATADIR" ]; then
echo "Error: Required environment variables are missing."
echo " BUILD_DIR: '${BUILD_DIR}'"
echo " OUT: '${OUT}'"
echo " LIMINE_DATADIR: '${LIMINE_DATADIR}'"
exit 1
fi
# Check if the kernel binary exists
KERNEL_BIN="${BUILD_DIR}/${OUT}"
if [ ! -f "$KERNEL_BIN" ]; then
echo "Error: Kernel binary not found at:"
echo " $KERNEL_BIN"
exit 1
fi
# Define paths based on environment variables
ISO_NAME="${ISO_NAME:-ironOS.iso}"
ISO_ROOT="${BUILD_DIR}/iso-root"
KERNEL_BIN="${BUILD_DIR}/${OUT}"
# Create directory structure
mkdir -p "${ISO_ROOT}/boot/limine"
mkdir -p "${ISO_ROOT}/EFI/BOOT"
# Copy the kernel
cp -v "${KERNEL_BIN}" "${ISO_ROOT}/boot/ironOS"
# Copy limine config
if [ -f "limine.conf" ]; then
cp -v limine.conf "${ISO_ROOT}/boot/limine/"
else
echo "Error: limine.conf not found in project root."
exit 1
fi
# Copy limine binaries
if [ ! -f "${ISO_ROOT}/boot/limine/limine-bios.sys" ]; then
cp -v "${LIMINE_DATADIR}/limine-bios.sys" "${ISO_ROOT}/boot/limine/"
fi
if [ ! -f "${ISO_ROOT}/boot/limine/limine-bios-cd.bin" ]; then
cp -v "${LIMINE_DATADIR}/limine-bios-cd.bin" "${ISO_ROOT}/boot/limine/"
fi
if [ ! -f "${ISO_ROOT}/boot/limine/limine-uefi-cd.bin" ]; then
cp -v "${LIMINE_DATADIR}/limine-uefi-cd.bin" "${ISO_ROOT}/boot/limine/"
fi
if [ ! -f "${ISO_ROOT}/EFI/BOOT/BOOTX64.EFI" ]; then
cp -v "${LIMINE_DATADIR}/BOOTX64.EFI" "${ISO_ROOT}/EFI/BOOT/"
fi
if [ ! -f "${ISO_ROOT}/EFI/BOOT/BOOTIA32.EFI" ]; then
cp -v "${LIMINE_DATADIR}/BOOTIA32.EFI" "${ISO_ROOT}/EFI/BOOT/"
fi
# Create ISO file
xorriso -as mkisofs -R -r -J -b boot/limine/limine-bios-cd.bin \
-no-emul-boot -boot-load-size 4 -boot-info-table -hfsplus \
-apm-block-size 2048 --efi-boot boot/limine/limine-uefi-cd.bin \
-efi-boot-part --efi-boot-image --protective-msdos-label \
"${ISO_ROOT}" -o "${BUILD_DIR}/${ISO_NAME}"
# Install MBR for BIOS booting
"${LIMINE}" bios-install "${BUILD_DIR}/${ISO_NAME}"