Debianの前バージョン(etch/4.0)の場合は「DNRH-001にDebian EtchをPXEネットワークブートしてインストール」等で説明されているとおりですが、一番のハマりどころが現バージョン(lenny)で変わっているようだったので。
概要
インストーラ(ブートイメージ)が格納されているファイル「netboot.tar.gz」をWindows上で展開するときは、展開ツール(解凍ソフト)が「シンボリックリンクをどう処理するか」に注意する必要があります。(私が常用している展開ソフトはシンボリックリンクの処理が適当だったためハマりました。もしかしたらWindows用の展開ソフトは基本的にムリかもしれません)
以下、Windowsマシンをサーバーにしてネットワークインストールを行う手順と、上記問題の解決方法です。
ネットワークインストールって何?
まずそもそも「ネットワークインストールって何?」という話から。PCにLinuxをインストールする場合、まずはインストーラーを起動しなければいけません。
Windows用アプリケーションの場合はWindows上でインストーラーを起動しますが、Debian GNU/Linuxの場合、インストーラーはWindowsのソフトではないのでWindows上で起動することはできません。(Windowsからインストーラーを起動できるLinuxディストリビューションもあるようですが)
じゃあどうするかと言うと、ポピュラーなのは「インストーラーをCD/DVD-Rに焼いて、PC電源投入時に(HDDでなく)CD/DVDから起動する」という方法です。ただ、ノートPCの場合はCD/DVDドライブが付いていなかったりします。
そういうときのために最近は「USBメモリ/HDDにインストーラーを書き込んで、そこから起動する」という方法もよく使われます。しかし今回私がDebianを入れようとしたのは古いPCで、USBメモリからの起動に対応していませんでした。
そんな場合でも、マシンが「ネットワークブート」に対応していれば大丈夫。インストーラーをネットワーク越しにダウンロードして起動する、という離れワザがあるのです。
Debianインストーラーのネットワークブート・基礎情報
ネットワークブートによるインストールについては、次のサイトで公式の情報が得られます。
⇒TFTP ネットブート用ファイルの準備(Debian GNU/Linux インストールガイド)
要は、ネットワーク越しにインストーラーをダウンロードするわけですから、その配信元のサーバーを用意しましょうという話です。
Trivial File Transfer Protocol (TFTP) は、 ブートイメージをクライアントに提供するために用います。理論的には、どんなサーバでも、どんなプラットフォームでも、 これらのプロトコルを実装してさえいれば利用できます。 この節では、SunOS 4.x, SunOS 5.x (Solaris), GNU/Linux での例を示します。
……というように、「どんなプラットフォームでもOK」と書かれていながらWindowsでの例が載ってなかったりするのですが、Windowsでも大丈夫です。
用意するもの
◇Debianをインストールしたいマシン(以下「クライアントPC」と呼びます)
◇インストーラーを配信するWindowsマシン(以下「サーバーPC」)
◇インターネット環境
◇サーバーソフト Tftpd32 (後でインストールしますが、とりあえずダウンロードだけしておいてください。zip版で問題ないですが、インストーラーが好きならexeのほうでもOKです)
◇Debianインストーラー(これから説明します)
ネットワークインストール用Debianインストーラーの用意
サーバーとなるPC上での作業です。
- Debian配布サイトから netboot.tar.gz をダウンロードします。日本に住んでいるなら例えばここ。
- 適当なディレクトリに展開します。と言っても「日本語(マルチバイト文字)が含まれるディレクトリ」「スペースが含まれるディレクトリ」は避けたほうが無難です。C:\temp\ あたりが良いかと。
- さて今、ディレクトリ構成は次のようになっていると思いますが、ここからがポイント。
├ debian-installer (ディレクトリ) ├ pxelinux.0 ├ pxelinux.cfg └ version.info
「pxelinux.0」ファイルのサイズが0バイトになっていたり、「pxelinux.cfg」がディレクトリではなくファイルになっていたり(しかも0バイト)という場合は、下記作業を行ってください。
- 「debian-installer\i386\pxelinux.0」(こちらは0バイトではないはず)を、0バイトの「pxelinux.0」に上書きコピーします。
- 0バイトの「pxelinux.cfg」ファイルを削除して、同じ名前の(pxelinux.cfg)フォルダを作成します。
- 「debian-installer\i386\boot-screens\syslinux.cfg」を、先ほど作った「pxelinux.cfg」フォルダにコピーします。
- いまコピーしてきた「syslinux.cfg」を「default」にリネームします。(default.cfgではないので要注意)
- ディレクトリ構造が以下のようになったか確認します。
├ debian-installer (ディレクトリ) ├ pxelinux.0 (15KBくらいのファイル) ├ pxelinux.cfg (ディレクトリ) │ └ default (150バイトくらいのファイル) └ version.info
- これでDebianインストーラーの準備は完了です。
※細かい解説:
なぜ上のような作業が必要だったかというと、tarアーカイブ内にシンボリックリンクで格納されていたファイルを、Windowsの展開ソフトが正しく処理できなかったためです。XPまでのWindowsにはシンボリックリンクがなかったので(参照:Windows NT/2000/XPでシンボリックリンクが利用できるという誤解)、処理できなくても仕方ありません。Vistaだったら(シンボリックリンクに正式に対応しているらしいので)大丈夫なのかもしれませんが、環境がないので分かりません。
ちなみに、netboot.tar.gz の中はこんな風になっています。
% tar tzvf netboot.tar.gz drwxr-xr-x root/root 0 2009-01-24 01:44 ./ drwxr-xr-x root/root 0 2009-01-24 01:44 ./debian-installer/ drwxr-xr-x root/root 0 2009-01-24 01:44 ./debian-installer/i386/ -rw-r--r-- root/root 5884850 2009-01-24 01:44 ./debian-installer/i386/initrd.gz -rw-r--r-- root/root 1468016 2009-01-24 01:44 ./debian-installer/i386/linux -rwxr-xr-x root/root 15820 2009-01-24 01:44 ./debian-installer/i386/pxelinux.0 drwxr-xr-x root/root 0 2009-01-24 01:44 ./debian-installer/i386/pxelinux.cfg/ lrwxrwxrwx root/root 0 2009-01-24 01:44 ./debian-installer/i386/pxelinux.cfg/default -> ../boot-screens/syslinux.cfg drwxr-xr-x root/root 0 2009-01-24 01:44 ./debian-installer/i386/boot-screens/ -rw-r--r-- root/root 152 2009-01-24 01:44 ./debian-installer/i386/boot-screens/syslinux.cfg (※他boot-screenns内省略) lrwxrwxrwx root/root 0 2009-01-24 01:44 ./pxelinux.cfg -> debian-installer/i386/pxelinux.cfg lrwxrwxrwx root/root 0 2009-01-24 01:44 ./pxelinux.0 -> debian-installer/i386/pxelinux.0 -rw-r--r-- root/root 55 2009-01-24 01:44 ./version.infoetchの場合は debian-installer/i386/pxelinux.cfg/default は実体を持つファイルでしたが、lennyではboot-screens/syslinux.cfgへのsymlinkになっているため、etchと同じ方法では問題が解決しません。
どういうネットワーク構成にするか
さて、次はインストーラーをサーブ(提供)するサーバーの準備ですが、その前にネットワークインストールの間どういうネットワーク構成にするかを考えておきます。というのも、サーバーPCではDHCPとTFTPという2つのサービスを提供するのですが、既存のネットワーク上でうっかりDHCPサーバーを起動してしまうと、ネットワーク上の他のマシンがインターネットに出られなくなってしまう可能性があるからです。
特に、「管理者が自分ではなく、他の人も利用しているネットワーク」(職場とか学校とか公衆無線LANとか)の場合、変なDHCPサーバを立ち上げようものならネットワーク管理者を怒らせることは間違いないので、そういう接続はLANケーブルを引っこ抜くとかしてから作業に臨みましょう。
上でもリンクしたDNRH-001にDebian EtchをPXEネットワークブートしてインストールでは既存のネットワークにうまくなじむDHCPサーバの設定方法が紹介されていてスマートです。ただし、多少DHCPの知識がないと厳しいかも。
また、ネットワークインストールを手順を説明するサイトで一番多いのは「ネットワーク内で既に動いているDHCPサーバ(たいていの場合はルータのDHCP機能)を止めましょう」というもので、これも堅実です。
が、ここでは別解として強引な方法を紹介しておきます。サーバーPCとクライアントPCを直結する別のネットワークを作ってしまうという方法です。
- サーバPCとクライアントPCを有線LANで直結します。「サーバーPC⇔ハブ⇔クライアントPC」がベストですが、クロスケーブルで文字どおり直結でも構いません。
なお、「クロスケーブル」ではない普通のLANケーブル(ストレートケーブル)でPC同士を直結しても、たぶん通信できないので要注意。 - サーバーPC側のポート(インターフェース)に適当なプライベートIPアドレスを割り当てます。混乱を防ぐため、いつも使っているネットワークとは変えておきます。例えば家庭内LANが192.168.0.* で構成されているなら、192.168.1.1 とか。
割り当てる手順は下記。
この方法の場合、サーバーPCのネットワークインターフェースが有線ポート1つ(無線ゼロ)しかない場合、Debianインストーラーが起動するまではサーバーPCからインターネットにつなげなくなるので要注意です。
(Debianのインストール途中でネットワークケーブルを挿し替えるので、その後はインターネットにつながります)
Debianインストーラーをネットワーク越しに提供するtftpサーバーの用意
さて、ネットワーク構成が決まったら、次はインストーラーをサーブ(提供)するサーバーの準備です。これもサーバーPC上での作業。
- ダウンロードしておいた Tftpd32 をインストールします。zip版をダウンロードした場合は適当なディレクトリに展開すればOK。ただし日本語(マルチバイト文字)の含まれたディレクトリにインストールするとうまく動かないという話もあります。(スペース入りのディレクトリは大丈夫)
- tftpd32.exeをダブルクリックするなどして起動します。(この時点でいきなりDHCPサーバが適当な設定で起ち上がってしまいます。繰り返しですが「自分が管理者じゃないネットワーク」にはつながっていないですよね?)
- Windowsファイアウォールの確認画面が出たら「ブロックを解除する」を選択します。
うっかり「ブロックする」にしちゃった人は、コントロールパネル→Windowsファイアウォール→例外から「Tftpd32」か「TFTP server」を探して「削除(D)」。 - Tftpd32が起動するので、ウィンドウ下部の「Settings」を押して設定画面へ。
- 設定します。
- Base Directory:さっきnetboot.tar.gzを展開したディレクトリを指定。
- Global Settings:「TFTP Server」と「DHCP Server」のみチェック。
- DHCP Optopns:基本オフ。(別にオンでも動くけど)
- Advanced TFTP Options:「PXE Compatibility」と「Allow '\' As virtual root」をオン。
- 「OK」を押すと「Tftpd32を再起動してね」と表示されるので
ウィンドウ右上の[×]ボタンで閉じて、もう一度起動します。
- 再起動したら、今度は「DHCP server」タブの内容を編集します。
- Current Directory:先ほど設定したディレクトリになっているか確認。
- Server interface:クライアントPCと接続しているインターフェースのIPアドレスを選択。
クロスケーブルで直結する場合は、選択肢にIPアドレスが現れませんが気にせず続行。(クライアントPCと接続してクライアントPC側が動作していないと、WindowsがIPアドレスを利用させてくれないため) - IP pool starting address:DHCPサーバが配布するIPアドレス範囲の先頭。ネットワーク内の既存アドレスとぶつからないように設定。よく分からなければ「サーバーIPアドレスの1つ次」で多分OK。
- Size of pool:DHCPサーバが配布するIPアドレス数。1でもいいのだけど、何かの設定を失敗してやり直すときにIPアドレスが足らなくなっても面倒なので、適当に10くらいにしておく。
- Boot File:「pxelinux.0」と指定。
- WINS/DNS Server、Default router:「0.0.0.0」のままでOK。
- Mask:「0.0.0.0」のままだとエラーになるので「255.255.255.0」に。
- 「Save」ボタンを押して設定を保存します。
Debianインストーラーをネットワーク越しに起動
これで準備は整いました。クライアントPCを「ネットワークブート」モードで起動します。
ネットワークブートの方法は機種によって違うので、マニュアルを見てください。キーボードの特定のキーを押しながら起動するとか、起動時に表示されるメニューから選ぶとか、BIOSで設定するとか、いろいろです。
ネットワークブートすると、まずはDHCPでIPアドレスを取得しようとするはずです。クロスケーブルで直結した場合は、「DHCPでIPアドレス取得中…」のような画面になってからしばらくすると、Tftpd32の「Server interface」欄で、クロスケーブルのサーバー側インターフェースのIPアドレスが選択できるようになりますので、すかさず選びます。
IPアドレスを取得できたら、次いでTFTPでDebianインストーラーを取得・起動するはずです。
うまく行かない場合は、Tftpd32の「Log viewer」タブでログが見られますので、解決の助けにしてください。
クライアントPCでDebianのインストーラーの手順を進めていくと、ほどなくネットワークの設定に入りますので、サーバーPCとつないでいるケーブルをクライアントPCから抜きます。クライアントPCをふだん利用したいネットワークに接続しなおしてから、ネットワークの設定を続行します。
普段使いのネットワークもDHCPを利用する場合、つなぎなおした直後はDHCPでのIPアドレス取得に失敗するかもしれませんが、めげずにもう一度DHCPに挑戦するとIPアドレスを取れるかもしれません。
ここでクライアントPCをインターネットに接続できないと、Debianのインストールに必要なファイルを取って来られず、インストールが完了できません。ただし、有線でインターネットにつなぐ環境がなくても、インストーラーは無線LANを認識できるかもしれません。
後始末
最後に、サーバーPCのネットワークインターフェースの設定も元に戻します。
「IPアドレスを自動的に取得する(O)」に戻す場合、下のDNSの設定がつられて変わっちゃってるはずなので、こちらも「DNSサーバーのアドレスを自動的に取得する(B)」に戻します。
こんな感じですので、お皿かUSBメモリから起動できるんだったら、そのほうがネットワークインストールよりよっぽどかラクです。どちらにも対応していない古いサブノート/ミニノートPCをお使いの方か、ちょっと目新しいことでもしてみるかという好奇心旺盛な方向け、といったところでしょうか。
0 件のコメント:
コメントを投稿