Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> samag —> Собственный дистрибутив

Дистрибутивный диск с FreeBSD собственной сборки

Автор: SAMag.


Подписка на журнал "Системный администратор"

Общеизвестно, что сервер под FreeBSD крайне неприхотлив в аппаратных требованиях. Вот только хорошая слава может сыграть и дурную роль, когда при попытке установить FreeBSD на компьютер, не умеющий грузиться с USB Flash, под рукой не окажется загрузочного диска с последней версией. И тут либо ставить систему с образа стартера (bootonly.iso) и FTP, либо качать полный CD-образ disk1. Возможно ли сэкономить на трафике и создать загрузочный CD, скачав только образ стартера и дистрибутив? Да. И эта статья вам поможет.

Что дают скачать

Поведение FreeBSD Team в этом вопросе мне кажется несколько странным – можно скачать либо образ диска стартера (28 Мб), который представляет собой три загрузочные дискеты в одном образе, либо полные образы CD-дисков размером 700 Мб. Возможности скачать образ только со стартером и дистрибутивом нет. То есть для тех, у кого дорогой трафик, – качайте стартер и держите под рукой FTP-сервер для выкладки дистрибутива, для тех же, у кого безлимитное подключение, – полный образ. А как быть, если возможности скачать полный CD нет, 300 Мб трафика не оправдать, а загрузочный CD очень нужен?

Сначала смотрим, что мы можем загрузить из Интернета, например, с [1].

> cd ISO-IMAGES-i386/6.3/
> ls -la
-rw-r--r--   1 ftpuser  ftpusers  27643904 Jan 16 14:21 6.3-RELEASE-i386-bootonly.iso
-rw-r--r--   1 ftpuser  ftpusers 655071232 Jan 16 14:23 6.3-RELEASE-i386-disc1.iso
-rw-r--r--   1 ftpuser  ftpusers 724086784 Jan 16 14:25 6.3-RELEASE-i386-disc2.iso
-rw-r--r--   1 ftpuser  ftpusers 362381312 Jan 16 14:27 6.3-RELEASE-i386-disc3.iso
-rw-r--r--   1 ftpuser  ftpusers 248350720 Jan 16 14:28 6.3-RELEASE-i386-docs.iso
-rw-r--r--   1 ftpuser  ftpusers       342 Jan 16 14:29 CHECKSUM.MD5
-rw-r--r--   1 ftpuser  ftpusers       517 Jan 16 14:31 CHECKSUM.SHA256

Полные образы СD рассматривать не будем: есть образ – нет проблем. Рассматривать будем только образ стартера – что это есть и нельзя ли на его основе создать CD полного объема с теми данными, что нам необходимы – дистрибутив, самые необходимые пакеты...

Загруженный из Интернета файл 6.3-RELEASE-i386-bootonly.iso имеет размер 27 643 904 байт и содержит внутри только каталог /boot (ну и загрузчик – файл boot.catalog). В каталоге /boot мы обнаружим ядро GENERIC со всеми модулями, loader со всеми необходимыми файлами и файл mfsroot.gz, который содержит корневую файловую систему для запуска инсталлятора – программы sysinstall. При загрузке с диска, созданного на основе этого образа, необходимо иметь внешний FTP-сервер, откуда будет закачиваться дистрибутив. Значит ли это, что для создания диска достаточно создать образ на основе стартера, к которому присоединен дистрибутив?
Вообще говоря, да. Но раз уж мы взялись создавать собственный диск, то следовало бы сделать его как можно более универсальным – пусть он заодно играет роль и Fixit-диска. Структура диска, которая должна быть создана в таком случае, будет описана дальше.

И разумеется, нам понадобится дистрибутив. Размер дистрибутива последней версии из ветки 6.х составляет 320 Мб. Дистрибутив рекомендую скачивать полностью, не экономить на отдельных пакетах. Внимательный читатель сразу же задастся вопросом: «А что содержится на втором и третьем дисках?». Для того чтобы это узнать, не обязательно закачивать весь образ – файл стандартного формата ISO9660, у которого оглавление диска находится в начале iso-файла, таким образом, чтобы узнать его содержимое, достаточно скачать первые несколько мегабайт. Но для нас там нет ничего интересного – disc2 и disc3 содержат готовые пакеты, в то время как disc1 и представляет в первом приближении то, что мы хотим получить, – комбинацию стартера, дистрибутива и Fixit-диска.

