Работаем с микродистрибутивами
--или--
Linux у вас в кармане
Автор: (C) Larry "Dirt Road"
Kollar
Перевод: (C) Александр Куприн
С теперешней тягой к гигантомании, когда дистрибутивы приходят на шести и более компакт-дисках, хорошо бы вспомнить, что полнофункциональный вариант Linux спокойно размещается на ZIP-диске или, о чём многие уже забыли, всего на паре дискет.
Чтобы доказать возможность и практичность применения таких мини-дистрибутивов, я настроил у себя систему на "четвёрке", умещающуюся на двух дискетах и использовал её для написания этой статьи. 1
"Всё это" началось, когда мне досталась пара системных блоков и один монитор. Тот, что помощнее (Aptiva), имел "на борту" 133-й Pentium, жёсткий диск на 2Гб, CD-ROM привод и полное отсутствие оперативной памяти. Второй, HP Vectra 486/33N, был оснащён винчестером на 170Мб, Windows 3.1 и 8Мб ОЗУ (CD не было). Оба системника имели мышь, но ни у одного из них не было клавиатуры. Поход в Wal-Mart и расставание с десятком "удобных единиц" подарили мне PS/2-совместимую клавиатуру. Так как эти два компьютера использовали 72-пиновые SIMM'ы, то первое, что я сделал -- поставил память в Aptiv'у и посмотрел, нет ли чего-нибудь интересного на "двухгигабайтнике".
И не напрасно. Я узнал кое-что ценное -- Windows 98 становиться дурно от нехватки оперативной памяти.2
Так получилось, что под рукой у меня не было дополнительной памяти. Поэтому я вставил SIMM'ы обратно в Vectrа и откопал диск с Red Hat 4.0, я собирался...опс, дистрибутив на компакт-диске, а у Vectra не было CD-привода (и разъёмов для его подключения тоже). Очевидно настало время менять стратегию.
Газета Linux Daily News -- одна из моих ежедневных остановок в Сети. Если того, что вы ищите нет на LWN, значит там должна быть ссылка на это. Я перешёл на страницу Distributions и стал перемещаться вниз до раздела "Small Disk", содержащего информацию о дистрибутивах, помещавшихся на дискетах.
Моя первая мысль была о всеми любимом однодисковом дистрибутиве-спасателе (rescue distribution, rescue-дистрибутив) tomsrtbt. У меня на работе есть лаптоп под управлением Windows, вечно на вторых ролях после моего Mac G3, но временами этот дистрибутив делает его полезным. К сожалению, tomsrtbt использует не совсем стандартный размер для пакета в 1.7Мб, размещая его на дискете в 1.44Мб, к тому же производственная необходимость заставила сделать "апгрейд" лаптопа, установив на нём Windows 2000. W2K не позволяет провернуть такую махинацию, а доступа к другой версии Windows у меня не было. 3
Возвращаюсь обратно к списку. Прошерстив ещё несколько ресурсов, обнаруживаю, что BasicLinux действительно является не-CD-ориентированым дистрибутивом (как и было объявлено на странице Distribution на LWN). Он идёт в виде отдельно zip-файла размером 2Мб, но в распакованном виде легко помещается на двух дискетах и не требует создания образа дискеты8 (использует для загрузки из-под MS DOS LOADLIN.EXE). Создан на базе Slackware 3.5, использует ядро 2.0.34 и libc5. Полностью помещается на виртуальном диске размером в 4Мб, что позволяет Vectra почувствовать вкус "свободы" (точнее свободного программного обеспечения).
Несмотря на различия используемого программного обеспечения, форматов дисков и назначения, все дистрибутивы, ориентированные на загрузку с дискет, имеют общую схему запуска:
Образ диска, содержащий пользовательское пространство (т.е. содержимое файловой системы), полностью помещается на одной дискете, при распаковке занимая более 3Мб. При использовании виртуального диска, даже 486/33 чувствует себя комфортно и показывает чудеса скорости.
При размещении Linux на двух дискетах, на ум приходит бессмертное наблюдение Heinlein'а "TANSTAAFL'а" (There Ain't No Such Thing As A Free Lunch -- Задаром никого не кормют). При возможности можно использовать дополнительные утилиты и даже X11, но не ожидайте увидеть KDE, Gnome или Mozilla. Фанаты Emacs могут забыть про него (или, по крайней мере, про большую его часть).
Даже основные команды и утилиты, те, которые вы ожидаете увидеть в любой ОС, чьё имя заканчивается на 'X', имеют усечённые варианты. Фактически, большинство из них -- это всего лишь символические ссылки на программу под названием BusyBox. Lineo разработал этот удобный инструмент для встроенных Linux-систем, но он также нашёл применение в дистрибутивах-спасателях и микродистрибутивах. Он включает в себя 54 наиболее важных команды в одном исполняемом файле размером всего в 110Кб. Создайте символическую ссылку (используя ln -s), назвав её cp, и когда вы введёте эту команду, BusyBox будет действовать как команда cp. Когда вы вызываете команду mv, то BusyBox перемещает или переименовывает файлы. Опция --help предоставляет доступ к краткому списку команд, исключая потребность в страницах справочного руководства (man). Смею заметить, что без пакета BusyBox дистрибутивы, помещающиеся на дискетах, пришлось бы создавать с большим количеством компромиссов между размером и функциональностью.
BasicLinux -- компактная, работоспособная сетевая система. Помимо основных возможностей (доступных через BusyBox), он обеспечивает Ethernet и dialup-подключение и может работать как сетевой экран (firewall, брандмауэр) используя ipfwadm. Такие утилиты, как fetchmail и links (не lynx, который однажды "кинул" меня) обеспечивают почтовый сервис и возможность просмотра web-страниц. Чтобы закалённые бойцы Linux чувствовали себя, по возможности, комфортно, в качестве оболочки предлагается bash. По умолчанию inittab создаёт три консоли, этого более чем достаточно для моих целей (иногда я использую две консоли одновременно, одну для непривилегированного доступа, другую -- для суперпользователя).
В отличие от большинства дистрибутивов, BasicLinux предлагает два текстовых редактора, миниатюрный e3 и популярный pico. 4 Воспользовавшись оставшимся свободным местом в загрузочном образе (baslinux.gz) и архиватором пакетов, исторически являющимся частью Slackware, я заменил два предлагаемых редактора на один -- joe. Joe чуть больше, чем pico, но умеет поддерживает возможность эмуляции pico, WordStar и Emacs (но без функциональных гипервозможностей). В результате полученный (и упакованный) образ стал больше, но продолжал помещаться на дискете.
Файл readme.txt, идущий вместе с BasicLinux краток, но
даёт любому знакомому с консолью достаточно информации о том, как настроить
систему или как создать образ загрузочной дискеты.
Как я уже говорил, файлы BasicLinux лежат на диске C: (по крайней мере он
так бы назывался, если бы с него была запущена MS DOS). 5 Настройка образа проста:
Это не сложно, если вы планируете стереть всё с жёсткого диска и заново
его переформатировать (имеется ввиду оба процесса -- разбиение на разделы и
форматирование). На Vectra была установлена Windows 3.1 и куча приложений, в
которых я не нуждался.
Прежде чем двигаться вперёд, я провёл небольшое исследование и сделал
резервную копию каталога с системными файлами MS-DOS на дискете (используя
zip-архиватор, который уже был на компьютере). С жёстким диском на 160Мб и ОЗУ
на 8Мб, я полагал, что у меня будет достаточно свободного места для создания
работоспособной системы.
Google помог мне найти программу для переразбиения существующих разделов
на диске -- FIPS (Первая
Интерактивная Программа для Переразбиения разделов на диске). Следуя
инструкциям, я разместил FIPS на загрузочной дискете и воспользовался ею для
уменьшения диска C:. Я хотел уменьшить раздел до 10Мб, но FIPS по какой-то
причине выделял на это не менее 16Мб. 11
После удаления всех этих Windows-штучек и проведения дефрагментации диска, я
смог уменьшить его до 5Мб. Я не совсем понимаю, как такое получилось. Ну, да
ладно.
Теперь я запустил Linux снова и воспользовался утилитой fdisk, идущей в
поставке вместе с BasicLinux, для создания раздела свопинга (swap) и решил оставшуюся
часть отдать под "/". Запустив mkswap, mke2fs и e2fsck, я подготовил
новые разделы к использованию. Под конец я распаковал архив instl2hd.zip и,
следуя инструкциям, приложенным к нему, загрузил образ виртуального диска (и
кое-какие дополнения от себя) на жёсткий диск. Дальше уже проще -- нужно было
отредактировать новые точки монтирования для swap и "/" в /etc/fstab.
Ещё одна перезагрузка и я уже загрузился с жёсткого диска. Жизнь прекрасна!
Скопировав свою статью на Linux-раздел, я продолжил писать.
В системе, настроенной исключительно для работы с консолью, используется
не более 5Мб оперативной памяти 6
и остаётся свободными ещё около 3Мб, их я решил использовать по своему
усмотрению. И я захотел добавить:
К счастью, Vectra шёл с сетевой картой SMB-Ultra. Поиски нужного модуля
не заняли много времени, но документация по BasicLinux предложила сперва
попробовать загрузить модуль 8390. Т.к. мой Mac G3 работал сетевым экраном с
поддержкой NAT (ipchains) для доступа в Сеть через dialup, то для подключения к
сети достаточно было перенести Vectr'у в ту же комнату и подключить. После
небольшой мозговой атаки и чтения страниц справочного руководства по route, я
наконец понял в какой бубен мне нужно постучать, чтобы заставить Skeeter (так я
стал называть Vectra) говорить по сети с внешним миром.
Скачивание пакетов X11 напомнило мне, что существуют сети и помедленней,
чем мой dialup. Это был один из тех немногих случаев, когда я был рад тому, что
у меня нет широкополосного подключения 7,
иначе я бы чувствовал себя обманутым. Но, в конечном счёте, я заполучил всё,
что мне было нужно на жёсткий диск и приступил к конфигурированию X11.
Пошуровав в сети в поисках помощи, я выяснил, что утилита SuperProbe
обнаружила, что Vectra имеет встроенное видео и мой монитор поддерживает только
режим 640x480. Во второй вечер, я получил работающий GUI и переключился в
рекомендуемый для таких случаев icewm. Пейджер от icewm и его небольшой размер
заставляют узкий экран выглядеть очень прилично, если не сказать приятно. Но
если быть справедливым, то экран rxvt в 35 строк лучше, чем 25 строк текстовой
консоли для работы с текстом, так что я доволен.
С работающей сетью и графическим интерфейсом пришло время заканчивать настройку.
Сейчас вся система занимает на жёстком диске около 21Мб (113Мб ещё свободно).
Прибавьте сюда пакеты компилятора и занимаемый объём увеличивается до 35Мб.
Добавление пакетов, нужных для сборки groff
и gawk, плюс сами
откомпилированные приложения и вот уже занято более 60Мб. После установки
программ и удаления директорий, содержащих исходники я поджал используемое
пространство до 57Мб.
И раньше печатая по сети через lpr на совместно используемом принтере, я
по-быстрому сделал несколько тестовых документов в groff и отправил их на
лазерный USB-принтер, подключенный к G3. На этом этапе, Skeeter уже умел делать
всё, что я для него планировал. Мне хотелось бы монитор с большим разрешением,
и возможно хорошо было бы собрать из исходников графический веб-браузер Chimera
1.x, но этого не было в списках первой необходимости.
Уже готовый для того, чтобы служить "пишущей машинкой"
(доказательство -- эта статья), Skeeter может подключаться к MUD и
использоваться для развлечений (представьте себе трёх человек делящих между
собой dialup -- двух использующих telnet, и третьего просто читающего почту
через броузер, и никто не жалуется, что связь становится медленной). Rouge
очаровал моего сына и его друзей, чем удивил моего друга, который не понимает
как может быть интересной игра без графики!
Skeeter может использоваться как удалённый дисковод. У iMac (там теперь
стоит MacOS X) его уже нет, точнее то, что осталось, представляет из себя
что-то непонятное. Поэтому если нам нужно прочитать или записать данные на
дискету, мы обращаемся за помощью к Skeeter'у. В будущем он может стать
сервером печати, ему это вполне по силам.
Итак, я считаю, что эксперимент удался. Благодаря инвестициям в десять
долларов и напряжённому труду в поте лица своего, я получил ещё один работающий
компьютер и приобрёл новые навыки.
Работу Larry можно охарактеризовать, как "технический
писатель", но в душе он мечтает однажды стать настоящим BOFH 10. На работе он умеет
находить время для написания скриптов настройки ведомственных Linux-серверов
(конечно же "маков") и отгоняет орды завистливых IT-сотрудников,
смотрящих жадными глазами на его G3. Дома, у подножия гор Джорджии, он делает
всё, что может для того, чтобы сохранить жену, двух детей и четыре компьютера
здоровыми и счастливыми.
1 На
домашней странице дистрибутива BasicLinux дана ссылка на эту статью, как на
практическое пособие по его установке и использованию.
2 Спазмы, удушье, а затем
полный коллапс. Если интересуют подробности, спросите у нашего редактора.
3 Судя по всему, автор хочет
сказать, что создание образа на дискете требует, чтобы вы находились в
"реальном" DOS'е, а не DOS-сессии в случае с Windows 95/98. К тому же
речь шла о W2K, в которой DOS-режима нет как такового.
4 В оригинале статьи автор
ошибся, спутав pine и pico. Первый -- почтовый клиент, второй -- текстовый
редактор, который используется в pine.
5 Из-под Linux'а, скорее
всего, это будет -- /dev/hda1.
6 В оригинале статьи автор
называет первые 5Мб свободным пространством на жёстком диске, а 3Мб
остатком свободным в ОЗУ. Скорее всего, он запутался с виртуальными
дисками и образами, копируемыми на них.
7 Технология, способная обеспечить
одновременную передачу голоса, данных, видео; обычно это осуществляется путем
мультиплексирования с разделением частот.
8 Т.е. используется
системная дискета от MS DOS. Загрузка BasiLinux осуществляет программа loadlin,
размещённая на ней.
9 Up
and Away -- это, кажется, из "Ветра в ивах". Там некий Крот, устав от
тягот и лишений подземной жизни, решает устроить себе каникулы и говорит
примерно следующее: "Все, с меня хватит! Наверх, наверх, НАВЕРХ...
Куда угодно, только прочь отсюда ". С тех пор Up and Away стало
символом личного освобождения от гнетущего бремени приземленных забот.
10 Bastard Operator From
Hell -- эдакий компьютерный мальчиш-плохиш из славного прошлого университетских
компьютерных сетей. С одной стороны -- всевластен [пароли, доступ к машинам]. С
другой -- полная безнаказанность [да я простой оператор, откуда мне знать, что
делает del *.*]. Подробности смотрите здесь.
11 Даже свободный код не
может выделять под раздел неполные цилиндры.:)
Команда переводчиков:
Владимир Меренков, Александр Михайлов, Иван Песин, Сергей Скороходов, Александр
Саввин, Роман Шумихин, Александр Куприн, Андрей Киселев