mirror of
https://github.com/Zeal-Operating-System/ZealOS.git
synced 2024-12-25 15:10:28 +00:00
Modify build script for automatic feature detection
This commit modified the build script so that it does not require the user to edit it. It automatically detects sudo or doas and whether virrualization is available or not. Signed-off-by: slendi <slendi@socopon.com>
This commit is contained in:
parent
e65f27c46d
commit
a350141d45
1 changed files with 40 additions and 31 deletions
|
@ -13,8 +13,17 @@ then
|
|||
exit
|
||||
fi
|
||||
|
||||
# Uncomment if you use doas instead of sudo
|
||||
#alias sudo=doas
|
||||
[ "$1" = "--headless" ] && QEMU_HEADLESS='-display none'
|
||||
SUDO='none'
|
||||
command -v doas && $SUDO=doas
|
||||
command -v sudo&& $SUDO=sudo
|
||||
if [ "$SUDO" = "none" ] ; then
|
||||
echo 'No sudo or doas installed. Cannot proceed.'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
KVM=''
|
||||
(lsmod | grep -q kvm) && KVM=',accel=kvm'
|
||||
|
||||
# Set this true if you want to test ISOs in QEMU after building.
|
||||
TESTING=false
|
||||
|
@ -28,16 +37,16 @@ TMPMOUNT="$TMPDIR/mnt"
|
|||
QEMU_BIN_PATH=$(dirname "$(which qemu-system-x86_64)")
|
||||
|
||||
mount_tempdisk() {
|
||||
sudo modprobe nbd
|
||||
sudo $QEMU_BIN_PATH/qemu-nbd -c /dev/nbd0 -f raw $TMPDISK
|
||||
sudo partprobe /dev/nbd0
|
||||
sudo mount /dev/nbd0p1 $TMPMOUNT
|
||||
$SUDO modprobe nbd
|
||||
$SUDO $QEMU_BIN_PATH/qemu-nbd -c /dev/nbd0 -f raw $TMPDISK
|
||||
$SUDO partprobe /dev/nbd0
|
||||
$SUDO mount /dev/nbd0p1 $TMPMOUNT
|
||||
}
|
||||
|
||||
umount_tempdisk() {
|
||||
sync
|
||||
sudo umount $TMPMOUNT
|
||||
sudo $QEMU_BIN_PATH/qemu-nbd -d /dev/nbd0
|
||||
$SUDO umount $TMPMOUNT
|
||||
$SUDO $QEMU_BIN_PATH/qemu-nbd -d /dev/nbd0
|
||||
}
|
||||
|
||||
[ ! -d $TMPMOUNT ] && mkdir -p $TMPMOUNT
|
||||
|
@ -50,19 +59,19 @@ set +e
|
|||
|
||||
echo "Making temp vdisk, running auto-install ..."
|
||||
$QEMU_BIN_PATH/qemu-img create -f raw $TMPDISK 1024M
|
||||
$QEMU_BIN_PATH/qemu-system-x86_64 -machine q35,accel=kvm -drive format=raw,file=$TMPDISK -m 1G -rtc base=localtime -smp 4 -cdrom AUTO.ISO -device isa-debug-exit
|
||||
$QEMU_BIN_PATH/qemu-system-x86_64 -machine q35$KVM -drive format=raw,file=$TMPDISK -m 1G -rtc base=localtime -smp 4 -cdrom AUTO.ISO -device isa-debug-exit $QEMU_HEADLESS
|
||||
|
||||
echo "Copying all src/ code into vdisk Tmp/OSBuild/ ..."
|
||||
rm ../src/Home/Registry.ZC 2> /dev/null
|
||||
rm ../src/Home/MakeHome.ZC 2> /dev/null
|
||||
rm ../src/Boot/Kernel.ZXE 2> /dev/null
|
||||
mount_tempdisk
|
||||
sudo mkdir $TMPMOUNT/Tmp/OSBuild/
|
||||
sudo cp -r ../src/* $TMPMOUNT/Tmp/OSBuild
|
||||
$SUDO mkdir $TMPMOUNT/Tmp/OSBuild/
|
||||
$SUDO cp -r ../src/* $TMPMOUNT/Tmp/OSBuild
|
||||
umount_tempdisk
|
||||
|
||||
echo "Rebuilding kernel headers, kernel, OS, and building Distro ISO ..."
|
||||
$QEMU_BIN_PATH/qemu-system-x86_64 -machine q35,accel=kvm -drive format=raw,file=$TMPDISK -m 1G -rtc base=localtime -smp 4 -device isa-debug-exit
|
||||
$QEMU_BIN_PATH/qemu-system-x86_64 -machine q35$KVM -drive format=raw,file=$TMPDISK -m 1G -rtc base=localtime -smp 4 -device isa-debug-exit $QEMU_HEADLESS
|
||||
|
||||
LIMINE_BINARY_BRANCH="v4.x-branch-binary"
|
||||
|
||||
|
@ -95,22 +104,22 @@ sed -i "s/\[\]/\[$(grep -o "0x" ./limine/limine-hdd.h | wc -l)\]/g" limine/Limin
|
|||
mount_tempdisk
|
||||
echo "Extracting MyDistro ISO from vdisk ..."
|
||||
cp $TMPMOUNT/Tmp/MyDistro.ISO.C ./ZealOS-MyDistro.iso
|
||||
sudo rm $TMPMOUNT/Tmp/MyDistro.ISO.C 2> /dev/null
|
||||
$SUDO rm $TMPMOUNT/Tmp/MyDistro.ISO.C 2> /dev/null
|
||||
echo "Setting up temp ISO directory contents for use with limine xorriso command ..."
|
||||
sudo cp -rf $TMPMOUNT/* $TMPISODIR
|
||||
sudo rm $TMPISODIR/Boot/OldMBR.BIN 2> /dev/null
|
||||
sudo rm $TMPISODIR/Boot/BootMHD2.BIN 2> /dev/null
|
||||
sudo mkdir -p $TMPISODIR/EFI/BOOT
|
||||
sudo cp limine/Limine-HDD.HH $TMPISODIR/Boot/Limine-HDD.HH
|
||||
sudo cp limine/BOOTX64.EFI $TMPISODIR/EFI/BOOT/BOOTX64.EFI
|
||||
sudo cp limine/limine-cd-efi.bin $TMPISODIR/Boot/Limine-CD-EFI.BIN
|
||||
sudo cp limine/limine-cd.bin $TMPISODIR/Boot/Limine-CD.BIN
|
||||
sudo cp limine/limine.sys $TMPISODIR/Boot/Limine.SYS
|
||||
sudo cp ../zealbooter/zealbooter.elf $TMPISODIR/Boot/ZealBooter.ELF
|
||||
sudo cp ../zealbooter/Limine.CFG $TMPISODIR/Boot/Limine.CFG
|
||||
$SUDO cp -rf $TMPMOUNT/* $TMPISODIR
|
||||
$SUDO rm $TMPISODIR/Boot/OldMBR.BIN 2> /dev/null
|
||||
$SUDO rm $TMPISODIR/Boot/BootMHD2.BIN 2> /dev/null
|
||||
$SUDO mkdir -p $TMPISODIR/EFI/BOOT
|
||||
$SUDO cp limine/Limine-HDD.HH $TMPISODIR/Boot/Limine-HDD.HH
|
||||
$SUDO cp limine/BOOTX64.EFI $TMPISODIR/EFI/BOOT/BOOTX64.EFI
|
||||
$SUDO cp limine/limine-cd-efi.bin $TMPISODIR/Boot/Limine-CD-EFI.BIN
|
||||
$SUDO cp limine/limine-cd.bin $TMPISODIR/Boot/Limine-CD.BIN
|
||||
$SUDO cp limine/limine.sys $TMPISODIR/Boot/Limine.SYS
|
||||
$SUDO cp ../zealbooter/zealbooter.elf $TMPISODIR/Boot/ZealBooter.ELF
|
||||
$SUDO cp ../zealbooter/Limine.CFG $TMPISODIR/Boot/Limine.CFG
|
||||
echo "Copying DVDKernel.ZXE over ISO Boot/Kernel.ZXE ..."
|
||||
sudo mv $TMPMOUNT/Tmp/DVDKernel.ZXE $TMPISODIR/Boot/Kernel.ZXE
|
||||
sudo rm $TMPISODIR/Tmp/DVDKernel.ZXE 2> /dev/null
|
||||
$SUDO mv $TMPMOUNT/Tmp/DVDKernel.ZXE $TMPISODIR/Boot/Kernel.ZXE
|
||||
$SUDO rm $TMPISODIR/Tmp/DVDKernel.ZXE 2> /dev/null
|
||||
umount_tempdisk
|
||||
|
||||
xorriso -joliet "on" -rockridge "on" -as mkisofs -b Boot/Limine-CD.BIN \
|
||||
|
@ -131,11 +140,11 @@ if [ "$TESTING" = true ]; then
|
|||
cd ..
|
||||
fi
|
||||
echo "Testing limine-zealbooter-xorriso isohybrid boot in UEFI mode ..."
|
||||
$QEMU_BIN_PATH/qemu-system-x86_64 -machine q35,accel=kvm -m 1G -rtc base=localtime -bios ovmf/OVMF.fd -smp 4 -cdrom ZealOS-limine.iso
|
||||
$QEMU_BIN_PATH/qemu-system-x86_64 -machine q35$KVM -m 1G -rtc base=localtime -bios ovmf/OVMF.fd -smp 4 -cdrom ZealOS-limine.iso $QEMU_HEADLESS
|
||||
echo "Testing limine-zealbooter-xorriso isohybrid boot in BIOS mode ..."
|
||||
$QEMU_BIN_PATH/qemu-system-x86_64 -machine q35,accel=kvm -m 1G -rtc base=localtime -smp 4 -cdrom ZealOS-limine.iso
|
||||
$QEMU_BIN_PATH/qemu-system-x86_64 -machine q35$KVM -m 1G -rtc base=localtime -smp 4 -cdrom ZealOS-limine.iso $QEMU_HEADLESS
|
||||
echo "Testing native ZealC MyDistro legacy ISO in BIOS mode ..."
|
||||
$QEMU_BIN_PATH/qemu-system-x86_64 -machine q35,accel=kvm -m 1G -rtc base=localtime -smp 4 -cdrom ZealOS-MyDistro.iso
|
||||
$QEMU_BIN_PATH/qemu-system-x86_64 -machine q35$KVM -m 1G -rtc base=localtime -smp 4 -cdrom ZealOS-MyDistro.iso $QEMU_HEADLESS
|
||||
fi
|
||||
|
||||
# comment these 2 lines if you want lingering old Distro ISOs
|
||||
|
@ -146,8 +155,8 @@ mv ./ZealOS-MyDistro.iso ./ZealOS-PublicDomain-BIOS-$(date +%Y-%m-%d-%H_%M_%S).i
|
|||
mv ./ZealOS-limine.iso ./ZealOS-BSD2-UEFI-$(date +%Y-%m-%d-%H_%M_%S).iso
|
||||
|
||||
echo "Deleting temp folder ..."
|
||||
sudo rm -rf $TMPDIR
|
||||
sudo rm -rf $TMPISODIR
|
||||
$SUDO rm -rf $TMPDIR
|
||||
$SUDO rm -rf $TMPISODIR
|
||||
echo "Finished."
|
||||
echo
|
||||
echo "ISOs built:"
|
||||
|
|
Loading…
Reference in a new issue