Что ж, загружаем образ стартера. Еще нам понадобится программа для работы с ISO-образами для того, чтобы сохранить и впоследствии использовать загрузчик. Я использую isomaster (sysutils/isomaster). Это программа, построенная на GTK, а не на KDE, но, к сожалению, в настоящий момент ничего рабочего для редактирования ISO-образов в KDE нет (Kiso не в счет, он присутствует номинально, потому что пользоваться им невозможно).

Структура диска

Для того чтобы создать диск, необходимо сначала сформировать в системе каталог, с которого будет создаваться образ нашего диска. Допустим, берем каталог /var/tmp/image и начинаем заполнять его нужными файлами.

Первым делом помещаем туда распакованный образ стартера. Для этого запускаем isomaster, выбираем образ стартера, открываем его, выделяем все файлы и извлекаем их. Файлы всегда извлекаются в текущий каталог, так что позаботьтесь о том, чтобы на него были необходимые права.

После этого копируем в этот же каталог дистрибутив, прямо в корень. Каталог с дистрибутивом должен иметь фиксированное имя, соответствующее версии FreeBSD, например, каталог с дистрибутивом 6.3-RELEASE должен так и называться – 6.3-RELEASE.

Помещаем в корень выбранного каталога подкаталог tools. Поскольку он не распространяется с дистрибутивом, его необходимо отдельно загрузить, можно тоже с [1] или с какого-либо его зеркала. Каталог с подкаталогами удобно загружать с помощью программы ncftp (ftp/ncftp3):
# ncftp ftp.freebsd.org
Connecting to ftp.freebsd.org...
 
ftp.FreeBSD.org NcFTPd Server (licensed copy) ready.
Logging in...
 
You are user #210 of 800 simultaneous users allowed.
Logged in anonymously.
Logged in to ftp.freebsd.org.
 
Current remote directory is /.
ncftp / > cd pub/FreeBSD/
ncftp /pub/FreeBSD > get -RT tools
tools/00_index.txt:                         828,00 B    2,01 kB/s
tools/README.TXT:                    737,00/714,00 B    1,87 kB/s
...

Размер его небольшой – 2 Мб. Копируем в корень выбранного каталога подкаталог floppies из дистрибутива и все текстовые и HTM-файлы, находящиеся в корне. Собственно, после этого формирование образа для инсталляционного диска можно считать законченным и переходить к его записи, дальнейшие файлы необходимы только для Fixit.

Для Fixit же потребуется полная копия всей структуры каталогов. Некоторые каталоги достаточно переписать с установленной системы – /bin, /lib, /libexec, /root, /sbin. Только необходимо проследить, чтобы в каталоге /root не осталось информации о паролях, логинах, адресах и т. д. – созданный диск может передаваться другим людям, копироваться и т. д., и нужно быть очень внимательным, чтобы вместе с ним не ушла какая-нибудь закрытая информация. Для создания необходимой минимальной структуры каталога /var можно воспользоваться mtree-файлом, который используется в бездисковых роутерах для создания /var в памяти:
# /usr/sbin/mtree -deU -f /etc/mtree/BSD.var.dist -p /var/tmp/image/var

Также в корне диска следует создать символическую ссылку sys на /usr/src/sys. Какие каталоги нам осталось здесь разместить? Конечно же, /etc. Каталог /etc можно целиком переписать из /usr/src/etc, правда с некоторыми доработками – нам не понадобятся все каталоги с именем вида etc.<архитекутра>, где <архитектура> не совпадает с архитектурой вашего компьютера. Каталог же etc.<ваша_архитектура> тоже не понадобится сам по себе, но из него нужно переписать в etc файл ttys. Кроме этого, не понадобится каталог sendmail – все его содержимое необходимо переписать в mail.

Понадобится также создать несколько пустых каталогов, которые, тем не менее, должны присутствовать в корневой системе образа – /dev, /mnt, /proc, /tmp.

Каталог rescue заслуживает отдельного замечания. Если зайти в него через mc и выделить все файлы, то можно увидеть совершенно невообразимую цифру в 420 Мб, между тем как обычная команда du убеждает нас в том, что mc считает неправильно:
# du -s rescue
6432    rescue

