feat: add initial impl of efi-stub and kernel
This commit is contained in:
57
tools/build_img.sh
Normal file
57
tools/build_img.sh
Normal file
@@ -0,0 +1,57 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
IMG=disk.img
|
||||
SIZE=256M
|
||||
MNT=/tmp/$(tr -dc 'A-Za-z0-9' </dev/urandom | head -c 16)
|
||||
LIMINE_DIR=$HOME/Limine
|
||||
KERNEL=./yukiImage
|
||||
|
||||
echo "[*] Creating disk image..."
|
||||
rm -f "$IMG"
|
||||
truncate -s "$SIZE" "$IMG"
|
||||
|
||||
echo "[*] Creating GPT..."
|
||||
sgdisk -o "$IMG"
|
||||
|
||||
echo "[*] Creating EFI System Partition..."
|
||||
sgdisk -n 1:2048:0 -t 1:ef00 -c 1:"EFI System Partition" "$IMG"
|
||||
partprobe
|
||||
echo "[*] Attaching loop device..."
|
||||
LOOP=$(sudo losetup --find --partscan --show "$IMG")
|
||||
sudo udevadm settle
|
||||
EFI_PART="${LOOP}p1"
|
||||
|
||||
echo "[*] Formatting FAT32 ESP..."
|
||||
sudo mkfs.fat -F32 "$EFI_PART"
|
||||
|
||||
echo "[*] Mounting..."
|
||||
mkdir -p "$MNT"
|
||||
sudo mount "$EFI_PART" "$MNT"
|
||||
|
||||
echo "[*] Creating directory structure..."
|
||||
sudo mkdir -p "$MNT/EFI/BOOT"
|
||||
sudo mkdir -p "$MNT/boot"
|
||||
|
||||
echo "[*] Installing Limine UEFI..."
|
||||
sudo cp "$LIMINE_DIR/BOOTX64.EFI" "$MNT/EFI/BOOT/BOOTX64.EFI"
|
||||
echo "[*] Copying kernel..."
|
||||
sudo cp "$KERNEL" "$MNT/boot/yukiImage"
|
||||
|
||||
echo "[*] Writing limine.conf..."
|
||||
sudo tee "$MNT/boot/limine.conf" > /dev/null << 'EOF'
|
||||
timeout: 1
|
||||
|
||||
/Yuki OS
|
||||
protocol: efi
|
||||
path: boot():/boot/yukiImage
|
||||
EOF
|
||||
|
||||
echo "[*] Syncing..."
|
||||
sync
|
||||
|
||||
echo "[*] Unmounting..."
|
||||
sudo umount "$MNT"
|
||||
sudo losetup -d "$LOOP"
|
||||
|
||||
echo "[+] Done: $IMG created successfully"
|
||||
Reference in New Issue
Block a user