Xen用起動スクリプトの整備

カテゴリ:Xen 2.0の設定
日時:2005/03/19 18:39

Gentoo LinuxでXenを自動的に起動するには、ひと手間必要。

Xenをインストールすると、/etc/init.dに起動スクリプトがコピーされる。コマンドラインから実行するだけであれば問題ないのだが、これをrc-updateでランレベルに登録してもうまく動かない。Xen標準のスクリプトは、Gentoo Linuxのものと多少書式が異なるのである(例えば、/etc/init.d/xendにはstart()関数がないなど)。

全面的にスクリプトを書き直すことも可能だが、Xenがバージョンアップして起動スクリプトの内容が変わると、そのたびにGentoo Linux用に書き直さねばならず、面倒だ。そこで、/etc/init.d/xendおよびxendomainsはそのままとし、ランレベル登録用にごく単純なラッパーをかませることにする。 まずはxend用ラッパー。
#!/sbin/runscript

start() {
    echo "Starting xend"
    /etc/init.d/xend start
}

stop() {
    echo "Stopping xend"
    /etc/init.d/xend stop
}
という内容のファイルを/etc/init.d/xendaemonとして作成する。

xendomains用ラッパーは、
#!/sbin/runscript

depend() {
    after xend
}

start() {
    echo "Starting xendomains"
    /etc/init.d/xendomains start
}

stop() {
    echo "Stopping xendomains"
    /etc/init.d/xendomains stop
}
という内容で/etc/init.d/xendomainsetというファイル名にする。実はファイル名など何でもよいのだが。ebeginやstart-stop-daemonを使っていない手抜きだが、気にしない。そのうちどうにかするかも。

それぞれ、/etc/init.d/xendと/etc/init.d/xendomainsを引数つきで呼び出しているだけである。また、/etc/init.d/xendomainsetはdepend()を使ってxendよりも後に起動するようにしている。xendomainsはxendの機能を使うため、xendより先には起動できないのである。

この2つのファイルに実行権を与え、
# chmod +x /etc/init.d/xendaemon
# chmod +x /etc/init.d/xendomainset
デフォルトランレベルに登録する。
# rc-update add xendaemon default
# rc-update add xendomainset default
これでXenが自動的に起動する。

マシン起動時にドメインも起動したい場合は、/etc/xen/auto/にドメイン設定ファイルを入れておけばよい。
# mv /home/xen/ttylinux.conf /etc/xen/auto/
これでXen環境は一応完成。

Xenカーネルをソースからコンパイルしたり、ドメインをゼロから作成してみたりと、遊べる要素はまだまだいろいろある。