В чем же дело? А дело в том, что все файлы в каталоге – это жесткие ссылки (hardlinks) на один-два файла (более подробную информацию о том, что такое жесткие ссылки и чем они отличаются от обычных, символических, можно получить в man ln). Можно подсчитать и точное число. Для этого используется команда:
# cd /resque && ls -il | awk '{print $1}' | sort | uniq
10
6
7
90

Выведенные числа – это номера i-nodes-файлов. Как видно, на самом деле в каталоге всего 4 файла, а остальные ссылаются на эти же файлы. Поэтому обычно в инсталляционный CD этот каталог не помещают, только в DVD, в котором достаточно места, чтобы разместить все файлы отдельно (в этом случае он займет как раз 420 Мб).

Ну и последнее, что нам остается сделать, – разместить в образе диска каталог /usr. В нем должны присутствовать каталоги bin, include, lib, libdata, libexec, sbin и share, которые можно переписать непосредственно с установленной системы, а также пустые каталоги local, obj и src. Также необходимо переписать в корень образа (который потом станет корнем диска) файлы *.HTM и *.TXT, COPYRIGHT и docbook.css из дистрибутива.

А вот теперь можно и доработкой под свои нужды заняться. Созданный нами образ не занимает полных 700 Мб, жалко будет просто так переводить пустое место, поэтому на свободное место можно положить заранее собранные самые необходимые пакеты. Можно это сделать стандартным путем – создать в корне образа каталог packages, в нем – каталог All, куда, собственно, и положить все пакеты, а также каталоги с именами категорий, в которые входили порты, по которым эти пакеты были собраны. В этих каталогах можно разместить символические ссылки на пакеты. Но если хочется использовать стандартный пункт меню Install pre-packaged software, то в корне каталога packages необходимо создать файл INDEX, по формату совпадающий с файлом INDEX в /usr/ports. Как создать этот файл? Простейшим способом является перенос нужных строк из /usr/ports/INDEX или (если пакетов много) скачать INDEX с FTP и удалить ненужные. Можно воспользоваться программой portindex (ports-mgmt/p5-FreeBSD-PortIndex), которая позволяет проиндексировать часть каталога портов и заранее подготовить индексный файл. Можно, конечно, ничем таким не заниматься, а создать любой каталог в любом месте файловой системы образа и переписать туда все пакеты, которые вы считаете необходимыми. Я обычно укладываю туда только пакеты, необходимые для установки mc, а также любимый текстовый редактор. Ну и, разумеется, кроме пакетов можно здесь же разместить архив конфигурационных файлов, скриптов, данных и т. д, – всего, что может понадобиться для установки новой системы.

Дело за малым – создать загружаемый образ и записать его на диск. Для этого нам сначала понадобится файл загрузчика. Получить его можно из образа стартера той же программой isomaster, которой мы ранее воспользовались для распаковки образа стартера.

Запускаем isomaster, открываем образ стартера. В меню, в пункте «Tools», выбираем «Boot record > Save as» и сохраняем как файл, например, с именем cdboot.bin. Ну и приступаем непосредственно к формированию образа. Для этого понадобится программа для записи CD, умеющая самостоятельно формировать загрузочные диски. Я использую для этой цели k3b.

Запускаем k3b, выбираем «New data CD project» и нажимаем кнопочку для модификации настроек загрузчика образа (см. рис. 1).


Появляется окно с настройками загрузчика. Изначально в нем пусто – мы же не сделали еще никаких настроек. Нажимаем «New», выбираем файл cdboot.bin, который только что сохранили. Окно с длинным предупреждением о том, что «этот файл не является допустимым образом для эмуляции загрузки с флоппи-диска...» пропускаем, выбираем внизу кнопку «Use no emulation». Впрочем, тип эмуляции всегда можно сменить. Окно настроек загрузчика теперь имеет вид, как показано на рис. 2.


После этого в образе автоматически появляется каталог boot. Удалить его оттуда нельзя – он нужен для загрузки. Ну и теперь открываем каталог с подготовленным образом, берем файлы и папки и с помощью мышки перетаскиваем их в проект. Следите за индикатором в нижней части – он показывает, сколько еще свободного места осталось в образе. После того как образ сформирован, нажимаем кнопку «Burn» и ждем окончания записи диска.

