Создание собственного установочного CD OpenBSD 3.8


Автор: Виктор Гижевский www.unixman.ru

Для создания установочного диска OpenBSD, настроенного "под себя", как описывается в документации, нам необходимо создать пакет site*.tgz (где * - версия ОС), также Вы можете использовать скрипты install.site/upgrade.site.

siteXX.tgz также, как и другие установочные пакеты (base38.tgz, comp38.tgz и др.) представляет собой сжатый gzip tar-архив (при распаковке исполняется tar -xzpf). Пакет позволяет пользователю добавлять или заменять файлы, установленные в стандартных пакетах и таким образом создать свой инсталляционный (или upgrade) диск. siteXX.tgz может использоваться, например, для:
изменения (замены) в установленную OpenBSD. Если Вы хотите произвести изменения в системе, Вы просто выбираете siteXX.tgz при повторном запуске инсталляции, и все ваши изменения скопируются в новую систему.
Создать ряд каталогов, содержащихся в siteXX.tgz файл, с необходимыми файлами.
При установке произвести копирование файлов с Вашими настройками, которые Вы обычно указываете после установки, например /pf.conf, /var/www/conf/httpd.conf, /etc/rc.conf.local, и т.д.
На последнем этапе установки системы запускаются сценарии install.site/upgrade.site. Обратите внимание, скрипты запускаются из загруженной файловой системы, а установливаемая система примонтирована к /mnt. Скрипты при установке исполняются в однопользовательском режиме в chroot. Это следует учесть при написании скриптов - скрипт должен быть написан для исполнения в "обычном" корне системы. Скрипт install.site должен быть помещен в siteXX.tgz файле, а upgrade.site может быть размещен в корневом каталоге перед обновлением либо в siteXX.tgz. Скрипты могут использоваться, например, для:
Удаления файлов, которые установлены, но Вам не нужны.
Удалить/изменить/установить пакеты.
Сделать бэкап-архив системы перед включением ПК в сеть.
Использовать rdate ,чтобы установить системное время.
Комбинация siteXX.tgz и install.site/upgrade.site позволяет пользователю создать свой собственный дистрибутив, разворачивающий рабочий сервер или рабочую станцию за минимальное время и требующий минимальных настроек.

В данном случае мы рассмотрим в качестве примера процесс создания собственного русифицированного дистрибутива OpenBSD 3.8.
Для создания собственного дистрибутива:
1) Создаем файл site38.tgz, в данном случае с необходимыми для русификации изменениями:

Устанавливаем OpenBSD. Архивируем каталоги, в которых предполагаются измения. Например, /etc, /usr, /var . Вносим необходимые изменения в систему, настраиваем. С помощью diff смотрим, какие изменения произошли. Переносим измененные файлы в рабочий каталог с сохранением исходного дерева.

Создаем site38.tgz. При установке системы siteXX.tgz устанавливается после установки всех пакетов. Если указанные файлы отсутствуют, то они копируются. Присутствующие файлы заменяются на имеющиеся в siteXX.tgz . Для примера я провел русификацию системы. Изменения произошли только в /etc/rc.local, /etc/skel/.inputrc и /etc/skel/.login.

# cd /tmp
# mkdir etc; mkdir etc/skel
# cp /etc/rc.local /tmp/etc
# cp /etc/skel/.inputrc /tmp/etc/skel
# cp /etc/skel/.login /tmp/etc
# tar -zcvf site38.tgz etc

Наш файл site38.tgz с русификацией готов. Пример готового файла можно взять http://unixman.ru/site38.tgz. Русификация будет работать при выборе в качестве шелла csh или после установки bash и применения в качестве оболочки. Русифицированы будут консоли кроме 0-й - она системная и не русифицируется.

В принципе, возможно подготовить siteXX.tgz таким образом, что он будет содержать все необходимое для инсталяции рабочей системы и при установке системы выбирать только ядро и этот пакет, отказавшись при установке от инсталляции всех остальных. Пример создания минисистемы для роутера с флеш-диском можно посмотреть на http://www.blackant.net/other/docs/unpuffed/. Флеш-диск можно изготовить согласно инструкции на http://www.openhardware.ru/modules/arms/view.php?w=art&idx=30&page=1 или заказать готовую платформу для роутера/файервола на http://www.kd85.com/ , которая будет весьма хорошей и экономичной альтернативой неразумно дорогим продуктам от Cisco Systems.

2) Создаем следующую структуру каталогов:

for_iso
+-> 3.8
+-> i386

Командами:

