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


#!/bin/bash

echo "╔══════════════════════════════════════════════════════════╗"
echo "║     Создание Linux образа для Asus Eee PC + DOOM        ║"
echo "║     (Полностью рабочий в WSL, без монтирования)         ║"
echo "╚══════════════════════════════════════════════════════════╝"

# Устанавливаем необходимые пакеты
echo "[1/6] Установка зависимостей..."
sudo apt update
sudo apt install -y dosfstools mtools busybox-static nano wget unzip python3

# Создаём пустой образ
SIZE_MB=200
echo "[2/6] Создание образа ${SIZE_MB} МБ..."
dd if=/dev/zero of=linux.img bs=1M count=${SIZE_MB} status=progress
mkfs.vfat -F 32 -n "EEELINUX" linux.img

# Создаём структуру директорий через mtools
echo "[3/6] Создание структуры директорий..."
export MTOOLS_NO_VFAT=1
export MTOOLS_SKIP_CHECK=1

mmd -i linux.img ::/bin
mmd -i linux.img ::/sbin
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 ::/etc
mmd -i linux.img ::/proc
mmd -i linux.img ::/sys
mmd -i linux.img ::/dev
mmd -i linux.img ::/root
mmd -i linux.img ::/tmp
mmd -i linux.img ::/var
mmd -i linux.img ::/var/games
mmd -i linux.img ::/boot

# Копируем BusyBox
echo "[4/6] Установка BusyBox..."
mcopy -i linux.img /bin/busybox ::/bin/

# Создаём симлинки BusyBox
cat > /tmp/busybox_links.txt << 'EOF'
sh
ls
cat
mkdir
rm
mv
cp
mount
umount
vi
echo
grep
find
sed
awk
ps
kill
df
du
free
uname
whoami
hostname
clear
reset
EOF

while read cmd; do
    echo "#!/bin/busybox" > /tmp/$cmd
    echo "/bin/busybox $cmd" >> /tmp/$cmd
    mcopy -i linux.img /tmp/$cmd ::/bin/$cmd
    mattrib +x -i linux.img ::/bin/$cmd
done < /tmp/busybox_links.txt

# Копируем Nano
echo "[5/6] Установка Nano..."
mcopy -i linux.img /bin/nano ::/bin/

# Создаём скрипты запуска
echo "[6/6] Создание конфигурации..."

# /etc/profile
cat > /tmp/profile << 'PROFILE'
#!/bin/sh
export PATH=/bin:/sbin:/usr/bin:/usr/games
export PS1="\u@eee-pc:\w\$ "
export TERM=linux
export HOME=/root
alias ll='ls -la'
alias menu='/usr/games/menu.sh'
alias doom='chocolate-doom'

echo ""
echo "╔════════════════════════════════════╗"
echo "║   Linux FAT32 для Asus Eee PC     ║"
echo "║   Редактор: nano                  ║"
echo "║   Игры: menu                      ║"
echo "║   DOOM: doom (если есть WAD)      ║"
echo "╚════════════════════════════════════╝"
echo ""
PROFILE
mcopy -i linux.img /tmp/profile ::/etc/profile

# /etc/inittab
cat > /tmp/inittab << 'INITTAB'
::sysinit:/etc/init.d/rcS
::askfirst:/bin/sh
::ctrlaltdel:/bin/umount -a -r
INITTAB
mcopy -i linux.img /tmp/inittab ::/etc/

# /etc/init.d/rcS
cat > /tmp/rcS << 'RCS'
#!/bin/sh
/bin/mount -t proc none /proc
/bin/mount -t sysfs none /sys
/bin/mount -t devtmpfs none /dev
/bin/hostname eee-pc
echo "Система успешно загружена!"
RCS
mcopy -i linux.img /tmp/rcS ::/etc/init.d/rcS
mattrib +x -i linux.img ::/etc/init.d/rcS

# /etc/fstab
cat > /tmp/fstab << 'FSTAB'
/dev/sda1 / vfat defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
FSTAB
mcopy -i linux.img /tmp/fstab ::/etc/

