linux環境のPCが欲しくなったので、インストールしました。 CD焼いてインストールしてみるも、認識しない・・・。PXEサーバ立ち上げるかぁ・・・9月27日記事

目次





パソコンの起動とは

パソコンはどのように最初OSを呼び出しているのでしょうか。OSはハードディスクに入ってるのがほとんどで、 パソコンは電源を入れると、BIOSというプログラムが起動時に呼び出されます。 パソコンの電源ボタンを押すと、windowsのロゴの前に、そのメーカーのロゴが一瞬流れる場合があります。それがBIOSです。そこでF2などキーを押すとBIOS画面に飛んできます。
通常、起動順序はハードディスクが優先度が高くなっているのですが、光学ドライブから呼び出したり、USBメモリから呼び出したり、あるいはEthernetケーブルをつないで、起動時にネットワーク上から起動プログラムをよんできて!と色々と変更することができます。
しかし、今回、光学ドライブやUSBメモリを上にあげてlinuxのOSインストールプログラム(OSイメージ)を呼び出してもエラー・・・。
うーん。しかたなくネットワーク上の起動プログラムを呼ぶためにPXEサーバを立ち上げて、netbootすることにしました。

新規linuxサーバ(PXEサーバ兼DHCPサーバ)を立ち上げる。

余っていた古いPCを呼び出して、インストール。とりあえず立ち上がりました。 apacheを適当に設定しました。ドメイン名とホスト名の設定ぐらいです。

PXEブートとは

起動順序をPXEに指定しておき、PCの電源を入れると、パソコンはネットワーク全体に対して「IPアドレスくれ!」と叫びます。 そして、DHCPサーバが、わかりました。「あなたのIPアドレスはこちらですよ」と与え、「ネットワーク上に起動プログラムもあるPXEサーバのIPアドレスも紹介します。」 とクライアント側に返して、クライアントはそのOSイメージを取得しにいき、インストールが始まるということです。よって、DHCPサーバの設定と、PXEサーバの設定両方必要なのです。
dhcpサーバは通常ネットワーク上に存在しています。(パソコンはつなげるだけでインターネットに接続できる環境になるでしょ?)なので競合しないように、dhcpサーバが存在しないネットワークに構築する必要があります。 運よく、vlan切っていたネットワークがdhcpサーバなかったので、そのネットワークで構築することにしました。

DHCPサーバの設定

# yum -y install dhcp
# cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak
# vi /etc/dhcp/dhcpd.conf

option domain-name "ドメイン名";
option domain-name-servers DNSサーバのIPアドレス二つ。一つでもよい。;
default-lease-time 600;
max-lease-time 7200;
authoritative;

subnet 192.168.100.0 netmask 255.255.255.0{
range dynamic-bootp 192.168.100.200 192.168.100.254;
option broadcast-address 192.168.100.255;
option routers 192.168.100.1;
filename "/pxelinux.0";
}

セミコロンを忘れないように。付け忘れて、エラー吐いてました・・・
そしてDHCPサーバ起動

# vi /etc/rc.d/init.d/dhcpd start



PXEサーバの設定

パッケージインストール

# yum -y install system-config-netboot syslinux xinetd tftp-server



設定ファイル編集

# vi /etc/xinetd.d/tftp
を変更 14行目を変更
disable = no

立ち上げ

# /etc/rc.d/init.d/xinetd start 
# chkconfig xinetd on

OSイメージファイルの設定

centOS取得してくる。
# mkdir /home/username/centos7
# cd /home/username/centos7
# wget http://ftp.riken.jp/Linux/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1503-01.iso

設定

# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
# mkdir /var/www/html/centos7
# mkdir /var/lib/tftpboot/pxeboot
# mkdir -p /var/pxe/centos7
# mkdir /var/lib/tftpboot/centos7/
# mount -t iso9660 -o loop /home/username/centos7/CentOS-7-x86_64-DVD-1503-01.iso /var/www/html/centos7/
↑どうやら、直にイメージファイルをおくのではなく、isoイメージのものを展開したものをマウントし、使うようです。
# cp /var/pxe/centos7/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7/
# cp /var/pxe/centos7/images/pxeboot/initrd.img /var/lib/tftpboot/centos7/
# mkdir /var/lib/tftpboot/pxelinux.cfg
# mkeir /var/lib/tftpboot/pxeboot
# cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
# vi /var/lib/tftpboot/pxelinux.cfg/default

以下を新規作成

timeout 100
default menu.c32

menu title ########## PXE Boot Menu ##########
label 1
   menu label ^1) Install CentOS 7
   kernel centos7/vmlinuz
   append initrd=centos7/initrd.img method=http://PXEサーバのIPアドレス/centos7 devfs=nomount

label 2
   menu label ^2) Boot from local drive
   localboot



ポート開放

忘れずに、ポートも開放iptables編集dhcpの67番のほうはいらないっぽい。

# vi /etc/sysconfig/iptables
以下の2行を追加
-A INPUT -m state --state NEW -m udp -p udp --dport 67 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 69 -j ACCEPT
# /etc/rc.d/init.d/iptables restart

これで完了。長い長い設定でした。。。OSインストールは時間がかかる・・・ こちらを参考にしました。

以上

最終更新:2015年09月28日 03:30