YACBA/docker-build.sh
2025-06-22 21:41:12 +03:00

48 lines
1.5 KiB
Bash
Executable File
Raw 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 Docker Builder ==="
if ! command -v docker &> /dev/null; then
echo "[-] Docker не установлен"
echo "[*] Установите Docker: https://docs.docker.com/get-docker/"
exit 1
fi
# Проверяем архитектуру хоста
ARCH=$(uname -m)
if [[ "$ARCH" == "arm64" || "$ARCH" == "aarch64" ]]; then
echo "[!] Обнаружена ARM64 архитектура"
echo "[*] Будет использована эмуляция x86_64 (может быть медленно)"
fi
echo "[*] Сборка через Docker контейнер..."
docker run --platform linux/amd64 --rm -v "$(pwd)":/work -w /work ubuntu:20.04 bash -c '
apt-get update -qq
apt-get install -y nasm gcc binutils make
echo "[*] Сборка загрузчика..."
nasm -f bin bootloader.asm -o bootloader.bin
echo "[*] Сборка ядра..."
gcc -m32 -ffreestanding -nostdlib -nodefaultlibs -fno-builtin -fno-stack-protector -c kernel.c -o kernel.o
echo "[*] Линковка ядра..."
ld -m elf_i386 -T linker.ld kernel.o -o kernel.bin
echo "[*] Создание образа ОС..."
cat bootloader.bin kernel.bin > os.bin
truncate -s 1440K os.bin
echo "[+] Сборка завершена!"
ls -lh os.bin
'
if [ -f "os.bin" ]; then
echo "[+] Образ os.bin готов!"
echo "[*] Размер: $(ls -lh os.bin | awk '{print $5}')"
echo "[*] Для создания флешки: sudo ./create_boot_usb.sh /dev/sdX"
else
echo "[-] Ошибка сборки"
exit 1
fi