Автор: Виктор Гижевский
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 .
Использованы материалы:
- OpenBSD FAQ http://www.openbsd.org/faq/faq4.html#site
- Алексей Солдатов. Создание установочного ISO для OpenBSD 3.8.
http://www.opennet.dev/tips/info/938.shtml
- Francisco Luis Roque. Resolving OpenBSD Bloat: Unpuffing Puffy.
http://www.blackant.net/other/docs/unpuffed/
- Игорь Грабин. Русификация консоли OpenBSD 3.7 .
http://dreamcatcher.ru/docs/openbsd_rus.html
- Tyron James Thomas Bowney Semaka. Song39 .
ftp://ftp.openbsd.org/pub/OpenBSD/songs/song39.mp3