각 매니페스트 파일의 모든 필드는 필요한 ISO 이미지 유형을 만드는 미리 설정된 기본값을 제공합니다. 매니페스트 파일의 이러한 미리 설정된 필드를 수동으로 편집하여 생성되는 이미지를 추가로 사용자 정의할 수 있습니다.
다음 표에서는 샘플 매니페스트 파일의 기본 요소를 설명합니다.
|
다음 요소를 사용하여 빌드하려는 이미지의 사용자 정의 또는 기본 이름을 제공하십시오
<distro name="Oracle_Solaris_Text_X86" add_timestamp="false">
일련의 이미지 빌드를 수행하고 증분 이미지를 보존하려는 경우, 시간 기록 변수를 “true”로 변경하면 시간 기록이 자동으로 각 이미지의 이름에 추가됩니다.
HTTP 프록시를 지정해야 하는 경우 프록시 변수를 포함하는 distro name 요소의 주석 처리를 해제한 다음 프록시 위치를 제공하십시오.
이 부트 메뉴 요소는 이미지에 적용할 부트 메뉴 수정 사항을 지정합니다.
다음 예에서는 제목이 “boot1”인 특수화된 부트 메뉴가 이미지에 적용됩니다. 시간 초과 속성은 기본 부트 항목이 자동으로 활성화되기 이전 시간을 지정합니다.
<boot_mods title="boot1" timeout="5">
부트 메뉴 요소 내에서는 각 새 항목에 대해 새 boot_entry 요소를 추가하여 개별 부트 메뉴 항목을 추가할 수 있습니다. 각 부트 항목에 대한 “start” 또는 “end”의 insert_at 속성 값에 따라 순차적으로 부트 메뉴에 항목이 추가됩니다.
개별 boot_entry 요소의 다음 예를 참조하십시오.
<boot_entry> <title_suffix>with screen reader</title_suffix> <kernel_args>-B assistive_tech=reader</kernel_args> </boot_entry>
자세한 내용은 dc_manifest(4) 매뉴얼 페이지를 참조하십시오.
대상 요소는 사용자 정의할 수 있습니다. 이 요소는 빌드에 사용될 ZFS 빌드 데이터 세트를 정의합니다. 이 데이터 세트는 이미지가 생성되는 영역입니다. 유효한 데이터 세트 위치를 제공해야 합니다. 기본 빌드 영역을 확인하여 빌드가 시스템에 보존해야 하는 컨텐츠를 삭제하지 않는지 확인해야 합니다. 필요한 경우 빌드 영역을 수정하십시오.
다음 예는 샘플 대상 요소를 보여 줍니다.
<target> <logical> <zpool action="use_existing" name="rpool"> <dataset> <filesystem name="dc/sample-dataset-location" action="preserve"/> </dataset> </zpool> </logical> </target>
다음 요소는 배포판 구성자가 이미지를 빌드하기 위해 다운로드하고 사용할 패키지를 가져올 수 있는 게시자를 지정합니다.
<software name="transfer-ips-install">
이 소프트웨어 이름 섹션 내에 중첩된 소스 요소에서 게시자 이름 및 원본 이름 요소를 편집하여 사용할 게시자 및 패키지 저장소의 위치를 지정하십시오. 저장소 위치는 NFS 경로 또는 로컬 디렉토리일 수 있습니다. 게시자가 여러 개 나열될 수 있습니다. 배포판 구성자가 설치할 패키지를 찾으려고 하면 여기에 나열된 순서로 게시자가 검색됩니다.
게시자에 대한 미러를 지정해야 하는 경우 미러 이름 요소의 주석 처리를 해제한 다음 이 요소를 편집하십시오.
다음 예는 소프트웨어 이름 요소 내에서 검색된 샘플 소스 요소를 보여 줍니다.
<source> <publisher name="publisher1"> <origin name="http://example.oracle.com/primary-pub"/> <mirror name="mirror.example.com"/> </publisher> <publisher name="publisher2"> <origin name="http://example2.com/dev/solaris"/> </publisher> <publisher name="publisher3.org"> <origin name="http://example3.com/dev"/> </publisher> <publisher name="publisher4"> <origin name="file:///net/myserver/publisher4/repo"/> </publisher> </source>
게시자 사용에 대한 자세한 내용은 Oracle Solaris 11.2의 소프트웨어 추가 및 업데이트 를 참조하십시오.
install 속성을 포함하는 software_data 요소는 사용 중인 매니페스트에 따라 특정 유형의 이미지를 빌드하기 위해 설치할 패키지 세트를 나열합니다. 예를 들어, dc_livecd.xml 매니페스트는 라이브 매체 이미지를 빌드하는 데 필요한 패키지를 나열합니다. 각 이름 태그는 하나의 패키지 이름을 나열하거나 여러 개의 패키지를 포함하는 그룹 패키지의 이름을 나열합니다.
<software_data action="install"> <name>pkg:/group/system/solaris-desktop</name> <name>pkg:/system/install/gui-install</name> <name>pkg:/system/install/media/internal</name> </software_data>
이미지에 추가할 패키지가 있는 경우 각 패키지에 대해 이름 태그를 추가하여 패키지 이름을 추가하십시오.
기본적으로 지정된 저장소에서 사용 가능한 가장 최근 패키지 버전이 나열됩니다. 다른 버전이 필요할 경우 다음 형식을 사용하여 패키지 참조에 버전 번호를 추가하십시오.
<name>pkg:/group/system/solaris-desktop@0.5.11-0.build#</name>
또한 충돌하는 버전의 다른 패키지가 자동 설치 서비스의 매니페스트 파일에 지정된 대로 설치되고 있는 경우 지정된 특정 버전의 패키지는 설치되지 않을 수 있습니다. Oracle Solaris 11.2 시스템 설치 의 9 장, 설치 사용자 정의를 참조하십시오.
이 예에서는 또 다른 게시자인 mypublisher가 지정되었습니다. 추가 패키지 mypackage1 및 mypackage2가 지정되었습니다.
빌드 프로세스 중 게시자는 나열된 순서로 확인됩니다. 첫번째 게시자에서 패키지를 찾을 수 없는 경우 다음 게시자에서 지정된 패키지를 검색합니다.
<software name="transfer-ips-install" type="IPS"> <destination> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="/usr/share/distro_const/lang_facets.xml"/> </destination> <source> <publisher name="solaris"> <origin name="http://pkg.oracle.com/solaris/release"/> </publisher> <publisher name="mypublisher"> <origin name="http://mypublisher.company.com"/> </publisher> </source> <software_data action="install"> <name>pkg:/group/system/solaris-large-server</name> <name>pkg:/system/install/text-install</name> <name>pkg:/system/install/media/internal</name> <name>pkg:/mypackage1</name> <name>pkg:/mypackage2</name> </software_data> </software>
uninstall 속성을 포함하는 software_data 요소를 사용하여 개별 패키지를 제거하거나 그룹 패키지 정의를 제거할 수 있습니다.
uninstall 속성은 전체 그룹 패키지를 설치할 때 해당 그룹에서 하나 이상의 개별 패키지를 생략하려는 경우 특히 유용합니다. 먼저 uninstall 속성을 사용하여 그룹 패키지 정의를 제거할 수 있습니다. 그런 다음 그룹 패키지의 일부로 설치된 개별 패키지를 제거할 수 있습니다.
예를 들어, 라이브 매체 설치 이미지의 빌드를 선택했을 수 있습니다. 기본 라이브 매체 설치 이미지에는 데스크탑 그룹 패키지의 Firefox 브라우저가 포함되어 있습니다.
빌드하려는 이미지에서 Firefox 브라우저를 생략하려는 경우 다음을 수행하십시오.
일반적인 라이브 매체 데스크탑용 모든 소프트웨어를 포함하는 solaris-desktop 그룹 패키지를 설치하십시오. 설치할 패키지 나열을 참조하십시오.
다음과 같이 uninstall 속성을 사용하여 solaris-desktop 그룹 패키지 정의를 제거하십시오.
<software_data action="uninstall"> <name>pkg:/group/system/solaris-desktop</name> </software_data>
개별 패키지가 그룹 정의에 바인드되지 않았으므로 다시 uninstall 속성을 사용하여 Firefox 패키지를 제거할 수 있습니다.
<software_data action="uninstall"> <name>pkg:/web/browser/firefox</name> </software_data>
또는 다음과 같이 2단계와 3단계를 하나의 항목으로 수행할 수 있습니다.
<software_data action="uninstall"> <name>pkg:/group/system/solaris-desktop</name> <name>pkg:/web/browser/firefox</name> </software_data>
설치 제거 섹션의 끝에 제거할 추가 패키지를 추가하십시오.
software name 요소는 배포 생성자를 사용하여 만든 이미지로 시스템이 설치된 후 시스템에 영향을 줍니다.
<software name="set-ips-attributes">
게시자 이름과 선택적 미러 이름을 제공하여 설치된 시스템이 다운로드 및 설치할 추가 패키지에 액세스할 수 있는 위치를 지정하십시오.
이 요소에 IPS 속성을 설정할 수도 있습니다. IPS 등록 정보에 대한 자세한 내용은 pkg(1) 매뉴얼 페이지를 참조하십시오.
매니페스트의 execution 요소는 이미지 구성 프로세스 중에 실행되는 일련의 검사점을 나열합니다. 체크포인트는 이 섹션에 나열된 순서로 실행됩니다. 기본 설치 이미지를 빌드하는 데 필요한 기본 체크포인트는 각 매니페스트 파일에 포함되어 있습니다.
이미지 생성 프로세스 중 검사점은 매니페스트에 지정된 빌드 영역의 내용을 수정합니다.
빌드 영역에는 다음 디렉토리가 포함됩니다.
ZFS dataset/build_data/pkg_image
ZFS dataset/build_data/boot_archive
ZFS dataset 변수는 매니페스트의 대상 요소로 지정됩니다.
빌드 프로세스 중 최종 이미지에 포함될 모든 항목은 pkg_image 디렉토리에 추가됩니다. 별도의 boot_archive 디렉토리의 파일은 pkg_image 디렉토리에도 추가되는 부트 아카이브 파일을 만드는 빌드 프로세스 중에 사용됩니다.
다음 목록에는 가장 많은 매니페스트에서 실행되는 검사점 순서대로 각 기본 검사점에 대한 간략한 설명이 제공됩니다.
transfer-ips-install – 이 검사점에서는 배포 생성자가 IPS 게시자에 연결하여 이미지를 매니페스트의 software_data 요소에 나열된 패키지에 추가합니다.
set-ips-attributes – 이 검사점에서는 생성자가 설치된 시스템에서 사용할 게시자를 설정합니다. 자동 설치 이미지를 빌드하는 중인 경우 이 검사점에서 설정한 값은 관련이 없습니다.
pre-pkg-img-mod – 이 검사점에서는 생성자가 이미지를 매니페스트의 configuration 요소에 지정된 SMF 서비스 파일로 가져옵니다. 또한 생성자는 일부 파일을 수정하여 이미지를 최적화합니다.
이 검사점을 통한 모든 변경 사항은 빌드 중인 이미지와 루트 아카이브에 모두 포함됩니다. 사용자 정의 스크립트의 변경 사항이 루트 아카이브 및 이미지에 모두 통합하려는 경우 이 pre-pkg-img-mod 검사점 이전 또는 직후에 사용자 정의 스크립트용 새 검사점을 추가해야 합니다.
ba-init – 이 체크포인트에서는 생성자가 루트 아카이브를 매니페스트의 ba-init 섹션에 나열된 파일로 채웁니다. 이러한 파일은 pkg_image 영역에서 root_archive 영역으로 복사됩니다.
ba-config – 이 검사점에서는 생성자가 루트 아카이브로 복사된 파일을 추가로 수정합니다. 생성자는 부트 프로세스까지 필요하지 않은 다른 파일에 대한 심볼릭 링크를 만들어 루트 아카이브의 크기를 최소화합니다.
ba-arch – 이 검사점에서는 생성자가 루트 아카이브를 압축하여 pkg_image 디렉토리 내의 파일로 루트 아카이브를 만듭니다. 또한 생성자는 빌드 중인 시스템 유형에 대한 루트 아카이브에 모든 최적화를 수행합니다. 루트 아카이브가 이미 압축되었으므로 이 검사점 이후부터 사용자 정의 스크립트에 의한 부트 아카이브 사양의 변경 사항은 루트 아카이브로 통합되지 않습니다.
boot-setup – 이 체크포인트에서는 생성자가 매니페스트의 boot_entry 섹션에 지정된 항목을 기준으로 GRUB2 메뉴를 설정합니다. 이 검사점은 x86 시스템용 이미지에만 적용됩니다.
pkg-img-mod – 이 검사점에서는 생성자가 빌드 중인 이미지에 대한 주 아카이브를 만들고 pkg_image 영역을 최적화합니다. 생성자가 이미지에 대한 아카이브를 만들어 pkg_image 디렉토리의 파일을 이동합니다. pkg_image 디렉토리에 있는 모든 항목이 이미지에 포함됩니다. 이 검사점 이후의 모든 추가 사항은 이미지에 포함되지 않습니다.
create-iso – 이 체크포인트에서는 pkg_image 디렉토리의 모든 항목을 포함하여 .iso 파일을 빌드합니다.
create-usb – 이 체크포인트에서는 생성된 .iso 파일을 통해 .usb 파일을 빌드합니다.
각 체크포인트 섹션에 포함된 특정 필드를 확인하여 각 체크포인트 이름 태그에는 체크포인트 스크립트의 위치를 지정하는 mod-path 속성이 포함됩니다.
일부 기본 체크포인트 태그에는 기본값이 제공된 인수가 포함되어 있습니다. dc_ai_sparc.xml 샘플 매니페스트의 다음 체크포인트 예는 이미지 빌드에 대한 부트 아카이브를 만들며 해당 작업을 수행할 스크립트를 가리킵니다. 검사점 예에도 각 인수에 대해 특정 값이 제공된 인수 필드가 포함되어 있습니다.
<checkpoint name="ba-arch" desc="Boot Archive Archival" mod_path="solaris_install/distro_const/checkpoints/ boot_archive_archive" checkpoint_class="BootArchiveArchive"> <kwargs> <arg name="size_pad">0</arg> <arg name="bytes_per_inode">0</arg> <arglist name="uncompressed_files"> <argitem>etc/svc/repository.db</argitem> <argitem>etc/name_to_major</argitem> <argitem>etc/minor_perm</argitem> <argitem>etc/driver_aliases</argitem> <argitem>etc/driver_classes</argitem> <argitem>etc/path_to_inst</argitem> <argitem>etc/default/init</argitem> <argitem>etc/nsswitch.conf</argitem> <argitem>etc/passwd</argitem> <argitem>etc/shadow</argitem> <argitem>etc/inet/hosts</argitem> </arglist> </kwargs> </checkpoint>
이 예에 표시된 것과 같이, kwargs 요소에는 빌드 중 검사점에 전달해야 하는 키워드 인수가 있습니다. kwargs 요소 내에는 검사점에 전달할 개별 키워드를 지정하는 데 사용할 수 있는 arg name 요소가 있습니다. 또한 arglist 요소에는 검사점에 전달할 여러 argitem 값 목록이 포함되어 있습니다. 이 예의 경우 arglist 요소에서 압축되지 않은 파일 목록이 포함되어 있습니다.
각 kargs 목록 항목은 큰따옴표로 묶여 있습니다. 큰따옴표를 사용하지 않았거나 전체 문자열이 큰 따옴표로 묶인 경우, 공백과 줄바꿈을 포함한 전체 문자열이 하나의 인수로 해석됩니다. 인수를 쉼표로 구분하지 마십시오.
이미지 빌드 중에 사용할 사용자 정의 스크립트를 만들려면 스크립트 위치를 가리키는 체크포인트 요소를 추가해야 합니다. 사용자 정의 스크립트에 대한 검사점에는 사용자 정의 스크립트 위치를 가리키는 args 요소만 필요합니다. 자세한 내용 및 예제는 사용자 정의 스크립트 만들기 및 사용을 참조하십시오.
distro_const 명령 옵션을 사용하면 특정 체크포인트에서 빌드 프로세스의 일시 중지 및 다시 시작을 제어할 수 있습니다. 이미지를 여러 단계로 빌드하는 방법을 참조하십시오.
예 2-2 SVR4 패키지 추가이 예에서는 새 체크포인트가 매니페스트에 추가되었습니다. 이 새 체크포인트는 이미지에 추가할 SVR4 패키지 및 패키지의 위치를 나열합니다. 그런 다음 이 새 체크포인트는 실행 섹션에서 참조됩니다.
먼저 새 software 요소를 추가하여 새 체크포인트가 생성됩니다. 이 체크포인트는 SVR4를 소프트웨어 유형으로 지정합니다. 이 체크포인트는 패키지를 찾고 설치하는 위치입니다.
또한 설치할 특정 SVR4 패키지는 software_data 요소에 나열됩니다.
<software name="transfer-svr4-install" type="SVR4"> <destination> <dir path="{PKG_IMAGE_PATH}"/> </destination> <source> <publisher/> <origin name="/path/to/packages"/> </publisher> </source> <software_data action="install"> <name>SUNWpackage1</name> <name>SUNWpackage2</name> </software_data> </software>
체크포인트에 포함된 경우 {PKG_IMAGE_PATH} 및 {BOOT_ARCHIVE} 값은 distro_const 유틸리티를 통해 각각 ZFS dataset/build_data/pkg_image 및 ZFS dataset/build_data/boot_archive로 대체됩니다. 이 예에서 SVR4 패키지는 ZFS dataset/build_data/pkg_image에 설치됩니다.
끝으로 새 체크포인트가 실행 섹션에서 참조됩니다. 체크포인트 이름은 임의 문자열일 수 있지만 이 예에서 checkpoint_class는 TransferSVR4여야 합니다.
<execution stop_on_error="true"> <checkpoint name="transfer-ips-install" desc="Transfer pkg contents from IPS" mod_path="solaris_install/transfer/ips" checkpoint_class="TransferIPS"/> <checkpoint name="set-ips-attributes" desc="Set post-install IPS attributes" mod_path="solaris_install/transfer/ips" checkpoint_class="TransferIPS"/> <checkpoint name="transfer-svr4-install" desc="Transfer pkg contents from SVR4 packages" mod_path="solaris_install/transfer/svr4" checkpoint_class="TransferSVR4"/>
소프트웨어 이름은 체크포인트 이름과 일치해야 합니다. 이 예에서는 둘 다 “transfer-svr4–install”입니다.
예 2-3 매체 해시 만들기이 체크포인트를 통해 사용자는 DC 매니페스트의 체크섬 체크포인트를 사용하여 distro_const에서 생성된 매체의 해시를 자동 생성할 수 있습니다.
<checkpoint name="checksums" desc="Checksum calculation for media" mod_path="solaris_install/distro_const/checkpoints/checksums" checkpoint_class="Checksums"> <kwargs> <arglist name="algorithms"> <argitem file_path="/tmp/md5sums.txt">md5</argitem> <argitem>sha1</argitem> <argitem>sha224</argitem> <argitem>sha256</argitem> <argitem>sha384</argitem> <argitem>sha512</argitem> </arglist> </kwargs> </checkpoint>
arglist에는 생성된 매체의 해시를 생성하는 데 사용되는 모든 알고리즘이 포함됩니다. 각 argitem은 알고리즘을 지정합니다. /usr/bindigest -l을 실행하여 유효한 알고리즘을 확인할 수 있습니다. 각 argitem에는 해당 알고리즘에 의해 생성된 해시가 추가될 다른 파일의 절대 경로를 지정하는 path 속성이 있을 수 있습니다. 알고리즘이 지정되지 않은 경우 기본값은 md5입니다.
이미지가 빌드되는 동안 각 알고리즘에 대해 각 매체의 체크섬이 포함된 파일이 생성됩니다.