Citkit, 18 января 2007 г
Эта заметка посвящена именно тому, что написано в ее заглавии. Конечно, как уже было сказано в заметке прошлой, существует официальное руководство на сей предмет, и даже русский его перевод имеется. Однако на меня это руководство произвело несколько странное впечатление.
Ведь смотрите: MINIX 3 - система экспериментальная по определению, а работа с экспериментальными системами изначально предполагает определенный уровень квалификации пользователя. В руководстве же пошагово не просто рассказываются, а скорее разжевываются, такие вещи, как декомпрессия сжатого образа диска, или метод его записи на болванку (почему-то из под Easy CD Creator'а). Масса внимания уделена также высвобождению пространства из-под виндовых разделов. В то же время именно MINIX-специфичные особенности рассмотрены подчас достаточно бегло.
Впрочем, это я придираюсь: все, что нужно знать для установки, в официальном руководстве имеется. Так что нелюбители изящной словесности вполне могут ограничиться им, не читая моего сочинения. Я же продолжу его дальше.
Что нужно
Минимальные системные требования для установки MINIX 3, с одной стороны, очень просты: любой 32-битный Intel-совместимый процессор, 8-16 Мбайт памяти, 1 Гбайт свободного (неразмеченного) дискового пространства (для установки всех вообще исходников, иначе можно обойтись и трехстами мегабайтами), CD ROM. Казалось бы, в наши дни трудно найти машину, которая не удовлетворяла бы этим требованиям.
Однако на поверку оказывается, что это та самая простота, которая хуже... скажем так, навороченности. Ибо винт и CD обязательно должны быть PATA: SATA современный MINIX 3 не поддерживает (как, к слову сказать, и SCSI). Если второе еще обычно (и, вероятно, будет обычным достаточно долго), то жесткие диски PATA постепенно отходят в область преданий.
Теоретически, говорят, MINIX 3 можно установить и на SATA-винт - если в BIOS Setup переключить его в режим совместимости с PATA. И если этот режим поддерживается. У материнки моего десктопа (ASUS M2NPV-MX), например, его не обнаружилось - так что установкой на него у меня ничего не вышло.
Далее, свободное дисковое пространство должно лежать в пределах первых 128 Гбайт - иначе MINIX 3 его не увидит. Это не так смешно, как кажется - диски обычно заполняются с начала до конца :), и на большом диске свободное место вполне может притулиться где-то в районе 200-го гигабайта. Но еще существенней то, что на диске обязательно должна иметься свободная запись в MBR - то есть он не должен содержать больше трех физических (primary) разделов.
Далее, MINIX не поддерживает USB-шину ни в каком виде. А значит - прощай, USB-клавиатуры и USB-мыши, которые в беспроводных вариантах получили распространение в последние годы. Конечно, большинство таких устройств комплектуются переходниками USB -> PS/2, каковые и придется извлекать из дальних закоулков, где они пылились за ненадобностью (если вообще не были выкинуты).
Из отсутствия поддержки USB-интерфейса следует также невозможность обмена данными с другими машинами или системами через ставшие уже столь привычными флэшки. А если учесть, что и с обменом дынными через файловые системы тоже существует известная напряженка, то чуть ли не единственным средством коммуникации оказывается сеть.
Однако и это средство не блистает богатством возможностей: список поддерживаемых сетевых карт буквально укладывается в полудюжину. Причем полудюжина эта выглядит весьма странным образом:
- Intel Pro/100
- 3Com or 3Com based card
- Realtek 8139 based card
- Realtek 8029 based card
- NE2000, 3Com 503 or WD based card
- AMD LANGE
И, наконец, самое главное: в современном своем виде MINIX 3 не пригоден к выполнению какой-либо практической работы. Единственное, что пока можно делать в этой операционной системе - это изучать ее устройство и, если позволяет квалификация, соучаствовать в разработке. И об этом я предупреждаю сразу, честно, откровенно и нелицеприятно.
Тут читатель вправе задать вопрос: а за каким таким зеленым ее вообще устанавливать, если и с поддержкой "железа" у нее напряг, и делать в ней фактически ничего нельзя?
Отвечаю: чтобы ознакомиться с одним из самых изящных достижений ОСестроительной мысли в истории человечества, доведенным до стадии работающей системы. Бледное представление о чем я пытался дать в предыдущей заметке.
Так что -
Господа хорошие и господа плохие
Выливайте водку, разряжайте пистолет
Тимур Шаов
А именно - откладывайте свои навороченные беспроводные мыши и клавиатуры, извлекайте из загашников старые, с PS/пополамными разъемами, вкручивайте винчестеры 8-10-летней давности, вдвигайте в PCI-слоты NE2000-совместимые сетевухи - и вперед, к вершинам передовой ОСестроительной мысли.
Получение
Установка любой системы начинается с получения ее дистрибутива, и MINIX 3 тут не будет исключением. В соответствии с традициями Open Source, дистрибутив ее можно безвозмездно, то есть даром, скачать с официального сайта www.minix3.org, где в разделе Download для текущей (1.2a) версии наблюдаются следующие его варианты:
- IDE CD-ROM
- IDE-3.1.2a.bz2 (296-MB)
- IDE-3.1.2a.zip (298-MB)
- USB CD-ROM
- USB-3.1.2a.bz2 (294-MB)
- USB-3.1.2a.zip (295-MB)
- USB Memory Stick
- usb_image-3.1.2a.bz2 (293-MB)
- usb_image-3.1.2a.zip (293-MB)
Назначение четырех последних для меня, честно говоря, осталось загадочным. Нет, я понимаю, что про них там написано по аглицки. Но ведь в системных требованиях тем же аглицким по экранному постоянно подчеркивается, что MINIX 3 даже в установленном виде вообще не поддерживает USB-интерфейс (как не поддерживает SCSI, SATA и много других вещей, уже ставших привычными). Каким же таким волшебным образом его поддержка может появиться на стадии инсталляции? Говорят, что через BIOS. Тем не менее, тайна сия велика есть...
Ладно, для меня (и, думаю, для большинства читателей) вопрос этот чисто абстрактный, благо ни USB CD-ROM, ни USB Memory Stick я не имею (иначе непременно попробовал бы), так что остаются только первые два варианта.
С ними все ясно - это iso-образы обычных установочных компакт-дисков, сжатые программами bzip2 и zip соответственно. Какой выбрать - дело вкуса и наличной операционки. Для пользователей Windows, правда, выбора нет (вряд ли в их распоряжении имеется bzip2). Ну а пользователям Linux или BSD, имеющим установленными или потенциально оба компрессора, bzip2 наверняка окажется привычнее.
Итак, потребный файл скачивается в подходящее место, распаковывается соответствующим декомпрессором и получившийся образ (раздувшийся до 480 Мбайт) "болванится" любым привычным способом. В руководстве по установке этот процесс расписан чрезвычайно детально, но мы на нем задерживаться не будем, все это многократно проделывал любой линуксоид или BSD'шник.
Просмотр получившегося компакта, например, в Linux, способен повергнуть в недоумение. На нем имеются:
- образ дискеты bootflop.img - с него и происходит загрузка;
- readme'шка с системными требованиями;
- документация по установке (в pdf и ps форматах);
- zip-архив около 100 Кбайт.
Суммарный объем всех видимых файлов составляет 1,6 Мбайт, причем скрытых dot-файлов также не наблюдается. Возникает естественное предположение об ошибке записи - однако и монтирование образа диска как loopback-устройства дает ту же картину (а контрольную сумму я проверял, ошибка при скачивании исключается). Это - вторая загадка дистрибутива MINIX 3. Разрешается она следующим образом: всё остальное записано в собстенном формате файловой системы minix fs v3. Отмечу также, что выглядящий таким образом диск - абсолютно нормален, и установка с него завершается вполне благополучно.
Установка
Устанавливать систему я собирался на ноутбук, так как десктоп мой имеет единственный винт - и тот SATA, MINIX'ом не поддерживаемый. Ноут - Fujitsu Siemens на Sempron'е, детали его конфигурации (не существенные для дальнеших событий), описаны здесь.
А вот на разметке его диска задержаться целесообразно. Диск этот, о шестидесяти гигабайтах, имел следующие разделы:
- /dev/hda1 в 50 Мбайт - под каталог /boot с GRUB'ом;
- /dev/hda2 в 10 Гбайт - определен как extended и разбит на логические разделы, несущие swap и корень Kubuntu Linux;
- /dev/hda3 в 9.3 Гбайт - помечен идентификатором 83 (Linux native), но файловой системы не имеет, я его специально сохранил для всякого рода экспериментов;
- /dev/hda4 на все оставшееся место - под каталог /home для моего Linux'а.
Очевидно, что для заклания Молоху (то есть MINIX'у) предназначался раздел /dev/hda3.
Собственно установка начинается как обычно - загрузкой с инсталляционного компакта. Через считанные мгновения после старта машины на экране появляется меню собственного загрузчика MINIX, состоящее из двух пунктов:
1 - Regular MINIX 3 (по умолчанию)
2 - Small MINIX 3
Первый пункт рассчитан на 16 и более мегабайт памяти, второй - на диапазон от 8 до 16. Если в течении 10 секунд не сделать выбор, начнет грузится вариант по умолчанию. Однако до этого загрузку можно отложить, нажав Spacebar, дабы немного оглядеться и подумать.
Оглядывание показывает, что можно также нажать Esc - для ввода дополнительных опций. После чего появляется нечто вроде приглашения командной строки вида
fd0>
Это - приглашение загрузчика MINIX 3 (или, как он обзывается в ее документации, менеджера загрузки). Смысл самого приглашения - имя устройства, с которого была загружена система. В данном случае оно показывает, что, хотя мы и грузились с компакт-диска, на самом деле загрузка осуществлялась с расположенного на нем образа дискеты.
В нем можно дать, например, команду ls, на что последует такой вывод:
/dev
/boot
А можно с помощью команды help вывести список всех возможных команд и параметров, примерно таких же, как в BSD Loader'е. Что, впрочем, на данном этапе не актуально. Поэтому с помощью команды boot загружаю умолчальный (то есть регулярный) вариант. В результате загрузки (длящейся, кстати, чуть более 20 секунд - ниже станет понятно, почему это интересно), появляется приглашение к авторизации вида
minix login:
Тут следует зайти root'ом (без пароля) - и оказаться в обстановке LiveCD с полноценным шеллом; он, хотя и именуется просто - /bin/sh, но поддерживает автодополнение (правда, только для путей), историю команд, навигацию по командной строке и прочие прелести развитых оболочек. То есть оказывается более похожим на bash, нежели на /bin/sh из FreeBSD.
В шелле доступно без малого 400 команд - то есть на LiveCD мы имеем практически полноценную POSIX-систему, без Иксов, конечно, в консольном исполнении. Кстати, наличествуют и виртуальные консоли в количестве четырех штук. И при этом сам CD можно спокойно извлечь из привода - содержимое его полностью скэшировано. То есть тех самых двадцати с копейками секунд, в течении которых длилась загрузка, хватило не только на загруку ядра, драйверов и системных сервисов (а без них, как мы видели в прошлой заметке, ядро бессильно), но и на кэширование CD.
Впрочем, рассмотрения режима LiveCD в данный момент также не актуально, ибо я имел своей целью установку системы. Для чего запускается соответствующий скрипт
# setup
который после вывода нескольких сообщений, последнее из которых - предложение нажать Enter, задает первый вопрос:
Select keyboard type
В списке доступных раскладок - ряд европейских, английская и три американские - us-std, us-swap и Дворака. За отсутствием раскладки от родных осин, останавливаюсь на умолчальной, стандартной американской (хотя руководство предлагает us-swap, но что это такое - я просто не знаю).
Кстати говоря, и сейчас, и в дальнейшем ответ по умолчанию поставлен в скобках, и для его выбора достаточно нажать Enter. А поскольку умолчальный ответ для начинающего пользователя любой системы, не имеющего пока собственных соображений и предпочтений, почти всегда будет если не идеальным, то разумным, то всю установку MINIX 3 можно свести к нескольким нажатиям Enter.
Второй вопрос - выбор сетевой карты, - пропускаю, так как моего чипа в списке не имеется. Кстати, именно этот вариант - отсутствие сетевой карты, - и отмечен по умолчанию.
Третий вопрос - выбор типа установки: минимальная или полная; поскольку места вдоволь, принимается второй вариант.
Четвертый вопрос - выбор метода разбиения диска, пошаговый или в режиме эксперта. Для начала выбираю пошаговый. Где первым шагом будет выбор целевого диска. Поскольку диск у меня один, /dev/hda, его и выбираю - в нотации MINIX это устройство именуется /dev/c0d0, где c0 - номер линии IDE-контроллера, а d0 - собственно номер диска на ней.
Шаг второй - выбор раздела (в терминологии MINIX - региона, region), таковым я назначил третий первичный. Поскольку он был ранее определен как Linux native (83), с меня запросили подтверждение на деструктивное действие по смене идентификатора файловой системы (к слову сказать, идентификатор файловой системы MINIX - 81). Что я и сделал, набрав yes.
Следующий шаг - определение размера (в мегабайтах) для подраздела (subpartition) под /home, подраздел под корневой каталог размечается автоматически, под /usr - по остаточному принципу. Поскольку никакой объемной реальной работы не предвидится, соглашаюсь с предложенными по умолчанию двумя без малого гигабайтами, после чего подтверждаю свое согласие.
В выборе размера блока также соглашаюсь с умолчальными четырьмя килобайтами (доступны также варианты 1 и 2 Кбайт, но это не интересно).
После этого начинается самый длинный процесс во всей инсталляции - создание файловых на трех размеченных подразделах. Длительность его связана с тем, что каждый принудительно проверяется на bad-блоки. Правда, нажатием Control+C от этого можно отказаться, но по первости я этого делать не стал. Тем более, что пока происходит форматирование, можно ознакомиться с предшествующим выводом, дабы окончательно разобраться с номенклатурой блочных устройств в MINIX 3. Из этого вывода мы узнаем, что в полном виде дисковая разметка нашего региона выглядит так:
- Root /dev/c0d0p2s0 - 16Мбайт
- /home /dev/c0d0p2s1 - 1893
- /usr /dev/c0d0p2s2 - остаток от /dev/c0d0p2s1
Расшифровывается это так:
- c0d0 - как уже говорилось, соответствует первому диску на первом IDE-канале
- p2 - третий первичный раздел (region)
- s0, s1, s2 - первый, второй и третий подразделы (subpartitions).
Нумерация повсеместно с головы вагона (то есть, пардон, с нуля).
Искушенный пользователь Linux или BSD вправе задаться резонным вопросом: а где же раздел подкачки - этот неотъемлемый атрибут любой из перечисленных систем? А нигде - последует столь же резонный ответ. Ибо - увы! - виртуальная память в MINIX 3 в настоящее время не поддерживается, так что потребности в своп-разделе не возникает. Хотя обеспечение ее поддержки - одна из самых приоритетных задач разработчиков в настоящее время.
После завершения форматирования без всякого перехода начинается установка системы. Времени это заняло меньше, чем я успел выкурить сигарету (то есть менее 5 минут). После чего следует бодрый рапорт об успешном завершении работы установочного скрипта и возвращается приглашение командной строки.
Если выбрать разбиение в режиме эксперта, запускается программа part - некий, хотя и весьма отдаленный, аналог cfdisk. После ее запуска на экране можно видеть примерно такую таблицу:
Select device first geom/last sectors
Device Cyl Head Sec Cyl Head Sec Base Size Kb
/dev/c0d0 ? ? ?
? ? ? ? ? ? ? ? ?
Num Sort Typy
? ? ?? ? ? ? ? ? ? ? ? ?
? ? ?? ? ? ? ? ? ? ? ? ?
? ? ?? ? ? ? ? ? ? ? ? ?
? ? ?? ? ? ? ? ? ? ? ? ?
Type '+' or '-' to change, 'r' to read, '?' for more help, 'q' to quit
После некоторых раздумий можно догадаться, что сначала нужно выбрать целевой диск, перебирая наличные накопители клавишами + или -, а затем, нажав клавишу r, считать таблицу его разделов. После чего на экране возникает примерно следующая картина:
Select device first geom/last sectors
Device Cyl Head Sec Cyl Head Sec Base Size Kb
/dev/c0d0 1024 255 63
0 0 0 7295 254 62 0 117210240 58605120
Num Sort Typy
0 p0 83 LINUX 0 1 0
1 p1 05 EXTENDED
2 p2 83 LINUX
3 p3 83 LINUX
Прочие знаки вопроса также заменяются цифрами для конкретных разделов, приводить которые мне лениво.
А вот что делать потом - нужно запросить встроенную помощь. Нажимая клавишу ?, узнаем, что для потребного нам действия - изменения идентификатора файловой системы с LINUX на MINIX, - достаточно, как в известном произведении Гоблина, сказать Der Parol, то есть напечатать MINIX, затем нажать q, допечатать имя устройства - в нашем случае это будет /dev/c0d0p2, - и подтвердить изменения.
А вообще возможности part достаточно обширны - можно изменять размер существующих разделов, перемещать их, удалять, создавать новые, и так далее. Правда, она не показалась мне очень удобной в обращении, но возможно, это - за отсутствием привычки. Планирую разобраться позднее и о полученных результатах доложить.
По выходе из part предлагается ввести размер для раздела под /home - и далее все идет по прежнему сценарию.
Жизнь после установки
После завершения установки и появления приглашения командной строки следует дать команду
# shutdown
в результате которой система будет остановлена и, вместе с сообщением о возможности выключения машины, появится приглашение собственного загрузчика MINIX
fd0>
Теперь машину действительно можно выключить (в руководстве подчеркивается, что делать это можно только после отработки команды shutdown, которую, впрочем, можно подменить банальным салютом из трех пальцев - результат их одинаков), или перезагрузить обычным способом - комбинацией из трех пальцев или только одного, нажимающего Reset (если таковой имеется). А можно предварительно провести тестирование работоспособности свежеустановленной системы.
Для этого в ответ на приглашение загрузчика надо ввести команду
boot c0d0p2
то есть с именем устройства - раздела (региона), в который мы только что инсталлировали систему. И по прошествии немногих секунд в ней оказаться - уже не в LiveCD окружении, а именно в нашей новой системе. В которую и следует зайти root'ом, по прежнему без пароля. Доступен также беспарольный аккаунт bin (имеющий домашний каталог /home/bin), прочие учетные записи, которые в количестве 12 можно обнаружить в файле /etc/passwd, требуют ввода пароля.
Интересно, что среди этой дюжины присутствует учетная запись ast, владельцем которой является... кто бы вы думали? - Ну конечно же, Andrew S. Tannenbaum, имеющий даже свой каталог /home/ast. Таким образом, Энди, подобно Ленину, всегда рядом с пользователями его системы...
Первое задание - скомпилировать тестовый набор программ, так называемый POSIX-текст, фигурировавший в предыдущей заметке как одно из мерил производительности MINIX. Для чего переходим в каталог /usr/src/test и даем команду
# make
Компиляция на моей машине заняла чуть больше 5 секунд - за это время из исходников собирается сорок с небольшим тестовых заданий. После чего этот тестовый набор не худо бы и выполнить. Для этого выходим из root-аккаунта и авторизуемся как bin - это нужно для проверки корректности атрибутов доступа, в частности, правильности работы setuid-бита. Переходим опять в каталог /usr/src/test и даем команду
# ./run
после чего терпеливо ждем завершения процесса, наблюдая картину типа
Test 1 ok
Test 2 ok
пока наконец не увидим вожделенные
Test 41 ok
Shell test 1 ok
Shell test 2 okAll 43 test completed without error
Для чего на моей машине потребовалось более 20 минут. Но зато теперь можно быть уверенным в полной работоспособности системы.
Кстати, если не заниматься хронометражем, можно перейти в другую виртуальную консоль (их, как и при установке, доступно четыре), и, авторизовавшись bin'ом, поглядеть, например, на файловое древо MINIX. Оно выглядит очень просто, не включая ничего, кроме обязательных каталогов /bin, /boot, /dev, /etc, /home, /lib, /mnt, /root, /sbin, /tmp, /usr, /var. Кстати, полный объем исходников (каталог /usr/src) составляет чуть больше 30 Мбайт.
По завершении обязательной (на самом деле - полуобязательной) программы можно перейти к программе произвольной - пересборке системы. Это, конечно, не обязательно, но очень впечатляет.
Не выходя из аккаунта bin, переходим в каталог /usr/src/test и даем команду
# make
Данная от лица обычного пользователя (а пользователь bin - самый обычный, никакими излишними привилегиями не отягощенный), она выведет список всех доступных ее target'ов. Среди них нам сейчас интересны make clean, make image, make hdboot. Для их выполнения потребуются уже права суперпользователя, которые получаем стандартной командой
# su
вслед за которой даем
# make clean
для уничтожения следов жизнедеятельности (в данный момент - просто на всякий случай), и затем
# make image
для пересборки всех наличных сервисов и построения загрузочного образа. Время выполнения этой процедуры на моей машине составило 15 - чего бы вы думали? - секунд! И это - на практически всю систему (в понимании Linux или BSD - ядра и модулей), кроме инсталляции загрузочного образа в надлежащее место (каталог /boot/image/). Последняя выполняется командой
# make hdboot
время исполнения которой замеру не поддается.
К слову сказать, исполнение команды make image - это второе мерило производительности MINIX, описанное в предыдущей заметке.
Правда, само по себе новое ядро, как ни странно, от этого не станет загрузочным. Если заглянуть в каталог /boot/image, можно будет увидеть там два файла: 3.1.2a (старое ядро, имя которого соответствует номеру текущей версии) и 3.1.2ar0 (новое ядро). И по умолчанию загружено будет именно старое ядро.
Чтобы изменить ситуацию, нужно опять вернуться в менеджер загрузчика (через shutdown или салют из трех пальцев) и в строке его приглашения (обращаем внимание что теперь оно приобрело вид c0d0p2s0 - ведь мы нечувствительно перегрузились уже с винчестера) ввести команду:
c0d0p2s0> image=/boot/image/3.1.2ar0
а вслед за ней
c0d0p2s0> boot
для загрузки с новым ядром.
Вот теперь - окончательный финиш, остается только завершить сеанс MINIX (через shutdown или Alt+Control+Delete), перезапустить машину любым способом и думать, как впредь загружать новообретенную систему.
Поскольку в качестве загрузчика я имел GRUB, именно им и решил воспользоваться. Однако загрузиться через него в интерактивном режиме напрямую - то есть путем загрузки соответствующего ядра - не удалось, по причине нераспознавания файловой системы MINIX (как ни странно - ведь в комплекте stage присутствует и minix_stage1_5; возможно, я что-то сделал неправильно). Посему прибегаю к старому доброму "цепочечному" методу. Для чего в файл /boot/grub/menu.lst вписываются строки:
title MINIX
дабы не перепутать,
rootnoverify (hd0,2)
определяющая корневой раздел для MINIX,
makeactive
активизирующая его, и, наконец
chainloader +1
собственно и передающая управление загрузочному сектору MINIX-раздела. Все дальнейшее - его работа, с которой он справляется успешно.
Происходит это так. Сначала варианты загрузки:
1 Start MINIX 3 (requires at 16 MB RAM)
2 Start Small MINIX 3 (intended for 8 MB RAM systems)
3 Start Custom MINIX 3
Смысл первых двух пунктов - тот же, что и при загрузке с LiveCD. Третий пункт позволяет загрузить некие заказные конфигурации, которых сейчас не имеется, так что о нем говорить не будем.
Как и при старте с компакта, если при появлении вариантов загрузки нажать Spacebar, загрузка приостановится. Нажатием Esc можно попасть в менеджер загрузок.
Что выражается в появлении приглашения к авторизации. Это можно сделать от имени root'а - и без пароля.
В общем, установка закончена, можно приступать к изучению системы, что будет темой следующих заметок. Пока же выскажу некоторые соображения. Как можно видеть, установка MINIX 3 очень проста и построена по принципу цыпленка, клюющего клавишу Enter, ничуть не сложнее, чем того же Debian'а или FreeBSD. А ввиду компактности системы - еще и быстра: как уже было сказано, даже самую длинную процедуру, создание файловых систем, можно резко сократить за счет отказа от проверки на испорченные блоки. Ну а уж пересборка системы не то что впечатляет - просто восхищает. Особенно ввиду того, что в дальнейшем придется вносить кое-какие мелкие изменения в исходники - а судя по документации на http://www.minix3.org (и http://www.minix3.ru), таки придется обязательно.
В общем, достойный инсталлятор для установки достойной системы. Правда, пока не очень понятно, что с ней, такой из себя установленной, теперь делать. Но это - тема отдельного разговора, и, вероятно, не одного. В частности, в следующей заметке мы попытаемся наладить обмен данными между MINIX'ом и Linux'ом...
А пока напомню только, что обсудить MINIX 3 можно на форуме posix.ru.