UNIX в исходных текстах для IBM PC

Ли Мак-Лахлин [email protected], Dpt. of Computing, Imperial College, London, UK
15.02.1994
Открытые системы, #02/1994


Введение
История систем BSD
История LUNIX
IBM PC
Сравнение версий
Точка зрения пользователя
Точка зрения системного программиста
Заключение

Полный комплект исходных текстов ОС UNIX на компьютерах IBM PC 386 или 486 можно получить вместе с одной из трех систем: 386BSD 0.1, BSD/386 от BSDI и Lunix. Все они - законченные UNIX-системы, поддерживающие все стандартные команды, Си-компиляторы, X Windows, текстовые редакторы и все остальное, что от них ожидается. Автор статьи от имени "домашнего пользователя" сравнивает все "за" и против трех систем, чтобы помочь другим потенциальным пользователям решить, какая из них им больше подходит. Приведен также краткий обзор аппаратуры с точки зрения покупки машины под UNIX.

Введение

В прошлом ОС UNIX никогда не ассоциировалось с рынком дешевых массовых систем. Обычно она использовалась только на дорогостоящем оборудовании, что очень увеличивало и стоимость операционной системы. Цены понизились, но и сейчас ни один из основных производителей не продает систем, которые были бы по карману домашнему пользователю.

