wrote a basic bootloader
This commit is contained in:
Executable
+16
@@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Build the bootloader
|
||||
nasm -f bin mbr.asm -o mbr.bin
|
||||
|
||||
# Build the kernel
|
||||
cargo build --release
|
||||
|
||||
# Create disk image
|
||||
./create_image.sh
|
||||
|
||||
# Write MBR
|
||||
dd if=mbr.bin of=disk.img conv=notrunc
|
||||
|
||||
echo "Build complete! You can now boot disk.img"
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Image configuration
|
||||
IMAGE_NAME="disk.img"
|
||||
IMAGE_SIZE_MB=64
|
||||
ESP_SIZE_MB=32 # EFI System Partition size
|
||||
|
||||
# Create a new disk image
|
||||
dd if=/dev/zero of=$IMAGE_NAME bs=1M count=$IMAGE_SIZE_MB
|
||||
|
||||
# Create partition table and ESP partition
|
||||
parted $IMAGE_NAME mklabel gpt
|
||||
parted $IMAGE_NAME mkpart ESP fat32 1MiB ${ESP_SIZE_MB}MiB
|
||||
parted $IMAGE_NAME set 1 esp on
|
||||
|
||||
# Calculate offset for mounting
|
||||
SECTOR_SIZE=512
|
||||
START_SECTOR=$(parted $IMAGE_NAME -ms unit s print | grep "^1:" | cut -d: -f2 | tr -d 's')
|
||||
OFFSET=$((START_SECTOR * SECTOR_SIZE))
|
||||
|
||||
# Create FAT32 filesystem
|
||||
LOOP_DEVICE=$(sudo losetup -f --show -o $OFFSET $IMAGE_NAME)
|
||||
sudo mkfs.fat -F 32 $LOOP_DEVICE
|
||||
|
||||
# Mount the image
|
||||
MOUNT_POINT="/tmp/esp"
|
||||
mkdir -p $MOUNT_POINT
|
||||
sudo mount $LOOP_DEVICE $MOUNT_POINT
|
||||
|
||||
# Create EFI directory structure
|
||||
sudo mkdir -p $MOUNT_POINT/EFI/BOOT
|
||||
|
||||
# Copy kernel to the ESP
|
||||
# For UEFI boot, rename it to BOOTX64.EFI
|
||||
sudo cp target/x86_64-custom/release/kernel $MOUNT_POINT/EFI/BOOT/BOOTX64.EFI
|
||||
|
||||
# For BIOS boot, also copy it to the root
|
||||
sudo cp target/x86_64-custom/release/kernel $MOUNT_POINT/
|
||||
|
||||
# Cleanup
|
||||
sudo umount $MOUNT_POINT
|
||||
sudo losetup -d $LOOP_DEVICE
|
||||
rm -rf $MOUNT_POINT
|
||||
|
||||
echo "Disk image created successfully!"
|
||||
Reference in New Issue
Block a user