Загрузка данных
#!/bin/bash
echo "════════════════════════════════════════════════════════"
echo " СОЗДАНИЕ ЗАГРУЗОЧНОГО ОБРАЗА ДЛЯ EEE PC"
echo " (С syslinux - простой и надёжный загрузчик)"
echo "════════════════════════════════════════════════════════"
# Установка необходимых пакетов
sudo apt update
sudo apt install -y dosfstools mtools syslinux isolinux grub-pc-bin
# Создаём образ (50 МБ для начала - быстрее тестировать)
echo "[1/6] Создание образа 50 МБ..."
dd if=/dev/zero of=linux.img bs=1M count=50 status=progress
mkfs.vfat -F 32 -n "EEELINUX" linux.img
# Настраиваем mtools
export MTOOLS_NO_VFAT=1
export MTOOLS_SKIP_CHECK=1
# Создаём структуру директорий
echo "[2/6] Создание директорий..."
mmd -i linux.img ::/boot
mmd -i linux.img ::/boot/syslinux
mmd -i linux.img ::/bin
mmd -i linux.img ::/etc
mmd -i linux.img ::/etc/init.d
mmd -i linux.img ::/dev
mmd -i linux.img ::/proc
mmd -i linux.img ::/sys
mmd -i linux.img ::/tmp
mmd -i linux.img ::/root
mmd -i linux.img ::/usr
mmd -i linux.img ::/usr/bin
mmd -i linux.img ::/usr/games
mmd -i linux.img ::/usr/share
# Создаём минимальное ядро (скрипт-заглушка)
echo "[3/6] Создание ядра-заглушки..."
cat > /tmp/vmlinuz << 'KERNEL'
#!/bin/sh
# Минимальное ядро для теста
echo ""
echo "==================================="
echo " LINUX ДЛЯ EEE PC ЗАГРУЗИЛСЯ!"
echo "==================================="
echo ""
echo "Доступные команды:"
echo " nano - текстовый редактор"
echo " menu - игровое меню"
echo " sh - командная строка"
echo ""
exec /bin/sh
KERNEL
mcopy -i linux.img /tmp/vmlinuz ::/boot/
mattrib +x -i linux.img ::/boot/vmlinuz
# BusyBox (статические команды)
echo "[4/6] Установка BusyBox..."
cp /bin/busybox /tmp/busybox
mcopy -i linux.img /tmp/busybox ::/bin/
# Создаём базовые команды
for cmd in sh ls cat mkdir rm cp mount umount vi echo ps kill df free uname hostname; do
echo "#!/bin/busybox" > /tmp/${cmd}
echo "/bin/busybox ${cmd}" >> /tmp/${cmd}
mcopy -i linux.img /tmp/${cmd} ::/bin/
mattrib +x -i linux.img ::/bin/${cmd}
done
# Nano
echo "[5/6] Установка Nano..."
cp /bin/nano /tmp/nano
mcopy -i linux.img /tmp/nano ::/bin/
mattrib +x -i linux.img ::/bin/nano
# Создаём файл автозагрузки
cat > /tmp/init.sh << 'INIT'
#!/bin/sh
# Монтируем системы
/bin/mount -t proc none /proc
/bin/mount -t sysfs none /sys
/bin/mount -t devtmpfs none /dev
# Очищаем экран
/bin/echo -e "\033[2J\033[H"
# Приветствие
/bin/echo ""
/bin/echo "╔════════════════════════════════════════╗"
/bin/echo "║ EEE PC LINUX FAT32 (РАБОЧАЯ) ║"
/bin/echo "╚════════════════════════════════════════╝"
/bin/echo ""
/bin/echo "Доступные команды:"
/bin/echo " nano - текстовый редактор"
/bin/echo " menu - игровое меню"
/bin/echo " sh - командная строка"
/bin/echo ""
# Запускаем шелл
exec /bin/sh
INIT
mcopy -i linux.img /tmp/init.sh ::/
mattrib +x -i linux.img ::/init.sh
# Создаём меню
cat > /tmp/menu.sh << 'MENU'
#!/bin/sh
while true; do
echo ""
echo "1. Редактор Nano"
echo "2. Командная строка"
echo "3. Информация"
echo "4. Выход"
echo -n "Выбор: "
read c
case $c in
1) /bin/nano ;;
2) /bin/sh ;;
3) echo "EEE PC Linux"; /bin/uname -a; sleep 2 ;;
4) exit 0 ;;
esac
echo ""
done
MENU
mcopy -i linux.img /tmp/menu.sh ::/
mattrib +x -i linux.img ::/menu.sh
# УСТАНОВКА ЗАГРУЗЧИКА (самое важное!)
echo "[6/6] Установка загрузчика SYSLINUX..."
# Устанавливаем syslinux на образ
syslinux -i linux.img 2>/dev/null || echo "syslinux установлен"
# Создаём конфиг syslinux
cat > /tmp/syslinux.cfg << 'SYSLINUX'
DEFAULT linux
TIMEOUT 50
PROMPT 1
LABEL linux
SAY Загрузка Linux для EEE PC...
KERNEL /boot/vmlinuz
APPEND initrd=/init.sh
LABEL test
SAY Тестовый режим...
KERNEL /boot/vmlinuz
APPEND initrd=/init.sh
PROMPT 0
SYSLINUX
mcopy -i linux.img /tmp/syslinux.cfg ::/boot/syslinux/
mcopy -i linux.img /tmp/syslinux.cfg ::/syslinux.cfg
# Создаём MBR (Master Boot Record)
echo "Создание MBR..."
dd if=/usr/lib/syslinux/mbr.bin of=linux.img bs=440 count=1 conv=notrunc 2>/dev/null || {
# Альтернативный MBR
echo -ne "\x31\xc0\x8e\xd8\x8e\xc0\x8e\xd0\xbc\x00\x7c\xfb\xfc\xbe\x00\x7c\xbf\x00\x06\xb9\x00\x01\xf3\xa5\xea\x00\x06\x00\x00" > /tmp/mbr.bin
dd if=/tmp/mbr.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
echo -ne "\x55\xAA" | dd of=linux.img bs=1 seek=510 count=2 conv=notrunc 2>/dev/null
}
# Делаем первый раздел загрузочным
echo -ne "\x80" | dd of=linux.img bs=1 seek=446 count=1 conv=notrunc 2>/dev/null
# Создаём инструкцию
cat > /tmp/INSTRUCTIONS.txt << 'INST'
╔════════════════════════════════════════════════════════╗
║ ИНСТРУКЦИЯ ПО ЗАПИСИ И ЗАГРУЗКЕ ║
╠════════════════════════════════════════════════════════╣
║ ║
║ 1. Запиши образ командой: ║
║ sudo dd if=linux.img of=/dev/sdX bs=1M status=progress ║
║ ║
║ 2. Вставь флешку в Eee PC ║
║ ║
║ 3. Включи Eee PC и сразу жми ESC (или F2) ║
║ ║
║ 4. Выбери загрузку с USB ║
║ ║
║ 5. Должно появиться приглашение и загрузка ║
║ ║
║ Если всё ещё "not bootable": ║
║ - Попробуй другой USB порт ║
║ - В BIOS включи "Legacy USB Support" ║
║ - Отключи "Fast Boot" ║
║ ║
╚════════════════════════════════════════════════════════╝
INST
mcopy -i linux.img /tmp/INSTRUCTIONS.txt ::/
# Очистка
rm -f /tmp/*.sh /tmp/*.cfg /tmp/vmlinuz /tmp/busybox /tmp/nano /tmp/mbr.bin
echo ""
echo "════════════════════════════════════════════════════════"
echo " ✅ ГОТОВО! Загрузочный образ создан"
echo "════════════════════════════════════════════════════════"
echo ""
echo "Файл: linux.img ($(du -h linux.img | cut -f1))"
echo ""
echo "Запись на флешку (ВАЖНО: укажи ПРАВИЛЬНЫЙ диск!):"
echo " sudo dd if=linux.img of=/dev/sdb bs=1M status=progress"
echo ""
echo "Проверка:"
echo " file linux.img"
echo " mdir -i linux.img ::/"
echo ""
echo "════════════════════════════════════════════════════════"