Но ситуация постепенно меняется. Можно достать высококлассную IBM-совместимую машину по разумной цене. Чтобы превратить ее в действительно полезную машину, достаточно добавить UNIX. В статье приводится обзор двух свободных и одной коммерческой версии UNIX`а. От других систем их отличает доступность полного набора исходных текстов как самой ОС, так и утилит.

В приведенном сравнении всюду подразумевается основные дистрибутивы. Для всех систем есть разнообразные вставки, расширения и модернизации. Однако для некоммерческих версий не предусмотрено единого источника модификаций, поэтому пользователю самому приходится решать, какие из дополнений использовать.

История систем BSD

У 386BSD и BSD/386, как видно из названий, - один первоисточник, дистрибутив UNIX Berkeley 4.3 (4.3 BSD).

Некоторое время назад Университет Беркли распространил все свои наработки, связанные с ОС UNIX. Это не было полной операционной системой, что подтолкнуло несколько групп разработчиков к тому, чтобы "заполнить пробелы".

Если пренебречь политическими соображениями, как 386BSD, так и BSD/386 - системы с заполненными пробелами. Однако, какими бы похожими они не казались рядовому пользователю, во многих решающих вопросах они различны. 386BSD распространяется свободно. Основная движущая сила, стоящая за ним - это Вильям и Линн Джолитц. 386BSD доступен через Internet и развивается в рамках телеконференций программистами, разбросанными по всему миру.

Вокруг этой системы не прекращаются политические войны, что приводит к отпочковыванию побочных версий, например, NetBSD и FreeBSD. (У автора не было ни времени, ни места на диске, чтобы оценить их.)

BSD/386 - коммерческий продукт, разработанный и продающийся Berkeley System Desighn International (BSDI). Он обладает всеми характеристиками коммерческой операционной системы: сервисом, преимуществами и стоимостью (с той разницей, что стоимость полного комплекта лицензированных исходных текстов составляет малую долю обычно назначаемой другими производителями).

История LUNIX

Многие еще помнят одну из похожих на UNIX систем - Minix. Это была маленькая система, работавшая на дешевых персоналках и распространявшаяся с исходниками для всего, кроме компилятора. У нее было несколько недостатков и самый заметный - отсутствие виртуальной памяти, что ограничивало программу максимумом в 64К для кода и 64К для данных.

Профессор по вычислительной технике Линус Торвалд из Финляндии использовал Minix в качестве базы для студенческих работ по операционным системам. У студентов возникали трудности и Линус решил улучшить ядро, со временем его полностью переписав.

В результате ядро оказалось как минимум столь же мощным, что и ядро BSD, за исключением, быть может, IP-поддержки. Однако эта область постоянно совершенствуется, да она и не столь критична для большинства домашних пользователей.

IBM PC

Конечно, IDM PC - это не VAX и не SPARC. И сама IDM давно по существу оставила тот рынок, чтобы сконцентрироваться на PS/2. Так что, вероятно, будет приобретен IDM-совместимый компьютер. В Великобритании продаются буквально сотни таких машин, а это множество различных процессоров, опций вещественной арифметики, типов памяти, контроллеров дисков, графических карт...

Есть несколько требований, чтобы у ОС UNIX появился шанс заработать. Правда, их выполнение еще не гарантирует, что UNIX будет работать, так что перед покупкой все же следует попробовать.

Во-первых, нужен 80386 ил 80486 процессор. Процессоры 8086 и 80286 не подойдут, потому что не имеют аппаратных средств управления памятью.

Разных 386 и 486 процессоров много. основные характеристики - размер шины и тактовая частота. Оба процессора 32-битные, но у SX-моделей внешняя шина 16-битная, а у DX - полная 32-битная. Частота варьируется от 25Мгц до 66МГц. Приемлемая нижняя граница для 386DX - 40МГц, для 486DX - 30. Мне моей 386DX/40 кажется достаточно хорошим для домашнего пользования, включая работу с X Windows и Latex.

Для работы с 386BSD понадобится также плавающий сопроцессор. BSD/386 и Linux снабжаются программными эмуляторами.

Общепринятая шина IDM PC - 16-битная шина ISA; впрочем, сейчас все больше систем используют 320-битную шину, EISA. Пропускная способность шины по современным меркам невысока, зато широк спектр поддерживаемых карт. Новая шина LocalBus не поддерживается ни одной из рассматриваемых версий UNIX.

Если планируется работа с X Windows, потребуется минимум 4Мб памяти. При меньшем объеме система будет тратить слишком много времени, перекачивая приложения с диска и обратно.

Потребность в дисковом пространстве зависит как от личных запросов пользователя, так и от версии ОС. Вот цифры для полной установки:

Если кое от чего отказаться, хватит и 100Мб. Диск в 200 Мб обеспечит массу свободного места для работы.

Применяется несколько различных типов контроллеров жестких дисков. Специфические стандарты для PC - ESDI, IDE, RLL и MFM. Наиболее распространен IDE.

Есть также несколько способов подсоединения CD-ROM (через SCSI-интерфейс или с помощью собственной интерфейсной карты). Автор заимствовал SCSI CD-ROM фирмы Sun. К сожалению, у Sun блоки по 512 байт, а у BSD 0.1 - по 1024 байт. Как коммерческий BSD, так и Linux оперировали драйверами. Очень маловероятно, что любой CD-ROM, требующий специальной карты, будет работать. Только BSD/386 поддерживает не-SCSI CD-ROM.

Если будет использоваться X Windows, нужна мышь наиболее общего типа. Большей проблемой является графика. Наверное захочется использовать SuperVGA (хотя стандарт - VGA). Разными картами поддерживается множество опций, что обеспечивает большой диапазон мониторов.

Наконец, большинство персоналок поставляется с прединсталлированной операционной системой DOS. Ее можно удалить и весь диск отдать под UNIX. В этом случае следует проявить осторожность и оставить как минимум окружение загрузки DOS с флоппика. Кроме того, многие специализированные карты (такие как драйверы Ethernet) поставляются с основанными на DOS конфигурационными программами. Поэтому DOS все же лучше оставить, тем более, DOS действительно допускает установку других операционных систем на тот же жесткий диск. Используемая для этого таблица разделов позволяет указать четыре начальных сектора, три из них могут содержать самозагружаемые области. Четвертый можно дальше разделить на сектора, но из них загрузка производиться не может. Используемая для загрузки область указывается флажком.

Сравнение версий

Сравниваются следующие версии: 386BSD 0.1, BSD/386 1.0 и Linux SLS Distribution version 1.03 (с утилитами первоначальной загрузки).

Основной вариант BSD 0.1 несколько ненадежен. Чтобы добиться большей стабильности, пришлось инсталлировать целую серию дополнений. Хорошо, что они оказались собранными вместе и протестированными, имелся толковый сопровождающий документ по их применению.

Сравнение проводилось на домашнем компьютере автора. Это безымянный IBM-совместимый компьютер, 386DX/40 с сопроцессором Weitek и 8Мб памяти. Также использовалась карта Adaptec SCSI для доступа к жесткому диску емкостью 1 Гб и к Sun CD-ROM. Тестирование сетевых возможностей обоих BSD проводилось с использованием платы Western Digital Ethernet.

Поскольку принтера и магнитофона в конфигурации не оказалось, проверить аспекты их использования не удалось.

Точка зрения пользователя

С точки зрения пользователя все три системы очень близки, поскольку все они, за несколькими отличиями, предоставляют одни и те же приложения - все богатство программ, доступное сейчас через Internet (в частности, такие компьютерные компоненты FSF, как очень мощный текстовый редактор GNUEmacs, оптимизирующий Си-компилятор GCC, аналог shell`а BASH.

