1 views

実現する機能

2009年から稼働している我が家のWebServerですが、DVD-Driveがとうとう壊れてしまいました。OSも言うことを聞かなくなってきたので、3階のPC(テストサーバー)にPXE(Preboot eXecution Environment)サーバーを構築して、1階のWebServerにネットワークブートでOSを自動でインストールし直しました。この作業で丸一日潰れたので備忘録を残しています。

PXE(Preboot eXecution Environment)サーバーの構築

(以下はGNOME端末を用いての手順)
以下の黒背景部分はGNOME端末を表示しています。紫色はキーボードから入力するコマンド(コピペした方が楽ですが、コマンドは覚えられません)、緑はコマンドや処理内容の説明、白は自動表示する部分、赤は注意書きです。

#PXEサーバーに必要なソフトをインストール
SYSLINUX はブートローダ(OSの起動画面ソフト)
Xinetd(ザイネットディー)は、ネットからの接続要求を受けて提供要求のあ
ったプログラムを起動
tftp-serverは、ネットワーク(TCP/IP)上でファイルをやり取りするサーバ
[tu@ufuso ~]$ sudo yum -y install syslinux xinetd tftp-server
#sudoを使うので、最初だけユーザーのパスワード入力を求められる
[sudo] tu のパスワード:

#pxelinuxという名称でOSやインストーラなどをネットワーク経由で起動する
ファイルを格納するフォルダを作成
[tu@ufuso ~]$ sudo mkdir /var/lib/tftpboot/pxelinux.cfg

#ブートローダファイル(pxelinux.0)をtftpbootフォルダにコピー
[tu@ufuso ~]$ sudo cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

#tftp-serverの編集
[tu@ufuso ~]$ sudo vi /etc/xinetd.d/tftp 
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        #noに変更して使えるようにする
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

#xinetdを起動
[tu@ufuso ~]$ sudo systemctl start xinetd tftp

#自動起動の設定
[tu@ufuso ~]$ sudo systemctl enable xinetd tftp

#dhcpサーバーのinstall
[tu@ufuso ~]$ sudo yum -y install dhcp

インストール:
  dhcp.x86_64 12:4.2.5-68.el7.centos.1                                          

完了しました!

#dhcpサーバーの編集
[tu@ufuso ~]$ sudo vi /etc/dhcp/dhcpd.conf

allow booting;
allow bootp;
#自宅のネット環境
subnet 192.168.24.0 netmask 255.255.255.0 {
#自宅のインターネットのルーター
   option routers              192.168.240.1;
#自宅ルーターの
   option subnet-mask          255.255.255.0;
#DHCPサーバーのドメイン名
   option domain-name          "ufuso.org";
#DNSサーバーのIP
   option domain-name-servers  192.168.24.240;

#割り振るIPの範囲を適当に設定(例示では130〜150)
   range                       192.168.24.130 192.168.24.150;
   default-lease-time          21600;
   max-lease-time              43200;
   filename                    "/pxelinux.0";  
}


#dhcpdを起動
[tu@ufuso ~]$ sudo systemctl start dhcpd


ネットワークインストールの設定

(1)以下はGNOME端末を用いての手順。
以下の黒背景部分はGNOME端末を表示しています。黄色はキーボードから入力するコマンド(コピペした方が楽ですが、コマンドは覚えられません)、緑はコマンドや処理内容の説明、白は自動表示する部分、赤は注意書きです。

#centos7のDVDイメージファイル(.iso)をDVDのように使うフォルダの作成
[tu@ufuso ~]$ sudo mkdir -p /var/pxe/centos7

#ブート時に必要なファイルを保存するフォルダの作成
[tu@ufuso ~]$ sudo mkdir /var/lib/tftpboot/centos7

#CentOS7.4を保存するフォルダの作成
[tu@ufuso ~]$ sudo mkdir /home/tu/iso

#CentOS7.4をダウンロード
[tu@ufuso ~]$ sudo wget http://ftp.iij.ad.jp/pub/linux/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1708.iso

#CentOS7.4をisoフォルダに移動
[tu@ufuso ~]$ sudo mv CentOS-7-x86_64-DVD-1708.iso /home/tu/iso

#CentOS7.4を/var/pxe/centos7フォルダにマウント
[tu@ufuso ~]$ sudo mount -t iso9660 -o loop /home/tu/iso/CentOS-7-x86_64-DVD-1708.iso /var/pxe/centos7

#vmlinuzをtftpbootフォルダ内にコピー
[tu@ufuso ~]$ sudo cp /var/pxe/centos7/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7/

#initrd.imgをtftpbootフォルダ内にコピー
[tu@ufuso ~]$ sudo cp /var/pxe/centos7/images/pxeboot/initrd.img /var/lib/tftpboot/centos7/

#menu.c32をtftpbootフォルダ内にコピー
[tu@ufuso ~]$ sudo cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/

#ブートメニュー画面の編集
[tu@ufuso ~]$ sudo vi /var/lib/tftpboot/pxelinux.cfg/default


