目次

Building a custom CentOS 6 kickstart disc, part 4

http://smorgasbork.com/component/content/article/35-linux/131-building-a-custom-centos-6-kickstart-disc-part-4

  1. カスタム設定を行うポストインストールスクリプトを使用して面白いものを作りましょう

The good news

  1. CentOS5では、インストール後のコードでインストール·メディアからファイルにアクセスするには、ブートイメージにいくつかの非常に醜い修正を行う必要がありました。さらに、インストーメディアを再マウントする必要もありましたが、それらは不要になりました。/mnt/source以下にアクセスすればあります。

The %post section

  1. kickstart設定ファイルでは、anacondaインストーラが終わった後にコマンドを実行することができます。%postディレクティブで示されています。
  2. 通常は、bash(で書かれたシェルスクリプト)で書きます。注意点としては、インストール中のこの時点でのファイルシステムの構成です。新しいシステムは/mnt/sysimageでマウントされており、/ではありません。これらは、一度インストール後にシステムが起動されています。
  3. デフォルトで、%postのコマンドはchroot環境で実行されます。/mnt/sysimageは/ディレクトリになります。これにより、/etcなどの通常のパスを使用できるようになります。もしchrootされていない場合は、RPMのインストールなどができません。主な欠点としては、インストールメディアがchroot環境では見えないことです。
  4. %postを2段階にして実行することでこの問題を解決します。まず1段階目では、chrootせずに、CDからHDDにコピーします。
    %post --nochroot
    #!/bin/sh
    
    set -x -v
    exec 1>/mnt/sysimage/root/kickstart-stage1.log 2>&1
    
    echo "==> copying files..."
    cp -r /mnt/source/postinstall /mnt/sysimage/root/postinstall
  5. ~/kickstart_build/isolinuxディレクトリの下のpostinstallディレクトリにある全てのインストール後に実行するファイルを置きます。ビルド環境のisolinuxディレクトリはインストールディスクのルートになります。インストールディスクのpostinstallディレクトリの中身は新しいシステムのHDDの/root/postinstallにコピーされます。
  6. 2段階目では、インストール後に実行するファイルを使います。
    %post
    #!/bin/sh
    
    set -x -v
    exec 1>/root/kickstart-stage2.log 2>&1
  7. スクリプト内で、rootのホームディレクトリに標準出力のログファイルを出力しています。
  8. これによって、キックスタートのpostinstall時の問題を診断するために非常に使えます。テストおよびデバッグする必要があるインストールがたくさんあるときなどに便利です。
  9. postinstallationでできることについて制限はありません
    1. ユーザまたはグループを追加する
    2. CentOSでないアプリケーションをRPMからインストールする
    3. CentOSでないアプリケーションをtarballからインストールする
    4. 様々なシステムサービスのランレベルをセットする
    5. apache、samba、sshd、MySQLなどのサーバの設定をする
    6. デフォルトのbashシェルの振る舞いをせっていする
  10. その他いろいろ。
  11. 自分の指定したタスクを実行する準備が整いました。手動で実行する必要があることをしたくないですね。
ここで面倒くさくなった

Organizing the postinstall files

  1. 私はあなたの整理方法の面で何か提案が提供できる場合はインストール後のファイルを、私はこのようなディレクトリにファイルを分割することをお勧めします:
    ~/kickstart_build/isolinux/postinstall
       +-- apps
        +-- appconfig
        +-- sysconfig
        +-- libs
  2. にあなたの非CentOSのアプリケーションのRPMやtarballを置くアプリ(アプリケーションごとにサブディレクトリを含む)、にアプリケーション構成ファイルやスクリプトを置くのAppConfig(再度アプリケーションごとにサブディレクトリを含む)、にOSコンフィギュレーションファイルを(ネットワークの設定ファイルのような)を入れsysconfigの、とに汎用ライブラリ(特にあなたがインストールしている任意のアプリケーションで必要とされていないもの)を入れLIBS。
  3. これらの戦略は、組織のアプリはこれまでで最も重要なことです。あなたがCentOSのディストリビューションの一部ではないアプリケーションをインストールするときは、おそらくそれらのパッケージに依存関係を満たすために追加のライブラリやユーティリティをインストールする必要があります。あなたのキックスタートイメージをリフレッシュする必要があるとき、それは単一のディレクトリに格納されている各アプリケーションとその依存関係を持っていると便利です。側近がそれを必要とするため、大きなディレクトリにそれらすべてを投げた場合は、例えば、覚えていることは決してないだろう、そのmhashはそこにある。

External repositories

  1. 私は以下のリポジトリがCentOSのディストリビューションに含まれていないパッケージの信頼性の高い情報源であることが判明しました:
    1. EPEL - Enterprise Linux用の追加パッケージ
    2. repoforge -旧RPMforge、DAGのリポジトリでは現在これにリダイレクト
    3. ATrpms - ffmpegのrpmを得るための良い場所
    4. ELrepo -ハードウェアドライバのソース
  2. カスタムインストールディスクを構築する幸運。私はあなたがこのガイドを持っているかもしれない任意のコメントや提案を歓迎します!