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


#!/bin/bash
set -e

echo "=== Создание linux.img для Asus Eee PC 2G ==="
echo "=== Ядро 2.6.22 + игры + 4 МБ ОЗУ ==="

# Размер образа = 50 МБ (влезает на SSD 2 ГБ)
echo "[1/7] Создание образа 50 МБ..."
dd if=/dev/zero of=linux.img bs=1M count=50
echo -e "o\nn\np\n1\n\n\na\nw" | fdisk linux.img

sudo losetup -fP linux.img
LOOP=$(losetup -l | grep linux.img | awk '{print $1}')
sudo mkfs.ext2 ${LOOP}p1
sudo mount ${LOOP}p1 /mnt/linux
sudo mkdir -p /mnt/linux/{boot,bin,sbin,dev,proc,sys,etc,lib,usr/games,var/games,tmp}

# --------------------------------------------------
# Шаг 2: Ядро 2.6.22.1 (поддержка Eee PC 2G)
# --------------------------------------------------
echo "[2/7] Сборка ядра 2.6.22.1..."
cd /tmp
wget -q https://mirrors.edge.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.1.tar.xz
tar xf linux-2.6.22.1.tar.xz
cd linux-2.6.22.1
make mrproper

# Конфиг для Eee PC 2G (Pentium M, Intel 910GML, PATA SSD, Atheros)
cat > .config << 'KERNCONF'
# Процессор
CONFIG_X86_32=y
CONFIG_MPENTIUMM=y
CONFIG_SMP=n
CONFIG_NR_CPUS=1

# Память
CONFIG_HIGHMEM=n
CONFIG_FLATMEM=y
CONFIG_4MB_PAGES=y

# ACPI
CONFIG_ACPI=y
CONFIG_ACPI_SLEEP=y

# PCI
CONFIG_PCI=y
CONFIG_PCIEPORTBUS=y

# Диски (PATA SSD Eee PC)
CONFIG_BLK_DEV_SD=y
CONFIG_ATA=y
CONFIG_ATA_PIIX=y
CONFIG_PATA_MPIIX=y

# Файловые системы
CONFIG_EXT2_FS=y
CONFIG_EXT3_FS=y
CONFIG_TMPFS=y
CONFIG_PROC_FS=y
CONFIG_SYSFS=y

# Сеть (Atheros L2 Ethernet)
CONFIG_NET=y
CONFIG_INET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_ATL2=y

# WiFi (Atheros AR5007EG)
CONFIG_ATH5K=m

# Графика (Intel GMA 900)
CONFIG_DRM=y
CONFIG_DRM_I915=y
CONFIG_FB=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_LOGO=y

# USB
CONFIG_USB=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_UHCI_HCD=y
CONFIG_USB_STORAGE=y

# TTY
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y

# Devtmpfs
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y

# Базовые
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF=y
CONFIG_BINFMT_SCRIPT=y
KERNCONF

make olddefconfig 2>/dev/null
make -j$(nproc)
sudo cp arch/i386/boot/bzImage /mnt/linux/boot/vmlinuz
cd /tmp && rm -rf linux-2.6.22.1

# --------------------------------------------------
# Шаг 3: Busybox (стабильный)
# --------------------------------------------------
echo "[3/7] Установка busybox..."
cd /tmp
wget -q https://busybox.net/downloads/busybox-1.21.1.tar.bz2
tar xf busybox-1.21.1.tar.bz2
cd busybox-1.21.1
cat > .config << 'BBCONF'
CONFIG_STATIC=y
CONFIG_INSTALL_NO_USR=y
CONFIG_FEATURE_INSTALLER=y
CONFIG_ASH=y
CONFIG_CAT=y
CONFIG_LS=y
CONFIG_CP=y
CONFIG_MV=y
CONFIG_MKDIR=y
CONFIG_RM=y
CONFIG_CHMOD=y
CONFIG_MOUNT=y
CONFIG_UMOUNT=y
CONFIG_VI=y
CONFIG_CLEAR=y
CONFIG_ECHO=y
CONFIG_HOSTNAME=y
CONFIG_IFCONFIG=y
CONFIG_PING=y
CONFIG_WGET=y
CONFIG_TFTP=y
CONFIG_FDISK=y
CONFIG_MKFS_EXT2=y
CONFIG_SYSLOGD=y
CONFIG_KLOGD=y
CONFIG_GETTY=y
CONFIG_LOGIN=y
CONFIG_PASSWD=y
CONFIG_INIT=y
CONFIG_MDEV=y
CONFIG_MODPROBE=y
BBCONF
make oldconfig
make -j$(nproc)
sudo make CONFIG_PREFIX=/mnt/linux install
cd /tmp && rm -rf busybox-1.21.1

# --------------------------------------------------
# Шаг 4: Игры
# --------------------------------------------------
echo "[4/7] Установка игр..."

# Тетрис
cd /tmp
wget -q https://github.com/vicgeralds/vitetris/archive/refs/tags/v0.59.1.tar.gz -O vitetris.tar.gz
tar xf vitetris.tar.gz
cd vitetris-0.59.1
./configure --prefix=/usr 2>/dev/null
make -j$(nproc) 2>/dev/null
sudo cp vitetris /mnt/linux/usr/games/ 2>/dev/null || true
cd /tmp && rm -rf vitetris*

