CLIマジック:debootstrapによるDebian GNU/Linuxのインストール

Debian GNU/Linuxディストリビューションにはインストーラーが付属しているが、大方の初心者にとって、このインストーラーは少々扱いにくい。そのため、現在、Debian Etch向け新インストーラーの開発が進められている。しかし、その完成を待つことはない。既存のコマンドライン・ツールdebootstrapを利用すれば簡単にインストールできるのだから。

インストール先のシステムに新しいハードウェアが装着されていると、現行の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

まず、エディターを用意する。nanoNVIなどがあるが、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システムを起動する。

NewsForge.com 原文