20 カスタマイズした事前インストールの配布 #
カスタマイズしたSUSE Linux Enterprise Serverの事前インストールを多数の同じコンピュータにロールアウトすると、各コンピュータに個別にインストールする手間を省けます。また、エンドユーザには標準化されたインストールを提供できます。
YaST firstbootを使用して、カスタマイズした事前インストールイメージを作成し、エンドユーザが介入する最後のパーソナライズ手順のワークフローを決定します(完全に自動化したインストールができるAutoYaSTとは対照的)。
カスタムインストールを作成し、それを展開して各自の要件に合わせた環境設定を行わせるには、次のような作業を行います。
- クライアントコンピュータに複製する必要のあるディスクを持つマスタコンピュータを準備します。詳細については、20.1項 「マスタマシンの準備」を参照してください。 
- ワークフローをカスタマイズします。詳細については、20.2項 「firstbootインストールのカスタマイズ」を参照してください。 
- マスタコンピュータのディスクを複製し、そのイメージをクライアントのディスクに展開します。詳細については、20.3項 「マスタインストールの複製」を参照してください。 
- エンドユーザに、各自の要件に合わせてSUSE Linux Enterprise Serverのインスタンスをパーソナライズしてもらいます。詳細については、20.4項 「インストールの個人設定」を参照してください。 
20.1 マスタマシンの準備 #
firstbootワークフロー用のマスタマシンを準備するには、以下の手順に従ってください。
- インストールメディアをマスタコンピュータに挿入します。 
- コンピュータを起動します。 
- 必要な設定手順をすべて含む通常のインストールを実行し、インストールに必ず - yast2-firstbootパッケージを選択します。
- エンドユーザ用のYaST環境設定ワークフローを定義したり、このワークフローに独自のYaSTモジュールを追加したりする場合は、20.2項 「firstbootインストールのカスタマイズ」に進んでください。それ以外の場合は、ステップ 5に進んでください。 
- rootとしてfirstbootを有効にします。- firstbootの実行をトリガする空のファイル - /var/lib/YaST2/reconfig_systemを作成します。firstbootの環境設定が正しく完了すると、このファイルは削除されます。このファイルを作成するには、次のコマンドを使用します。- touch /var/lib/YaST2/reconfig_system 
- 20.3項 「マスタインストールの複製」に進みます。 
20.2 firstbootインストールのカスタマイズ #
firstbootインストールのワークフローのカスタマイズには、さまざまなコンポーネントが含まれる場合があります。これらのコンポーネントをカスタマイズすることをお勧めします。何も変更を行わなかった場合、firstbootはデフォルトの設定を使ってインストールを行います。次のオプションを指定できます。
- ユーザへのメッセージのカスタマイズ(20.2.1項 「YaSTメッセージのカスタマイズ」参照) 
- ライセンスおよびライセンス動作のカスタマイズ(20.2.2項 「ライセンス動作のカスタマイズ」参照) 
- 表示するリリースノートのカスタマイズ(20.2.3項 「リリースノートのカスタマイズ」参照) 
- インストールに含まれるコンポーネントの順序と数のカスタマイズ(20.2.4項 「ワークフローのカスタマイズ」参照) 
- 追加オプションスクリプトの設定(20.2.5項 「追加スクリプトの設定」参照) 
これらのコンポーネントをカスタマイズするには、次の環境設定ファイルを変更します。
- /etc/sysconfig/firstboot
- firstbootのさまざまな側面(リリースノート、スクリプト、ライセンス動作など)を設定します。 
- /etc/YaST2/firstboot.xml
- コンポーネントを有効/無効にしたり、カスタムコンポーネントを追加して、インストールワークフローの環境設定を行います。 - このようなカスタマイズしたインストールワークフローの翻訳を提供します(20.2.6項 「インストールワークフローの翻訳の提供」参照)。 ヒント: 制御ファイルの別の配置場所- /etc/YaST2/firstboot.xmlは、- yast2-firstbootパッケージによってインストールされた制御ファイルのデフォルトのパスです。制御ファイルの別の配置場所を定義する必要がある場合は、- /etc/sysconfig/firstbootを編集して、- FIRSTBOOT_CONTROL_FILE変数を目的の場所に変更します。
   カスタマイズの対象がワークフローコンポーネントだけでない場合は、control.xmlのマニュアルをhttps://doc.opensuse.org/projects/YaST/SLES11/tdg/inst_in_general_chap.html#product_controlで参照してください。
  
