投稿

5月, 2019の投稿を表示しています

LinuxインストールDVDの内部動作 - initrd, isolinux, vmlinuz, Anacondaなど-

イメージ
普段何気なく使っているインストールDVDだが、裏では initrd、isolinux、vmlinuz、Anaconda など、様々なファイルやソフトウェアーが協調して動作している。 本稿では、LinuxインストールDVDの内部動作を追い、initrd、isolinux、vmlinuz、Anaconda などについて理解を深めることを目的とした。 コンテンツは下記のとおり。 インストールDVDの中身 基本的なブートの仕組み initrdについて インストールDVDのディレクトリー構造 インストーラーが起動するまでの流れ インストールされるシステムはどこにあるのか インストールDVDの中身 インストールDVD = インストーラーではない。 インストーラーは、インストールDVDに含まれる一部のファイルであり、 インストールプログラム(installation program) などと呼ばれる。 インストールプログラムは、インストールDVDに含まれるリソースを使いながら、実際のインストール作業を行うプログラムである。 例えば、FedoraやRed Hat系ディストリビューションでは、 Anaconda という名前のインストールプログラムが使われている。 インストールプログラムは、インストールという特別な作業を行うことを除けば、普通のプログラムと変わらない。 例えば、Anacondaは、PythonとCで書かれたプログラムである。 よって、実行するにはOSが必要である。 つまり、新しくOSをインストールするために、(既存の)OSを起動(ブート)することになる。 インストールプログラムを実行するためにブートするOSは、起動に必要なリソースとともに、インストールDVDの中に入っている。 まとめると、インストールDVDは下記を含むメディアと言える。 インストールプログラム、及びインストールに必要なリソース インストールプログラムを実行するために起動するOS、及び起動に必要なリソース 基本的なブートの仕組み 上に書いたように、インストールプログラムを実行するためには、インストールDVDの中に入っているOSを起動(ブート)することになる。 よって、インストールDVDの動作を理解するためには、ブートを理解する必要

KickstartによるBondingの設定(CentOS 7)

イメージ
Follow @venividivici830 ボンディング(Network bonding)は、複数のネットワークインターフェイスを、1つの仮想的なNICとして扱う機能。 ネットワークの冗長性やスループット向上に寄与する。 第4章 ネットワークボンディングの設定 5.4 ネットワーク・ボンディング ボンディングにより作成された仮想的なデバイスはマスター(master)、統合される物理デバイスはスレーブ(slave)と呼ばれる。 CentOS7で作るネットワークサーバ構築ガイド1804対応第2版 本投稿では、 Kickstartにより、自動的にBondingを設定して、CentOS 7をインストール した。 PXEサーバー、PXEクライアントは、ともにVirtualBox Version 5.2.20 r125813 (Qt5.6.3)の仮想マシンで、OSはCentOS Linux release 7.6.1810 (Core)とした。 ネットワーク構成は下記のとおり。 PXEサーバーは、既に構築されていることを前提とする。 PXEにより、VirtualBoxでCentOS 7のインストーラーを起動した(図で解説あり) また、 キックスタートファイルの配置場所は、PXEサーバーの/var/share/kickstart_filesで、NFSでexportされていることを前提とする。 VirtualBoxにおけるPXEとKickstartによるCentOS 7の自動インストール PXEクライアントの作成  VirtualBoxの仮想マシンとして、CentOS Client1、CentOS Client2の2つを作成した。 それぞれの仮想マシンの設定で、下記を実施。 システム > マザーボードから、起動順序の「ネットワーク」にチェック(PXEブートを行うため) ネットワークから、アダプター1とアダプター2を、割り当て「内部ネットワーク」として作成(PXEサーバーとの通信、及びBondingのスレーブとするため) 後の作業で必要になるため、それぞれの仮想マシンのアダプター1のMACアドレスを控えた。 CentOS Client1 - 08:00:27:A3:01:03 C

VirtualBoxにおけるPXEとKickstartによるCentOS 7の自動インストール

