Загрузка данных


#!/bin/bash

echo "════════════════════════════════════════════════════════"
echo "    ЗАГРУЗОЧНЫЙ ОБРАЗ ДЛЯ EEE PC + DOOM + ИГРЫ"
echo "════════════════════════════════════════════════════════"

# Установка пакетов
sudo apt update
sudo apt install -y dosfstools mtools syslinux grub-pc-bin bsdgames

# Создаём образ 150 МБ (DOOM весит много)
echo "[1/6] Создание образа 150 МБ..."
dd if=/dev/zero of=linux.img bs=1M count=150 status=progress

# Форматируем весь образ как FAT32
mkfs.vfat -F 32 -n "EEELINUX" linux.img

# Настройка mtools
export MTOOLS_NO_VFAT=1
export MTOOLS_SKIP_CHECK=1

# Создаём структуру
echo "[2/6] Создание структуры..."
mmd -i linux.img ::/boot
mmd -i linux.img ::/bin
mmd -i linux.img ::/etc
mmd -i linux.img ::/dev
mmd -i linux.img ::/proc
mmd -i linux.img ::/sys
mmd -i linux.img ::/tmp
mmd -i linux.img ::/root
mmd -i linux.img ::/usr
mmd -i linux.img ::/usr/bin
mmd -i linux.img ::/usr/games
mmd -i linux.img ::/usr/share
mmd -i linux.img ::/usr/share/games
mmd -i linux.img ::/usr/share/games/doom
mmd -i linux.img ::/var
mmd -i linux.img ::/var/games

# BusyBox
echo "[3/6] Установка BusyBox..."
cp /bin/busybox /tmp/busybox
mcopy -i linux.img /tmp/busybox ::/bin/

# Команды
for cmd in sh ls cat mkdir rm cp mount umount vi echo ps kill df free uname hostname clear reset; do
    echo "#!/bin/busybox" > /tmp/${cmd}
    echo "/bin/busybox ${cmd}" >> /tmp/${cmd}
    mcopy -i linux.img /tmp/${cmd} ::/bin/
    mattrib +x -i linux.img ::/bin/${cmd}
done

# Nano
echo "[4/6] Установка Nano..."
cp /bin/nano /tmp/nano
mcopy -i linux.img /tmp/nano ::/bin/

# ============================================
# ДОБАВЛЯЕМ ИГРЫ
# ============================================
echo "[5/6] Установка игр..."

cd /tmp

# 1. Tetris
echo "  - Tetris..."
wget -q https://github.com/vicgeralds/vitetris/archive/refs/tags/v0.59.1.tar.gz -O vitetris.tar.gz
tar xf vitetris.tar.gz 2>/dev/null
cd vitetris-0.59.1
./configure --prefix=/usr 2>/dev/null >/dev/null
make 2>/dev/null >/dev/null
if [ -f vitetris ]; then
    cp vitetris /tmp/tetris
    cd /tmp
    mcopy -i ../linux.img /tmp/tetris ::/usr/games/
    mattrib +x -i ../linux.img ::/usr/games/tetris
fi

# 2. DOOM (Freedoom - бесплатная версия)
echo "  - DOOM (Freedoom)..."
# Скачиваем статический chocolate-doom
wget -q https://github.com/chocolate-doom/chocolate-doom/releases/download/chocolate-doom-3.0.1/chocolate-doom-3.0.1-win32.zip -O doom.zip 2>/dev/null || \
wget -q https://www.chocolate-doom.org/downloads/3.0.1/chocolate-doom-3.0.1-win32.zip -O doom.zip 2>/dev/null

if [ -f doom.zip ]; then
    unzip -q doom.zip
    # Ищем exe файлы
    for file in chocolate-doom-*/chocolate-doom.exe; do
        if [ -f "$file" ]; then
            cp "$file" /tmp/doom
            break
        fi
    done
else
    # Если не скачался, создаём скрипт-заглушку
    cat > /tmp/doom << 'DOOMSH'
#!/bin/sh
echo "═══════════════════════════════════════════"
echo "              DOOM для EEE PC"
echo "═══════════════════════════════════════════"
echo ""
echo "Для запуска DOOM нужно:"
echo "1. Установить chocolate-doom:"
echo "   sudo apt install chocolate-doom"
echo ""
echo "2. Скачать WAD файл:"
echo "   wget https://github.com/freedoom/freedoom/releases/download/v0.13.0/freedoom-0.13.0.zip"
echo "   unzip freedoom-0.13.0.zip"
echo "   cp freedoom-0.13.0/freedoom1.wad /usr/share/games/doom/"
echo ""
echo "3. Запустить:"
echo "   chocolate-doom -iwad /usr/share/games/doom/freedoom1.wad"
echo ""
echo "Нажми Enter для возврата..."
read
DOOMSH
fi