X Window в BSD 0.1 и Linux - это Xfree86, разновидность X11R5, способная работать с широким диапазоном графических карт: от "старинных" графических карт Hercules (что удивительно) до большинства карт Super VGA. Доступны все известные приложения: xterm, xclock, игры и другие полезные программы.

BSD/386 использует SCSI X, а не Xfree86. Хотя и кажется, что это вносит небольшие изменения в размер и характер выполнения предложений, они все же доступны.

Для обработки текстов имеется LaTex/Tex, а также GNUroff (или groff). SCS Linux комплектуется полу-WYSWYG редактором doc и простой программой рисования idraw (обе программы - из пакета Interviews).

Итак, и за неимением коммерческих пакетов, наиболее примечателен из которых Motif, можно добиться более или менее адекватной эмуляции большинства коммерческих рабочих UNIX-станций.

Не прикладывая слишком больших усилий, мне удалось организовать жизнь так, чтобы все выглядело, будто работа идет на Sun. Все, за исключением скорости.

Информация

В любой новой системе потребуется документация о том, как ей пользоваться. Важно иметь под рукой руководство по эксплуатации. Поскольку очень широко используются программы из FSF, пригодится информация и о них. Это гипертекст, напоминающий подсистемы просмотра документов используемые во многих программах FSF (например, emacs). SLS Linux проигрывал в этом отношении. В системе оказалось много команд, которых не удалось найти в руководстве. Это снизило практическую пригодность Man-k: информационная система была установлена, но многие из документов попали в неверный каталог (часть - в /usr/info, другие в /usr/local/info, а остальные не были отмечены в главном индексном файле /usr/local/emacs/info/dir).

Некоммерческий вариант BSD и Linux комплектуются документом FAQ (часто задаваемые вопросы с ответами, которые стоит прочитать)

DOS

Доступ к диску DOS. Все три системы используют свободно распространяемый пакет Mtools для организации чтения, записи и даже форматирования дисков DOS. Правда, в BSD допускается доступ к флоппи-дискам.

Лучше всего взаимодействует с DOS Linux, в частности, поддерживая доступ к жесткому диску DOS с помощью Mtools. Кроме того, Linux позволяет работать с дисками DOS, как с обычной частью файловой системы с ограничениями на имена файлов.

Эмуляторы DOS. BSD/386 и Linux поставляются с эмуляторами DOS, а некоммерческая BSD - без.

