Solaris11.ru / Библиотека / Конструктор Дистрибутивов OpenSolaris /

Конструктор Дистрибутив OpenSolaris

Share |

Автор: Brian Leonard, 6 августа 2010
http://blogs.sun.com/observatory/entry/distribution_constructor

Перевод: Яна Ситникова, 9 августа 2010
http://solaris11.ru/lib/opensolaris_distribution_constructor


Одной из особенностей, включённой в OpenSolaris с версии 2008.11, была возможность создавать собственные дистрибутивы на основе этой операционной системы. Это довольно мощное средство, если вы хотите развернуть OpenSolaris в своей организации согласно потребностям пользователей.


Задача создания нового дистрибутива решается с помощью Конструктора Дистрибутивов. В качестве примера использования Конструктора Дистрибутивов я воскрешу продукт, который некоторые из вас, возможно, помнят: Solaris Express Developer Edition, или SXDE (не путайте с SXCE - Solaris Express Community Edition).


SXDE продержался на протяжении четырёх выпусков, прежде чем встретил свою кончину с первым выпуском OpenSolaris в мае 2008. SXDE был дистрибутивом, нацеленным на разработчиков, и содержит такое программное обеспечение как Apache, MySQL, PHP, NetBeans, Sun Studio и OpenOffice.org. Поэтому моей целью будет создание дистрибутива "OpenSolaris Developer Edition". Конечно, он не поместится на CD, однако в конце статьи будут созданы образы, из которых я смогу создать как LiveDVD, так и LiveUSB.


Прежде чем начать, будет лучше предупредить, что процесс создания дистрибутив может потребовать довольно много времени. Все пакеты необходимо скачать из хранилища, настроить и перепаковать. Я очень рекомендую создать локальное хранилище, чтобы уменьшить хотя бы время установки пакетов.


Шаг 1: Установка файлов Конструктора Дистрибутивов


Первым шагом для использования Конструктора Дистрибутивов является установка пакета SUNWdistro-const:


bleonard@opensolaris:~$ pfexec pkg install SUNWdistro-const
DOWNLOAD                                    PKGS       FILES     XFER (MB)
Completed                                    1/1       75/75     0.19/0.19 

PHASE                                        ACTIONS
Install Phase                                104/104 


Шаг 2: Копирование и настройка файлов


Конструктор Дистрибутивов поставляется вместе со всеми инструментами, которые понадобятся для создания точной копии OpenSolaris 2009.06. Конфигурационные файлы и скрипты расположены в /usr/share/distro_const/slim_cd. Поэтому вы можете просто выполнить команду distro_const build /usr/share/distro_constr/slim_cd/all_lang_slim_cd_x86.xml, подождать несколько часов и на выходе получить то же самое, что можно скачать с opensolaris.com.


Чтобы сделать дистрибутив на заказ, мы скопируем файл all_lang_slim_cd_x86.xml в домашнюю директорию. Также я изменю имя файла, чтобы оно отвечало названию дистрибутива:


bleonard@opensolaris:~$ cp
/usr/share/distro_const/slim_cd/all_lang_slim_cd_x86.xml all_lang_osde_x86.xml
bleonard@opensolaris:~$ chmod +w all_lang_osde_x86.xml 


Шаг 3: Правка манифеста


Изменение файлов манифеста хорошо документировано (см. документацию в /usr/share/doc/distro_const). Для нашего дистрибутива нам понадобится отредактировать следующие разделы:


Имя дистрибутива:


    <distribution name="OpenSolaris Developer Edition">


Как было сказано в начале, для уменьшения времени скачивания я использую локальное хранилище пакетов:


    <pkg_repo_default_authority>
            <main
                    url="http://localhost:81"
                    authname="opensolaris.org"/>


Я добавлю 4 дополнительных пакета (amp-dev включает в себя большую часть ПО). Вы можете использовать другие пакеты:


    <packages>
           <pkg name="entire"/>
           <pkg name="SUNWcsd"/>
           <pkg name="SUNWcs"/>
           <pkg name="babel_install"/>
           <pkg name="SUNWslim-utils"/>
           <pkg name="amp-dev"/>
           <pkg name="glassfishv2"/>
           <pkg name="sunstudio"/>
           <pkg name="openoffice"/>
    </packages>

Наконец, я изменю имя в меню grub:


    <title>OpenSolaris 2009.06 Developer Edition</title>


Шаг 4: Сборка заказного дистрибутива


Чтобы собрать дистрибутив, мы будем использовать команду distro_const вместе с новым манифестом:


bleonard@opensolaris:~$ pfexec distro_const build all_lang_osde_x86.xml 
/usr/share/distro_const/DC-manifest.defval.xml validates
/tmp/all_lang_osde_x86_temp_5613.xml validates
Simple Log: /rpool/dc/logs/simple-log-2010-08-05-14-47-53
Detail Log: /rpool/dc/logs/detail-log-2010-08-05-14-47-53
Build started Thu Aug  5 14:47:53 2010
Distribution name: OpenSolaris Developer Edition
Build Area dataset: rpool/dc
Build Area mount point: /rpool/dc
==== im-pop: Populate the image with packages
Initializing the IPS package image area: /rpool/dc/build_data/pkg_image
Setting preferred authority: opensolaris.org
	Origin repository: http://localhost:81
