Мы — долго запрягаем, быстро ездим, и сильно тормозим.
|
||||||||||||||||||||||||||
www.lissyara.su
—> статьи
—> FreeBSD
|
|
Делаем виртуальный диск:
|
Создаём директорию, куда будем монтировать диск:
|
Записываем на диск метку:
|
Создаём файловую систему:
|
Монтируем:
|
Собираем и устанавливаем мир, с указанием директории назначения - наш диск в памяти:
|
После установки, смотрим чё получилось:
|
Занято 150 мегов. Неплохо - мы имеем полноценную систему, но ещё надо установить софт - иксы и прочия. Собирать на этом диске - нету никакого желания и времени, поэтому воспользуюсь софтом установленным на моей машине - благо, у меня всё что необходимо уже установлено. Для этого, создаём директорию, и в ней сохраняем все пакеты:
|
Мона идти курить. На моём двухядрёном AMD, с гигом памяти, это заняло минут 20 (для 600 с копейками установленных пакетов). После создания всех пакетов, монтируем директорию с ними, в директорию внутри диска в файле. Для этого, юзаем nullfs:
|
После чего топаем внутрь диска в файле, как в jail - будем ставить пакеты:
|
Ставим пакеты:
|
Мдя... прилично... Однако, попробуем сжать всё это хозяйство, и посмотрим что будет на выходе. Ждя этого заюзаем утилиту mkuzip - она позволяет сжимать образы файловых систем, и, в дальнейшем, эти сжатые образы можно втюхать лоадеру, который их загрузит в память. Ну, а дальше - ядро будет использовать софт с этого диска. Сжимаем, предварительно отмонтировав, и отключив диск - при проблемах на отмонтировании/отключении - можно перезагрузиться:
|
Неплохо. Сжалось вдвое. Хотя, я рассчитывал на лучший результат - ибо в 128 мегов памяти, и тем более в 64 - ну никак не вписываемся. Поэтому, пробовать грузиться с этого я даже не стал, а полез изучать маны - с целью ужать всё что можно и удалить ненужное. Для начала, изучаем man make.conf, и добавляем в файл /etc/make.conf такие строки:
|
После чего повторяем набор действий по созданию диска в памяти, и инсталляции на него системы. Тока диск делаем вдвое меньше:
|
Результат неплох - меньше в 3.5 раза, и ещё ничё не пилили руками - тока штатные средства. Ну а дальше началось интересное, что я уже не документировал - ручная установка пакетов, доустановка файлов без которых не запускался rdesktop (NO_CRYPT=yes - оказалась плохая идея :)) удаление файлов, которые не нужны (почти всё в share и local/share), ненужных зависимостей и прочего. Честно говоря - сильно не изгалялся, но на выходе, уже к третьей версии, имел такое:
|
После сжатия, соответствено:
|
Осталось, рассмотреть запуск всего этого хозяйства. Вот тут меня ждали грабли - как загрузить образ, вопросов не возникало - в /boot/defaults/loader.conf есть примеры, и в моём случае это выглядело так:
|
Однако, даже определив имя устройства - /dev/md0.uzipa, мне не удалось его подмонтировать - точка, в fstab, считается спецсимволом. Экранировать тоже никак не удалось. Финиш...
Вначале я было потерялся, потом вспомнил, что когда перводил /boot/defaults/loader.conf, видел чё то на эту тему. Оказалось, да - есть опция:
|
С ней, удалось загрузиться с устройства. Однако, тут были новые грабли - ввиду того, что файловая система доступна только для чтения, фряха вываливалась в однопользовательский режим. Порывшись в ещё одном дефолтовом конфигурационном файле - /etc/defaults/rc.conf - нашёл соответстствующую опцию, и на выходе получил /etc/rc.conf такого состава:
|
Про интерфейсы - умнее не придумал :). Докучи, был написан простенький стартовый скрипт, такого составу:
|
Ну и создан файлик для указания иксам - чё и с какими параметрами запускать:
|
IP вполне реальный - у меня винды нет, поэтому я отсканил произвольную сеть nmap`om на предмет машин с открытым RDP-портом, первую попавшуюся и взял :). Далее, на машине с FreeBSD надо расшарить по NFS диск:
|
и настроить DHCP - я использую isc-dhcp3-server-3.0.5_2, получилось примерно так:
|
Ну и всё. Пока, всё. Если надо будет, по работе например, или для души, то допилю до окончательного варианта - в частности, можно удалить 2/3 системных приложений, да и портов много лишних получилось - тоже мона погрохать. Надо допилить скрипт из предыдущей статьи, и найти как выцепить в уже запускающейся с диска в памяти системе - откуда она загрузилась - ибо этих данных нигде нет. На эту тему есть одна идея - надо добавить запрос опции "root-path" в /etc/dhclient.conf, после чего она появится в /var/db/dhclient.leases.${interface_name}, откуда её и можно будет вытащить, распарсив этот файл. Ну а дальше всё просто - монтируем указанный в ней путь, и с него запускаем скрипты и вытаскиваем персональные конфиги клиентов - если необходимо.
P.S. Ядро, с лоадером, т.е. всё содержимое /boot - берётся с любой машины, лучше GENERIC - тупо копируется.
размещено: 2007-07-15,
последнее обновление: 2007-08-20,
автор: lissyara
Cka3o4Huk, 2007-07-16 в 12:57:29
Отличная статья! +++ Давно искал подобного рода материал!
Большое спасибо!
Jay, 2007-07-16 в 14:21:29
Рекомендую изучить внутренне устройство Frenzy. Я на ее основе свои роутерные прошивки делал.
lissyara, 2007-07-16 в 14:23:36
хватило man man и далее по ссылкам :)
Собственно - это единственное что использовалось при написании данного текста...
А френзи - надо посмотреть... Юзал, но внутрь не лазил.
dennis, 2007-07-16 в 17:55:47
Конструкции в /etc/make.conf вида
"NO_BLUETOOTH= YES"
устарели.
Пишут просто
NO_BLUETOOTH=
NO_KERBEROS=
и т.д.
YES не нужно
lissyara, 2007-07-16 в 18:09:03
А я не всегда делаю как правильно... Хотя и знаю как правильно.
Иногда, как красивей. А ведь так красивей - согласись? :)
Авось, 2007-07-17 в 16:26:41
Хорошая статья. Спасибо!
Вася, 2007-07-18 в 1:07:04
Лисяра да ты просто аццкий сотона!
Так держать !
Пеши есчо, твои статьи просто супер !
weec, 2007-09-24 в 14:27:31
что-то не могу найти в статье сборку и инсталяцию ядра
weec, 2007-09-24 в 14:38:25
извиняюсь
упустил PS
MarchCat, 2008-07-30 в 13:55:08
Чтобы не перечислять все возможные и невозможные типы сетевых интерфейсов, установите в rc.conf
ifconfig_DEFAULT="DHCP"
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
Комментарии пользователей [10 шт.]