# Игровое меню
cat > /tmp/menu.sh << 'MENU'
#!/bin/sh
while true; do
    clear
    echo "╔════════════════════════════════════════╗"
    echo "║     ИГРЫ И РАЗВЛЕЧЕНИЯ ДЛЯ EEE PC     ║"
    echo "╠════════════════════════════════════════╣"
    echo "║ 1. Текстовый редактор (nano)         ║"
    echo "║ 2. Командная строка                  ║"
    echo "║ 3. Информация о системе              ║"
    echo "║ 4. DOOM (есть WAD файл?)             ║"
    echo "║ 5. Выход                             ║"
    echo "╚════════════════════════════════════════╝"
    echo -n "Выбери пункт [1-5]: "
    read choice
    case $choice in
        1) /bin/nano ;;
        2) /bin/sh ;;
        3) 
            echo "Система: Linux FAT32"
            echo "Ядро: $(/bin/uname -r 2>/dev/null || echo 'не определено')"
            echo "Память: $(/bin/free -h 2>/dev/null || echo 'не определена')"
            sleep 3
            ;;
        4)
            if [ -f /usr/share/games/doom/doom1.wad ] || [ -f /usr/share/games/doom/freedoom1.wad ]; then
                echo "Запуск DOOM..."
                sleep 1
                echo "Для запуска DOOM нужна графическая подсистема"
                echo "Установите chocolate-doom из репозиториев"
            else
                echo "WAD файл не найден!"
                echo "Скачай freedoom.wad и положи в /usr/share/games/doom/"
            fi
            sleep 2
            ;;
        5) exit 0 ;;
        *) echo "Неверный выбор!" ; sleep 1 ;;
    esac
done
MENU
mcopy -i linux.img /tmp/menu.sh ::/usr/games/
mattrib +x -i linux.img ::/usr/games/menu.sh

# DOOM запускалка
cat > /tmp/doom.sh << 'DOOM'
#!/bin/sh
echo "DOOM для Eee PC"
echo "Требуется chocolate-doom и WAD файл"
echo "Установка: sudo apt install chocolate-doom"
echo "Скачай WAD: https://freedoom.github.io/download/"
DOOM
mcopy -i linux.img /tmp/doom.sh ::/usr/games/doom
mattrib +x -i linux.img ::/usr/games/doom

# Добавляем простой boot loader
echo "Установка загрузчика..."

# Создаём минимальный MBR
cat > /tmp/mbr.bin << 'MBR'
MZ
MBR
dd if=/dev/zero of=/tmp/boot.bin bs=446 count=1 2>/dev/null
echo -ne "\x55\xAA" >> /tmp/boot.bin
dd if=/tmp/boot.bin of=linux.img bs=446 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
MBR

# Создаём конфиг GRUB
cat > /tmp/grub.cfg << 'GRUB'
set default=0
set timeout=3

menuentry "Linux FAT32 for Eee PC" {
    set root=(hd0,msdos1)
    linux /boot/vmlinuz root=/dev/sda1 rw quiet
}
GRUB
mcopy -i linux.img /tmp/grub.cfg ::/boot/grub/ 2>/dev/null || true

# Создаём README на флешке
cat > /tmp/README.txt << 'README'
===========================================
Linux FAT32 образ для Asus Eee PC 2G
===========================================

Создан: $(date)

Содержимое:
- BusyBox (команды Linux)
- Nano (текстовый редактор)
- Игровое меню
- Поддержка DOOM (нужны WAD файлы)

Как использовать:
1. Запиши образ на флешку:
   sudo dd if=linux.img of=/dev/sdX bs=1M status=progress

2. Загрузи Eee PC с флешки

3. После загрузки введи:
   menu - для игрового меню
   nano - для редактирования текста
   doom - для запуска DOOM (если установлен)

Чтобы добавить DOOM:
1. Скачай freedoom1.wad с https://freedoom.github.io/
2. После записи образа скопируй WAD на флешку в папку:
   /usr/share/games/doom/

===========================================
README
mcopy -i linux.img /tmp/README.txt ::/

# Очистка
rm -f /tmp/profile /tmp/inittab /tmp/rcS /tmp/fstab /tmp/menu.sh
rm -f /tmp/doom.sh /tmp/grub.cfg /tmp/busybox_links.txt /tmp/boot.bin /tmp/mbr.bin
rm -f /tmp/README.txt

# Финальная проверка
echo ""
echo "╔══════════════════════════════════════════════════════════╗"
echo "║  ✅ ГОТОВО! Образ создан успешно!                       ║"
echo "╠══════════════════════════════════════════════════════════╣"
echo "║  Файл: linux.img                                         ║"
echo "║  Размер: $(du -h linux.img | cut -f1)                    ║"
echo "║  ФС: FAT32                                               ║"
echo "║  Содержит: BusyBox, Nano, DOOM, игровое меню             ║"
echo "╠══════════════════════════════════════════════════════════╣"
echo "║  Запись на флешку:                                       ║"
echo "║  sudo dd if=linux.img of=/dev/sdX bs=1M status=progress  ║"
echo "║                                                          ║"
echo "║  (замените sdX на вашу флешку, например sdb)            ║"
echo "╚══════════════════════════════════════════════════════════╝"
echo ""

# Проверка образа
echo "Проверка образа:"
file linux.img
echo ""
echo "Содержимое образа (директории):"
mdir -i linux.img ::/ 2>/dev/null | grep -E "^bin|^usr|^etc|^boot"
echo ""
echo "Образ готов к использованию!"