20.2.1 YaSTメッセージのカスタマイズ #
デフォルトでは、SUSE Linux Enterprise Serverのインストールにはさまざまなデフォルトメッセージが含まれています。これらのメッセージは、インストールの進み具合に応じて適宜表示されます。たとえば、歓迎のメッセージ、ライセンスメッセージ、およびインストールの完了を知らせるメッセージなどが含まれます。これらのメッセージを独自のメッセージに変更したり、翻訳したメッセージを入れることができます。独自の歓迎メッセージを入れるには、以下の手順に従ってください。
- rootとしてログインします。
- /etc/sysconfig/firstboot環境設定ファイルを開き、次の変更を適用します。- FIRSTBOOT_WELCOME_DIRに、歓迎メッセージとローカライズ版を含むファイルを保存するディレクトリパスを設定します。次に例を示します。- FIRSTBOOT_WELCOME_DIR="/usr/share/firstboot/" 
- 歓迎メッセージのファイル名が - welcome.txtおよび- welcome_locale.txt(localeは「cs」や「de」などのISO 639言語コードに一致する)以外の場合、ファイル名のパターンを- FIRSTBOOT_WELCOME_PATTERNSで指定してください。例:- FIRSTBOOT_WELCOME_PATTERNS="mywelcome.txt" - このパラメータを設定しない場合、デフォルトの - welcome.txtが使用されます。
 
- 歓迎メッセージファイルとそのローカライズ版を作成し、それを環境設定ファイル - /etc/sysconfig/firstbootに指定されているディレクトリに保管します。
    ライセンスメッセージやインストール完了メッセージも、同じような方法でカスタマイズすることができます。これらの変数はFIRSTBOOT_LICENSE_DIRおよびFIRSTBOOT_FINISH_FILEです。
   
    インストールの直後にYaSTを起動できる必要がある場合は、SHOW_Y2CC_CHECKBOXを「yes」に変更します。
   
20.2.2 ライセンス動作のカスタマイズ #
ユーザが使用許諾契約に同意しない場合のインストールシステムの動作をカスタマイズできます。このシナリオに対するシステムの動作には、次の3つがあります。
- halt
- firstbootインストールを中止し、システムをシャットダウンします。デフォルトの設定です。 
- continue
- firstbootインストールを続行します。 
- abort
- firstbootインストールを中止しますが、システムのブートを試行します。 
    選択し、LICENSE_REFUSAL_ACTIONを適切な値に設定します。
   
20.2.3 リリースノートのカスタマイズ #
firstbootで展開するSUSE Linux Enterprise Serverのインスタンスを変更したかどうかによって、新しいオペレーティングシステムの重要な情報をエンドユーザに知らせることが必要な場合があります。標準インストールでは、リリースノートを使用して、ユーザに重要な情報を知らせます(リリースノートは、インストールの最終段階の1つで表示されます)。firstbootのインストール完了時に、独自のリリースノートを表示するには、以下の手順に従ってください。
- 独自のリリースノートファイルを作成します。 - /usr/share/doc/release-notesにあるサンプルファイルのようなRTF形式を使用して、結果を- RELEASE-NOTES.en.rtf(英語)として保存します。
- オプションのローカライズ版をオリジナル版の次に保存し、ファイル名の - enの部分を該当するISO 639言語コードに置き換えます。たとえば、ドイツ語版の場合は- deになります。
- /etc/sysconfig/firstbootからfirstboot環境設定ファイルを開き、- FIRSTBOOT_RELEASE_NOTES_PATHをリリースノートファイルが保存されている実際のディレクトリに設定します。
20.2.4 ワークフローのカスタマイズ #
/etc/YaST2/firstboot.xmlに含まれるサンプルは、標準的なワークフローを定義したもので、次のような有効化されているコンポーネントが含まれています。
   
- 言語の選択 
- ようこそ 
- 使用許諾契約 
- 日付と時刻 
- ユーザ 
- rootのパスワード 
- セットアップの完了 
    このワークフローは、あくまでテンプレートです。firstboot設定ファイルである/etc/YaST2/firstboot.xmlを手動で編集することで、適切な内容に調整できます。このXMLファイルは、YaSTがインストールワークフローを制御するために使用する標準のcontrol.xmlファイルのサブセットになります。ワークフローセクションの設定方法の詳細については、例20.2「Workflow (ワークフロー)セクションの設定」を参照してください。
   
