wiki:LinuxDebianEtchUSBInstall

USBメモリを使ってDebian Etchをインストール

関連ページ:Debian Etchに更新したらTracが時々RuntimeErrorを出す

(sgk - 2006/10/8)

インストールのためだけに、CD-ROMドライブがついているサーバを買うのも不毛。 プロなら、「やっぱりインストールにはCDが必要だから」なんてひ弱なことを言ってはいけない。 USBメモリにインストーラを入れて、USBブートでインストールすべし。

今回は、Debian Etch(2006年12月リリース予定のDebian 4.0のテスト版)をインストールしてみる。 なぜそんなことをしたのかと言えば、 DellのPowerEdge 850のSATAインターフェースとネットワークインターフェースとが、Debian Sargeに含まれるカーネルでは認識されないから。 Debianは保守的すぎていけない。

Debianプロジェクトないし、プロジェクト関係者がUSBメモリ用のイメージを提供してくれています。 このイメージをUSBメモリに書き込んだ上で、USBメモリをマウントし、好きなインストーラのISOイメージ(CD-ROM用)をUSBメモリに追加で保存すると、インストーラとして使えるという物です。 ところが、これって案外不便。

  1. 提供されているイメージのサイズより大きいUSBメモリを必要とする。ほんの少しはみ出して使えなかったこと多数。
  2. カーネルバージョンが古いことがある。新しめのハードウェアだと、古いカーネルではデバイスが認識されない。

前者については、ここに記述した方法で解決できます。 後者については、ここで提供しているファイルには比較的新しめのカーネルを入れておいたので、しばらくは大丈夫でしょう。 また、以下の「解説」を理解していただけば、インストーラのカーネルを入れ替えることもできます。

レシピ

材料

  • USBメモリ。64M以上。CFカード、SDカードとUSBアダプタでもいい。
  • Linuxをインストール済みのマシン。
  • syslinuxコマンド(Debianの場合には「syslinux」パッケージ)
  • mkdosfsコマンド(Debianの場合には「dosfstools」パッケージ)
  • http://omake.accense.com/static/DebianEtchUSBInstall.tar.gz (僕が用意したものです)

作業のために、もう1台Linuxマシンが必要です。Debian Etchである必要はありません。ここではDebian Sargeの場合で説明します。他のLinuxの場合は適当に読み替えてください。もちろん、USBメモリを用意しておく必要があります。64Mもあれば十分ですが、いまどきそんなに小さいのは売ってないので適当に。僕は128Mのを使いました。作業用のLinuxマシンにおいて、必要なツールを準備し、このファイルをダウンロードしておきます。

# apt-get install syslinux dosfstools
# cd /tmp
# wget http://omake.accense.com/static/DebianEtchUSBInstall.tar.gz

USBメモリを挿入します。dmesgコマンドを実行して、どのデバイスファイルとして認識されたかをチェックします。

# dmesg | tail -20
 :
 :
usb 3-1: new high speed USB device using address 35
scsi27 : SCSI emulation for USB Mass Storage devices
  Vendor: USB       Model: Flash Memory:     Rev: 0.00
  Type:   Direct-Access                      ANSI SCSI revision: 02
SCSI device sdb: 252928 512-byte hdwr sectors (129 MB)
sdb: assuming Write Enabled
sdb: assuming drive cache: write through
 /dev/scsi/host27/bus0/target0/lun0: p1
Attached scsi removable disk sdb at scsi27, channel 0, id 0, lun 0
Attached scsi generic sg1 at scsi27, channel 0, id 0, lun 0,  type 0
USB Mass Storage device found at 35

下から3行目あたりでsdbと言っているので、/dev/sdbだとわかります。以下、sdbだった場合で説明します。

ここからが本題。めんどくさいので、パーティションを切らず、デバイス全体をFATでフォーマットします。これには、さっきインストールしたdosfstoolsパッケージに入っているmkdosfsを使います。「-I」オプションをつけないと「パーティション切らないのはダメだよ」と怒られるので、つけてください。デバイス名は絶対に間違えないように。何度も確認してください。間違えると、最悪の場合、作業用Linuxを壊してしまいます。かなり危険です。ここに書いてある意味がわからない方、いまいちスッキリしない方には、これら作業はお勧めしません。あたりまえのことですが、作業の結果何が起きても、その原因が僕が書いたことの誤りでも、なんらの補償をしませんから了承下さい。

# mkdosfs -I /dev/sdb
mkdosfs 2.11 (12 Mar 2005)

そろそろ作業も終わりです。今フォーマットしたパーティションをマウントし、先ほどのDebianEtchUSBInstall.tar.gzを展開します。 さらに、アンマウントしてからsyslinuxコマンドを実行すればおしまいです。

# mount /dev/sdb /mnt
# cd /mnt
# tar xzfp /tmp/DebianEtchUSBInstall.tar.gz
tar: .: implausibly old time stamp 1970-01-01 09:00:00
# cd /tmp
# umount /mnt
# syslinux /dev/sdb

なにやらtarが怒っていますが、気にしなくていいです。

あとは、このUSBメモリをターゲットのマシンに挿入して、BIOSの設定でUSBブートを可能にして起動してください。 いつもどおり、Debianのインストーラが起動するはずです。 USBブートについて、「USBメモリのエミュレーション」の種類が選べる場合には、「ハードディスクとしてエミュレーション」するように設定するといいでしょう。

僕が用意したファイルには、Debianの言うところの「名刺サイズのCD-ROMインストーラ」のISOイメージを入れてあります。 このため、インストーラが自動的にパッケージファイルをインターネットから取得してインストールを実行します。 そのため、インターネットに接続されていること、ターゲットのマシンのネットワークインターフェースが認識されること、ネットワークインターフェースを正しく設定することが必要です。 これが不都合な場合には、 その他適切なインストーラのISOファイルに取り替えてください。 もちろん、必要に応じて大きめのUSBメモリを準備する必要があるでしょう。

解説

あとで書きます。