DIA-on-Floppy
ver.2.3 build 0028C, 2002-03-11
Этот раздел содержит некоторые рекомендации по использованию программы на старых машинах без винчестера (запуск с дискеты). Очевидное решение: использование Linux и статически скомпонованного варианта программы. Требования к аппаратному обеспечению в этом случае определяются выбранным ядром Linux. Обычно это: CPU - 386, RAM - 4Mb, VGA, FDD. Чем древнее ядро, тем, скорее всего, меньше оно будет. Древность ядра снизу ограничивается известными багами и поддерживаемым железом.
Шаг 1
Ядро по вкусу можно выбрать на www.kernel.org.
Разархивируем его в /usr/src:
tar -zxf linux-2.X.XX.tar.gz или tar -jxf linux-2.X.XX.tar.bz2
Конфигурируем:
make config
При этом желательно в ядро включать только то, что действительно надо, и обойтись без модулей. В ядро надо включить: Networking, PCI (если есть), SysV IPC, Floppy, RAM disk, TCP/IP, Network device (выбрать соответствующую сетевую карту), ext2fs, /proc (желательно), serial support. Не имеет смысла включать: loadable module support, kernel math emulation, support for a.out, IDE/MFM/RLL (при отсутствии), loopback device, multiple device driver, parallel port IDE, IPX, Appletalk, Amateur Radio, kernel/user network link, SCSI (при отсутствии), dummy net driver, EQL, PLIP, SLIP, PPP, Radio network, Token Ring, FDDI, ISDN, CDROM, файловые системы кроме ext2fs и /proc, parallel port, нестандартные последовательные порты, mouse, user misc device, tape support, APM, watchdog timer, enhanced RTC, sound card, kernel hacking. Опции IP выбираются в зависимости от конкретных условий и целесообразности.
Затем корректируются зависимости:
make dep
После этого можно приступать к компиляции ядра:
make zImage
Если ядро оказалось большим, то можно попробовать make bzImage. В любом случае желательно, чтобы размер ядра не превышал 400 КБайт. Ядро (файл zImage или bzImage) оказывается в каталоге arch/i386/boot.
У меня под рукой оказалось ядро 2.0.36. Оно скомпилировано в описанной конфигурации. Включена поддержка следующих сетевых карт: 3C501, 3C503, 3C509/579, 3C515, 3C590/3C900, EtherExpress Pro 10+/100B/100+, PCI NE2000, RTL8129/8139, EtherExpress 16, ISA NE2000/NE1000.
Шаг 2
Надо создать образ RAM-диска корневой файловой системы. Такой RAM-диск должен содержать shell, mount, ifconfig, route и, собственно, dia-lite. В качестве /sbin/init имеет смысл использовать скрипт, запускающий shell. Весьма желательно, чтобы все программы, включенные в RAM-диск, были скомпонованы статически (libc уж точно на дискету не влезет).
Если вы собираетесь создавать RAM-диск самостоятельно, то:
dd if=/dev/zero of=/dev/ram bs=1k count=4096 - очищаем RAM-диск
mkfs.ext2 /dev/ram - форматируем RAM-диск
mount -t ext2 /dev/ram /mnt/disk - монтируем RAM-диск
Жизнь значительно упростится, если использовать готовый RAM-диск, например, rescue-диск из RedHat 5.x.
zcat rescue.img > rescue - разархивируем образ
dd if=/dev/zero of=/dev/ram bs=1k count=4096 - очистка RAM-диска никогда не помешает
dd if=./rescue of=/dev/ram - копируем образ в RAM-диск
mount -t ext2 /dev/ram /mnt/disk - монтируем RAM-диск
RAM-диск должен содержать нормальную структуру каталогов как для корневой файловой системы:
/bin, /dev, /etc, /lib, /mnt, /proc, /tmp, /usr.
Каталоги /sbin, /usr/bin и /usr/sbin можно заменить ссылками на /bin.
Каталог /dev дожен содержать /dev/null, /dev/console, /dev/ttySx, остальное - опционально. Недостающие
устройства формируются при помощи mknod или MAKEDEV:
mknod /mnt/disk/dev/ttyS0 c 4 64
На дискету помещается статически скомпонованная версия dia (dia-lite). В нее включены только реализации каналов RS232 и TCP-TX, а поддержка модулей отключена. Для TCP отключена также поддержка SOCKS5.
После того, как все необходимое разместилось в RAM-диске, делаем его образ и архивируем:
umount /mnt/disk
dd if=/dev/ram of=dia-lite.ram bs=1k count=4096
gzip -9 dia-lite.ram
Шаг 3
Создаем дискету:
dd if=/usr/src/linux-2.X.XX/arch/i386/boot/zImage of=/dev/fd0 - переносим ядро на дискету
dd if=dia-lite.ram.gz of=/dev/fd0 bs=1k seek=400 - со смещения 400k размещаем образ RAM-диска
rdev /dev/fd0 /dev/fd0 - устанавливаем загрузочное устройство /dev/fd0 для ядра на дискете
rdev -r /dev/fd0 16784 - передаем параметры ядру: load_ramdisk=1 и ramdisk_start=400
Дискета "dia-on-floppy" готова!
Вот мой вариант: dia-lite.img (1474560 байт).
После загрузки дискеты, надо сконфигурировать сеть.
(В принципе, ничто не мешает включить это в скрипт /bin/init.):
ifconfig eth0 192.168.1.234 - здесь 192.168.1.234 - IP-адрес вашей машины
(можно также указать маску сети и широковещательный адрес, но ifconfig подбирает вполне корректные
значения по умолчанию)
route add -host 192.168.1.254 dev eth0 - "прокладываем" путь к шлюзу (192.168.1.254)
route add default gw 192.168.1.254 - назначаем его шлюзом по умолчанию
Если требуется, можно поднять также интерфейс "lo".
Затем делаем необходимые корректировки в файле настроек dia.ini (если они не были сделаны зарание) и запускаем dia-lite.