timeout 600
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://192.168.24.240/centos7 devfs=nomount


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


#Aliasの設定
[tu@ufuso ~]$ sudo vi /etc/httpd/conf.d/pxeboot.conf

 # 新規作成

Alias /centos7 /var/pxe/centos7
<Directory /var/pxe/centos7>
    Options Indexes FollowSymLinks  
# アクセス許可範囲 自宅ネットワーク内のみ
    Require ip 127.0.0.1 192.168.24.0/24
</Directory>

#httpdの再起動
[tu@ufuso ~]$ sudo systemctl restart httpd

(2)DVDの使えない古いサーバーをrebootすると、この画面が表示されるので、手動でインストールできるか試した。OKだったので、自動化作業に入る(画像はクリックすると拡大。以下同)。

キックスタートインストールの設定

(1)以下はGNOME端末を用いての手順。
以下の黒背景部分はGNOME端末を表示しています。黄色はキーボードから入力するコマンド(コピペした方が楽ですが、コマンドは覚えられません)、緑はコマンドや処理内容の説明、白は自動表示する部分、赤は注意書きです。

#キックスタートの設定ファイルを保存するフォルダの作成
[tu@ufuso ~]$ sudo mkdir /var/www/html/ks

#ブートメニュー画面の編集
[tu@ufuso ~]$ sudo vi /var/lib/tftpboot/pxelinux.cfg/default

timeout 600
default menu.c32

menu title ########## PXE Boot Menu ##########
label 1
   menu label ^1) Install CentOS 7
   kernel centos7/vmlinuz
   append initrd=centos7/initrd.img ks=http://192.168.24.240/ks/centos7-ks.cfg

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

#暗号化されたパスワードの作成
[tu@ufuso ~]$ python -c 'import crypt,getpass; \
              print(crypt.crypt(getpass.getpass(), \
              crypt.mksalt(crypt.METHOD_SHA512)))'
#rootのパスワードを作成入力(要記憶)
Password:
#入力したパスワードが暗号化されて表示される。後で使うので記録しておくこと
$6$uQXJSH...................5Ko2UbiaqGs4.

#暗号化されたパスワードの作成
[tu@ufuso ~]$ python -c 'import crypt,getpass; \
              print(crypt.crypt(getpass.getpass(), \
              crypt.mksalt(crypt.METHOD_SHA512)))'
#userのパスワードを作成入力(要記憶)
Password:
#入力したパスワードが暗号化されて表示される。後で使うので記録しておくこと
Password:$6$EznKJ7D...................WM4lC84HI.

#ブートメニュー画面
の編集
[tu@ufuso ~]$ sudo vi /var/www/html/ks/centos7-ks.cfg

#version=DEVEL ← ベータ版?
# System authorization information ← シャドーパスワードを使用
auth --enableshadow --passalgo=sha512
# Install OS instead of upgrade ← Install
install
# Use network installation ← Install OSのURL
url --url="http://192.168.24.240/centos7/"
autostep
# Use graphical install ← 「firstboot」を可にするとソフトの追加が必要
graphical
firstboot --disable
ignoredisk --only-use=sda
# Keyboard layouts ← 日本語を選択
keyboard --vckeymap=jp106 --xlayouts='jp','us'
# System language ← 英語を選択
lang en_US.UTF-8

# Network information ← OSをInstallされるPCのIP設定
network  --bootproto=static --device=enp2s0 --hostname=ufuso.dip.jp --ip=192.168.24.241 --gateway=192.168.24.1 --nameserver=192.168.24.1 --netmask=255.255.255.0 --noipv6 --activate
# Halt after installation ← Install後PCは待機
halt
# Root password ← 作成したrootのPasswordを入力
rootpw --iscrypted $6$uQXJSH...................5Ko2UbiaqGs4.
# System services ← 追加又は除くソフトの設定
services --disabled="chronyd"
# System timezone ← 日本時間に設定
timezone Asia/Tokyo --isUtc --nontp
# User ← User名の登録と作成したPasswordの入力。「gecos」は備考欄?
user --name=tu --password= --iscrypted --gecos="tu"
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="xfs" --ondisk=sda --size=500
part pv.132 --fstype="lvmpv" --ondisk=sda --size=51200
volgroup VolGroup --pesize=4096 pv.132
logvol /  --fstype="xfs" --size=20480 --name=root --vgname=VolGroup
logvol swap  --fstype="swap" --size=4096 --name=swap --vgname=VolGroup

# ひとつの%にひとつの%endを記述のこと
%packages
@@development
kexec-tools

%end
# kdumpの設定
%addon com_redhat_kdump --enable --reserve-mb='auto'

%end


(2)DVDの使えない古いサーバーをrebootして、インストールが全自動で完了したらOK。PCが停止したら再起動して、下記画面の「2)Boot from local drive」をクリックのこと。CentOSが起動したら、rootでログインできたら成功。ユーザーの登録と、セキュリティの問題があるのでアップデートまでは終えておくこと。

以上です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください