Ubuntu Weekly Recipe

第47回Ubuntuのネットワークインストールとapt-mirrorの活用

Ubuntuには様々なインストール手段が用意されていますが、今回はネットワークからインストーラを起動するnetbootインストールの活用の仕方を紹介します。インストールメディアを用意する必要がないため、クライアントマシンの台数が多い企業や学校などで有効に活用できるでしょう。またCDドライブを持たないUMPC等のインストールにも便利です。

インストールサーバの構築

netbootインストーラを使用するためには、ネットワークからクライアントを起動させるためDHCPサーバとTFTPサーバの役割を担うマシンが必要になります。またインストールの対象となるマシンはPXEでのブートに対応している必要があります。

まずサーバとなるマシンを用意します。筆者は自宅にUbuntu 8.04 サーバ版をインストールしたマシンを用意し、インストール用のサーバとして利用しています。

DHCPとTFTPのサーバとして動かすため、以下のコマンドを実行してパッケージをインストールします。DHCPサーバを新規に立ち上げる都合上、ネットワーク上に既存のDHCPサーバがある場合は停止させておく必要があります。ブロードバンドルータなどがDHCP機能を持っている場合は注意してください。

$ sudo apt-get install dhcp3-server tftpd-hpa

/etc/dhcp3/dhcpd.conf にDHCPサーバの設定を記述します。以下はルータ兼DNSが192.168.1.1、自分自身(DHCP,TFTPサーバ)が192.168.1.2のアドレスを持っている場合の例です。domain-name-serversにはDNSサーバ、next-serverにはTFTPサーバのIPアドレスをそれぞれ指定してください。この例ではDHCPサーバとTFTPサーバを同一のマシンで動作させていますが、別マシンで動作させているTFTPサーバを指定することも可能です。詳しくはdhcpd.confのマニュアルを参照してください[1]⁠。

option domain-name "hoge.org";
option domain-name-servers 192.168.1.1;
option subnet-mask 255.255.255.0;
default-lease-time 600;
max-lease-time 7200;
allow booting;
allow bootp;

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
filename "/pxelinux.0";
next-server 192.168.1.2;
}

次にTFTPサーバの設定を行います。tftpdをデーモンとして動作させるため、/etc/default/tftpd-hpaファイルを以下のように編集します。

RUN_DAEMON="yes"  # no を yes に変更

設定が完了したら、以下のコマンドでサービスを立ち上げておく必要があります。

$ sudo /etc/init.d/tftpd-hpa start
$ sudo /etc/init.d/dhcp3-server start

インストーラの取得と配置

次にnetbootインストーラを、tftpdが使用するディレクトリに配置します。i386版のUbuntu 8.10のインストーラを以下のアドレスより取得してください。

なお他のアーキテクチャや他のバージョンのインストーラが必要な場合は、http://archive.ubuntu.com/ubuntu/dists/(バージョン名)/main/installer-(アーキテクチャ名)/current/images/netboot 以下で配布されています。

インストーラのtar.gzを取得したら、/var/lib/tftpbootに展開します。

$ sudo tar zxfv netboot.tar.gz -C /var/lib/tftpboot

この状態でクライアントマシンをPXEブートさせると、DHCPサーバからIPアドレスを取得した後にdhcpd.confで設定したpxelinux.0ファイルが読み込まれ、下図のようなインストーラが起動します。後はインストーラの指示通りにインストールを進めていくことになります[2]⁠。

図1
図1

apt-mirrorによるミラーの構築

netbootによるネットワークインストールはCDドライブを持たないマシンへのインストールにも便利ですが、やはり最もその威力を発揮するのは企業内などで複数のクライアントをセットアップする時でしょう。ですがnetbootインストールはインストールCDを使わないため、必要なパッケージは全てインストール中にインターネットを経由して取得する必要があります。複数のマシンが同じパッケージをダウンロードするのは無駄ですし、ネットワークにも不必要な負荷をかけてしまうことになります。

ここではLAN内にミラーサーバを構築し、ローカルなサーバからインストールを行う方法を紹介します。

ミラーサーバの構築

まずミラーを作成するため、以下のコマンドでapt-mirrorをインストールします。

$ sudo apt-get install apt-mirror

/etc/apt/mirror.listファイルを編集します。以下は8.10のインストールを行うため、i386のmainとrestrictedのミラーを作成する例です。この例では/share/apt-mirror以下にミラーが作成されますので、別のパスに作成したい場合はbase_pathのパスを適時変更してください。またuniverseやmultiverseのミラーも作成したい場合は、必要に応じて記述を追加してください。

# apt-mirror configuration file

set base_path	 /share/apt-mirror
set mirror_path  $base_path/mirror
set skel_path	 $base_path/skel
set var_path     $base_path/var

set cleanscript  $var_path/clean.sh
set defaultarch  i386
set nthreads     20
set _tilde 0 

# Intrepid Section
deb http://jp.archive.ubuntu.com/ubuntu intrepid main restricted
deb http://jp.archive.ubuntu.com/ubuntu intrepid-updates main restricted
deb http://jp.archive.ubuntu.com/ubuntu intrepid main/debian-installer
deb http://jp.archive.ubuntu.com/ubuntu intrepid-updates main/debian-installer

clean http://jp.archive.ubuntu.com/ubuntu

以下のコマンドを実行することでミラーの作成が実行されます。

$ sudo apt-mirror

ミラーサーバの公開

前節の設定でミラーを作成すると、/share/apt-mirror/mirror/jp.archive.ubuntu.com/ubuntuというディレクトリが作成されているはずです[3]⁠。クライアントがここからパッケージをダウンロードできるよう、HTTPサーバを使用してこのディレクトリにhttpでアクセスできるようにする必要があります。

まず、以下のコマンドでApache2をインストールしてください。

$ sudo apt-get install apache2

Webサーバが動作したら、/share/apt-mirror/mirror/jp.archive.ubuntu.com/ubuntuがhttp://サーバのアドレス/ubuntuというurlでアクセスできるよう、Apacheの設定を行ってください。UbuntuのApacheはデフォルトで/var/www以下をルートとして公開していますので、以下のコマンドでリンクを張ってしまうのが一番簡単でしょう。

$ sudo ln -s /share/apt-mirror/mirror/jp.archive.ubuntu.com/ubuntu /var/www/ubuntu

httpでミラーのリポジトリへアクセスできるようになったら、インストール時にミラーのIPアドレスを明示的に指定することで、ミラーからパッケージの取得が行えるようになります。下図の画面で「情報を手動で入力」を選択し、ローカルミラーのIPアドレスを指定してください。

図2
図2
図3
図3
注意)
ローカルのミラーを指定してインストールを行った場合、インストール後のaptの設定もインストールを行ったミラーに対して向けられています。インストール後のアップデートにjp.archive.ubuntu.com等を利用したい場合は[システム]→[システム管理]→[ソフトウェア・ソース]を編集する必要があります。

おすすめ記事

記事・ニュース一覧