提案の概要は、例20.1「提案画面の設定」を参照してください。firstbootインストールワークフローの変更の概要が示されています。この例では、firstboot環境設定ファイルの基本的な構文(および主要要素の設定方法)が説明されています。
    …
    <proposals config:type="list">1
        <proposal>2
            <name>firstboot_hardware</name>3
            <mode>installation</mode>4
            <stage>firstboot</stage>5
            <label>Hardware Configuration</label>6
            <proposal_modules config:type="list">7
                <proposal_module>printer</proposal_module>8
            </proposal_modules>
        </proposal>
        <proposal>
        …
        </proposal>
    </proposals>| firstbootワークフローの一部となるすべての提案用のコンテナです。 | |
| 個人提案用のコンテナです。 | |
| 提案の内部名です。 | |
| 
      この提案のモードです。ここは変更しないでください。インストールを行う場合、 | |
| 
      この提案を行う、インストールプロセスのステージです。ここは変更しないでください。インストールを行う場合、 | |
| 提案に表示するラベルです。 | |
| 提案画面の一部となるすべてのモジュール用コンテナです。 | |
| 提案画面の一部となる、1つまたは複数のモジュールです。 | 
firstboot環境設定ファイルの次のセクションは、ワークフロー定義から成り立っています。ここには、firstbootインストールワークフローの一部とするすべてのモジュールを記載する必要があります。
    <workflows  config:type="list">
        <workflow>
            <defaults>
                <enable_back>yes</enable_back>
                <enable_next>yes</enable_next>
                <archs>all</archs>
            </defaults>
            <stage>firstboot</stage>
            <label>Configuration</label>
            <mode>installation</mode>
            … <!–– list of modules  ––>
            </modules>
        </workflow>
    </workflows>
    …
workflowsセクションの全体的な構造は、proposalsセクションと似ています。コンテナには、ワークフロー要素が保持されます。すべてのワークフロー要素にはステージ、ラベル、およびモード情報が含まれます(例20.1「提案画面の設定」に示されている提案と同様)。一番大きな違いは、defaultsセクションです。このセクションには、ワークフローコンポーネントの基本的なデザイン情報が含まれています。
   
- enable_back
- すべてのダイアログに、ボタンを入れます。 
- enable_next
- すべてのダイアログに、ボタンを入れます。 
- archs
- このワークフローを使用するハードウェアアーキテクチャを指定します。 
<modules config:type="list">1 <module>2 <label>Language</label>3 <enabled config:type="boolean">false</enabled>4 <name>firstboot_language</name>5 </module> <modules>
| ワークフローの全コンポーネントのコンテナです。 | |
| モジュール定義です。 | |
| モジュールと一緒に表示するラベルです。 | |
| ワークフローでこのコンポーネントを有効/無効にするためのスイッチです。 | |
| 
      モジュール名です。モジュール自体は | 
firstbootインストール時の提案画面数または表示順序を変更するには、以下の手順に従ってください。
- /etc/YaST2/firstboot.xmlにあるfirstboot環境設定ファイルを開きます。
- 提案画面を追加、削除したり、既存の画面の順序を変更します。 - 提案全体を削除するには、 - proposalsセクションから- proposal要素とそのサブ要素をすべて削除して、ワークフローから対応する- module要素とサブ要素を削除します。
- 新しく提案を追加するには、新たに - proposal要素を作成し、必要なサブ要素をすべて指定します。提案がYaSTモジュールとして- /usr/share/YaST2/clientsに存在するようにしてください。
- 提案の順序を変更するには、ワークフロー内で該当する提案を含む - module要素を移動します。特定の順序で提案やワークフローコンポーネントを実施しなければならないような、他のインストールステップとの依存関係がある場合もあることに注意してください。
 
- 変更内容を反映し、環境設定ファイルを閉じます。 
デフォルト設定がニーズに合わない場合は、環境設定ステップのワークフローを随時変更することができます。ワークフロー内の特定のモジュールを有効または無効にします(あるいは、独自のカスタムモジュールを追加します)。
firstbootワークフローのモジュールのステータスを切り替えるには、以下の手順に従ってください。
- /etc/YaST2/firstboot.xml環境設定ファイルを開きます。
- モジュールを無効にする場合は、 - enabled要素の値を、- trueから- falseに変更します。有効にする場合は、- falseから- trueに変更します。- <module> <label>Time and Date</label> <enabled config:type="boolean">true</enabled> <name>firstboot_timezone</name> </module>
- 変更内容を反映し、環境設定ファイルを閉じます。 
独自のカスタムモジュールをワークフローに追加するには、以下の手順に従ってください。
- 独自のYaSTモジュールを作成し、モジュールファイル - module_name.rbを- /usr/share/YaST2/clientsに保存します。
- /etc/YaST2/firstboot.xml環境設定ファイルを開きます。
- 新しいモジュールを実行するワークフロー内のポイントを決定します。そのためには、ワークフロー内の他のステップとの依存関係を検討し、必要に応じてそれを解消する必要があります。 
- modulesコンテナ内に新たな- module要素を作成し、適切なサブ要素を追加します。- <modules config:type="list"> … <module> <label>my_module</label> <enabled config:type="boolean">true</enabled> <name>filename_my_module</name> </module> </modules>- モジュールに表示するラベルを - label要素に入力します。
- ワークフロー内にモジュールを入れるために、 - enabledに- trueが設定されていることを確認します。
- name要素に、モジュールのファイル名を入力します。このときに、フルパスと拡張子- .rbは省略してください。
 
