BuildSystem: add bootloader target

Use this target to run banan-os with custom bootloader
This commit is contained in:
Bananymous 2023-11-12 01:17:30 +02:00
parent 39801e51da
commit 1a75262b04
3 changed files with 40 additions and 46 deletions

View File

@ -1,45 +0,0 @@
#!/bin/sh
set -e
CURRENT_DIR=$(dirname $(realpath $0))
INSTALLER_DIR=$CURRENT_DIR/installer
INSTALLER_BUILD_DIR=$INSTALLER_DIR/build
BUILD_DIR=$CURRENT_DIR/build
DISK_IMAGE_PATH=$CURRENT_DIR/test.img
if ! [ -d $INSTALLER_BUILD_DIR ]; then
mkdir -p $INSTALLER_BUILD_DIR
cd $INSTALLER_BUILD_DIR
cmake ..
fi
cd $INSTALLER_BUILD_DIR
make
cd $CURRENT_DIR
echo creating clean disk image
truncate --size 0 $DISK_IMAGE_PATH
truncate --size 50M $DISK_IMAGE_PATH
echo -ne 'g\nn\n\n\n+1M\nt 1\n4\nw\n' | fdisk $DISK_IMAGE_PATH > /dev/null
mkdir -p $BUILD_DIR
echo compiling bootloader
x86_64-banan_os-as arch/x86_64/boot.S -o $BUILD_DIR/bootloader.o
echo linking bootloader
x86_64-banan_os-ld -nostdlib -T arch/x86_64/linker.ld $BUILD_DIR/bootloader.o -o $BUILD_DIR/bootloader
echo installing bootloader
$INSTALLER_BUILD_DIR/x86_64-banan_os-bootloader-installer $BUILD_DIR/bootloader $DISK_IMAGE_PATH
if [ "$1" == "debug" ] ; then
QEMU_FLAGS="-s -S"
fi
echo running qemu
env BANAN_DISK_IMAGE_PATH=${DISK_IMAGE_PATH} BANAN_ARCH=x86_64 ../script/qemu.sh $QEMU_FLAGS

35
bootloader/install.sh Executable file
View File

@ -0,0 +1,35 @@
#!/bin/sh
set -e
if [[ -z $BANAN_DISK_IMAGE_PATH ]]; then
echo "You must set the BANAN_DISK_IMAGE_PATH environment variable" >&2
exit 1
fi
CURRENT_DIR=$(dirname $(realpath $0))
INSTALLER_DIR=$CURRENT_DIR/installer
INSTALLER_BUILD_DIR=$INSTALLER_DIR/build
BUILD_DIR=$CURRENT_DIR/build
if ! [ -d $INSTALLER_BUILD_DIR ]; then
mkdir -p $INSTALLER_BUILD_DIR
cd $INSTALLER_BUILD_DIR
cmake ..
fi
cd $INSTALLER_BUILD_DIR
make
mkdir -p $BUILD_DIR
echo compiling bootloader
x86_64-banan_os-as $CURRENT_DIR/arch/x86_64/boot.S -o $BUILD_DIR/bootloader.o
echo linking bootloader
x86_64-banan_os-ld -nostdlib -T $CURRENT_DIR/arch/x86_64/linker.ld $BUILD_DIR/bootloader.o -o $BUILD_DIR/bootloader
echo installing bootloader
$INSTALLER_BUILD_DIR/x86_64-banan_os-bootloader-installer $BUILD_DIR/bootloader $BANAN_DISK_IMAGE_PATH

View File

@ -97,8 +97,12 @@ case $1 in
rm -f $FAKEROOT_FILE rm -f $FAKEROOT_FILE
rm -rf $BANAN_SYSROOT rm -rf $BANAN_SYSROOT
;; ;;
bootloader)
create_image
$BANAN_ROOT_DIR/bootloader/install.sh
$BANAN_SCRIPT_DIR/qemu.sh -serial stdio $QEMU_ACCEL
;;
*) *)
build_target $1 build_target $1
;; ;;
esac esac