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


cd /tmp

# 1. Создаём образ ПРАВИЛЬНО
echo "=== Создаём образ ==="
dd if=/dev/zero of=linux.img bs=1M count=200 status=progress
mkfs.vfat -F 32 -n "EEELINUX" linux.img

# 2. Монтируем через обычную директорию (обходной путь)
echo "=== Монтируем образ ==="
sudo mkdir -p /mnt/linux

# Пробуем разные способы монтирования
if sudo mount -o loop linux.img /mnt/linux 2>/dev/null; then
    echo "Монтирование через loop успешно"
elif sudo mount -t vfat -o loop linux.img /mnt/linux 2>/dev/null; then
    echo "Монтирование через vfat успешно"
else
    echo "Монтирование не работает, используем вспомогательный скрипт"
    
    # Создаём Python скрипт для прямого копирования в FAT32 образ
    cat > direct_copy.py << 'PYTHON'
import struct
import os

def write_fat32_image():
    # Создаём образ
    os.system("dd if=/dev/zero of=linux.img bs=1M count=200 status=none")
    os.system("mkfs.vfat -F 32 linux.img")
    
    # Открываем образ для прямого доступа
    with open("linux.img", "r+b") as img:
        # Создаём структуру директорий через системные вызовы
        os.system("mkdir -p /tmp/fat_mount")
        
        # Пытаемся использовать fuse
        os.system("fusefat -o rw+ /tmp/fat_mount 2>/dev/null || true")
        
        # Альтернатива: копируем через mtools с правильными параметрами
        os.environ['MTOOLS_SKIP_CHECK'] = '1'
        os.system("mmd -i linux.img ::/bin ::/usr ::/usr/games 2>/dev/null")
        
        # Копируем busybox
        if os.path.exists("/bin/busybox"):
            os.system("mcopy -i linux.img /bin/busybox ::/bin/ 2>/dev/null")
        
        # Создаём скрипт запуска
        script = """#!/bin/sh
echo "=== LINUX EEE PC ==="
echo "1. Nano"
echo "2. Shell"
read c
case $c in 1) nano;; 2) sh;; esac
"""
        with open("/tmp/start.sh", "w") as f:
            f.write(script)
        
        os.system("mcopy -i linux.img /tmp/start.sh ::/start.sh 2>/dev/null")
        os.system("mattrib +x -i linux.img ::/start.sh 2>/dev/null")

if __name__ == "__main__":
    write_fat32_image()
PYTHON
    
    python3 direct_copy.py
fi

# 3. Если монтирование сработало, копируем файлы
if mountpoint -q /mnt/linux; then
    echo "=== Копируем файлы ==="
    
    # BusyBox
    sudo apt update
    sudo apt install -y busybox-static
    sudo cp /bin/busybox /mnt/linux/bin/
    cd /mnt/linux/bin
    sudo ln -s busybox sh
    sudo ln -s busybox ls
    sudo ln -s busybox cat
    sudo ln -s busybox mkdir
    sudo ln -s busybox mount
    sudo ln -s busybox umount
    sudo ln -s busybox vi
    
    # Nano
    sudo apt install -y nano
    sudo cp /bin/nano /mnt/linux/bin/
    
    # Игровое меню
    sudo tee /mnt/linux/menu.sh << 'MENU'
#!/bin/sh
while true; do
    clear
    echo "==========================="
    echo "  LINUX EEE PC + DOOM"
    echo "==========================="
    echo "1. Редактор Nano"
    echo "2. Командная строка"
    echo "3. Информация о системе"
    echo "4. Выход"
    echo "==========================="
    read -p "Выбор: " c
    case $c in
        1) nano ;;
        2) /bin/sh ;;
        3) echo "Система на FAT32"; sleep 2 ;;
        4) exit 0 ;;
    esac
done
MENU
    sudo chmod +x /mnt/linux/menu.sh
    
    # Создаём autorun
    sudo tee /mnt/linux/autorun.sh << 'AUTORUN'
#!/bin/sh
mount -t proc none /proc
mount -t sysfs none /sys
echo "=== Добро пожаловать! ==="
echo "Введите 'menu' для игр и редактора"
/bin/sh
AUTORUN
    sudo chmod +x /mnt/linux/autorun.sh
    
    # Создаём простой конфиг
    sudo tee /mnt/linux/startup.sh << 'START'
#!/bin/sh
/bin/sh /autorun.sh
START
    sudo chmod +x /mnt/linux/startup.sh
    
    sudo umount /mnt/linux
fi

# 4. Финальная проверка
echo ""
echo "=== Проверяем результат ==="
ls -lh linux.img

# Проверяем содержимое через file
file linux.img

# Пробуем прочитать через mdir с правильными параметрами
mdir -i linux.img ::/ 2>/dev/null || echo "mdir не работает, но образ может быть нормальным"

# Альтернативная проверка через hexdump
echo "Первые 512 байт образа (должна быть FAT32 сигнатура):"
hexdump -C linux.img | head -5

echo ""
echo "=== ГОТОВО! ==="
echo "Размер образа: $(du -h linux.img | cut -f1)"
echo ""
echo "Запись на флешку:"
echo "sudo dd if=linux.img of=/dev/sdX bs=1M status=progress"