Вот и все.

Заключение



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

Приложение


Текущaя версия FreeBSD



В настоящий момент активная разработка ветки 6.x прекращена и она переведена в состояние legacy (устаревшая). В нее вносятся только исправления ошибок, относящиеся к безопасности. Текущей версией сейчас является 7.0-RELEASE. Но я всегда с недоверием относился к релизам «дот-зеро» (так называются релизы, оканчивающиеся на «0»), поэтому использую 6.3. В ветке 7.x множество нововведений, но нас касается сейчас только то, что там появился еще один образ – livefs.iso размером 215 Мб, который представляет из себя именно то, что в названии – Live CD.

1. Основной FTP-сервер для загрузки дистрибутивов FreeBSD.

Автор: Рашид Ачилов



размещено: 2008-07-29,
последнее обновление: 2008-07-29,
автор: SAMag

оценить статью:

Morty, 2008-07-29 в 17:56:01

если правильно понял - "на выходе" штатный фряшный загрузочный диск(тот что по умолчанию в сисинсталл вываливаеться при старте),
только со своим набором пакетов ??

Fastman, 2008-07-29 в 18:07:03

Пенопластом по стеклу.
Мне не понравилось если честно. Много слов, дела - мало.
Статья Morty более приятна.
Может просто не распробовал... Но первое впечатление именно такое.

midda2, 2008-08-12 в 14:27:25

Ссылка выше ведет на альтернативный (скорее ортодоксальный) подход к созданию дисков FreeBSD


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS

Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT

В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat

Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp

Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration

Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster

HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS

История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire

Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной

Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server

Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs

Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec

Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash

Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT

Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
2010-09-05, Cancer
Настройка аудиоплеера на ximp3

Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
2010-08-31, Cancer
Установка и настройка OpenVPN

На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
2010-08-25, manefesto
freebsd lvm

Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
2010-04-30, gonzo111
proftpd file auth&quota

Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
2010-04-22, lissyara
tw_cli

Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
2010-04-14, fox
MySQL Master+Master

MySQL (Master Master) and (Master Slave) Как настроить репликацию…
2010-03-22, Mufanu
named 9.7.0

Система доменных имен (Domain Name Service, DNS) - одна из тех незаметных, закулисных программ, которым не уделяется и половины того внимания, которого они заслуживают.
2010-03-09, terminus
DNS zones

Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
2010-03-09, aspera
Squid+AD (group access)

Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
2010-03-02, BlackCat
Шлюз: Часть 4

Настройка дополнительных сервисов: синхронизация времени (OpenNTPD), клиент DynDNS.org.
2010-03-01, BlackCat
Шлюз: Часть 3

Настройка DHCP и DNS серверов для работы внутри частной сети, c поддержкой внутренних (частных зон) DNS, а так же интеграция DHCP и DNS сервисов.
2010-03-01, BlackCat
Шлюз: Часть 2

Конфигурация МСЭ pf для проброса портов с изменением порта назначения и без, а так же поддержки активного режима FTP и ограничения максимального размера сегмента
2010-03-01, BlackCat
Шлюз: Часть 1

Быстрая настройка шлюза/маршрутизатора с установлением PPPoE-соединения, поддержкой NAT и DNS-forwarding.
2010-02-23, Morty
darkstat

Простая считалка траффика, со встроенным веб-сервером. Очень маленькая, может делать отчеты трафика по хостам, портам, протоколам, а также строить графики
2010-01-23, gonzo111
squid+sams+sqstat

Пилим squid и sams - примеры конфигов с объяснениями. Установка SqStat.
2009-12-19, schizoid
mpd5 + radius + ng_car + Abills

Настройка pppoe-сервера с биллинговой системой Abills и шейпером ng_car
2009-11-16, lissyara
UFS->ZFS

Удалённая миграция с UFS на ZFS. Загрузка с раздела zfs. Настройка для работы с малым количеством памяти под архитектурой i386.
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 26 чел.
За последние 30 мин было: 82 человек
За сегодня было
13595 показов,
1453 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.1307 секунд
Из них PHP: 60%; SQL: 40%; Число SQL-запросов: 43 шт.
Исходный размер: 77841; Сжатая: 19581