- 設定内容を反映し、環境設定ファイルを閉じます。 
     ターゲットハードウェアが複数のネットワークインタフェースを持つ可能性がある場合は、アプリケーションのイメージにnetwork-autoconfigパッケージを追加します。network-autoconfigを使用した場合、いずれかのEthernetインタフェースがDHCP経由で正常に設定されるまで、すべての利用可能なEthernetインタフェースの設定を繰り返します。
    
20.2.5 追加スクリプトの設定 #
firstbootワークフローの完了後に、firstbootが追加スクリプトを実行するように設定できます。firstbootシーケンスに他のスクリプトを追加するには、以下の手順に従ってください。
- /etc/sysconfig/firstboot環境設定ファイルを開き、- SCRIPT_DIRに指定されたパスが正しいことを確認します。デフォルトの設定は- /usr/share/firstboot/scriptsです。
- シェルスクリプトを作成し、指定したディレクトリに保存します。次に、そのファイルに適切なファイルパーミッションを設定します。 
20.2.6 インストールワークフローの翻訳の提供 #
    エンドユーザによっては、カスタマイズしたワークフローの翻訳を提供することが望ましい場合があります。それらの翻訳が必要になるのは/etc/YaST2/firstboot.xmlファイルの変更によってワークフローをカスタマイズした場合です(20.2.4項 「ワークフローのカスタマイズ」参照)。 
   
/etc/YaST2/firstboot.xmlを変更し、文字列の変更を導入した場合は、新しい翻訳テンプレートファイル(.potファイル)を生成し、gettextツールチェーンを使用して翻訳し、最後に翻訳したファイルをYaSTロケールディレクトリ(/usr/share/YaST2/locale)にコンパイル済みの.moファイルとしてインストールします。以下に手順を示します。
   
- たとえば、 - textdomain設定を- <textdomain>firstboot</textdomain> - から、次のように変更します。 - <textdomain>firstboot-oem</textdomain> 
- xgettextを使用して、翻訳可能な文字列を翻訳テンプレートファイル(- .potファイル)に抽出します(たとえば、- firstboot-oem.potのようになります)。- xgettext -L Glade -o firstboot-oem.pot /etc/YaST2/firstboot.xml 
- 翻訳処理を開始します。次に、翻訳済みファイル( - .LL_code.poファイル)を他のプロジェクトの翻訳と同様にパッケージ化し、コンパイル済みの- firstboot-oem.moファイルをインストールします。
追加または変更したYaSTモジュールに翻訳が必要な場合は、そのモジュール内で翻訳を提供します。既存モジュールを変更した場合は、望ましくない副作用を避けるため、そのtextdomainステートメントも必ず変更してください。
YaST開発の詳細については、https://en.opensuse.org/openSUSE:YaST_developmentを参照してください。YaST firstbootの詳細については、https://doc.opensuse.org/projects/YaST/SLES11/tdg/bk09ch01s02.htmlを参照してください。
20.3 マスタインストールの複製 #
利用できる任意のイメージング機能を使って、マスタコンピュータのディスクを複製し、そのイメージをターゲットコンピュータに展開/配布します。イメージングの詳細については、https://doc.suse.com/kiwi/を参照してください。
20.4 インストールの個人設定 #
複製されたディスクイメージがブートされると、firstbootが開始され、20.2.4項 「ワークフローのカスタマイズ」で設計したようにインストールが開始されます。firstbootワークフロー設定に含まれているコンポーネントだけが開始されます。他のインストールステップは、すべてスキップされます。エンドユーザは、言語、キーボード、ネットワーク、およびパスワードを各自の要件に応じて設定し、ワークステーションの個人設定を行います。作業が完了すると、firstbootでインストールされたシステムは他のSUSE Linux Enterprise Serverインスタンスと同様に動作します。