イメージ
Follow @venividivici830 前の投稿 では、PXEによるインストーラーの起動を行った。 本投稿では、Kickstartによるインストール作業の自動化を行った。 Kickstartによるインストールの自動化と言うが、より正確には「PXEとKickstartによる」インストールの自動化である。 PXEとKickstart 2つは別の技術。 PXE(Preboot eXecution Environment)     - ネットワークブートを実現する仕組み Kickstart     - OSのサイレントインストールを実現する仕組み ネットワーク上のインストーラーを起動するのがPXEの仕事で、インストーラーの操作を自動化するのがKickstartの仕事。 2つを組み合わせることで、下記のようにインストールを自動化できる。 普通のインストール DVDを挿入してインストーラーを起動→GUIを操作してインストールを進める PXEとKickstartによるインストール マシンの電源を入れる → PXEがネットワーク上のインストーラーを起動 → Kickstartがインストールを自動的に進める Kickstartの設定 Red Hatの公式ドキュメント を参考。 以下、下記のサイトの通りPXEサーバーが構築されていることを前提とする。 PXEにより、VirtualBoxでCentOS 7のインストーラーを起動した(図で解説あり) PXEサーバーが設定されていれば、Kickstartの設定は比較的簡単。 下記を行えば良い。 キックスタートファイルの作成 キックスタートファイルの配置 PXE設定にキックスタートファイルの場所を記載 キックスタートファイルの作成 キックスタートファイルの構文は、下記の公式ドキュメントに詳しい。 キックスタートファイルの作成26.3. キックスタート構文の参考資料  26.2. キックスタートを使ったインストールの実行方法  ここでは、1からキックスタートファイルを作成せず、手動でインストールしたマシンに自動的に保存されるキックスタートファイルを用いた。 手動でインストールしたマシンでは、インストール中に選択された選択肢がすべて下

PXEにより、VirtualBoxでCentOS 7のインストーラーを起動した(図で解説あり)

イメージ
Follow @venividivici830 VirtualBox Version 5.2.20 r125813 (Qt5.6.3)、CentOS Linux release 7.6.1810 (Core)を用いて、PXEによるインストーラーの起動までを試した。 PXEサーバー、PXEクライアントともに、VirtualBoxの仮想マシン。 作業開始時点のPXEサーバーの状態は、Minimal ISOをインストールした直後とする。 SELinuxはEnforcing、firewalldはstopしないで必要なだけ開放した。 基本的に、 Redhatの公式ドキュメント のやり方を踏襲した。 PXEについて PXEは、ネットワークブートを実現する仕組み。 OSやインストーラーを、ネットワーク経由で起動できる。 Kickstartと組み合わせることで、Linux OSのインストールを自動化できる。 PXEに必要なサーバーは、下記の3つ。 DHCPサーバー - IPアドレス付与、TFTPサーバーとブートローダーの場所を教える  TFTPサーバー - ブートローダーを提供、インストールソースの場所を教える  ファイルサーバー(HTTP、FTP、NFSなど) - インストールソースを提供  PXEクライアントは、これら3つのサーバーとやり取りし、ネットワーク経由でのOSやインストーラーの起動に必要な情報を順次取得していく。 下図はイメージ。 青はサーバー、緑は設定ファイルまたはブートに必要なリソースで、PXEサーバーを構築するために編集や配置を行うもの。 ネットワーク設定 ネットワーク構成は下図のようにした。 VirtualBoxのゲストOSとして2台のサーバーを作り、それぞれPXEサーバー、PXEクライアントとした。 PXEサーバーには、Minimal ISOでCentOS Linux release 7.6.1810 (Core)をインストールした。 PXEサーバーは、NICを2つ設定し、1つはブリッジアダプター、もう1つは内部ネットワークとして設定した。 ブリッジアダプターはホストOSと同じネットワークに所属し、家庭のルーターからDHCPでIPアドレスが動的に割り当てられる。 ホストからs