Verifying the contents of the IPS repository
Installing the designated packages


Конструктор Дистрибутивов задержится на шаге "Installing the designated packages" на некоторое время. Я рекомендую использовать команду tail с файлом Detail log, выделенном выше, если вы хотите узнать, что именно там происходит.


После завершения установки сборка продолжится, при этом будет выводиться примерно следующее по мере прохождения различных этапов сборки (контрольных точек):


Uninstalling the designated packages
Setting post-install preferred authority: opensolaris.org
	Origin repository: http://pkg.opensolaris.org/release
==== im-mod: Image area modifications 
==== slim-im-mod: Slim CD Image area Modifications 
0 blocks
WARNING: failed to parse type name `str'
WARNING: invalid or missing type for schema (/schemas/apps/packagemanager/preferences/remote_search_error)
WARNING: Failed to parse default value `கருப்பொருளை மாற்று ;gtk-theme-selector.desktop,
முன்னிருப்பு பயன்பாடுகள் அமை;default-applications.desktop,அச்சுப்பொறி சேர்;
gnome-cups-manager.desktop]' for schema (/schemas/apps/control-center/cc_actions_list)
gtk-update-icon-cache: Cache file created successfully.
gtk-update-icon-cache: Cache file created successfully.
gtk-update-icon-cache: Cache file created successfully.
gtk-update-icon-cache: Cache file created successfully.
gtk-update-icon-cache: Cache file created successfully.
gtk-update-icon-cache: Cache file created successfully.
gtk-update-icon-cache: Cache file created successfully.
gtk-update-icon-cache: Cache file created successfully.
gtk-update-icon-cache: Cache file created successfully.
gtk-update-icon-cache: Cache file created successfully.
gtk-update-icon-cache: Cache file created successfully.
gtk-update-icon-cache: Cache file created successfully.
==== br-init: Boot root initialization 
235264 blocks
2800 blocks
31040 blocks
0 blocks
92560 blocks
3696 blocks
0 blocks
0 blocks
576 blocks
32 blocks
160 blocks
2832 blocks
272 blocks
384 blocks
11344 blocks
0 blocks
0 blocks
==== slim-br-config: Slim CD boot root configuration 
==== br-config: Boot root configuration 
==== br-arch: Boot root archiving (64-bit) 
397392 blocks
283232 blocks
==== br-arch-32: Boot root archiving (32-bit) 
397392 blocks
205552 blocks
==== slim-post-mod: Slim CD post bootroot image area modification 
==== grub-setup: Grub menu setup 
==== post-mod: Post bootroot image area modification 
Warning: creating filesystem that does not conform to ISO-9660.
Warning: creating filesystem that does not conform to ISO-9660.
==== gen-slim-cont: Generate Slim CD image content list 
==== iso: ISO image creation 
Warning: creating filesystem that does not conform to ISO-9660.
Setting input-charset to 'UTF-8' from locale.
Size of boot image is 4 sectors -> No emulation
  0.68% done, estimate finish Thu Aug  5 17:57:39 2010
  1.36% done, estimate finish Thu Aug  5 17:57:39 2010
  2.05% done, estimate finish Thu Aug  5 17:57:39 2010
...
 98.20% done, estimate finish Thu Aug  5 17:59:06 2010
 98.88% done, estimate finish Thu Aug  5 17:59:05 2010
 99.56% done, estimate finish Thu Aug  5 17:59:06 2010
