CLIマジック:debootstrapによるDebian GNU/Linuxのインストール
インストール先のシステムに新しいハードウェアが装着されていると、現行のDebianインストーラーでは簡単にいかないことがある。インストール用CD-ROMに収容されているLinuxカーネルは古めで、ハードディスクやRAIDコントローラーあるいはネットワーク・アダプターなどの新しいハードウェアをサポートしていないことがあるのだ。おまけに、ドライバーがカーネルの本体に含まれていないハードウェア――極めてよく知られているワイヤレスLANインタフェース群――もある。それらを使おうと思えば、Debianでは配布できないバイナリー・ファームウェア・イメージが必要になる。
しかし、コマンドの手入力を厭わないなら、debootstrapを使ってインストールすることもできる。基本的な実装はもちろんのこと、組み込みシステム向けに機能を絞り込んだ最小実装もインストール可能。共同サーバーにプレインストールされているLinuxディストリビューションをDebianに置き換えることもできる。
debootstrapを使うには、インストール先ハードウェアをサポートするライブCDが必要だ。お薦めはGRMLの最新版(執筆時点では0.8)。広範なハードウェア(Kernelページに一覧がある)をサポートしており、debootstrapも含まれている(GRMLはDebianベースだから)。
まず、システムをブートし、すべてのハードウェアが認識されていることを確認する。必要なパッケージはすべてネットワーク経由でダウンロードされるため、特に、ネットワークが正常に機能していることを確認する。次に、タイムゾーンを設定する。Debianベースのディストリビューションにはtzconfig
が含まれているのでこれを使う。あるいは、現在の作業場所に/usr/share/zoneinfoから/etc/localtimeへのシンボリックリンクを作成してもよい(コマンドは、たとえばln -sf /usr/share/zoneinfo/Europe/Athens /etc/localtime
)。次に、dateコマンドで日付と時刻を設定する(たとえば、2006年8月25日13時10分なら、date 082513102006
とする)。ntpdateが使えるなら、ntpdate -u -v pool.ntp.org
を実行して、Internet NTPサーバーと同期を取ってもよい。
次に、ハードディスクをパーティションに分割する。使用するプログラムは何でもよい(fdisk、cfdisk、partedなどがある)。IDEハードディスクの場合、分割後ブートし直し、カーネルに新しいパーティションを正しく認識させること。以下では、ハードディスクをhda(プライマリー・マスターIDE)と仮定し、3つのパーティションを作成することにする。hda1は/用、hda2はスワップ用、hda3は/home用だ。hda1とhda3はext3ファイルシステムとする。パーティションの分割ができたら、ファイルシステムを構築し(下の例ではmke2fsを用いているが、newfsコマンドでもよい)、マウント・ポイント/mnt/debinstを作ってファイルシステムをマウントする。
mkswap /dev/hda2
swapon /dev/hda2
mke2fs -j -b 4096 -O dir_index /dev/hda1
mke2fs -j -b 4096 -O dir_index /dev/hda3
mkdir /mnt/debinst
mount /dev/hda1 /mnt/debinst
mkdir /mnt/debinst/home
mount /dev/hda3 /mnt/debinst/home
GRML以外のライブCDを使った場合は、ここで、debootstrapパッケージをダウンロードし展開しておく(下の例で用いているar
コマンドはbinutilsパッケージに含まれている)。
mkdir /mnt/debinst/work
cd /mnt/debinst/work
wget http://ftp.debian.org/debian/pool/main/d/debootstrap/debootstrap-udeb_0.3.3_i386.udeb
ar -x debootstrap-udeb_0.3.3_i386.udeb
tar zxvpf data.tar.gz
export DEBOOTSTRAP_DIR=`pwd`/usr/lib/debootstrap
export PATH=$PATH:`pwd`/usr/sbin
次に、debootstrapを起動する。コマンドはdebootstrap --arch i386 FLAVOR /mnt/debinst http://ftp.debian.org
。ここで、FLAVORはsarge、etch、sidのいずれかで、それぞれDebianの安定版・テスト版・不安定版を意味する。また、近くにDebianのミラーサイトがあれば、http://ftp.debian.orgの部分をそれに置き換える。i386
の部分はCPUアーキテクチャーに合わせること。このコマンドにより、Debianシステムに最小限必要なパッケージがダウンロードされ、/mnt/debinstにインストールされる。これにはしばらく時間がかかるが、所用時間は使用する回線によって異なる。
debootstrapが終了したら、新しい実装にchrootし、システムを構成する。
mount -t proc proc /mnt/debinst/proc
mount -o bind /dev /mnt/debinst/dev
LC_ALL= chroot /mnt/debinst /bin/bash
まず、エディターを用意する。nanoやNVIなどがあるが、Debianシステムをインストールしているので、ここまで来ればapt-get install
コマンドで任意のエディターを準備できる。エディターの用意ができたら、/etc/fstabを作成し、ファイルシステムの情報を設定する(下に一例を示す。適宜変更のこと)。
# /etc/fstab: static file system information.
#
# file system mount point type options dump pass
proc /proc proc defaults 0 0
/dev/hda1 / ext3 defaults 0 1
/dev/hda2 none swap sw 0 0
/dev/hda3 /home ext3 nosuid,nodev 0 2
/dev/cdrom /mnt/cdrom iso9660 user,noauto,ro 0 0
次に、ネットワークを構成する。echo Hostname > /etc/hostname
コマンドでhostnameを設定し、次いで/etc/network/interfacesを作成する。下に示す例には、eth0インタフェースのDHCPと静的IPの構成例がコメントの形で含まれている。詳細は、interfacesのmanページを参照のこと。
## The loopback network interface
auto lo
iface lo inet loopback
## The primary network interface (eth0)
#auto eth0
# DHCP
#iface eth0 inet dhcp
# Static IP
#iface eth0 inet static
# address 192.168.0.1
# netmask 255.255.255.0
# broadcast 192.168.0.255
# gateway 192.168.0.254
DHCPを使わない場合は、/etc/resolv.confを作成し、ネットワーク環境に合わせてDNS情報を設定する。コマンドはecho -e "search domainname\nnameserver 192.168.0.253\nnameserver 192.168.0.254" > /etc/resolv.conf
(太字の部分は適宜変更のこと。以下同様)。次いで/etc/hostsを作成する。コマンドはecho -e "127.0.0.1\tlocalhost.localdomain\tHostname" > /etc/hosts
。
次に、keymapやその他のコンソール・オプション(画面表示停止の制限時間など)を構成する。まず、console-toolsとconsole-dataの2つのパッケージをインストールし、/etc/console-tools/configを編集する(ファイルには、コメントの形で例が含まれている)。英語以外の言語を用いる場合は、localesパッケージをインストールし、dpkg-reconfigure locales
コマンドで適切なロケールを選択する。tzconfig
でタイムゾーンを設定することを忘れないように。次に、rootのパスワードを設定する。コマンドはpasswd
。ここで、adduser USERNAME
コマンドを使ってその他のユーザーを追加してもよい。使用可能なオプションなど、詳細はadduserのmanページを参照のこと。
次に、カーネルとブート・ローダーをインストールする。まず、apt-cache search linux-image
コマンドを実行して利用可能なカーネル・パッケージを調べ、使用するCPUに合ったビルトをインストールする。たとえば、デュアルPentium 3システムの場合であれば、apt-get install linux-image-2.6-686-smp
とする。あるいは、カスタム・カーネル・パッケージを構築してもよい。kernel-packageとlibncurses5-devとbzip2の各パッケージをインストールするだけだ。詳細は、make-kpkgのmanページを参照のこと。次いで、ローダーをインストールする。ここでは、GRUBブート・ローダーをインストールすることにしよう。まず、apt-get install grub
コマンドを実行してローダーを入手し、次いで、第1ハードドライブのマスター・ブート・レコード上にGRUBを書き込む。コマンドはgrub-install hd0
。このコマンドが「Could not find device for /boot: Not found or not a block device」というエラーになった場合は、cat /proc/mounts > /etc/mtab
コマンドを実行した上で、再度実行する。次いで、Debianに含まれているupdate-grubコマンドを実行する。これは素晴らしいツールだ。GRUBの構成ファイルを自動的に作成してくれる。実行の際、/boot/grub/menu.lstを作成するかどうか尋ねられたらy
と入力する。
以上でシステムのインストールは完了。ほかに、udev、openntpd、sudoなどのパッケージをインストールしてもよい。最後に、exit
コマンドでchroot環境から出、ファイルシステムをアンマウントし(umount /mnt/debinst/{dev,proc,home} /mnt/debinst; swapoff /dev/hda2
)、今インストールしたばかりのDebianシステムを起動する。