YACBA/build.sh
Lain Iwakura 5e333cffc1
upload
2025-06-22 20:03:39 +03:00

69 lines
2.0 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
echo "=== YACBA Builder ==="
detect_system() {
if [[ "$OSTYPE" == "darwin"* ]]; then
echo "macOS"
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
echo "Linux"
else
echo "Unknown"
fi
}
SYSTEM=$(detect_system)
case $SYSTEM in
"macOS")
echo "[!] На macOS невозможно нативно собрать i386 bare-metal код"
echo "[*] Используйте Docker версию:"
echo ""
echo " chmod +x docker-build.sh"
echo " ./docker-build.sh"
echo ""
echo "[*] Или скопируйте код на Linux машину"
exit 1
;;
"Linux")
echo "[*] Linux обнаружен, начинаю сборку..."
;;
*)
echo "[!] Неизвестная система, попробую собрать..."
;;
esac
check_tools() {
local missing=()
command -v nasm >/dev/null 2>&1 || missing+=("nasm")
command -v gcc >/dev/null 2>&1 || missing+=("gcc")
command -v ld >/dev/null 2>&1 || missing+=("binutils")
if [ ${#missing[@]} -ne 0 ]; then
echo "[-] Отсутствуют инструменты: ${missing[*]}"
echo "[*] Ubuntu/Debian: apt install nasm gcc binutils"
echo "[*] CentOS/RHEL: yum install nasm gcc binutils"
exit 1
fi
}
check_tools
echo "[*] Сборка загрузчика..."
nasm -f bin bootloader.asm -o bootloader.bin || exit 1
echo "[*] Сборка ядра..."
gcc -m32 -ffreestanding -nostdlib -nodefaultlibs -fno-builtin \
-fno-stack-protector -c kernel.c -o kernel.o || exit 1
echo "[*] Линковка ядра..."
ld -m elf_i386 -T linker.ld kernel.o -o kernel.bin || exit 1
echo "[*] Создание образа ОС..."
cat bootloader.bin kernel.bin > os.bin
truncate -s 1440K os.bin
echo "[+] Готово! Образ os.bin создан"
echo "[*] Размер: $(ls -lh os.bin | awk '{print $5}')"
echo "[*] Для создания флешки: sudo ./create_boot_usb.sh /dev/sdX"