linux環境のPCが欲しくなったので、インストールしました。
CD焼いてインストールしてみるも、認識しない・・・。PXEサーバ立ち上げるかぁ・・・9月27日記事
目次
パソコンはどのように最初OSを呼び出しているのでしょうか。OSはハードディスクに入ってるのがほとんどで、
パソコンは電源を入れると、BIOSというプログラムが起動時に呼び出されます。
パソコンの電源ボタンを押すと、windowsのロゴの前に、そのメーカーのロゴが一瞬流れる場合があります。それがBIOSです。そこでF2などキーを押すとBIOS画面に飛んできます。
通常、起動順序はハードディスクが優先度が高くなっているのですが、光学ドライブから呼び出したり、USBメモリから呼び出したり、あるいはEthernetケーブルをつないで、起動時にネットワーク上から起動プログラムをよんできて!と色々と変更することができます。
しかし、今回、光学ドライブやUSBメモリを上にあげてlinuxのOSインストールプログラム(OSイメージ)を呼び出してもエラー・・・。
うーん。しかたなくネットワーク上の起動プログラムを呼ぶためにPXEサーバを立ち上げて、netbootすることにしました。
余っていた古いPCを呼び出して、インストール。とりあえず立ち上がりました。
apacheを適当に設定しました。ドメイン名とホスト名の設定ぐらいです。
起動順序をPXEに指定しておき、PCの電源を入れると、パソコンはネットワーク全体に対して「IPアドレスくれ!」と叫びます。
そして、DHCPサーバが、わかりました。「あなたのIPアドレスはこちらですよ」と与え、「ネットワーク上に起動プログラムもあるPXEサーバのIPアドレスも紹介します。」
とクライアント側に返して、クライアントはそのOSイメージを取得しにいき、インストールが始まるということです。よって、DHCPサーバの設定と、PXEサーバの設定両方必要なのです。
dhcpサーバは通常ネットワーク上に存在しています。(パソコンはつなげるだけでインターネットに接続できる環境になるでしょ?)なので競合しないように、dhcpサーバが存在しないネットワークに構築する必要があります。
運よく、vlan切っていたネットワークが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
パッケージインストール
# 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
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インストールは時間がかかる・・・
こちらを参考にしました。
以上