Вернуться в раздел "Документы" >>>

Frenzy: FreeBSD в кармане сисадмина

Статья из журнала "Системный администратор" N2(15), февраль 2004

Автор: Можайский Сергей

Любой сисадмин хоть раз в своей жизни (или даже не раз) делал себе Системную Дискету. Он любовно подбирал драйверочки, вписывал их в config.sys, а иногда даже делал startup-меню. После чего сдвигал рычажок защиты от записи и любовно надписывал: "СИСТЕМНАЯ ДИСКЕТА", втайне считая при этом, что его Дискета - самая лучшая. Убирал дискету в верхний ящик стола. Через 3 месяца, матерясь, рылся в залежах бумаг и прочего хлама, восклицая "Ну где же она?!".

Описанная выше ситуация вам знакома, не так ли? Всем нам хочется носить с собой набор необходимых утилит, чтобы всегда быть готовым к решению любых проблем и не искать нужный для этого софт. За прошедшие с тех пор годы размеры операционных систем и программ для них заметно выросли, и системные дискеты превратились в загрузочные компакт-диски. И если в мире Windows такой подход не особо популярен, то в мире UNIX все наоборот - количество LiveCD-дистрибутивов исчисляется десятками, да и сделать собственный LiveCD теперь может практически каждый, благо скриптов и документации на эту тему написано достаточно. Правда, LiveCD делаются в основном на базе Linux - Knoppix, Blin, Linux-BBC, Phlak, Gentoo LiveCD, RTK... Операционная система FreeBSD куда более "консервативна" и на новомодное увлечение LiveCD внимания не обращала. Несмотря на то, что в портах FreeBSD есть целых три набора скриптов для создания собственного LiveCD (sysutils/cdroot, sysutils/freesbie, sysutils/livecd), готового к использованию набора не предлагал практически никто. Поскольку с FreeBSD я работал уже долгое время, мне всегда хотелось создать LiveCD именно на его основе, и в июле 2003 года я принялся за работу. Информацию по вопросу создания LiveCD на базе FreeBSD приходилось выискивать по крупицам - поиск в Google дал не больше десятка действительно полезных ссылок, которыми я и воспользовался в работе. К началу августа у меня получился первый работоспособный LiveCD. Получившийся дистрибутив я не планировал распространять, поскольку считал, что это мало кому будет интересно, ограничился лишь кратким анонсом о выходе Frenzy 0.1 и выложил сборочные скрипты. Позже, примерно через неделю, я смог выложить в сеть ISO-имидж. Однако новая разработка заинтересовала многих, я получал множество писем и сообщений ICQ по поводу Frenzy. Обзор первой версии Frenzy вы можете прочесть в январском номере журнала.

По мере поступления отзывов стало понятно, что необходимо выпустить следующий релиз, в котором будут исправлены недоработки первой версии и учтены высказанные пожелания. Поэтому 20 октября вышла Frenzy 0.2. В новой версии был обновлен набор программного обеспечения, добавлены криптографические утилиты, обеспечена поддержка NFS и SNMP, а также заметно упрощен процесс сборки. Frenzy распространяется в соответствии с лицензией BSD, вы можете скачать ISO-имидж системы, заказать в интернет-магазинах компакт-диск или сделать свой дистрибутив Frenzy самостоятельно, используя сборочные скрипты. Обеспечивается полноценная техническая поддержка - вы можете всегда получить консультацию по работе с системой в форуме сайта проекта или почтовой рассылке.

Возможности Frenzy

Минимальными требованиями для работы Frenzy является компьютер Pentium с 32 мегабайтами RAM. Однако для некоторых программ требуется существенно больше оперативной памяти, поэтому 128 мегабайт будет вполне достаточно для работы со всеми приложениями из состава Frenzy. В случает нехватки оперативной памяти вы можете создать swap-файл на смонтированных разделах винчестера. После загрузки с CD мы получаем вполне работоспособную операционную систему FreeBSD 4.8-STABLE. В качестве командной оболочки использован стандартный tcsh, но его функциональность была дополнена скриптами из проекта tcshrc - и теперь в нем есть расширенное автодополнение команд, поддержка "горячих" клавиш, проверка синтаксиса введенных команд и многое другое. Для тех, кто привык к файловым менеджерам, есть Midnight Commander и Demos Commander, который менее функционален, но зато намного быстрее и проще. Есть и графическая оболочка XFree86 4.3.0 с оконным менеджером fluxbox.

При загрузке разделы жесткого диска монтируются автоматически, потом можно смонтировать сетевые диски NFS и SMB, с DOS-дискетами можно работать и без монтирования - достаточно воспользоваться программами из пакета mtools или файловым менеджером MToolsFM. Если нам нужно настроить сеть, то можно не возиться с ifconfig и редактированием конфигурационных файлов - в Frenzy есть диалоговый скрипт lan-config, позволяющий настроить поддержку локальной сети. Для настройки модемного соединения используется скрипт ppp-config. Теперь можно запускать популярный браузер Opera или консольный lynx для веб-серфинга, скачивать файлы с помощью curl или wget, пользоваться почтовыми и новостными клиентами mutt, tin, sylpheed-claws, общаться в сети ICQ с помощью centericq или licq и чатиться в IRC с помощью xchat. Кроме того, из Frenzy можно сделать тестовый маршрутизатор, файрвол, NAT, NFS или DNS-сервер - все необходимое для этого есть в системе.

