Загрузка данных
#!/bin/bash
echo "╔══════════════════════════════════════════════════════════╗"
echo "║ Специальная сборка ДЛЯ EEE PC 2G (Intel GMA 900) ║"
echo "╚══════════════════════════════════════════════════════════╝"
# Устанавливаем зависимости
sudo apt update
sudo apt install -y dosfstools mtools busybox-static nano wget unzip python3 grub-pc-bin grub-common
# Создаём образ
SIZE_MB=200
echo "[1/7] Создание образа ${SIZE_MB} МБ..."
dd if=/dev/zero of=linux.img bs=1M count=${SIZE_MB} status=progress
mkfs.vfat -F 32 -n "EEELINUX" linux.img
# Создаём структуру
echo "[2/7] Создание структуры..."
export MTOOLS_NO_VFAT=1
mmd -i linux.img ::/bin ::/sbin ::/boot ::/boot/grub
mmd -i linux.img ::/etc ::/etc/init.d
mmd -i linux.img ::/usr ::/usr/bin ::/usr/games ::/usr/share
mmd -i linux.img ::/proc ::/sys ::/dev ::/root ::/tmp ::/var
# BusyBox
echo "[3/7] Установка BusyBox..."
mcopy -i linux.img /bin/busybox ::/bin/
# Создаём симлинки
for cmd in sh ls cat mkdir rm mv cp mount umount vi echo grep ps kill df free uname hostname clear; 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
# Nano
echo "[4/7] Установка Nano..."
mcopy -i linux.img /bin/nano ::/bin/
# Ключевое: Специальный конфиг для Eee PC
echo "[5/7] Настройка для Eee PC (Intel GMA 900)..."
# /etc/profile
cat > /tmp/profile << 'PROFILE'
#!/bin/sh
export PATH=/bin:/sbin:/usr/bin:/usr/games
export PS1="eee-pc:\w\$ "
export TERM=linux
alias ll='ls -la'
alias menu='/menu.sh'
echo ""
echo "====================================="
echo " EEE PC LINUX FAT32 (Intel GMA 900)"
echo " Команды: nano, menu"
echo "====================================="
PROFILE
mcopy -i linux.img /tmp/profile ::/etc/
# Важно! Правильный inittab для framebuffer
cat > /tmp/inittab << 'INITTAB'
::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::ctrlaltdel:/bin/umount -a -r
INITTAB
mcopy -i linux.img /tmp/inittab ::/etc/
# 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
# Загружаем модуль для GMA 900
/sbin/modprobe i915 2>/dev/null
# Настраиваем framebuffer для Eee PC
echo "0" > /sys/class/vtconsole/vtcon1/bind 2>/dev/null
echo "1" > /sys/class/vtconsole/vtcon0/bind 2>/dev/null
# Очищаем экран
/usr/bin/clear
echo "┌─────────────────────────────────────┐"
echo "│ EEE PC FAT32 LINUX ЗАГРУЖЕН! │"
echo "│ Введи 'menu' для запуска игр │"
echo "└─────────────────────────────────────┘"
RCS
mcopy -i linux.img /tmp/rcS ::/etc/init.d/
mattrib +x -i linux.img ::/etc/init.d/rcS
# clear команда
echo "#!/bin/busybox" > /tmp/clear
echo "/bin/busybox clear" >> /tmp/clear
mcopy -i linux.img /tmp/clear ::/usr/bin/
mattrib +x -i linux.img ::/usr/bin/clear
# Игровое меню
cat > /tmp/menu.sh << 'MENU'
#!/bin/sh
while true; do
printf "\033[2J\033[H"
echo "╔════════════════════════════════╗"
echo "║ EEE PC ИГРОВОЙ ЦЕНТР ║"
echo "╠════════════════════════════════╣"
echo "║ 1. Редактор Nano ║"
echo "║ 2. Командная строка ║"
echo "║ 3. Информация ║"
echo "║ 4. Тест экрана (цвета) ║"
echo "║ 5. Выход ║"
echo "╚════════════════════════════════╝"
printf "Выбор: "
read choice
case $choice in
1) nano ;;
2) sh ;;
3)
echo "Модель: Asus Eee PC"
echo "Видео: Intel GMA 900"
free
sleep 3
;;
4)
printf "\033[41m\033[37mКРАСНЫЙ\033[0m \033[42m\033[30mЗЕЛЕНЫЙ\033[0m \033[44m\033[37mСИНИЙ\033[0m"
printf "\n\033[43m\033[30mЖЕЛТЫЙ\033[0m \033[45m\033[37mФИОЛЕТ\033[0m \033[46m\033[30mГОЛУБОЙ\033[0m\n"
sleep 3
;;
5) exit 0 ;;
esac
done
MENU
mcopy -i linux.img /tmp/menu.sh ::/
mattrib +x -i linux.img ::/menu.sh
# Установка GRUB
echo "[6/7] Установка загрузчика GRUB..."
# Создаём конфиг GRUB для Eee PC
cat > /tmp/grub.cfg << 'GRUB'
set default=0
set timeout=5
set gfxmode=640x480
set gfxpayload=keep
insmod part_msdos
insmod fat
insmod vbe
insmod vga
# Видеорежимы для Eee PC
insmod i915
insmod fb
menuentry "EEE PC Linux FAT32 (Intel GMA 900)" {
set root=(hd0,msdos1)
linux /boot/vmlinuz root=/dev/sda1 rw quiet nomodeset vga=0x317 video=640x480
echo "Загрузка..."
}
menuentry "EEE PC Linux - Безопасный режим" {
set root=(hd0,msdos1)
linux /boot/vmlinuz root=/dev/sda1 rw nomodeset nofb vga=normal
}
menuentry "Проверка видео" {
set root=(hd0,msdos1)
linux /boot/vmlinuz root=/dev/sda1 rw nomodeset video=vesafb
}
GRUB
mcopy -i linux.img /tmp/grub.cfg ::/boot/grub/
# Ядро - минимальное готовое
echo "[7/7] Добавление минимального ядра..."
# Скачиваем минимальное ядро для i386
cd /tmp
wget -q https://github.com/ivandavidov/minimal/releases/download/v0.1/minimal_linux_live_32bit.iso -O minimal.iso || {
echo "Создаём минимальное ядро вручную..."
# Простейший загрузочный скрипт
cat > /tmp/vmlinuz << 'KERNEL'
#!/bin/sh
echo "Ядро загружено!"
/bin/sh
KERNEL
mcopy -i ../linux.img /tmp/vmlinuz ::/boot/
mattrib +x -i ../linux.img ::/boot/vmlinuz
}
# Если скачали ISO, извлекаем ядро
if [ -f minimal.iso ]; then
sudo mkdir -p /tmp/iso
sudo mount -o loop minimal.iso /tmp/iso 2>/dev/null
if [ -f /tmp/iso/boot/vmlinuz ]; then
mcopy -i ../linux.img /tmp/iso/boot/vmlinuz ::/boot/
fi
if [ -f /tmp/iso/boot/initrd ]; then
mcopy -i ../linux.img /tmp/iso/boot/initrd ::/boot/
fi
sudo umount /tmp/iso
sudo rm -rf /tmp/iso
fi
cd -
# Устанавливаем GRUB на образ (через losetup)
echo "Установка GRUB на образ..."
sudo losetup -fP linux.img
LOOP=$(losetup -l | grep linux.img | tail -1 | awk '{print $1}')
if [ -n "$LOOP" ]; then
sudo mkdir -p /mnt/linux
if sudo mount ${LOOP}p1 /mnt/linux 2>/dev/null; then
sudo grub-install --target=i386-pc --boot-directory=/mnt/linux/boot ${LOOP} 2>/dev/null || echo "GRUB install warning"
sudo umount /mnt/linux
fi
sudo losetup -d ${LOOP}
fi
# Создаём README с инструкцией по загрузке
cat > /tmp/README_EEE_PC.txt << 'README'
=====================================
ЗАГРУЗКА НА EEE PC - РЕШЕНИЕ ПРОБЛЕМ
=====================================
Если черный экран:
1. При загрузке GRUB нажми 'e' на пункте меню
2. Найди строку с "linux /boot/vmlinuz"
3. Замени параметры на:
nomodeset vga=normal nofb
4. Нажми Ctrl+X для загрузки
Или попробуй разные варианты:
Вариант А (без видеоускорения):
linux /boot/vmlinuz root=/dev/sda1 rw nomodeset
Вариант Б (VGA совместимость):
linux /boot/vmlinuz root=/dev/sda1 rw vga=0x0117
Вариант В (минимальный):
linux /boot/vmlinuz root=/dev/sda1 rw acpi=off noapic
Вариант Г (для очень старых Eee PC):
linux /boot/vmlinuz root=/dev/sda1 ro quiet nomodeset acpi=off
=====================================
После загрузки введи:
menu - игровое меню
nano - редактор
=====================================
README
mcopy -i linux.img /tmp/README_EEE_PC.txt ::/README.txt
# Очистка
rm -f /tmp/*.sh /tmp/*.cfg /tmp/profile /tmp/inittab /tmp/rcS /tmp/*.iso 2>/dev/null
echo ""
echo "╔══════════════════════════════════════════════════════════╗"
echo "║ ✅ ГОТОВО! СПЕЦИАЛЬНАЯ ВЕРСИЯ ДЛЯ EEE PC ║"
echo "╠══════════════════════════════════════════════════════════╣"
echo "║ Файл: linux.img (200 МБ) ║"
echo "║ ║"
echo "║ ЧЕРНЫЙ ЭКРАН? Решение: ║"
echo "║ При загрузке GRUB нажми 'e' → редактируй строку ║"
echo "║ Добавь параметр: nomodeset ║"
echo "║ ║"
echo "║ Полная инструкция в файле README.txt на флешке ║"
echo "╚══════════════════════════════════════════════════════════╝"
echo ""
echo "Запись на флешку:"
echo "sudo dd if=linux.img of=/dev/sdX bs=1M status=progress"
echo ""