Загрузка данных
#!/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 "Образ готов к использованию!"