if [ -f /tmp/doom ]; then
    mcopy -i ../linux.img /tmp/doom ::/usr/games/
    mattrib +x -i ../linux.img ::/usr/games/doom
fi

# 3. Скачиваем Freedoom WAD (бесплатный DOOM)
echo "  - Скачивание Freedoom WAD..."
wget -q https://github.com/freedoom/freedoom/releases/download/v0.13.0/freedoom-0.13.0.zip -O freedoom.zip
if [ -f freedoom.zip ]; then
    unzip -q freedoom.zip
    if [ -f freedoom-0.13.0/freedoom1.wad ]; then
        mcopy -i ../linux.img freedoom-0.13.0/freedoom1.wad ::/usr/share/games/doom/
        mcopy -i ../linux.img freedoom-0.13.0/freedoom2.wad ::/usr/share/games/doom/ 2>/dev/null
        echo "  - Freedoom WAD добавлен!"
    fi
fi

# 4. Другие игры из bsdgames
echo "  - Дополнительные игры..."
for game in snake robots hunt; do
    if [ -f /usr/games/$game ]; then
        cp /usr/games/$game /tmp/$game
        mcopy -i ../linux.img /tmp/$game ::/usr/games/
        mattrib +x -i ../linux.img ::/usr/games/$game
    fi
done

# ============================================
# ИГРОВОЕ МЕНЮ С DOOM
# ============================================
echo "Создание игрового меню..."

cat > /tmp/game_menu.sh << 'MENU'
#!/bin/sh

while true; do
    clear
    echo "╔════════════════════════════════════════════════════╗"
    echo "║         ИГРЫ И РАЗВЛЕЧЕНИЯ ДЛЯ EEE PC            ║"
    echo "╠════════════════════════════════════════════════════╣"
    echo "║                                                    ║"
    echo "║  1. Тетрис (vitetris)                            ║"
    echo "║  2. Змейка (Snake)                               ║"
    echo "║  3. Роботы (Robots)                              ║"
    echo "║  4. Охота (Hunt)                                 ║"
    echo "║  5. DOOM (Freedoom) - КУЛЬТОВАЯ ИГРА!            ║"
    echo "║  6. Текстовый редактор (Nano)                    ║"
    echo "║  7. Командная строка                             ║"
    echo "║  8. Информация о системе                         ║"
    echo "║  9. Выход                                        ║"
    echo "║                                                    ║"
    echo "╚════════════════════════════════════════════════════╝"
    echo -n "Выбери [1-9]: "
    read choice
    
    case $choice in
        1)
            if [ -f /usr/games/tetris ]; then
                /usr/games/tetris
            else
                echo "Тетрис не установлен"
                sleep 2
            fi
            ;;
        2)
            if [ -f /usr/games/snake ]; then
                /usr/games/snake
            else
                echo "Змейка не установлена"
                sleep 2
            fi
            ;;
        3)
            if [ -f /usr/games/robots ]; then
                /usr/games/robots
            else
                echo "Роботы не установлены"
                sleep 2
            fi
            ;;
        4)
            if [ -f /usr/games/hunt ]; then
                /usr/games/hunt
            else
                echo "Охота не установлена"
                sleep 2
            fi
            ;;
        5)
            clear
            echo "═══════════════════════════════════════════"
            echo "              DOOM"
            echo "═══════════════════════════════════════════"
            echo ""
            if [ -f /usr/games/doom ] && [ -f /usr/share/games/doom/freedoom1.wad ]; then
                echo "Запуск DOOM..."
                echo "Управление:"
                echo "  Стрелки - движение"
                echo "  Ctrl - стрельба"
                echo "  Пробел - открыть двери"
                echo ""
                echo "Нажми Enter для запуска..."
                read
                /usr/games/doom -iwad /usr/share/games/doom/freedoom1.wad 2>/dev/null
            else
                echo "DOOM не готов к запуску!"
                echo ""
                echo "Что нужно сделать:"
                echo "1. DOOM установлен: $(test -f /usr/games/doom && echo '✅' || echo '❌')"
                echo "2. WAD файл: $(test -f /usr/share/games/doom/freedoom1.wad && echo '✅' || echo '❌')"
                echo ""
                echo "Скачать WAD:"
                echo "  wget https://github.com/freedoom/freedoom/releases/download/v0.13.0/freedoom-0.13.0.zip"
                echo "  unzip freedoom-0.13.0.zip"
                echo "  cp freedoom-0.13.0/freedoom1.wad /usr/share/games/doom/"
            fi
            echo ""
            echo "Нажми Enter для возврата..."
            read
            ;;
        6)
            /bin/nano
            ;;
        7)
            echo "Введи 'exit' для возврата в меню"
            /bin/sh
            ;;
        8)
            clear
            echo "═══════════════════════════════════════════"
            echo "      ИНФОРМАЦИЯ О СИСТЕМЕ"
            echo "═══════════════════════════════════════════"
            echo ""
            echo "Система: Linux FAT32 для EEE PC"
            echo "Ядро: $(/bin/uname -r 2>/dev/null || echo 'минимальное')"
            echo ""
            echo "Память:"
            /bin/free -h 2>/dev/null || echo "не определена"
            echo ""
            echo "Диск:"
            /bin/df -h 2>/dev/null || echo "не определён"
            echo ""
            echo "Игры:"
            for g in tetris snake robots hunt doom; do
                if [ -f /usr/games/$g ]; then
                    echo "  ✅ $g"
                fi
            done
            echo ""
            echo "Нажми Enter для возврата..."
            read
            ;;
        9)
            exit 0
            ;;
        *)
            echo "Неверный выбор!"
            sleep 1
            ;;
    esac
