4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PXE boot を VitualBox(ubuntu) で試す

Posted at

#何がやりたい?
PXEブート用のサーバーが必要となったものの、Mac上に直接、tftpとdhcpを構築するのも良いのですが、上手く動いているのかどうかの切り分けが大変なため、VirtualBox上でサーバー側とクライアント側の両方をMac上で構築することで、まず最初に、PXEブートが動作することを確認してから、外部デバイス向けのPXEブート用サーバーを構築します。

##Topology
外部デバイスと接続するインタフェースは、USBの有線LANアダプタを接続しています。

topology.png

##Ubuntu(PXE Server)のインストール
まず最初に、VirtualBox上に、Ubuntuのサーバー(16.04.4)をインストールします。
次に、各ネットワークアダプタを設定します。

####HostのMacに接続されているインターネットと繋がるインタフェース
server_na1.png

####Macのターミナルを開いて、SSH経由でUbuntuにログインするためのインタフェース
server_na2.png

####外部デバイスと繋がるインタフェース
server_na3.png

####もう一台のVirtualBox上で作成するクライアントと繋がるインタフェース
server_na4.png

##Ubuntuインストール後の状態を確認

Ubuntuのバージョンを確認

hoge@ubuntu:~$ cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.4 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.4 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

ネットワークアダプタの確認

hoge@ubuntu:~$ lshw -short -class network
WARNING: you should run this program as super-user.
H/W path    Device      Class       Description
===============================================
/0/100/3    enp0s3      network     82540EM Gigabit Ethernet Controller
/0/100/8    enp0s8      network     82540EM Gigabit Ethernet Controller
/0/100/9    enp0s9      network     82540EM Gigabit Ethernet Controller
/0/100/a    enp0s10     network     82540EM Gigabit Ethernet Controller
WARNING: output may be incomplete or inaccurate, you should run this program as super-user.
hoge@ubuntu:~$

##インタフェースの設定
設定ファイルを開いて、末尾に追加

設定ファイル
sudo vi /etc/network/interfaces
追加する内容
# ===== SSH from host =====
auto enp0s8
iface enp0s8 inet static
address 192.168.98.10
netmask 255.255.255.0
network 192.168.98.0
broadcast 192.168.98.255

# ===== USB ether port =====
auto enp0s9
iface enp0s9 inet static
address 192.168.99.1
netmask 255.255.255.0
network 192.168.99.0
broadcast 192.168.99.255

# ===== Internal Network =====
auto enp0s10
iface enp0s10 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255

enp0s8192.168.98.10を指定していますが、下記の通り、Mac側で確認した内容に合わせた手動アドレスとしています。

Mac側の状態
$ ifconfig
vboxnet0 (23):
  inet address  192.168.98.1
  netmask       255.255.255.0
  broadcast     192.168.98.255
  flags         UP BROADCAST RUNNING PROMISC SIMPLEX MULTICAST
  mtu           1500

Ubuntuのインストールが完了したら、先にenp0s8の部分だけを追加して、後は、Macのターミナルを開いて、SSH経由で接続してから設定しても良いかと。

##DHCPサーバの設定

###DHCPのインストール

インストール
sudo apt install -y isc-dhcp-server

DHCPを動作させるインタフェースを指定する

設定ファイル
sudo vi /etc/default/isc-dhcp-server
修正する箇所
INTERFACES="enp0s9 enp0s10"

DHCPの設定ファイルを開いて、末尾に必要な内容を追記する

設定ファイル
sudo vi /etc/dhcp/dhcpd.conf
追加する内容
default-lease-time 1800;
max-lease-time 3600;
ddns-update-style none;

subnet 192.168.0.0 netmask 255.255.255.0 {
  option routers 192.168.0.1;
  option subnet-mask 255.255.255.0;
  range 192.168.0.100 192.168.0.110;
  option domain-name "private.exmaple.com";
  option domain-name-servers 8.8.8.8, 8.8.4.4;
  filename "./ubuntu/pxelinux.0";
}

subnet 192.168.99.0 netmask 255.255.255.0 {
  option routers 192.168.99.1;
  option subnet-mask 255.255.255.0;
  range 192.168.99.100 192.168.99.110;
  option domain-name "private.exmaple.com";
  option domain-name-servers 8.8.8.8, 8.8.4.4;
  filename "image_name.iso";
}

不要な設定もあると思いますので、適宜削除してください。
不要かどうかは、PXE Clicentが起動するか、起動しないかで切り分けてください。

###DHCPの起動

コマンド
sudo systemctl enable isc-dhcp-server
sudo systemctl restart isc-dhcp-server
sudo systemctl status isc-dhcp-server

##tftpサーバの設定

###TFTPのインストール

インストール
sudo apt-get install -y tftpd-hpa

PXEクライアントとして起動させるためのイメージをダウンロードして展開

コマンド
cd /var/lib/tftpboot
sudo mkdir ubuntu
cd ubuntu
sudo wget http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/installer-amd64/current/images/netboot/netboot.tar.gz
sudo tar xvzf netboot.tar.gz

外部デバイスで起動したいイメージがimage_name.isoだとすると、/var/lib/tftpboot配下に置いておくこと。

###TFTPの起動

コマンド
sudo systemctl restart tftpd-hpa.service
sudo systemctl status tftpd-hpa.service

##PXE Clientの準備
動作確認用のPXE Clientを新規の仮想マシンとして作成します。
また、各設定は下記の通りです。
####[一般]-[基本]
client_setting1.png

####[システム]-[マザーボード]
ここがポイントで、起動順序ネットワークを有効にして、一番上に移動させること。
client_setting2.png

####[ネットワーク]-[アダプター1]
先に構築しているPXE Serverと内部インタフェースで接続するための設定
client_na1.png

##PXE Clientの起動
電源を入れれば、下記のような画面が表示されるはず。

無事に起動すれば、ちょっとお試しで、イメージ保管先を示す./ubuntu/pxelinux.0./pxelinux.0に変更すると起動しなくなることが確認できますので、dhcpでイメージファイルの情報を渡して、実際のイメージファイルはtftpで取得していることが分かる。

client_boot1.png client_boot2.png

これで、外部デバイスからもPXEブートできるはず。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?