В BSD/386 есть как настоящий DOS-эмулятор, так и упрощенный &qout;запускатель&qout; DOS-программ. Эмулятор достаточно точно воспроизводит среду 8086, используя образ загрузочного диска DOS. &qout;Запускатель&qout; DOS-программ может работать с теми программами, которым требуется самый простой управляющий терминал и доступ к файлам. Это позволяет таким программам, как Си-компилятор, обходиться без полной среды DOS.

Эмулятор DOS в Linux может выполняться в окне xterm, как и на консоли. Однако, если эмулятор под BSD/386 работал хорошо, то версия Linux показалась немного медлительной.

Использование флоппи-дисков

В DOS можно вынимать флоппи-диски из дисковода без предварительного уведомления операционной системы. Это означает, что можно просто мысленно удалить содержимое диска из того каталога, к которому он в данный момент подмонтирован. UNIX этого не поймет. Три системы реагируют по-разному. BSD 0.1 кэширует. BSD/386 продолжает выполнение, но отказывается позволить дальнейший доступ к флоппи-диску. Linux просит вернуть требуемый диск на прежнее место; пишет и читает, продолжая с того места, где остановилась.

Виртуальные консоли

Коммерческий вариант BSD и Linux поддерживают виртуальные консоли, что позволяет моделировать на одной консоли несколько различных терминалов. С одного терминала на другой можно переключаться нажатием пары клавиш. Вот такая оконная система для бедняков.

Linux поддерживает виртуальные консоли даже при работе с X Window. Это очень полезно при работе на X-сервере.

Кэширование файлового ЗУ

Один из критический факторов, влияющих на скорость работы системы, - насколько хорошо кэшируются чтение и запись в файлы. Это, в частности, определяет, насколько эффективно программы подкачиваются и удаляются из оперативной памяти.

В BSD 1.0 кэширование сделано очень слабо. Даже при большом объеме ПЗУ только малая его часть отводится под кэш. Это приводит к замедлению доступа к файлам. Еще хуже подкачка и выталкивание программ. Правда, первый запуск программы происходит довольно быстро, но также быстро программы и удаляются из памяти. Это означает, что при попытке работать сразу с несколькими программами, например, в рамках X Window, текущее окно очень быстро откликается на действия пользователя, но переключение на другое окно может занять несколько секунд.

BSD/386 усовершенствован по сравнению со своим некоммерческим двойником. Чтение и запись файлов остались неизменными, но скорость запуска программ значительно выше.

Запуск программ в Linux очень похож на BSD/386. Однако кэширование файлов заслуживает значительно более восторженного отзыва. Это очень заметно при записи на флоппи-диски. Кэш такой большой, что заполнение флопии-диска производится моментально.

Разделяемые библиотеки

Разделяемые библиотеки поддерживает только Linux. Этот механизм устраняет многократное дублирование кода библиотечных функций. Вместо полного кода используемой функции в выполняемый файл включается небольшая запись о том, как получить доступ к нужной библиотеке; сам код добавляется к программе динамически с разрешением всех необходимых ссылок. Время выполнения программы изменяется незначительно.

Преимущество же состоит в том, что выполняемые файлы намного меньше. В особенности - программы X Window, использующие несколько очень больших библиотек. Это значит, что Linux`у требуется намного меньше дискового пространства на диске для тех же приложений по сравнению с BSD. Кроме того, после изменения внутренностей разделяемой библиотеки все приложения автоматически начинают использовать ее новую версию.

Точка зрения системного программиста

К сожалению, сравнить системы так детально, как хотелось, не удалось. BSD 0.1 была инсталлирована через сеть, BSD/386 - с CD-ROM`а, а Linux - с тридцати (!) флоппи-дисков.

