2009-04-08
Поводом для данной заметки послужило сообщение о том, что в рамках проекта Debian обрёл официальный статус субпроект Debian/kFreeBSD, ранее развивавшийся сам по себе. Правда, от признания официальности нового установочного диска на http://www.debian.org/CD/ не появилось (пока?). Но была доступна недавняя, январская (то есть ещё до-официальная) версия — найти её можно здесь, в вариантах для архитектур i386 и AMD64. Она была у меня скачана практически в момент появления, и в виде образа для AMD64 поджидала своего часа. Каковой и наступил тогда, когда я ознакомился с соответствующей новостью.
Однако сначала немного истории (опять же выражаю признательность Дмитрию Шурупову за напоминание основных вех истории). То, что FreeBSD оказала значительное влияние на развитие многих дистрибутивов Linux'а — общеизвестно. Универсальный инсталлятор и конфигуратор её, sysinstall, повлиял на установочную программу Slackware и его многочисленных прямых наследников и идейных преемников. Под влиянием системы портов FreeBSD были созданы ports дистрибутива CRUX, ABS Archlinux'а, портежи Gentoo. Были и попытки прямого перенесения системы портов (и разработанной по их образу и подобию pkgsrc) на дистрибутивы Linux'а, в первую очередь Slackware.
Менее известны примеры обратного воздействия отдельных дистрибутивов Linux'а на Free- и другие BSD. Тем не менее, таковым тоже насчитывается не мало лет. В частности, во время максимума имперских амбиций Debian'а, было создано сразу три таких проекта:
Debian GNU/NetBSD — как легко понять из названия, перенос механизма apt и сопряжённой с ним инфраструктуры на ядро NetBSD, славящееся своей мультиплатформенностью;
Debian GNU/FreeBSD — система, образованная ядром и юзерландом FreeBSD, базирующимися на общесистемной библиотеке BSD libc, надстроенная тем же комплексом apt, собираемым посредством той же BSD libc;
Debian GNU/kFreeBSD — буква k в имени её, видимо, призвана подчеркнуть, что от FreeBSD в этом проекте было взято только ядро, а большая часть родного юзерланда заменена GNU-аналогами, да и вся система в целом собирается при посредстве библиотеки glibc (сиречь GNU Libc).
Интересна также попытка перенесения системы портежей Gentoo на ядро FreeBSD (а также и OpenBSD).
Судьба этих проектов была различна. Проект Debian GNU/NetBSD тихо, мирно и незаметно развивается себе на протяжении ряда лет. Судя по всему, основная его цель, как и NetBSD вообще — всеохватность. Что подчеркивается девизом проекта:
Because we can
Потому что мы можем
Проект Gentoo/FreeBSD развивается на протяжении ряда лет с переменным успехом, то замирая (в частности, по лицензионным соображениям), то восставая из пепла. Хотя ныне и он в рамках Gentoo имеет статус официального.
Debian GNU/FreeBSD прекратил своё развитие, и похоже, что навсегда — в том числе и потому, что физически погиб сервер проекта. Хотя из всех перечисленных он выглядел наиболее логичным, представляя собой, в сущности, FreeBSD Distributions, в котором место традиционных портов заняла инфраструктура apt.
Наконец, предмет нынешней заметки — Debian GNU/kFreeBSD. Как уже сказано, последний вариант этого дистрибутива можно, в виде iso-образа размером чуть больше 100 Мбайт, получить здесь. После чего остаётся её только сболванить и попытаться инсталлировать.
Забегая вперёд, отмечу, что такого гибрида мне ещё видеть не доводилось — ни с точки зрения инсталляции, ни в уже установленном виде. Так что начну с самого начала.
А начинается дело вот как: грузится ядро FreeBSD и BSD Loader, что завершается появлением меню последнего в почти традиционном виде, за одним исключением:
Можно видеть, что меню практически ничем не отличается от нормального Free'шного — возникает только резонный вопрос: а при чём здесь Debian? Ведь окромя ядра FreeBSD, у нас пока ничего не загружено. Но оставим это на совести разработчиков...
Интересен реликтовый пункт про загрузку с USB-клавиатурой — много сейчас можно найти машин с клавиатурой иной? Впрочем, умолчальный вариант загрузки поддерживает USB-клавиатуры ничуть не хуже (хотя и не лучше — родовая болезнь последних версий FreeBSD в виде периодического исчезновения устройств ввода с соответствующим интерфейсом имеет место и здесь), так что его можно смело проигнорировать.
А далее, по умолчанию или при выборе того или иного пункта меню, запускается обычный sysinstall — только существенно урезанный функционально (многие пункты его подменю просто не работают никак). Так что надо отправиться в пункт заказной установки (Custom), выполнить разметку диска — создать BSD-слайс и затем разделы на нём, а далее выбрать установку в минимальном объёме (Minimal). Попытка добавить к base system хотя бы страницы man-документации успехом не увенчается — таковых на дистрибутивном носителе просто нету. После этого через пункт Commit подтверждаем правильность выбора и ждём окончания процедуры дисковой разметки и установки базовой системы.
Заметим, что в основе последней сборки Debian GNU/kFreeBSD лежит ядро FreeBSD 7.1, казалось бы, гарантирующее поддержку ZFS. Однако, поскольку таковая в sysinstall не предусмотрена, то задействовать эту файловую систему на стадии установки не удастся ни в каком виде — а уж о размещении на ней корня файловой иерархии говорить не приходится (даже в том "костылеобразном виде, как это реализовано в PC-BSD). И это было первым основанием для грусти. И, увы, не последним...
Однако продолжим про установку. По завершении дисковой разметки и развёртывания базовой системы на экране появляется предложение переключиться на третью виртуальную консоль (посредством Alt+F3) для продолжения инсталляции. И здесь мы видим некие ошмётки уже от Debian Installer'а — в виде предложения выбрать регион (то есть, судя по некоторым косвенным данным, часовой пояс). Выбираем Europe -> Moscow — и, судя по экранным сообщениям, становимся свидетелями установки GNU-аналогов утилит BSD-юзерланда.
Далее предлагается включить службу автоматического реконфигурирования пакетов посредством dpkg-reconfigure. Ответ по умолчанию — NO, с чем я не замедлил согласиться.
Затем предлагается настроить сетевой интерфейс из списка доступных, данном в номенклатуре FreeBSD (то есть по именам чипов сетевых карт). Забегая вперёд, опять же замечу, что можно выбирать любой. Или не выбирать ничего — все равно сеть работать не будет.
Следом идёт выбор звуковой карты. Поскольку к тому времени мне стало совсем уже грустно, я наудачу ткнул в Intel ICH#, каковой и имел место быть в моей машине. Проверить правильность настройки мне всё равно не удалось — по причинам, которые скоро станут ясны.
Последний пункт этой псевдо-Debian'овской установки — выбор модулей для загрузки. В частности, именно здесь следует подключить модули поддержки ZFS — впрочем, пользы от таковой будет не много.
Всё. Происходит автоматический возврат на первую виртуальную консоль, в главное меню sysinstall, предваряемый предложением перезагрузиться, так как установка системы, по мнению её разработчиков, закончена.
Отметив про себя, что никаких более настроек (вроде ввода пароля администратора, создания пользовательских аккаунтов и прочего) выполнено не было, следую рекомендации. И после соответствующих сообщений оказываюсь перед предложением авторизоваться в системе. Чисто интуитивно понимаю, что авторизоваться надо root'ом — и действительно, после этого (без ввода пароля) оказываюсь в командной строке bash'а.
Для начала проверяю, насколько правильно настроилась сеть. И убеждаюсь, что она не настроилась никак: команда
# ifconfig are0
(это имя моего сетевого интерфеса) не даёт никаких сведений об IP-адресе. А команды ping не обнаруживается вовсе (опять же, забегая вперёд, замечу, что это далеко не всё, чего нет в системе).
Вспоминая свой Free'шный опыт, рассчитываю настроить сетевое соединение с помощью sysinstall. И зря: в установленной системе утилиты sysinstall нет как класса.
Огорчившись ещё более, чем раньше, перезагружаюсь с установочного диска, отправляюсь в меню Configure, выбираю там пункт Networking (благо, он чуть ли не единственный, открываемый в этом меню) и в нём подпункт Interfaces (с поддержкой DHCP, каковая во всамделишней FreeBSD у меня всегда работала безотказно) — с тем же результатом. То есть без всякого результата.
Полный уже вселенской грусти, повторяю установку с нуля, только вместо немедленной перезагрузки по выходе из третьей консоли повторяю попытку конфигурирования сети. Результат по прежнему нулевой.
Грусть постепенно переходит в состояние озлобления монтёра Мечникова. Злорадно начинаю смотреть, а что же в системе таки есть? Оказывается, что в ней есть файл /etc/apt/source.list с указанием пары репозиториев проекта Debian. Правда, за отсутствием сети воспользоваться ими не удаётся.
А нет... Да много чего там нет. Кроме команды ping, нет, например, команды less — конфиги предлагается просматривать через more. Нет инструментария для работы с файловой системой ZFS — утилит zpool и zfs. Что сводит на нет её поддержку ядром, якобы подключённую (впрочем, следов этой поддержки не обнаруживается ни в файле /boot/loader.conf, ни в /etc/defaults/loader.conf...
Собственно, на этом можно и заканчивать описание. Ибо, за отсутствием самых необходимых утилит и приложений, и по невозможности установить их из сети, ничего в этой системе практически сделать нельзя. В общем, как сказал бы персонаж известной книжки, душераздирающее зрелище...
Начиная эту заметку, я хотел ещё немного потеоретизировать на тему целесообразности переноса GNU-юзерланда на ядро FreeBSD. Однако по мере приближения к концу желание это пропало — думаю, читатель сам сможет сделать выводы. Добавлю только, что по сравнению с Debian GNU/FreeBSD другая попытка портирования окружения Debian на ядро, отличное от Linux, а именно, Nexenta, производит впечатление законченности и доработанности (в чём можно убедиться здесь).
Грустно, девушки, как сказал бы Великий Комбинатор...