# mkdir /tmp/for_iso; mkdir /tmp/for_iso/3.8; mkdir /tmp/for_iso/3.8/i386
# cd /tmp/for_iso

Выкачиваем с ftp-сервера необходимые файлы. Чтобы не перегружать основной ftp-сервер OpenBSD в Калгари, нагрузка на который весьма значительна, лучше воспользоваться одним из зеркал.

# wget -c ftp://ftp.de.openbsd.org/3.8/ftplist
# wget -c ftp://ftp.de.openbsd.org/3.8/root.mail
# wget -c ftp://ftp.de.openbsd.org/3.8/ports.tar.gz
# wget -c ftp://ftp.de.openbsd.org/3.8/src.tar.gz
# wget -c ftp://ftp.de.openbsd.org/3.8/sys.tar.gz
# wget -c ftp://ftp.de.openbsd.org/3.8/i386/cdrom38.fs

указанный файл можно использовать только для платформ i386 или AMD64, для других платформ надо использовать cd38.iso Переходим в директорию 3.8/i386

# cd 3.8/i386
# wget -c ftp://ftp.de.openbsd.org/3.8/i386/INSTALL.i386
# wget -c ftp://ftp.de.openbsd.org/3.8/i386/INSTALL.linux
# wget -c ftp://ftp.de.openbsd.org/3.8/i386/base38.tgz
# wget -c ftp://ftp.de.openbsd.org/3.8/i386/bsd
# wget -c ftp://ftp.de.openbsd.org/3.8/i386/bsd.mp
# wget -c ftp://ftp.de.openbsd.org/3.8/i386/bsd.rd
# wget -c ftp://ftp.de.openbsd.org/3.8/i386/cd38.iso
# wget -c ftp://ftp.de.openbsd.org/3.8/i386/comp38.tgz
# wget -c ftp://ftp.de.openbsd.org/3.8/i386/cdboot
# wget -c ftp://ftp.de.openbsd.org/3.8/i386/cdbr
# wget -c ftp://ftp.de.openbsd.org/3.8/i386/etc38.tgz
# wget -c ftp://ftp.de.openbsd.org/3.8/i386/floppy38.fs
# wget -c ftp://ftp.de.openbsd.org/3.8/i386/floppyB38.fs
# wget -c ftp://ftp.de.openbsd.org/3.8/i386/floppyC38.fs
# wget -c ftp://ftp.de.openbsd.org/3.8/i386/game38.tgz
# wget -c ftp://ftp.de.openbsd.org/3.8/i386/man38.tgz
# wget -c ftp://ftp.de.openbsd.org/3.8/i386/misc38.tgz
# wget -c ftp://ftp.de.openbsd.org/3.8/i386/pxeboot
# wget -c ftp://ftp.de.openbsd.org/3.8/i386/xbase38.tgz
# wget -c ftp://ftp.de.openbsd.org/3.8/i386/xetc38.tgz
# wget -c ftp://ftp.de.openbsd.org/3.8/i386/xfont38.tgz
# wget -c ftp://ftp.de.openbsd.org/3.8/i386/xserv38.tgz
# wget -c ftp://ftp.de.openbsd.org/3.8/i386/xshare38.tgz
# wget -c ftp://ftp.de.openbsd.org/3.8/i386/CKSUM
# wget -c ftp://ftp.de.openbsd.org/3.8/i386/MD5

копируем подготовленный нами файл

# cp /tmp/site38.tgz .

считаем контрольные суммы и вносим согласно подсчитанных сумм изменения в файлы CKSUM и MD5

# cksum site38.tgz >> CKSUM
# md5 site38.tgz >> MD5

Изготавливаем образ

# cd /tmp; mkisofs -vrTJV OpenBSD38 -b /tmp/for_iso/cdrom38.fs -c boot.catalog -o /tmp/OpenBSD38.iso for_iso

Записываем

# cdrecord -v dev=/dev/rcd0c /tmp/OpenBSD38.iso

В процессе установки системы в списке пакетов для установки появится site38.tgz , который надо будет пометить для установки.

PS. Все выше изложенное гораздо лучше делается :) при прослушивании "гимна" OpenBSD 3.9 ftp://ftp.openbsd.org/pub/OpenBSD/songs/song39.mp3 , который как всегда подготовила группа музыкантов из Калгари во главе с замечательным дизайнером и музыкантом Ty Semaka. Tyron James Thomas Bowney Semaka http://www.tysemaka.com/ также автор всего дизайна и музыки OpenBSD .

Обновлено: 13.03.2015