У всех трех имеется основной загрузочный флоппи-диск. Остаток системы можно инсталлировать либо с ленты, либо с CD-ROM`а. Некоммерческий вариант BSD и Linux могут также быть инсталлированы с флоппи-диска.

Коммерческий BSD нельзя инсталлировать с флоппи-диска, так что потребуется либо CD-ROM, либо лента, либо доступ к одному из этих устройств через сеть.

Где на диске?

Первый шаг при любой инсталляции - выбор места на диске.

BSD открывает два пути: либо отвести под UNIX целый диск, либо предъявить ему в качестве диска один из незанятых разделов диска. Это упрощает инсталляцию.

Linux отображает пространство файлов на сектора DOS. Это делает задачу более сложной, однако, прилагаемые утилиты помогают ее решить.

Как уже упоминалось, рекомендуется оставлять раздел под DOS, если позволяет место. Если на самом деле Вас не волнует DOS, а требуется только окружение установки карт, 5 Мб будет вполне достаточно.

Установка джамперов

Разные карты используют различные адреса прерываний. Стандартов не существует. Производители рекомендуют специальные методы загрузки, если повезет, предоставляют программу, позволяющую проверить, есть ли на машине свободный адрес прерывания.

Различные версии UNIX могут искать карты по определенным адресам; обычно производитель указывает рекомендованные значения. Поскольку карт много, приходится изучать инструкции по инсталляции для каждой конкретной версии ОС.

Больше всего суеты с BSD 0.1. Ее представления о том, где должны находиться карты, весьма ограничены. При первой попытке инсталляции пришлось попросту вытащить несколько плат прежде, чем она успешно загрузилась. Затем, чтобы из использовать (для этого надо увидеть требуемые адреса), пришлось перестроить ядро.

ОС BSD/386 более гибкая; инструкции по инсталляции поставляются вместе с перечнем всех рекомендуемых адресов.

Linux также достаточно гибок; у команды загрузки предусмотрены аргументы, специфицирующие адреса, используемые по умолчанию. Хотя синтаксис несколько замысловат, это определенное усовершенствование по сравнению с переустановкой джамперов.

На практике же, если плат немного и нет либо чего-нибудь экзотического, конфигурирование аппаратуры не будет представлять проблемы.

Управление пользователями

Конечно, на домашнем компьютере можно делать все, что угодно, от имени суперпользователя, но это глупо. Малейшие ошибки могут привести к полному хаосу. Поэтому заведите для себя непривилегированного пользователя.

BSD 0.1 и Linux используют сокрытие пароля, когда даже встроенные пароли не хранятся в файле /etc/passwd. Они хранятся в особом файле с запрещенным доступом. Однако в BSD 0.1 пароли хранятся в незашифрованном виде.

В BSD нет специальных средств для создания новых пользователей; приходится редактировать файл паролей и вручную создавать начальные каталоги. Linux поставляется с программой adduser.

В Linux используется схема устаревания пароля. Так, по умолчанию пароль приходится обновлять каждые три месяца.

Организация сетей

Организация сетей в BSD широко признана наилучшей и является эталоном, на который равняются все остальные реализации сетей IP. Не удивительно, что все необходимые средства в BSD UNIX есть, как и все стандартные сетевые сервисы (teknet, rgolin, NFS...).

Простой последовательный протокол SLIP, используемый для модемов и других подобных соединений, для BSD стандартом не является. Хотя он и поддерживается, делается это довольно слабо как в коммерческой, так и в некоммерческой версиях. В конце концов в обеих системах удалось инсталлировать свободно распространяемый пакет clisp, поддерживающих автоматическую установку SLIP-соединения с удаленной машиной.

Орагнизация сетей в Linux все еще в зачаточном состоянии; поддерживается плата Wester Digital Ethernet, наличествует SLIP. После небольшой работы удалось связаться с мультиплексором терминала Annex через модемное соединение; однако, это удается не всем. (Меня выручила карта буферизованного последовательного интерфейса). Linux комплектуется программой dip, служащей для реализации slip-сеансов.

До недавнего прихода сетей IP в Linux большинство при организации сетей полагалось на пользовательскую программу term: выполняясь одни раз после начала сеанса терминала, term позволяет запустить удаленный shell. Возможны множественные удаленные соединения. Имеется также редиректор, ожидающий пакеты от удаленных компьютеров и прозрачным образом пересылающий их надлежащему сервису на локальном компьютере. Хотя term сложнее устанавливать, а возможностей у него меньше, чем у настоящего IP-соединения, по сравнению с SLIP и C-SLIP меньше и накладные расходы. Кроме того, работа в адресном пространстве пользователя не требует никаких специальных разрешений от администратора удаленной системы.

Сохранение резервных копий и восстановление

Поскольку магнитофон отсутствовал, я не стал долго заниматься этой проблемой. Дамп раздела в 180 Мб на флоппи-диски - не лучший способ провести день. Во всех трех системах есть FSF-вариант программы tar. Это позволяет сформировать tar-образ на многих флоппи-дисках.

Надежность файловой системы

Поскольку при сбоях все три варианта ОС анализируют кэш файлов, можно обнаружить и разрешить противоречивые состояния файловой системы. Чтобы установить, насколько надежна файловая система, была написана простенькая программа, создающая большое число файлов, которая и прогонялась в каждой ОС.

Некоммерческая BSD не давала никаких ошибок. Возможно потому, что в ней кэш файлов устроен не очень хорошо, так что записи шли прямо на диск. BSD/386 замечал ошибки и исправлял их, используя стандартные программы из /etc/rc.

Linux действительно сильно сломался при проведении теста. При загрузке системы никакого тестирования файловой системы проведено не было. К сожалению, я этого не заметил, процедура восстановления файловой системы с дискеты потребовала значительного труда. Так как файловая система не проверялась, возможно, были и другие ошибки в прошлом. Не был обнаружен и простой способ обработки аварийных файлов из каталога /lost+found.

Это удивительно вдвойне, учитывая, что ОС Linux поддерживает надежную модель файловой системы. В частности, ей известно, были ли вытолкнуты кэши файлов перед отключением системы.

Это самый большой минус в Linux.

Заключение

Если Вы можете себе это позволить и если Вы хотите технической поддержки, тогда BSD/386 - то, что Вам нужно. Если хотите бесплатную систему, используйте Linux. Если нет особо острой нужды в BSD и Вам не по карману BSD/386, избегайте BSD 0.1.

Я начинал это сравнение убежденным сторонником BSD 0.1. Затем обнаружилось, что коммерческий вариант BSD вызывает меньше нареканий - он просто инсталлируется и работает без проблем. Однако, единственный UNIX, который останется на моем компьютере, - это Linux.

Для такого выбора есть три причины. Мне нравится ковыряться в ядре. Модель ядра Linux и простота добавления расширений привлекательны. Разделяемые библиотеки обеспечивают значительную экономию места на диске и упрощают модернизацию приложений.. Очень полезной показалась возможность доступа к диску DOS.

Где получить каждую из систем? BSD 0.1 и SLS Linux можно обнаружить в основных архивах internet (например, src.doc.ic.ac.uk:packages/Linux/sunsite.uncmirror/packages/SLS соответственно). Чтобы получить BSD/386, попробуйте связаться с Berkeley Software Design International. Ряд компаний сейчас продают на CD-ROM`ах версии обеих BSD и Linux.

BSD386 0.1 и Linux поддерживаются, в основном, через группы Usenet и специализированные почтовые списки. Сейчас в США есть несколько компаний, предлагающих контракты по поддержке обеих систем, однако, ОС Linux охвачена лучше.

Для BSD/386 доступны три уровня коммерческого сопровождения:

Кроме очевидного применения в качестве недорогой домашней машины возможны и другие. Единственное, чего не хватает сетевым пользователям, - дешевой "алфавитно-цифровой" альтернативы Х-терминалам. Если Вас не пугает ограниченность аппаратного обеспечения персонально компьютера, тогда это дешевое и удачное решение.