Теперь перейдем к программам для системного администратора, которые и составляют основу дистрибутива.

При неполадках с винчестером могут помочь утилиты gpart (с ее помощью я дважды восстанавливал поврежденную таблицу разделов), disktype, testdisk. Для восстановления удаленных файлов на FAT-дисках есть fatback, для фришной FFS - экспериментальная утилита ffsrecov. Тем, кто хочет протестировать свое "железо", пригодятся программы bytebench, cpuburn, ubench, memtest, pciutils. Набор сетевых утилит, думаю, удовлетворит многих - есть утилиты для работы с DNS, ICMP, DHCP, SNMP, NetBIOS. Для удаленного управления есть сервер и клиент VNC - утилита tightVNC, оптимизированная для работы по медленным каналам связи, а также rdesktop (клиент для Windows Terminal Server).

В состав Frenzy входит антивирусный пакет Dr.WEB для проверки на вирусы FAT-разделов, а для UNIX-систем полезным окажется наличие утилит chkrootkit и cops, позволяющих определить наличие руткитов в системе. Для анализа безопасности сети есть пакетные снифферы, сканеры портов, утилиты подбора паролей и многие другие программы. Отмечу лишь некоторые из них - популярный сканер безопасности nessus, система обнаружения сетевых атак snort, знаменитая утилита nmap (с графическим фронтендом nmapfe), удобный пакетный сниффер ethereal. Ко всем программам в системе прилагается документация и сопутствующие man-страницы, так что разбираться во всем "методом тыка" не придется. Кроме того, в каталоге /frenzy/doc есть краткая документация по работе с Frenzy и список приложений с описанием их назначения. Провозившись некоторое время с настройками системы, вам наверняка захочется их сохранить, чтобы не настраивать при следующей загрузке все заново. Для этого есть скрипт backup, который позволит сохранить все изменения в каталогах /etc, /root, /usr/local/etc и /var/drweb на обычную DOS-дискету. При загрузке система проверяет наличие backup-дискеты в дисководе и восстанавливает настройки с нее.

Процесс разработки

При работе над дистрибутивом Frenzy возникало множество проблем.

Сделать загрузку системы с CD удалось не сразу - советы и рекомендации, найденные мной в интернете, не помогали. Как оказалось, для того, чтобы система могла загружаться с CD, достаточно было наличия этих опций в ядре:
  options CD9660
  options CD9660_ROOT
а также наличия строки
  vfs.root.mountfrom="cd9660:acd0a"
в файле /boot/loader.conf.

Уменьшение размера базовой системы делалось по инструкциям, изложенным в cтатье Мануэля Каспера "miniBSD - reducing FreeBSD" (http://neon1.net/misc/minibsd.html) - ему удалось уместить всю систему вместе с Perl в 22 мегабайта, у меня же вышло порядка 40 за счет добавления man-страниц и ряда полезных утилит.

Патчи в конфигурации системы сводились к добавлению в /etc/rc.conf строки
  diskless_mount="/etc/rc.frenzy"
и написанию самого скрипта rc.frenzy и его компонентов. Для полноценной работы LiveCD необходимы разделы в памяти (memory disks), в которые может производиться запись, первый компонент - скрипт rc.frenzy.mfs создает их и заполняет необходимыми файлами. Затем необходимо найти и смонтировать разделы жесткого диска, за это отвечает скрипт rc.frenzy.part. И наконец, нужно обеспечить восстановление сохраненных на дискету настроек системы, скрипт restore отвечает за эту операцию.

Одной из главных отличительных черт Frenzy является уменьшение размера установленных приложений, благодаря чему удалось уместить большое количество приложений на 3-дюймовый компакт-диск. В первой версии "препарирование" всех пакаджей проделывалось вручную. Однако при создании версии 0.2, прикинув объем работ, я решил все это автоматизировать с помощью набора скриптов. Из пакаджей удаляются include и info-файлы, ненужные локали (зачем нам, к примеру, X-Chat на китайском?), после чего к пакаджу применяются индивидуальные патчи. В итоге размер системы удалось сократить с 330 до 196 мегабайт.

После всех этих приготовлений загрузочный iso-имидж создается такой командой:
  mkisofs -b boot/cdboot -no-emul-boot -r -J -D -V Frenzy_02 -o iso/frenzy_v02_release.iso FRENZY

Загрузку с CD можно было реализовать двумя способами - эмуляцией загрузочной дискеты (так называемый El-Toro) или прямой загрузкой (с помощью загрузчика cdboot). В Frenzy используется второй вариант, поскольку он проще в реализации.

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

Желающие более детально ознакомиться с процессом сборки Frenzy могут скачать скрипты с сайта проекта. Кроме того, на CD с Frenzy 0.2 в каталоге /frenzy/devel можно найти сборочные скрипты и краткую документацию к ним.

Перспективы развития

В настоящее время ведется работа над Frenzy 0.3.

Следующая версия Frenzy будет основана на 5-й ветке FreeBSD. Реализация сжатой файловой системы (поддержки которой пока еще нет в FreeBSD) позволит увеличить количество приложений и положительно скажется на скорости загрузки. Также планируется обновить набор софта и включить в состав дистрибутива русскую документацию по ряду приложений.

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

 http://frenzy.org.ua/ru/art/pocketbsd.shtml  [ 07.09.07 10:14 ]

 
Rambler's Top100