Статья из журнала "Хакер" N10(70), октябрь 2004
Автор: Можайский Сергей
Еще недавно загрузочная дискета была непременным атрибутом админа. Теперь на смену дискетам пришли LiveCD. Носить с собой компакт-диск, на котором находится готовая к работе система, да еще и с набором полезных утилит, стало традицией многих сисадминов. "Хакер" уже писал о LiveCD на базе Linux и Windows. А что же делать, если твоя любимая ось - FreeBSD?
К сожалению, похвастаться разнообразием FreeBSD-шных LiveCD не получится - такие проекты можно пересчитать по пальцам. Однако среди них есть один, заслуживающий твоего внимания. Несмотря на свой небольшой размер, он содержит множество полезных утилит, к тому же полностью русифицирован и активно развивается. Представляю твоему вниманию проект, над которым я работаю уже больше года - Frenzy, портативный инструмент системного администратора. За это время из простенького LiveCD с небольшим набором утилит проект превратился в популярный и качественный дистрибутив, которым пользуются многие начинающие и продвинутые юниксоиды. Как, ты еще не слышал? Тогда читай скорее, не отставай от прогресса!
Как и множество других проектов, все началось с простого любопытства. Солнечным июльским утром 2003 года я сидел за своим компьютером и читал статью Мануэля Каспера "MiniBSD - reducing FreeBSD", в которой автор рассказывал, как ему удалось уместить полностью работоспособную FreeBSD всего лишь в 22 мегабайта. Мне стало интересно, можно ли загрузить такую "урезанную" систему с компакт-диска, и я начал экспериментировать. Разработка Frenzy была весьма непростым занятием. В поисках полезной инфы я облазил множество сайтов, выискивая по крупицам полезную информацию. Было проделано множество экспериментов с опциями ядра, методами загрузки, настройками софта... Первый релиз Frenzy вышел в августе прошлого года. Неожиданно для меня новый проект заинтересовал многих, пришло множество разных отзывов. Поэтому через два месяца вышла версия 0.2, в которой были вычищены баги первой версии и добавлено множество новых фишек.
Однако у первых версий был весьма серьезный недостаток - скорость загрузки прог была куда тормознее по сравнению с линуксовыми LiveCD. Причина - отсуствие в FreeBSD модуля сжатой файловой системы. Практически все линуксовые LiveCD используют сжатые файловые системы (cloop, squashfs, cramfs и т.п.), благодаря чему на диске размещается намного больше приложений, а скорость их запуска в несколько раз выше, чем была в Frenzy. Разработка новой версии затянулась. Найдя несколько проектов по созданию сжатых файловых систем для FreeBSD, я попытался применить их наработки в Frenzy, но безрезультатно - единственным результатом работы всех этих модулей было множество сообщений об ошибках :)
К счастью, Максим Хон, один из участников проекта FreeBSD, заинтересовался этой проблемой и портировал модуль cloop (сжатая файловая система, используемая в Knoppix) в FreeBSD 5. Результат превзошел все ожидания - проги стали загружаться так же быстро, как и в линуксовых LiveCD, а по сравнению с предыдущими релизами Frenzy скорость выросла в три раза. Кстати, модуль geom_ugz теперь входит в дерево сорцов FreeBSD.
27 июля вышел долгожданный релиз Frenzy 0.3. Теперь, в отличие от предыдущих версий, базовой системой стала FreeBSD 5.2.1. Размер исошника Frenzy 0.3 составляет 198 мегабайт, его можно записать на 3-дюймовый компакт-диск и носить с собой в кармане. Однако не обманывайся размером - на компакте размещено около 400 программ общим объемом порядка 600 мегабайт, благодаря сжатию файловой системы.
Ты всегда можешь пообщаться с разработчиком и пользователями Frenzy на форуме сайта и в дискуссионном списке рассылки. Ведь проект не стоит на месте, идет работа над новыми версиями, и стоит быть в курсе всех событий, чтобы первым успеть увидеть скриншоты и достать новый релиз :)
Итак, ты достал диск с Frenzy или прожег исошник самостоятельно. Вставляем диск в CD-ROM, перезагружаемся. Уже через полторы минуты система загружена, и мы попадаем в самую обыкновенную текстовую консоль FreeBSD. Залогиниться в систему можно под пользователем root баз пароля. Набрав команду help (о чем нам напоминают после входа в систему), можно прочесть документацию по системе - какие проги входят в состав дистрибутива, как настроить сеть, как сохранить и восстановить настройки и так далее. В общем, разбираться в системе "методом научного тыка" тебе не придется - все man-страницы и документация к программам на месте, а также есть FreeBSD Handbook и FreeBSD FAQ на русском языке.
В качестве шелла используется tcsh, к которому прикручены конфиги от проекта tcshrc (http://tcshrc.sourceforge.net/). Теперь в нем присутствует расширенное автодополнение команд, работают "горячие" клавиши. Конечно, есть и традиционные файловые менеджеры вроде Midnight Commander или Demos Commander. Ладно, скажешь ты, консоль - это хорошо, а что же насчет графического интерфейса? Нет проблем, набирай команду "startx". Система сама определяет модель видеокарточки и монитора, и после небольшой паузы запускаются XFree86 4.3.99 с оконным менеджером fluxbox 0.9.9. Как видно на скриншотах, все это выглядит весьма стильно.
Описание всех программ из Frenzy 0.3 займет довольно много места, поэтому вкратце пройдемся по основным категориям софта.
Для работы с файлами и дисками в системе имеются файловые менеджеры Deco, MC и XNC, комплект утилит для работы с DOS-дискетами mtools (а это значит, что можно и не монтировать дискеты), всевозможные архиваторы. Разработчиков софта порадует тот факт, что на диске есть gcc, nasm, perl и python, так что можно без проблем скомпилировать свою прогу или запустить скрипт. Сисадмины найдут на диске утилиты восстановления файлов, программы для работы с жестким диском, бенчмарки и тесты, антивирусы clamav и Dr.Web с возможностью обновления антивирусных баз.
Софт для работы с сетями составляет значительную часть дистрибутива. Настроить локалку можно не напрягаясь с помощью скрипта lan-config, для модемного соединения есть ppp-config и звонилки XISP и Chestnut-dialer. Кроме стандартных сетевых компонентов, имеются VPN и Wireless-утилиты. Для серфинга в инете найдутся браузеры lynx, links-hacked, Opera, качалка wget, почтовики mutt и sylpheed-claws, разный софт для общения в ICQ, IRC и Jabber. Админу пригодятся тулзы для расчета сетей, мониторинга трафика, утилиты для работы с протоколами DNS, LDAP, SNMP, DHCP, ICMP, ARP, а также софт для удаленного управления (PuTTY, rdesktop, VNC) и клиенты mysql и postgresql. А для хакера самыми интересными будут прокси и редиректы, сканеры портов, сервисов и сетей (nmap, конечно же, присутствует), сканеры безопасности (включая Nessus), снифферы (dsniff, ettercap, ethereal и другие) и множество других security-утилит.
Но и это еще не всё. На диске присутствует даже "офисный" софт - просмотрщики форматов DOC, DjVu, CHM, PDF и текстовый процессор AbiWord. А еще можно смотреть картинки, слушать музыку и смотреть видео - софт для этого тоже есть.
Как видишь, система содержит практически весь софт, который только может тебе пригодиться в работе. Причем основную его часть составляют проги из разделов net, net-mgmt, security и sysutils фришного дерева портов. Полный список прог из Frenzy 0.3 можно найти здесь: http://frenzy.org.ua/ru/doc/v03/software.shtml.
Использование LiveCD дает тебе потрясающую мобильность - практически на любом компьютере, загрузившись с компакта, ты можешь работать с полным набором приложений, не устанавливая ничего на жесткий диск. Все настройки, сделанные тобой во время работы, можно сохранить на дискету, USB-флешку или раздел жесткого диска с помощью скрипта backup - при следующей загрузке они будут восстановлены автоматически.
Как видишь, "карманный чертенок" способен на многое. Фактически это полноценная FreeBSD, которую можно носить с собой в кармане рубашки и которая всегда готова к работе. А уж для чего ты будешь ее использовать - дело твое. Хочешь - тестируй железо и восстанавливай файлы с винта, хочешь - сканируй сетку и тестируй серваки на наличие дыр в безопасности, хочешь - серфай по инету, общайся по аське, слушай музыку или смотри фильмы.
В основе системы лежит самая обыкновенная FreeBSD 5.2.1-RELEASE. Правда, для LiveCD ее пришлось облегчить, написав собственный make.conf.
В качестве корневой файловой системы используется полуторамегабайтный образ, на котором находится init и несколько необходимых утилит. При загрузке ядро подгружает этот образ и монтирует корневую файловую систему с него, после чего стартует init. Он запускает собственный rc-скрипт, в котором производится поиск компакт-диска с Frenzy. Как только он будет найден, выполняется скрипт frenzyrc из корня компакта. Этот скрипт монтирует образы сжатых файловых систем, создает файловые системы в оперативной памяти и заполняет их файлами, после чего накладывает на эти файлы (по необходимости) заранее подготовленные патчи. После всех этих приготовлений запускается системный rc.
Для корректной работы LiveCD понадобилось добавить новые rc-скрипты (монтирование диска, восстановление бэкапа, информация о "железе", поиск мыши) и модифицировать некоторые из стандартных.
Уместить на 200-мегабайтный компакт-диск такое количество приложений тоже было весьма непросто. Помимо сжатия файловой системы, пакеты после установки были почищены от ненужных библиотек, файлов, локалей - это дало дополнительную экономию места на 100 мегабайт. Для некоторых прог пришлось писать специальные патчи. Например, для xchm сделан скрипт, позволяющий читать CHM-файлы в виндовой кодировке, а для nessus создано несколько симлинков, чтобы записываемые им данные хранились на разделе в оперативной памяти.
Естественно, Frenzy можно переделать под свои нужды, а при наличии некоторого опыта вполне возможно собрать собственный дистрибутив на базе Frenzy.
Если тебе достаточно только заменить некоторые конфиги, все очень просто.
Для начала нужно разобрать исошник. Загружайся в FreeBSD и копируй все содержимое исошника на винт в папку FRENZY. Готовишь нужные патчи (в качестве примера размещения файлов возьми lang_en.tbz из папки conf/files), упаковываешь их в архив командой
tar cyvf frenzy03conf.tbz .и кладешь полученный архив в папку FRENZY/conf/files. Потом делаешь исошник командой
mkisofs -b boot/cdboot -no-emul-boot -c boot/boot.catalog -r -J -D -V Frenzy_remastered -o frenzy_remastered.iso FRENZYи диск готов.
Если же ты хочешь самостоятельно собрать свою версию Frenzy, то к твоим услугам сборочные скрипты. Их можно скачать на сайте или взять в папке devel компакт-диска.
Для сборки тебе потребуются установленные исходные тексты системы и порты sysutils/mkisofs и sysutils/cloop-utils, а для работы скрипта монтирования дисков, определения "железа" и других утилит из состава Frenzy в состав будущего диска нужно включить пакаджи lang/perl5, sysutils/linuxfdisk, devel/cdialog, x11/xdialog, sysutils/x86info, sysutils/dmidecode, sysutils/pciutils. Если все готово, приступаем.
Распаковываешь сборочные скрипты на диск, потом копируешь все нужные пакаджи в каталог Packages/FreeBSD (при установке зависимости не будут проверяться, так что проследи за этим самостоятельно). Если нужно, поменяй дефолтные конфиги в папке frenzypkg.
Если ты сделал все необходимое, осталось запустить по очереди сборочные скрипты, начиная с 01.base.sh и заканчивая 12.mkiso.sh. В результате всех этих действий в каталоге ISO будет лежать исошник собранного тобой дистрибутива.
В одной из песен Limp Bizkit звучат слова: "Если хочешь, чтобы что-то было сделано правильно - просто сделай это сам". Я тоже не стал дожидаться, пока кто-то сделает нужный мне дистрибутив, и сделал удобный и надежный LiveCD на основе FreeBSD. Несмотря на то, что я считал эту затею безумной идеей (отсюда и название Frenzy), результат превзошел все ожидания. В настоящий момент Frenzy является единственным русскоязычным LiveCD на основе ОС FreeBSD, и каждый может найти в нем что-то полезное и интересное для себя. Новички могут начать знакомство с FreeBSD именно с этого дистрибутива, продвинутые пользователи найдут в нем множество полезных программ, а сисадмины и хакеры будут в восторге от хардварных, сетевых и security-утилит. Дело не в инструменте, а в том, кто и для чего его использует.
Я уверен, что Frenzy займет достойное место в твоем софтовом инструментарии.
Expect anything. Have fun! :)
Конечно, Frenzy не единственный в мире проект по созданию LiveCD на основе ОС FreeBSD.
Одним из самых известных проектов по созданию LiveCD на базе FreeBSD является FreeSBIE (http://www.freesbie.org/). Его разработкой занимается итальянская группа пользователей FreeBSD (GUFI). Задачей проекта является создание набора скриптов для создания LiveCD и различных дистрибутивов на его основе. На данный момент ими выпущен FreeSBIE 1.0.
Также есть Snarl (http://snarl.eecue.com/), предназначенный для проверки безопасности. Последняя версия 0.0.3 вышла около года назад, подробной информации о дистрибутиве нет. Вообще проект производит впечатление заброшенного.
BSDeviant (http://bsdeviant.unixpunx.org/) является LiveCD дистрибутивом объемом 210 мегабайт и содержит небольшой набор программного обеспечения. Однако из-за отсутствия сжатия он работает весьма медленно.