kagamihogeの日記

kagamihogeの日記です。

CentOS 6.4をPXEでネットワークインストール

手元にあるThinkPad X61Windows XPがインストールされているが、そろそろライセンスがアレなのでlinuxをインストールすることにした。しかし、フロッピー・光学ドライブがついてない。USBブートかネットワークブートか、ということになる。ので、PXEでインストールしてみることにした。

2013/07/16追記
X61が64bit機だということに気付いたので、64bit版のCentOSに入れなおした。手順は同一なので、違うところだけ追記。

環境

やったこと

TFTP, DHCPサーバの準備

ルータなどのDHCP機能はオフにしておく。

tftpd32をダウンロードして適当なディレクトリに置く。

ブートイメージをコピーしてくる。Damon ToolsでCentOS-6.4-i386-bin-DVD1.isoをマウントする。マウントしたディスクドライブ内の下記2ファイルをtftpd32に置く。

images\pxeboot\initrd.img
images\pxeboot\vmlinuz

pxelinux.0もコピーしてくる。マウントしたドライブから、Packages\syslinux-4.02-8.el6.i686.rpmをコピーしてきて、解凍する。その中のpxelinux.0をtftpd32に置く。

usr\share\syslinux\pxelinux.0

tftpd32\pxelinux.cfg という名前のディレクトリを作成し、そこにdafaultという名前のファイルを作る。dafaultの中身は↓な感じ。vmlinuzとinitrd.imgのファイルパスが、tftpd32から辿れるパスに居ることを確認する。methodはHTTPサーバの項で後述。

default centos6

label centos6
kernel vmlinuz
append initrd=initrd.img method=http://192.168.0.19:8080/centos6/ devfs=nomount

tftpd32のディレクトリ構成はこんな感じになる。

> tree /F tftpd32
(省略)\TFTPD32
│  EUPL-EN.pdf
│  initrd.img
│  pxelinux.0
│  tftpd32.chm
│  tftpd32.exe
│  tftpd32.ini
│  vmlinuz
└─pxelinux.cfg
        default

tftpd32.exeを起動する。画面真ん中下のSettingsを押し、GLOBALは、TFTP Server, DHCP Serverだけにする。なお、ここの設定方法は WindowsでPXEネットワークブート用サーバの設定 - TFTPD32 (TFTPD64) - Palm84 某所の日記 が詳しいです。

TFTPは、こんな感じ。

DHCPは、こんな感じ。

HTTPサーバの準備

Tomcat使ってる理由は特に無くて、手元ですぐ動かせるHTTPサーバがコレだったというだけの話です。

CentOS-6.4-i386-bin-DVD1.isoをマウントして、その中身を、%TOMCAT_ROOT%\webapps\ROOT\centos6にすべてコピペする。pxelinux.cfg\defaultのmethodのmethod=http://192.168.0.19:8080/centos6/とパスが合致していればOKです。要するに、Tomcatを起動して http://192.168.0.19:8080/centos6/GPL でファイルが見えてればOK。

ファイアウォール

場合によっては、tftpd32, TomcatWindowsファイアウォールで除外しないといけない(らしい)

クライアント側

ネットワークブートに切り替えるため、Thinkpadのロゴが見えてるときF12を連打する。

StartUp -> Boot で PCI LANとかそんな感じのをF6押して1番上に持ってくる。Save & Exitで、HDDから起動せずにネットワークブートが始まればOK. DHCPIPアドレスもらって、TFTPでブートイメージがダウンロードされて、インストールが開始されればOK.

ハマりどころとか

  • ネットワークブートが途中で勝手にリブートする。

何かしら設定がおかしかったり、あるべきファイル(vmlinuzとか)が無かったり・設定ファイルとパスが食い違っていたり、ファイアウォールにひっかかかっていたり。まぁなんか色々原因は考えられる……ので、疑わしいものは一個ずつチェックしたり、ぐぐったり、TFTPD32のLog viewerでチェックしていくしかないと思われる。

  • Unable to read package metadata from repository.

CentOSのインストール時に発生するエラー。
一途なベン » サーバ設定:運用 » OSのインストール~初期設定 » 前準備(PXEインストール用)CentOS6.2+PT2のサーバーセットアップ - 屑籠というかゴミ箱によると、

  1. 仮想ドライブから直接読み込ませるのはNG
  2. ISOイメージのrepodataが何故か古い

が原因らしく。一つ目はドライブからファイルコピーしているので良いとして。二つ目の解決策は http://ftp.riken.jp/Linux/centos/6.4/os/i386/repodata/ 等(32bitの場合)、http://ftp.riken.jp/Linux/centos/6.4/os/x86_64/repodata/ 等(64bitの場合)のファイルすべてを、このエントリの例で言えば %TOMCAT_ROOT%\webapps\ROOT\centos6\repodata と置き換えることで解消する。