탐색 링크 건너뛰기 | |
인쇄 보기 종료 | |
![]() |
사용자 정의 Oracle Solaris 11 설치 이미지 만들기 Oracle Solaris 11 Information Library (한국어) |
배포판 구성자는 매니페스트 파일이라고 하는 XML 파일에 지정된 설정을 기반으로 이미지를 만듭니다. 매니페스트 파일에는 배포판 구성자를 사용하여 만드는 ISO 이미지의 컨텐츠 및 매개변수에 대한 지정 사항이 포함되어 있습니다. distribution-constructor 패키지는 사용자 정의 LiveCD, x86/SPARC AI ISO 이미지 또는 x86/SPARC 텍스트 설치 이미지를 만드는 데 사용할 수 있는 샘플 매니페스트를 제공합니다.
각 매니페스트 파일의 요소는 필요한 ISO 이미지 유형을 만드는 미리 설정된 기본값을 제공합니다. 매니페스트 파일의 이러한 미리 설정된 요소를 수동으로 편집하여 생성되는 이미지를 사용자 정의할 수 있습니다. 또한 사용자 정의 스크립트를 만들어 설치 이미지를 추가로 수정할 수 있습니다. 그런 다음 매니페스트 파일에서 새 스크립트를 참조하십시오.
distribution-constructor 패키지에서 제공하는 샘플 매니페스트 파일은 다음과 같습니다.
표 2-2 샘플 매니페스트
|
패키지 관리자 도구를 사용하여 필요한 패키지를 설치할 수 있습니다. 패키지 관리자는 Oracle Solaris 운영 체제의 데스크탑에 있는 메뉴 표시줄에서 사용할 수 있습니다. 메뉴 표시줄에서 시스템>관리>패키지 관리자로 이동합니다.
또는 다음과 같은 IPS 명령을 사용하여 이 패키지를 설치합니다.
# pkg install distribution-constructor
distro_const 명령을 사용하여 이미지를 만들 경우 매니페스트 파일을 이름으로 참조합니다.
주 - 원본 매니페스트 파일과 기본 스크립트를 복사하기 전에 항상 이들을 백업하십시오.
예를 들어 매니페스트의 대상 요소를 편집하여 이미지를 구성할 수 있는 빌드 영역에 대해 다른 위치를 지정할 수 있습니다. 또한 게시자를 확인하여 이미지를 빌드하는 데 필요한 패키지를 다운로드하도록 시스템에서 해당 게시자에게 연결할 수 있는지 확인할 수 있습니다. 필요한 경우 소프트웨어 이름 요소를 편집하여 다른 게시지 ? 저장소 위치를 지정할 수 있습니다.
자세한 내용은 매니페스트 컨텐츠 수정 및 dc_manifest(4) 매뉴얼 페이지를 참조하십시오.
새 스크립트를 만드는 경우 매니페스트 파일의 실행 섹션에서 스크립트 참조를 업데이트합니다.
지침은 사용자 정의 스크립트 만들기 및 사용을 참조하십시오.
지침은 3 장이미지 빌드를 참조하십시오.
각 매니페스트 파일의 모든 필드는 필요한 ISO 이미지 유형을 만드는 미리 설정된 기본값을 제공합니다. 매니페스트 파일의 이러한 미리 설정된 필드를 수동으로 편집하여 생성되는 이미지를 추가로 사용자 정의할 수 있습니다.
선택한 샘플 매니페스트에 따라 기본 요소는 다음과 같습니다.
표 2-3 매니페스트 요소
|
다음 요소를 사용하여 빌드하려는 이미지의 사용자 정의 또는 기본 이름을 제공하십시오.
<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 속성 값에 따라 순차적으로 부트 메뉴에 항목이 추가됩니다.
주 - 새 항목은 기존 "with magnifier” 항목 앞에 추가하십시오.
개별 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 빌드 데이터 세트를 정의합니다. 이 데이터 세트는 이미지가 생성되는 영역입니다. 유효한 데이터 세트 위치를 입력해야 합니다. 빌드로 시스템에 보존해야 하는 컨텐츠가 삭제되지 않는지 기본 빌드 영역을 확인해야 합니다. 필요한 경우 빌드 영역을 수정하십시오.
주 - 파일 시스템 이름에 zpool의 이름이 포함되어서는 안됩니다.
다음 예를 보십시오.
<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">
이 섹션의 소스 요소에서 게시자 이름 및 원본 이름 요소를 편집하여 사용할 게시자 및 패키지 저장소의 위치를 지정하십시오. 게시자가 여러 개 나열될 수 있습니다. 배포판 구성자가 설치할 패키지를 찾으려고 하면 여기에 나열된 순서로 게시자가 검색됩니다.
게시자에 대한 미러를 지정해야 하는 경우 미러 이름 요소의 주석 처리를 해제한 다음 이 요소를 편집하십시오.
다음 예를 보십시오.
<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"></origin> </publisher> <publisher name="publisher3.org"> <origin name="http://example3.com/dev"></origin> </publisher> </source>
게시자 사용에 대한 자세한 내용은 Oracle Solaris 11 소프트웨어 패키지 추가 및 업데이트를 참조하십시오.
install 속성을 포함하는 software_data 요소는 사용 중인 매니페스트에 따라 특정 유형의 이미지를 빌드하기 위해 설치할 패키지 세트를 나열합니다. 예를 들어 dc_livecd.xml 매니페스트는 LiveCD 이미지를 빌드하는 데 필요한 패키지를 나열합니다. 각 이름 태그는 하나의 패키지 이름을 나열하거나 여러 개의 패키지를 포함하는 그룹 패키지의 이름을 나열합니다.
<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>
주 - 설치된 버전과 충돌하는 다른 패키지가 있을 경우 특정 버전이 지정된 패키지가 설치되지 않을 수 있습니다. 자세한 내용은 pkg(5) 매뉴얼 페이지를 참조하십시오.
예 2-1 패키지 및 추가 게시지 추가
이 예에서는 또 다른 게시자인 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 요소를 사용하여 개별 패키지를 제거하거나 그룹 패키지 정의를 제거할 수 있습니다.
다음 예에서 solaris-desktop은 여러 개의 개별 패키지를 포함하는 그룹 패키지의 이름입니다.
<software_data action="uninstall"> <name>pkg:/group/system/solaris-desktop</name> </software_data>
그룹 패키지는 제거할 수 있습니다. 그룹 패키지를 제거하면 그룹 정의만 실제로 제거됩니다. 해당 그룹의 일부로 이전에 설치되었던 개별 패키지는 제거되지 않습니다. 그러나 그룹 패키지를 제거하지 않고도 이러한 개별 패키지를 제거할 수 있습니다. 그룹 패키지를 보존하는 것이 진행 중인 참조에 유용할 수 있습니다. 또한 이름 태그를 사용하여 개별 패키지를 제거할 수도 있습니다. 설치 제거 섹션의 끝에 제거할 추가 패키지를 추가하십시오.
배포판 구성자를 사용하여 만든 이미지로 시스템이 설치된 후 시스템에 영향을 주는 요소는 다음과 같습니다.
<software name="set-ips-attributes">
게시자 이름과 선택적 미러 이름을 제공하여 설치된 시스템이 다운로드 및 설치할 추가 패키지에 액세스할 수 있는 위치를 지정하십시오.
이 요소에 IPS 속성을 설정할 수도 있습니다. pkg(1) 매뉴얼 페이지 IPS 등록 정보를 참조하십시오.
매니페스트의 실행 요소는 이미지 구성 프로세스 중에 실행되는 일련의 체크포인트를 나열합니다. 체크포인트는 이 섹션에 나열된 순서로 실행됩니다. 기본 설치 이미지를 빌드하는 데 필요한 기본 체크포인트는 각 매니페스트 파일에 포함되어 있습니다.
각 체크포인트 이름 태그에는 체크포인트 스크립트의 위치를 지정하는 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> <dir path="/path/to/packages"/> </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 에 설치됩니다.
끝으로 새 체크포인트가 실행 섹션에서 참조됩니다.
<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”입니다.
배포판 구성자를 사용하여 빌드하려는 이미지의 유형을 기반으로 사용자 정의하는 데 사용할 수 있는 추가 스크립트를 지정할 수 있습니다. 매니페스트 파일은 스크립트를 가리키며, 스크립트는 일반 이미지를 매체별 배포로 변환합니다. 이러한 스크립트는 매니페스트 파일의 실행 섹션에서 참조됩니다. 원하는 수의 사용자 정의 스크립트 체크포인트를 지정할 수 없습니다.
주 - 스크립트에 대한 지원은 응용 프로그램 패키지와 함께 제공되는 수정되지 않은 기본 스크립트로 제한됩니다. 이러한 스크립트를 사용자 정의하도록 선택한 경우 먼저 원본 스크립트를 백업하십시오.
시작하기 전에
사용자 정의 스크립트를 만드는 경우 다음 사항에 유의하십시오.
스크립트는 Python 프로그램, 셸 스크립트 또는 이진 파일일 수 있습니다.
스크립트는 매니페스트 파일의 실행 섹션에 나열된 순서로 실행됩니다.
스크립트(셸 및 python 모듈 모두) 내에서 실행된 명령의 표준 출력(stdout) 및 오류 출력 (stderr)은 완료되거나 시도된 빌드에 대해 보고하는 로그 파일에 캡처됩니다.
루트 역할을 수행하는 사용자가 이 스크립트를 실행할 수 있는지 확인합니다.
스크립트의 전체 경로를 지정해야 합니다. 체크포인트는 매니페스트의 실행 섹션에 나열된 순서로 실행됩니다.
매니페스트 파일의 실행 섹션에 새 스크립트에 대한 참조를 추가할 경우 이 스크립트가 해당 작업을 수행하기 전이나 후에 이미지 빌드를 일시 중지하는 데 사용할 수 있는 체크포인트 이름을 지정해야 합니다. 선택적으로 체크포인트 이름과 연관된 사용자 정의 메시지를 포함시킬 수 있습니다. 이 메시지를 생략할 경우 스크립트의 경로가 기본 체크포인트 메시지로 사용됩니다. 체크포인트 메시지는 빌드 프로세스 중 체크포인트가 실행될 때 표시됩니다.
주 - 체크포인트 이름으로 숫자 대신 의미 있는 이름을 사용하십시오. 새 스크립트가 추가되면 해당 새 스크립트에 대한 새 체크포인트가 숫자로 지정된 체크포인트 순서를 방해합니다.
다음 체크포인트 예는 사용자 정의 스크립트인 “my-script”를 참조합니다.
<checkpoint name="my-script" desc="my new script" mod_path="solaris_install/distro_const/checkpoints/custom_script" checkpoint_class="CustomScript"> <args>/tmp/myscript.sh</args> </checkpoint>
여기서 {PKG_IMAGE_PATH}는 인수 섹션의 빌드 매개변수로 지정되었습니다.
<checkpoint name="my-script" desc="my new script" mod_path="solaris_install/distro_const/checkpoints/my_script" checkpoint_class="CustomScript"> <args>/tmp/myscript.sh {PKG_IMAGE_PATH}</args> </checkpoint>
체크포인트에 포함된 경우 {PKG_IMAGE_PATH} 및 {BOOT_ARCHIVE} 값은 distro_const 유틸리티를 통해 각각 <ZFS Dataset>/build_data/pkg_image 및 <ZFS Dataset>/build_data/boot_archive로 대체됩니다.
이미지는 한 단계로 빌드할 수 있습니다. 또는 체크포인트에서 빌드를 중지했다가 다시 시작하여 빌드 상태를 확인할 수 있습니다.
지침은 3 장이미지 빌드를 참조하십시오.
빌드 출력에 로그 파일의 위치가 표시됩니다.