〜 Xen対応カスタムカーネル構築編 〜
Xen環境およびその上で動作する仮想マシン用カーネルを自分で構築しよう。これにより、自由にカスタマイズしたカーネルを利用できるようになる。(編集部) |
みやもとくにお<wakatono@todo.gr.jp>
2005/4/5
ドメインの自動生成
インストール & Debian環境構築編で作成したドメインは、コンピュータを再起動すると跡形もなく消去されます。そこで、コンピュータの起動時に仮想マシンも自動起動する方法を紹介します。
■仮想マシン定義ファイルの保存
/etc/xen/auto配下に、仮想マシンの定義ファイルを置きます。
$ ls -l /etc/xen/auto/ |
こうすることで、自動的にxm createが実行されます。
■スタートアップスクリプトと停止スクリプトの設定
/etc/init.d/xendおよび/etc/init.d/xendomainsをスタートアップスクリプト(ファイル名が「S」で始まるスクリプト)、/etc/init.d/xendomainsおよび/etc/init.d/xendを停止スクリプト(ファイル名が「K」で始まるスクリプト)にします。Debian GNU/Linux(sarge)では、update-rc.dコマンドで設定可能です。
このとき、2点注意が必要です。それは、
- xend→xendomainsの順序で起動
- xendomains→xendの順序で終了
という点です。
xendomainsは、xendの機能を用いて仮想マシンを起動したり終了したりする関係上、起動/終了の時点でxendが使える必要があります。update-rc.dコマンドの場合は、
# update-rc.d xend start 20 2 3 4 5 . stop 20 0 1 6 . |
と実行することで、この起動/終了順を実現可能です。この2行のコマンドでは、正確には以下のことを行っています。
- 1行目
xendをランレベル2、3、4、5にスタートアップスクリプトとして登録。同時に、ランレベル0、1、6に停止スクリプトとして登録する。この際、両方に番号として「20」を付与(S20xendおよびK20xendとなる)。
つまり、/etc/rc2.d、/etc/rc3.d、/etc/rc4.d、/etc/rc5.dの4つのディレクトリにS20xendという名前のシンボリックリンク、/etc/rc0.d、/etc/rc1.d、 /etc/rc6.dの3つのディレクトリにK20xendという名前のシンボリックリンクを作成する。リンクの参照先は/etc/init.d/xend。
- 2行目
xendomainsをランレベル2、3、4、5にスタートアップスクリプトとして登録。同時に、ランレベル0、1、6に停止スクリプトとして登録する。この際、番号としてスタートアップには「21」、停止には「19」を付与(S21xendomainsおよびK19xendomainsとなる)。
つまり、/etc/rc2.d、/etc/rc3.d、/etc/rc4.d、/etc/rc5.dの4つのディレクトリにS21xendomainsという名前のシンボリックリンク、/etc/rc0.d、/etc/rc1.d、/etc/rc6.dの3つのディレクトリにK19xendomainsという名前のシンボリックリンクを作成する。リンクの参照先は/etc/init.d/xendomains。
ここまでを実施することで、自動起動〜自動終了ができるようになります。
Xen対応カーネル作成の基本
インストール & Debian環境構築編で、Xenバイナリを使った複数ドメインの作成まで可能になりました。普通に使うだけであれば、ここまでの作業で十分です。しかし、Xen上で独自のカーネルを動かしたいという人もいることでしょう。そこで、Xen上で動作するカーネルを自分で作成してみましょう。
なお、今回はすべて一般ユーザー権限で作業可能です。
■用意するもの
Xen対応カーネルをコンパイルするには、以下のものが必要です。
普通にカーネルを再構築できるツール類 | ||
GCCやbzip2、libncurses5-devなど。 | ||
Xenのソースコード | ||
Xenは、仮想マシンモニタのソースコードに加え、その上で動作するOSに対するパッチやxenアーキテクチャ(編注)に対応させるソースコードも同梱している。 | ||
Linuxカーネルのソースコード | ||
Linuxカーネル2.4.29(Linux-2.4.29)もしくは2.6.10(Linux-2.6.10)のソースコード。 | ||
そのほかのパッチ | ||
コンパイル時にパッチをダウンロードすることがある。 |
編注:xenアーキテクチャは、Xen上で動かすための仮想的なCPU名である。つまり、i386やppc、sparcといったアーキテクチャと同義であり、Xen対応カーネルはxenアーキテクチャでコンパイルする。 |
xen-2.0直下には、
- linux-2.4.29-xen-sparse(Linuxカーネル2.4.29用)
- linux-2.6.10-xen-sparse(Linuxカーネル2.6.10用)
- netbsd-2.0-xen-sparse(NetBSD 2.0用)
という3つのディレクトリがあり、この中にそれぞれのOSやバージョンに対応したxenアーキテクチャ部分のソースコードとスクリプト類が含まれています。xen-2.0直下のpatchesディレクトリにはOSのバージョンに対応したディレクトリが作成され、xenアーキテクチャに依存しないソースコードに対するパッチ類が置かれます。
カーネルに標準では含まれないモジュールを組み込む場合は、そのカーネルモジュールのソースコードも別途用意する必要があります。
■簡単なXen対応カーネル作成方法
Xen対応カーネルを作成する方法は、大きく分けて3通りあります。
- Xenをコンパイルする作業の延長で自動的にコンパイルさせる
- Xenのソースコードツリーの配下でカーネルコンパイルを行う
- xenアーキテクチャ依存のコード追加や必要なパッチ適用を行い、コンパイルする
アーキテクチャ依存のコード追加やパッチ適用を自分で実施すれば(方法3)、カーネルソースツリーの配置やカーネルモジュールの導入といったことも自由に行えます。この方法は後述することにして、ここでは簡単な方法2で大まかな流れを説明します。
まず、xen-2.0.4-src.tgz、linux-2.4.29.tar.bz2、linux-2.6.10.tar.bz2をダウンロードして同じディレクトリに配置し(注)、Xenのアーカイブのみを展開します。該当バージョンのカーネルソースがすでにあるなら、あらためてダウンロードする必要はありません。また、各アーカイブを配置する場所はどこでも構いませんが、ハードディスク容量に余裕があることを確認しておいてください。
注:カーネルソースを用意しておかなくても、Xenのコンパイル時にkernel.orgから自動的にダウンロードします。作業をスムーズに進めるため、あらかじめ用意しておいた方がよいでしょう。 |
$ wget http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.29.tar.bz2 |
以上でコンパイルの準備が整いました。カーネル2.6は、
$ make linux26 |
カーネル2.4は、
$ make linux24 |
と実行してコンパイルします。カーネル2.4の場合は、コンパイル時にパッチのダウンロードを行わなければならないので、インターネットに接続できる状態になっている必要があります。また、ダウンロードにはwgetを利用するため、wgetコマンドが使えるようになっていなければなりません。
コンパイルが正常に終わると、xen-2.0/dist/install/boot下にカーネル、xen-2.0/dist/install/lib下にカーネルモジュールが作成されます。
インストール編へ |
1/3
|
|
||||||
|
Linux Square全記事インデックス |
Linux Squareフォーラム 仮想化技術関連記事 |
連載:実践! Xenで実現するサーバ統合 有力な仮想化技術として注目を集めるようになった「Xen」。このXenを活用してサーバ統合を実践していく手順を具体的に紹介します |
|
特集:サーバの仮想化技術とビジネス展開の可能性 jailからUML/VMwareまで 1台のマシンで複数のサーバを動かす「仮想化技術」。VMwareやUMLの登場により、WebサイトだけでなくOS自体を仮想化できるようになった |
|
特集:仮想化技術のアプローチと実装 VMwareから要注目技術Xenまで 1台のサーバで複数の仮想マシンを実行する仮想化技術は、空間コストを引き下げる可能性を持つ。最新の仮想化技術を概観してみよう |
|
特集:仮想OS「User Mode Linux」活用法 技術解説からカーネルカスタマイズまで Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説 |
|
特集:仮想化技術の大本命「Xen」を使ってみよう インストール & Debian環境構築編 高いパフォーマンスで本命の1つとなった仮想マシンモニタ「Xen」。日本語による情報が少ないXenを、実際に動かしてみよう |
|
特集:仮想化技術の大本命「Xen」を使ってみよう Xen対応カスタムカーネル構築編 Xen環境およびその上で動作する仮想マシン用カーネルを自分で構築しよう。これにより、自由にカスタマイズしたカーネルを利用できる |
|
特集:IPv6、UML、セキュリティ機能の統合 全貌を現したLinuxカーネル2.6[第4章] 今回は、これまでに紹介し切れなかった機能を一気に紹介する。これを読めば、カーネル2.6の正式リリースが楽しみになるだろう |
|
Linux Squareプロダクトレビュー VMware Workstation 4 PC/AT互換機エミュレータとして不動の地位を築いたVMware。その新バージョンがリリースされた。新機能を早速試してみよう |
|
古くて新しい「サーバ仮想化技術」の行方 サーバ仮想化を実現するための技術がソフトウェア、ハードウェアの両面で出そろってきた。ハイパーバイザーのさらなる高速化に向けた動きを紹介する |
|
Linux Squareフォーラム全記事インデックス |
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。
|
|