# Nethack
cd /tmp
wget -q https://www.nethack.org/download/3.4.3/nethack-343.tgz
tar xf nethack-343.tgz
cd nethack-3.4.3
./configure --prefix=/usr 2>/dev/null
make -j$(nproc) 2>/dev/null
sudo cp nethack /mnt/linux/usr/games/ 2>/dev/null || true
cd /tmp && rm -rf nethack*

# ASCII-игры из bsdgames (тетрис, змейка, роботы и т.д.)
sudo apt install -y bsdgames 2>/dev/null || true
sudo cp /usr/games/tetris /mnt/linux/usr/games/ 2>/dev/null || true
sudo cp /usr/games/snake /mnt/linux/usr/games/ 2>/dev/null || true
sudo cp /usr/games/robots /mnt/linux/usr/games/ 2>/dev/null || true
sudo cp /usr/games/hunt /mnt/linux/usr/games/ 2>/dev/null || true

# --------------------------------------------------
# Шаг 5: Меню игр
# --------------------------------------------------
echo "[5/7] Создание меню..."
sudo tee /mnt/linux/usr/games/menu.sh << 'MENU'
#!/bin/sh
while true; do
    clear
    echo "╔══════════════════════════════╗"
    echo "║  ИГРЫ (Linux 2.6, 4MB O3У)  ║"
    echo "╠══════════════════════════════╣"
    echo "║ 1. Тетрис (vitetris)        ║"
    echo "║ 2. Змейка (snake)           ║"
    echo "║ 3. Nethack (рогалик)        ║"
    echo "║ 4. Роботы (robots)          ║"
    echo "║ 5. Охота (hunt)             ║"
    echo "║ 6. Выход                    ║"
    echo "╚══════════════════════════════╝"
    echo -n "Выбери игру: "
    read choice
    case $choice in
        1) vitetris ;;
        2) snake ;;
        3) nethack ;;
        4) robots ;;
        5) hunt ;;
        6) exit 0 ;;
        *) echo "Неверный выбор!" ; sleep 1 ;;
    esac
done
MENU
sudo chmod +x /mnt/linux/usr/games/menu.sh

# --------------------------------------------------
# Шаг 6: Настройка системы
# --------------------------------------------------
echo "[6/7] Настройка /etc..."

# /etc/profile
sudo tee /mnt/linux/etc/profile << 'PROFILE'
export PATH=/bin:/sbin:/usr/bin:/usr/games
export PS1="\u@eee:\w\$ "
alias ll="ls -la"
alias menu="/usr/games/menu.sh"
echo ""
echo "  Linux 2.6.22 на Asus Eee PC 2G"
echo "  ОЗУ: 512 МБ (режим 4 МБ в эмуляции)"
echo "  Введи 'menu' для списка игр"
echo ""
PROFILE

# /etc/inittab
sudo tee /mnt/linux/etc/inittab << 'INITTAB'
::sysinit:/etc/init.d/rcS
::askfirst:/bin/sh
::ctrlaltdel:/bin/umount -a -r
INITTAB

# /etc/init.d/rcS
sudo mkdir -p /mnt/linux/etc/init.d
sudo tee /mnt/linux/etc/init.d/rcS << 'RCS'
#!/bin/sh
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devtmpfs none /dev
/bin/hostname eee
echo "Система готова."
RCS
sudo chmod +x /mnt/linux/etc/init.d/rcS

# /etc/fstab
sudo tee /mnt/linux/etc/fstab << 'FSTAB'
/dev/sda1 / ext2 defaults 0 1
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
FSTAB

# --------------------------------------------------
# Шаг 7: Загрузчик syslinux
# --------------------------------------------------
echo "[7/7] Установка загрузчика..."
sudo apt install -y syslinux
sudo mkdir -p /mnt/linux/boot/syslinux
sudo extlinux --install /mnt/linux/boot/syslinux

# Конфиг syslinux
sudo tee /mnt/linux/boot/syslinux/syslinux.cfg << 'SYSLINUX'
DEFAULT linux
LABEL linux
    KERNEL /boot/vmlinuz
    APPEND root=/dev/sda1 ro quiet
SYSLINUX

# Записываем MBR
sudo dd if=/usr/lib/syslinux/mbr/mbr.bin of=${LOOP} bs=440 count=1 conv=notrunc 2>/dev/null || \
sudo dd if=/usr/lib/SYSLINUX/mbr.bin of=${LOOP} bs=440 count=1 conv=notrunc 2>/dev/null || true

# Размонтирование
sudo umount /mnt/linux
sudo losetup -d ${LOOP}

echo ""
echo "╔══════════════════════════════════════╗"
echo "║  ГОТОВО! linux.img (50 МБ)          ║"
echo "╠══════════════════════════════════════╣"
echo "║ Ядро:    Linux 2.6.22               ║"
echo "║ Игры:    Тетрис, Змейка, Nethack    ║"
echo "║          Роботы, Охота              ║"
echo "║ Загрузка: syslinux                  ║"
echo "║ Железо:  Eee PC 2G (Pentium M)     ║"
echo "╚══════════════════════════════════════╝"
echo ""
echo "Запись на флешку:"
echo "  sudo dd if=linux.img of=/dev/sdX bs=1M"
echo ""
echo "Загрузка на Eee PC:"
echo "  1. Вставить флешку"
echo "  2. Зажать ESC при включении"
echo "  3. Выбрать флешку в Boot Menu"