web-dev-qa-db-ja.com

カスタマイズされたUbuntuサーバーISOを作成する方法は?

カスタマイズされたUbuntu Server 12.04 ISOを作成したいのですが、その方法に関する明確なアプローチが見つかりませんでした。 Ubuntuビルダーは、カスタマイズされたUbuntuデスクトップを作成するのに非常に優れたアプリだと思いますが、Ubuntu Serverはどうですか?

42
Shadin

ダウンロード

この場所 からUbuntuサーバーISOをダウンロードします。 32ビットまたは64ビットに移行するオプションがあります。サーバーエディションのファイル名は次のようになります。

ubuntu-13.10-server-i386.iso 
ubuntu-13.10-server-AMD64.iso 

次の手順では13.10 64ビットバージョンを想定しているため、ダウンロードしたコマンドを調整します。プロジェクトの改善が必要な場合に備えて、元のダウンロードから複数の新しいバージョンを作成できるように、ダウンロードのコピーを保管してください。また、すべての作業を行うために~/Downloads/を使用すると仮定します。

初期セットアップ

これにより、ダウンロードディレクトリ内に2つのディレクトリ「iso」と「isoNew」が作成され、ISOがマウントされ、コンテンツが「iso」から「isoNew」にコピーされ、新しいプロジェクトが開始されます。

これをテキストファイルに入れて保存し、実行可能にして実行します。