Total translation table size: 2048
Total rockridge attributes bytes: 31523
Total directory bytes: 200704
Path table size(bytes): 1282
Max brk space used 82000
733225 extents written (1432 MB)
==== usb: USB image creation 
/dev/rlofi/2:	3519000 sectors in 5865 cylinders of 1 tracks, 600 sectors
	1718.3MB in 184 cyl groups (32 c/g, 9.38MB/g, 2368 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
 32, 19232, 38432, 57632, 76832, 96032, 115232, 134432, 153632, 172832,
 3340832, 3360032, 3379232, 3398432, 3417632, 3436832, 3456032, 3475232,
 3494432, 3513632
2932288 blocks
Build completed Thu Aug  5 18:24:38 2010
Build is successful.


Шаг 5: Использование носителя


К этому времени у нас появились образы ISO и USB:


bleonard@opensolaris:~$ ls -lh /rpool/dc/media/
total 2.8G
-rw-r--r-- 1 root root 1.4G 2010-08-05 17:59 OpenSolaris Developer Edition.iso
-r--r--r-- 1 root root 1.7G 2010-08-05 18:24 OpenSolaris Developer Edition.usb


Образ ISO можно записать на DVD или загрузить в виртуальную машину, такую как VirtualBox. Заметьте изменённое меню grub:





После загрузки LiveDVD вы сможете увидеть наше программное обеспечение:







Шаг 6: Настройки


Во время процесса сборки Конструктор Дистрибутивов проходит контрольные точки. Они видны в выводе в формате:


==== <шаг>: <описание>


Например:


==== grub-setup: Grub menu setup 


Вы можете просмотреть контрольные точки таким образом:


bleonard@opensolaris:~$ pfexec distro_const build -l all_lang_osde_x86.xml 
/usr/share/distro_const/DC-manifest.defval.xml validates
/tmp/all_lang_osde_x86_temp_11516.xml validates

Step           Resumable Description
-------------- --------- -------------
im-pop             X     Populate the image with packages
im-mod             X     Image area modifications
slim-im-mod        X     Slim CD Image area Modifications
br-init            X     Boot root initialization
slim-br-config     X     Slim CD boot root configuration
br-config          X     Boot root configuration
br-arch            X     Boot root archiving (64-bit)
br-arch-32         X     Boot root archiving (32-bit)
slim-post-mod      X     Slim CD post bootroot image area modification
grub-setup         X     Grub menu setup
post-mod           X     Post bootroot image area modification
gen-slim-cont      X     Generate Slim CD image content list
iso                X     ISO image creation
usb                X     USB image creation


Вы можете видеть, что все контрольные точки обрабатываются с помощью ZFS:


bleonard@opensolaris:~$ zfs list -r -t all -s creation rpool/dc
NAME                                       USED  AVAIL  REFER  MOUNTPOINT
rpool/dc                                  7.55G  35.1G   123K  /rpool/dc
rpool/dc/logs                               63K  35.1G    63K  /rpool/dc/logs
rpool/dc/media                            2.80G  35.1G  2.80G  /rpool/dc/media
rpool/dc/build_data                       4.75G  35.1G  1.52G  /rpool/dc/build_data
rpool/dc/build_data@empty                     0      -    23K  -
rpool/dc/build_data@.step_im-pop              0      -    23K  -
rpool/dc/build_data@.step_im-mod              0      -  2.97G  -
rpool/dc/build_data@.step_slim-im-mod         0      -  2.97G  -
rpool/dc/build_data@.step_br-init         2.64M      -  3.00G  -
rpool/dc/build_data@.step_slim-br-config    95K      -  3.11G  -
rpool/dc/build_data@.step_br-config         75K      -  3.11G  -
rpool/dc/build_data@.step_br-arch         9.33M      -  3.12G  -
rpool/dc/build_data@.step_br-arch-32      15.7M      -  3.25G  -
rpool/dc/build_data@.step_slim-post-mod   21.2M      -  3.35G  -
rpool/dc/build_data@.step_grub-setup        54K      -  3.34G  -
rpool/dc/build_data@.step_post-mod          57K      -  3.34G  -
rpool/dc/build_data@.step_gen-slim-cont     28K      -  1.67G  -
rpool/dc/build_data@.step_iso               13K      -  1.67G  -
rpool/dc/build_data@.step_usb               13K      -  1.67G  -


Допустим, что вы, например, захотели исправить название опции в меню grub. После редактирования файла манифеста вы можете возобновить сборку на этом этапе:


bleonard@opensolaris:~$ pfexec distro_const build -r grub-setup all_lang_osde_x86.xml 
/usr/share/distro_const/DC-manifest.defval.xml validates
/tmp/all_lang_osde_x86_temp_3244.xml validates
WARNING: The manifest file, all_lang_osde_x86.xml, has changed 
since Step(s)  im-pop im-mod slim-im-mod br-init slim-br-config br-config br-arch br-arch-32 slim-post-mod grub-setup was generated.
Results may be indeterminate.
...


(необязательно) Шаг 7: Подготовка LiveUSB


Одна из утилит в составе пакета с Конструктором Дистрибутивов, usbcopy, служит для создания LiveUSB:


bleonard@opensolaris:~$ pfexec usbcopy /rpool/dc/media/OpenSolarisDeveloperEdition.usb 
Found the following USB devices:
0:	/dev/rdsk/c4t0d0p0	<Unknown> MATSHITA	DVD-RAM UJ-844S  1.11
1:	/dev/rdsk/c6t0d0p0	305.2 GB	WD       3200BMV External 1.75
2:	/dev/rdsk/c8t0d0p0	1.9 GB	SMI      USB DISK         1100
Enter the number of your choice: 2

WARNING: All data on your USB storage will be lost.
Are you sure you want to install to
SMI USB DISK 1100, 1900 MB at /dev/rdsk/c8t0d0p0 +  (y/n) y
Copying and verifying image to USB device
Finished 1718 MB in 455 seconds (3.7MB/s)
0 block(s) re-written due to verification failure
Installing grub to USB device /dev/rdsk/c8t0d0s0
Completed copy to USB


Заметьте, что я имел проблемы с передачей имени файла с пробелами скрипту usbcopy, поэтому сначала я переименовал файл, удалив пробелы:


bleonard@opensolaris:~$ pfexec mv /rpool/dc/media/OpenSolaris\ Developer\ Edition.usb /rpool/dc/media/OpenSolarisDeveloperEdition.usb


Почему бы вам тоже не создать собственный дистрибутив OpenSolaris?