Labとは、アスタミューゼのエンジニアとデザイナーのブログです。アスタミューゼの事業・サービスを支えている知識と舞台裏の今を発信しています。新人育成どうもお久しぶりです、元バンドマンの新米エンジニアgucciです。最初のブログ投稿からはや4ヶ月も経ってしまいました。振り返ると、ちょうど1年ほど前にエンジニアになるべくプログラミングスクールに通い始め、そこからもう1年が経ったのだなぁとしみじみ思います。そんな私が今回ご紹介するのは「PXEブートサーバを構築しよう!」です。これは入社してすぐに研修でやったものの一つで、とても勉強になったのでご紹介させていただきます。私のように文系出身でサーバなどの基礎知識がなかったり、Linuxのコンソールにあまり触れたことがなかったりするけど、それでも「エンジニアになろうかしら!」と思っているそんなあなたにうってつけです。今回ご紹介するPXEブートサーバの構築を試してみてください。途中で登場する用語やコマンドなどの意味を調べながらやっていくと、より自分の身につくと思うのでおすすめです。PXEブートサーバとはさて、ここまでおすすめしておいてそもそもPXEとはなんなのかを説明していませんでした。Environment(PXE、ピー・エックス・イー、ピクシー)は、コンピュータのブート環境のひとつ。インテルの策定したネットワークブートの規格である。ネットワークブートを利用することにより、ストレージをもたないクライアントコンピュータや、ストレージに別のOSが導入されているクライアントコンピュータがサーバ上のOSイメージを使用して起動できる。(wikipedia先生より)とのこと。これを利用することで一体なにができるかと簡単に言うと、CDやUSBからOSをインストールするのではなく、PCとPCをLANケーブルで接続してネットワーク経由でOSのインストールができる!ということです。一度に大量のPCへ接続してOSをインストールしたりすることができるようになります。PXEを利用してPCのプログラムを起動することができるサーバを「PXEブートサーバ」と言います。Boxという仮想マシンを用いてPXEブートサーバを構築しましょう。Boxで作れるので、わざわざPCを複数用意する必要はありません。無料ですべて行えるのでご安心を。簡単にPXEを構築できる方法をご紹介するので、色々と足りない設定や説明などあるかもしれませんがご容赦ください。BoxというのはOracleが開発している仮想化ソフトのことで、使用しているPC上に仮想的なPCを作成し、別のOSをインストール・実行することができます。こちらは何かと便利なのでPCに入れておいて損はないかと思われます。今回使用するOSはUbuntuというフリーのLinuxディストリビューションの1つです。こちらのUbuntu18.04.1LTSを用いてやっていきましょう。Boxをインストールして新規マシンを作成し、Ubuntuをインストールする方法はたくさんネットに載っているのでそちらをご参考ください。必要に応じて設定は変更すべきですが、PXEブートサーバをお試しで作ることが目的なので基本的にはデフォルトの設定のまま突き進んで問題ありません。Ubuntuのインストーラはこちらから、ubuntu-18.04.1-live-server-amd64.isoをダウンロードしてください。Now」を叩けばVMが再起動してUbuntuが起動してくれます。それでは、本題のPXEブートサーバを構築していきましょう!PXEブートサーバとはどういう仕組み?そもそもPCは起動時にBIOSなどの起動デバイスで設定された順番にデバイスを読み込んでいきます。基本設定ではHDDが先に読み込まれますが、このBIOSの設定を変更することでCDなどの光学ドライブやUSBから起動させることができるようになります。BIOSの設定によりPXEから起動することで、ネットワーク起動が実現できるわけです。マシンの中にインストーラを用意して接続しただけだと、どこからそのマシンに接続して、どうやってファイルを転送をして、どこにインストーラがあるのか、マシンにはわかりません。それを設定してあげるのが今回のゴールです。PXEブートサーバは以下の流れにより実現できます。簡単に例えると、DHCPサーバがどこに接続するのか住所を指定TFTPサーバがファイルを転送してくれる配達員HTTPサーバが実際にインストーラが置いてある倉庫といったイメージがわかりやすいかと思います。これらのサーバをそれぞれ設定することで、PXEブートサーバが構築できるのです。PXEブートサーバの構築それでは、VMにインストールしたUbuntuを使って実際に各サーバを設定してきましょう!Ubuntuを起動後、まずはパッケージのupdateから。upgradeまず、DHCPサーバをインストールします。TFTPサーバをインストールします。tftpd-hpaそして、HTTPサーバとして使用するapache2をインストールします。apache2最後に、Ubuntuのインストーラのisoイメージをダウンロードしましょう。今回は手軽にPXEブートを体験するために、liveCD用installerではなく通常のCD用installerを使います。http://cdimage.ubuntu.com/releases/18.04.1/release/ubuntu-18.04.1-server-amd64.isoこれで、必要な材料は揃いました。ここからは、諸々の設定と適切な配置を行なっていきます。DHCPの設定を編集していきましょう。"pxelinux.0";}次に、ダウンロードしたisoイメージを適切な場所に配置します。/mnt/ubuntu展開します。/mnt/ubuntu/この展開したisoイメージの中に、TFTPサーバに配置するnetbootのファイルと、HTTPサーバに配置するinstallのファイルが入っているので、それらを配置してあげましょう。TFTPサーバにnetbootのファイルをセット。/var/lib/tftpboot/HTTPサーバにinstallのファイルをセット。/var/www/html/上はコピーをしていて、下はリンクを貼っています。いったコマンドの意味も、ぜひ調べながらやってみてくださいね。最後に、PXEブートサーバに静的なIPアドレスを設定します。叩くと、enp0s3に現在設定されているIPアドレスが表示されるかと思います。このIPアドレスをこちらで指定する静的なIPアドレスに設定してあげます。どこの住所なのかを予めしっかりと決めてあげるということですね。/etc/netplan/50-cloud-init.yamlエディターが開かれるので、下記のように編集してください。applyと叩いてあげましょう。一度ifconfigを叩くと、10.0.2.7に変わっていることがわかると思います。Boxで新規に作成しましょう。作成したVMのBIOS設定を変更します。設定ボタンを押し「システム」へ行くと、「起動順序」という項目があると思います。ここの項目で、ネットワークにチェックを入れて一番上に移動させてください。この設定により、起動時にネットワークからブートさせることができます。作成した2つのVM機の両マシン間で通信を行うために再び設定ボタンを押して「ネットワーク」へ行きましょう。ここの割り当てを内部ネットワークにどちらのマシンも切り替えます。名前や高度な設定はデフォルトのままでOKです。PXEブートそれでは、TargetマシンのVMを立ち上げてみましょう。network」画面まできたら、設定したnameserverのアドレスを入れます。次に、hostnameを求められるので、PXEブートサーバを構築したUbuntuのマシンの名前を入力します。manuallyを選択します。ここで、apache2で立てたHTTPサーバの場所を教えてあげます。次の画面では、/var/www/html/配下にリンクを貼った/ubuntu/を入れてあげます。isoイメージをマウントしてあるubuntuというディレクトリのリンクが貼ってあるので、これによりisoイメージを実行できるというわけです。この次の画面は空っぽのままでEnterを押してください。一度マシンをシャットダウンしてBIOSの設定を直しましょう。HDDから読みこむように設定を直して、起動すると...!イエス!PXEブート成功!おめでとうございます!お疲れ様でした!ついでにあと少しここまでで今回のゴールには到達しました。ここからはちょっとした付け足しみたいなものです。その1〜PXEブートでUbuntuをインストールしたTargetのマシンをそのまま使いたい場合〜現在の設定だと、パッケージをインストールしようとした際、インストール時に指定したPXEブートサーバのhttp://10.0.2.7/ubuntu/を見に行ってしまいます。updateをしても失敗してしまうはずです。そこで、パッケージの参照先を正しく指定し直しましょう。/etc/apt/source.listこの中を以下に書き換えてあげましょう。updateを行うと無事にパッケージがインストールされるはずです。同様にTargetのマシンがあれば実マシンでのPXEブートが可能です。その際、TargetマシンのBIOSの設定とPXEブートサーバを構築したVMマシンの設定を変更する必要があります。TargetマシンのBIOS画面の起動方法は調べる必要がありますが、一般的にはPC起動時にF2キーを連打するとBIOS画面が起動できます。BIOS画面が起動できたら、PXE(もしくはNetwork)を一番最初に起動するようにしてあげましょう。PXEブートサーバを構築したVMマシンの設定は、「ネットワーク」をブリッジアダプターに変更します。これで、実マシンに対するPXEブートができるはずです。最後にいかがだったでしょうか?PXEブートサーバの構築方法だけでも色々とありますので、他のやり方もネットを参考にしながら試してみると面白いと思います。Ubuntuのversionも変わって行くと各パッケージの仕様も色々と変わって行くので、トライ&エラーを繰り返しながら動かしてみてください。お付き合いいただきありがとうございました。それでは、良きPXEブートライフを!アスタミューゼでは、エンジニア・デザイナーを募集しています。ご興味のある方は是非、こちらのバナーから気軽にご応募ください。CIを四倍速にした話chotaroです。CMSの夜明けを感じるデザイン部でフロントエンドエンジニアをしているkitoです。9.6にアップグレードした話こんにちは。開発部のtorigakiです。弊社ではDBにPostgreSQLを...2018-07-18アクセスログ収集用Elasticsearchの運用話こんにちは。インフラ・開発部のtorigakiです。早いもので2回...2018-07-11Monit+Webhookでslack通知してみるお久しぶりです。インフラ・開発部のyanagitaです。Labとは、アスタミューゼのエンジニアとデザイナーのブログです。アスタミューゼの事業・サービスを支えている知識と舞台裏の今をブログとTwitterで発信しています。@astamuseLabアスタミューゼで働きませんか?アスタミューゼでは現在エンジニア、デザイナーを募集中です。興味のある方はぜひご応募ください。(1)@astamuseLabさんのツイートastamuseサービスサイトastamuse世界中のinnovatorのために、創造活動を可視化し未来を創るためのプラットフォームです。活用や新規事業に役立つ様々な機能を提供します。ビッグデータ分析から情報提供し、あなたの知らない未来を発見するメディアです。reserved.スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。