# Ubuntu custom server 
# rinzwind askubuntu.com
# topic: http://askubuntu.com/questions/409607/how-to-create-a-customized-ubuntu-server-iso/409651#409651
cd ~/Downloads/    
mkdir -p iso newIso
Sudo mount -o loop ./ubuntu-13.10-server-AMD64.iso ./iso    
Sudo cp -r ./iso/* ./newIso/
Sudo cp -r ./iso/.disk/ ./newIso/    
Sudo umount ./iso/
cd ~/Downloads/newIso/
  • 1つのエラーメッセージがスローされます:mount: block device /discworld/Downloads/ubuntu-13.10-server-AMD64.iso is write-protected, mounting read-only

これがどのように見えるかのサンプル画像:

実行中:

Executing

結果:

Result

ブートメニューオプションの追加

インストーラのメニューオプションはisolinux/txt.cfgに保存されており、default installlabel installの間に新しいオプションを作成できます。

これにより、「カスタムUbuntuサーバーのインストール」という新しいオプションが作成され、キックスタートファイルが追加されます(キックスタートファイルはオプションの変更に使用されます。以下で説明します)。

label myownoption
  menu label ^Install Custom Ubuntu Server
  kernel /install/vmlinuz
  append  file=/cdrom/preseed/ubuntu-custom.seed initrd=/install/initrd.gz quiet ks=cdrom:/preseed/ks-custom.cfg --
  • myownoptionは、オプションを識別するために使用できる単なるラベルです。
  • 「カスタムUbuntuサーバーのインストール」は、ブートメニューに表示されるテキストです。
  • メニューオプションをデフォルトのオプションにする場合は、default installdefault myownoptionに変更するだけです。

例:

enter image description here

ファイルを編集します(nanoを使用しましたが、可能であればgedit、vim、または別のエディターを使用します)。これは、このファイルに追加したもので、「lampserver」をラベルとして使用し、シードも「lampserver」という名前になります。

enter image description here

キックスタート(設定ファイルをグラフィカルに設定)

Red Hat Kickstartのインストール方法は、主に(排他的ではありませんが)Red Hat Enterprise Linuxオペレーティングシステムで使用され、オペレーティングシステムの無人インストールと設定を自動的に実行します。

buntuのpreseeding/kickstartに関するドキュメント 。 Ubuntuでは、キックスタート(およびpreseed)のサポートが制限されています。不足しているものの1つはpreseedのグラフィカルインターフェイスです。 Kickstartdoesにはこれに関するオプションがあります(画像を参照)が、これらはUbuntuでは機能しないようです。ただし、これは手動で行うことができます(以下の事前シードを参照)。

キックスタートのインストールと開始:

Sudo apt-get install system-config-kickstart
ksconfig

**警告**

キックスタートはUbuntu 13.10でバグがあり、起動するとエラーになります。 これは修正です 。コメント内のパッチをテキストファイルに入れて保存し(「patch」と名付けました)、コミットします。

enter image description here

その後ksconfigが機能し、多くのオプションを操作できる設定エディターが起動します。

enter image description here

enter image description here

設定可能なすべてのオプションの説明については、 Red Hat Linux 7.2:オフィシャルRed Hat Linuxカスタマイズガイド を参照してください。

完了したら、変更をks.cfgファイルに保存し、変更するISOにコピーします。

Sudo cp ks.cfg ~/Downloads/newIso/preseed/ks-custom.cfg
  • ここで何かを変更すると、インストーラーは、その情報が有効と見なされるかどうかを尋ねます。オプションを変更しなかった場合でも、インストーラは回答を求めます。
  • キックスタート files をダウンロードして、ks-custom.cfg~/Downloads/newIso/preseed/として保存することもできます。

資格情報を挿入した例。コマンドラインからSudo ksconfigで始めました。

enter image description here

そして、プロジェクトに保存します:

enter image description here

Preseeding(設定ファイルの手動設定)

Preseeding は、インストールの実行中に手動で回答を入力することなく、インストールプロセス中に尋ねられる質問への回答を設定する方法を提供します。これにより、ほとんどのタイプのインストールを完全に自動化することができ、通常のインストールでは利用できない機能も提供します。

通常のインストールのpreseedを独自のラベルにコピーします。

Sudo cp newIso/preseed/ubuntu-server.seed newIso/preseed/ubuntu-myownoption.seed
  • myownoptionを使用したものに変更します。

設定を変更します。 debconf-get-selectionsからdebconf-utilsを使用すると、特定のソフトウェアで使用できるパラメーターを調査できます。

これの設定例:

enter image description here

そして、taskselでインストールするランプサーバーを追加します。

enter image description here

  • パッケージ「openssh」および「build-essential」を追加する場合、これをシードファイルに含めることができます。

    d-i pkgsel/include string openssh-server build-essential
    
  • Opensshの例:

    debconf-get-selections | grep openssh
    openssh-server  ssh/vulnerable_Host_keys    note
    openssh-server  ssh/use_old_init_script boolean true
    openssh-server  ssh/encrypted_Host_key_but_no_keygen    note
    openssh-server  ssh/disable_cr_auth boolean false
    
  • これらのオプションをcustom-iso/preseed/ubuntu-myownoption.seedに追加できます。

  • debconf設定を使用した説明/例
  • preseedファイルの例
  • に関して:ローカリゼーション、ネットワーク構成、ネットワークコンソール、クロックと時刻、パーティション
  • Preseedファイルの最後に、次のようなパッケージ(ランダムな例)を追加できます。

    %packages openssh-server mysql-server Apache2

オフラインインストール

パッケージを追加し、それらがISOにない場合、インストーラーはこれらをリポジトリからダウンロードします。アクティブなインターネット接続がない場合、これは問題になるため、これらのパッケージ(および依存関係)をプロジェクトに追加して、DVDに書き込む必要があります。幸いなことに、通常のサーバーISOには十分なスペースがありますが、注意してください。CDやDVDのサイズには制限があります。

必要なすべてのDEBパッケージをダウンロードし、~/Downloads/に保存します。これらの2つのディレクトリは、新しいISOで必要です。

mkdir -p ~/Downloads/newIso/dists/stable/extras/binary-i386
mkdir -p ~/Downloads/newIso/pool/extras/
Sudo cp ~/Downloads/*.deb newIso/pool/extras/

これにより、プロジェクトが新しいパッケージで更新されます。

cd ~/Downloads/newIso
Sudo apt-ftparchive packages ./pool/extras/ > dists/stable/extras/binary-i386/Packages
Sudo gzip -c ./dists/stable/extras/binary-i386/Packages | tee ./dists/stable/extras/binary-i386/Packages.gz > /dev/null
cd ~/Downloads/

ISOを作成します

cd ~/Downloads/     
Sudo md5sum `find ! -name “md5sum.txt” ! -path “./isolinux/*” -follow -type f` > md5sum.txt
Sudo mkisofs -J -l -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -z -iso-level 4 -c isolinux/isolinux.cat -o ./ubuntu-13.10-myowninstall-AMD64.iso -joliet-long newIso/
  • 2行目は新しいチェックサムを作成し、パッケージを追加するときにのみ必要です。
  • 3番目はプロジェクトからISOを作成し、DVDに書き込むことができます。

結果:

enter image description here

そして今、あなたは実際にそれを焼いてインストールすることによってそれを試すことができます。仮想マシンとして使用することをお勧めします。最初に作成されたISOをテストする方が高速になるためです(そうでない場合は再起動を続けます)。

VirtualBoxをインストールすると、次のメニューが表示されます。

enter image description here

バグハンティング

インストール中に1つの問題が発生しました:デフォルトは選択されていません。

シャディン。 シードファイル コメント中

### Package Selection
tasksel tasksel/first multiselect Custom-Ubuntu-Server
d-i pkgsel/include string openssh-server build-essential
%packages openssh-server postgresql-9.1 postgresql-client-9.1 postgresql-contrib-9.1 libpq-dev postgresql-server-dev-9.1 pgadmin3

おそらく次のようにする必要があります。

### Package Selection
tasksel tasksel/first multiselect lamp-server
d-i pkgsel/include string openssh-server build-essential postgresql-9.1 postgresql-client-9.1 postgresql-contrib-9.1 libpq-dev postgresql-server-dev-9.1 pgadmin3

LAMPサーバー(Apache、Mysql、Phpなど)が不要なタスクセル行を捨てる

61
Rinzwind