done
MENU

mcopy -i linux.img /tmp/game_menu.sh ::/usr/games/menu
mattrib +x -i linux.img ::/usr/games/menu

# Скрипт автозапуска
cat > /tmp/init.sh << 'INIT'
#!/bin/sh

# Монтируем системы
/bin/mount -t proc none /proc
/bin/mount -t sysfs none /sys
/bin/mount -t devtmpfs none /dev

# Очищаем экран
echo -e "\033[2J\033[H"

echo ""
echo "╔════════════════════════════════════════════════════╗"
echo "║     EEE PC LINUX + DOOM!                         ║"
echo "╠════════════════════════════════════════════════════╣"
echo "║  Введи 'menu' для запуска игр                    ║"
echo "║  DOOM ждёт тебя!                                 ║"
echo "╚════════════════════════════════════════════════════╝"
echo ""

# Запускаем шелл
/bin/sh
INIT
mcopy -i linux.img /tmp/init.sh ::/
mattrib +x -i linux.img ::/init.sh

# ============================================
# УСТАНОВКА ЗАГРУЗЧИКА
# ============================================
echo "[6/6] Установка загрузчика..."

# Ядро-заглушка
cat > /tmp/vmlinuz << 'KERNEL'
#!/bin/sh
exec /init.sh
KERNEL
mcopy -i linux.img /tmp/vmlinuz ::/boot/
mattrib +x -i linux.img ::/boot/vmlinuz

# Syslinux конфиг
cat > /tmp/syslinux.cfg << 'SYSLINUX'
DEFAULT linux
TIMEOUT 10
PROMPT 0

LABEL linux
    SAY Booting EEE PC Linux with DOOM...
    KERNEL /boot/vmlinuz
SYSLINUX

mcopy -i linux.img /tmp/syslinux.cfg ::/syslinux.cfg

# Установка MBR
syslinux -i linux.img 2>/dev/null
dd if=/usr/lib/syslinux/mbr.bin of=linux.img bs=440 count=1 conv=notrunc 2>/dev/null
echo -ne "\x80\x01" | dd of=linux.img bs=1 seek=446 count=2 conv=notrunc 2>/dev/null
echo -ne "\x55\xAA" | dd of=linux.img bs=1 seek=510 count=2 conv=notrunc 2>/dev/null

# Очистка
cd /tmp
rm -rf *.tar.gz *.zip vitetris-* freedoom-* chocolate-doom-* doom 2>/dev/null
rm -f *.sh *.cfg vmlinuz busybox nano tetris snake robots hunt 2>/dev/null

echo ""
echo "════════════════════════════════════════════════════════"
echo "  ✅ ГОТОВО! Образ с DOOM создан!"
echo "════════════════════════════════════════════════════════"
echo ""
echo "Размер: $(du -h /tmp/linux.img | cut -f1)"
echo ""
echo "Запись на флешку:"
echo "  sudo dd if=/tmp/linux.img of=/dev/sdX bs=1M status=progress"
echo ""
echo "После загрузки на Eee PC:"
echo "  1. Введи 'menu'"
echo "  2. Выбери DOOM"
echo "  3. УБИВАЙ ДЕМОНОВ!"
echo ""
echo "════════════════════════════════════════════════════════"