Gentoo Linux 2006.0 + Xen 3.0インストールメモ - Domain Uのインストール
かなり長い間放置していましたがDomain Uのインストールのメモ。とはいってもDomain UはDomain 0ほど問題はないので基本的にGentoo-ortage wikiにのっている方法でできます。以下はGentoo-portage wikiの抜粋日本語訳だと思ってください。
Domain Uのカーネルを作成
Processor type and features ---> [*] Enable Xen compatible kernel XEN ---> [ ] Privileged Guest (domain 0) [ ] Block-device backend driver [ ] Network-device backend driver [*] Block-device frontend driver [*] Network-device frontend driver [ ] Piplined transmitter (DANGEROUS) [*] Scrub memory before freeing it to Xen Processor Type (X86) --->
% make % cp vmlinuz /boot/vmlinuz-xenU-2.6.16.26-xen % cp .config /boot/vmlinuz-xenU-2.6.16.26-xen-config
Domain Uの作成
いろいろ方法があります。ビルド済みOSイメージが http://jailtime.org/ にたくさんあるので手軽にDomain Uを作成するにはもってこいでしょう。詳しくは http://gentoo-wiki.com/Xen を参照してください。他にも app-emulation/domi というのを使って簡単にDomain Uが作れるらしいです。これもGentoo-portage wikiを参照してください。今回はおそらく一番面倒くさい quickpkg を使った Gentoo Domain U の作成の方法を紹介します。これもGentoo-portage wikiにのっているので詳細はそちらを。
まずはequeryを使うためにapp-portage/gentoolkitをインストールしておきます。
% emerge app-portage/gentoolkit
そして現在のOSつまりDomain 0からバイナリパッケージを作ります。これをDomain 0につっこみますので出来上がるDomain UはDomain 0と事実同じ構成のシステムになります。
% for PKG in $(equery -q list | cut -d ' ' -f 3) do quickpkg =$PKG done
次は実際のOSイメージを置くストレージを確保しなくてはいけません。パフォーマンス的に言えばもちろん物理パーティションを確保してそこに置くのがベストなのですが、それはそれでいろいろと制限がでてきたりします。せっかく仮想化するのですからストレージも完全に仮想化するべきでしょう。ということでloopbackファイルを使って仮想ストレージを作ることにします。loopbackファイルにしておけば、例えばcpでDomain Uを簡単にコピーしたりいろいろなハックがしたりできちゃいます。欠点としてはloopbackファイルは事実二回の書き込みを要求するので物理パーティションに置くのと比べてパフォーマンスが劣ります。ただ、パフォーマンス低下は80%から90%で済むようです(もちろん使用するファイルシステムによりますが)。もといHDDへのアクセスは基本的に遅いものと認識されているので、パフォーマンスが低下したらかといって何か問題がでてくるということもまずないでしょう。
例として30GBのloopbackファイルをext3ファイルシステムとして作ります。
% dd if=/dev/zero of=/var/xen/domU-gentoo bs=1M seek=30719 count=1 % mke2fs -j -F /var/xen/domU-gentoo
では実際にDomain Uのシステムを構築していきましょう。
まずはloopbackファイルをマウントします。
% mkdir -p /mnt/gentoo % mount -o loop /var/xen/domU-gentoo /mnt/gentoo
次にswapファイルを作ります。
% dd if=/dev/zero of=/mnt/gentoo/swap bs=1M count=1024 % mkswap /mnt/gentoo/swap
stage3をダウンロードしてきて展開します。
% tar xvjpf stage3-x86-2006.0.tar.bz2 -C /mnt/gentoo
procとdevをマウントします。
% mount -t proc none /mnt/gentoo/proc % mount -o bind /dev /mnt/gentoo/dev
Domain 0のシステムファイルを可能かかぎりコピーしていきます。
% cp -av /usr/portage/ /mnt/gentoo/usr/ % cp /etc/make.conf /mnt/gentoo/etc/ % cp -R /etc/portage /mnt/gentoo/etc/ % cp /etc/resolve.conf /mnt/gentoo/etc/
先に作っておいたバイナリパッケージをDomain Uにインストールします。
% ROOT=/mnt/gentoo CONFIG_PROTECT=-/etc FEATURES=-collision-protect emerge --usepkg --emptytree system
Domain Uの環境に入って環境を整えます(初期状態はかなり不安定です)。
% chroot /mnt/gentoo /bin/bash % gcc-config 1 % env-update % source /etc/profile % nano /etc/make.conf /etc/conf.d/hostname /etc/conf.d/domainname \ /etc/conf.d/net /etc/conf.d/clock /etc/hosts /etc/rc.conf # etc % emerge --usepkg app-poratege/gentoolkit % revdep-rebuild --usepkg % perl-cleaner all --usepkg % python-updater
タイムゾーンがGMTになっていると思うのでそれも修正します。時間がおかしければついでに修正してください。
% cp /usr/share/zoneinfo/Japan /etc/localtime % date ... % hwclock --systohc
システムツールをインストールしておきましょう。
% emerge --usepkg net-misc/dhcp
必須ではありませんが一応emerge --syncしておきましょう。
% emerge --sync
最後にパスワードを設定してDomain Uの環境を抜けます。
% passwd % exit
これでDomain Uの作成は終わりました。次はXenから起動できるように設定を書きましょう。
/etc/xen/gentoo:
# general name = "gentoo"; memory = 256; # booting kernel = "/boot/vmlinuz-xenU-2.6.16.26-xen"; # virtual harddisk disk = [ "file:/var/xen/donU-gentoo,xvda,w" ]; root = "/dev/xvda ro"; # virtual network vif = [ "" ]; dhcp = "dhcp";
Domain Uの/etc/fstabを開いてswapfileとxvda(Xen block device)を使えるようにしましょう。
/mnt/gentoo/etc/fstab:
... /dev/xvda / ext3 noatime 0 1 /swap none swap sw 0 0 ...
これでDomain Uを起動できます。早速起動してみましょう。
% umount /mnt/gentoo % xm create gentoo -c
無事に動けばそのままDomain Uのコンソールに繋がるはずです。Domain 0に戻るにはCtrl + ]を押してください。再びそのDomain Uに接続するには、
% xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 768 1 r----- 1121.4 gentoo 1 256 1 ------ 6.2
で接続したいDomain UのIDを確認して、
% xm console 1
とコマンドしてください。以下にxmの簡単な使いかたを紹介します。詳しくはman xmを。
- console domain-id:
- domain-idのDomain Uのコンソールに接続します。
- create [-c] configfile:
- configfile(/etc/xen以下)のDomain Uを作成します。-cを指定しておけば起動次第ただちにそのコンソールに接続します。
- destroy domain-id:
- domain-idのDomain Uを強制的に終了します。
- list:
- Domain情報を出力します。
- mem-max domain-id mem:
- domain-idのDomain Uのメモリ最大量をmem MBに設定します。
- mem-set domain-id mem:
- domain-idのDomain Uのメモリ使用量をmem MBに設定します。通常はmem-maxを使います。
- pause domain-id:
- domain-idのDomain Uを一時停止します。
- unpause domain-id:
- pauseされているdomain-idのDomain Uを開始させます。
- reboot domain-id:
- domain-idのDomain Uを再起動します。Domain Uにrebootコマンドを出すだけです。
- save domain-id state-file:
- state-fileにdomain-idのDomain Uの情報を保存して終了します。
- restore state-file:
- saveで保存したstate-fileを用いてそのDomain Uを復元して実行開始します。
- shutdown domain-id:
- domain-idのDomain Uを終了します。
他にも以下のようなコマンドがあります。
- dmesg:
- Xenのdmesgを出力します。
- info:
- Xenの情報を出力します。
- log:
- Xenのログを出力します。
- top:
- Xen専用のtopです。
Domain UをVNCで操作する
さてこれで一応Domain Uを使うことができるようになりましたが、Xenの性質上、Domain UでXを起動できないのでデスクトップマシンとしては使いものになりません(そもそもXenでそういう使いかたをすること自体がおかしいのですが)。かろうじてDomain 0上ではXを起動できますのでDomain UにVNCサーバーをいれてDomain 0からVNCクライアントを使ってDomain Uを操作することにします。なお(これは予想ですが)Domain 0は極力ミニマムにしておくことがXenの秘訣で、そんな神聖な場所にXをいれるなんていうのは半分狂気の沙汰です。なので正しくXenを維持したいのであればDomain UにVNCサーバーを入れるだけにとどめて、他のマシンからそのVNCサーバーにアクセスするようにしましょう。ただVNCクライアントでの作業はかなりイライラしますので注意してください。ちなみに僕はDomain 0で全て作業しています(Xenいらないじゃん)。ではVNCの環境を作りましょう。
まずはDomain Uの方にVNCサーバーを入れます。
% xm console 1 % echo 'net-misc/vnc server' >> /etc/portage/package.use % emerge net-misc/vnc
次に起動するX Window Managerを~/.vnc/xstartupに書きます。X Window Managerはあらかじめインストールしておいてください。ちなみに僕はxfce4を使っています。
~/.vnc/xstartup:
#!/bin/sh exec xfce4-session
パスワードを設定します。
% vncpasswd
そしてvncserverを起動します。
% vncserer :1
なおDomain U起動時にvncserverを起動させたい場合は/etc/conf.d/local.startにvncserver :1を記述しておけばよいでしょう。
さてDomain UでVNCを起動できましたのでクライアントの設定をしましょう。上記したように基本的には他のマシンからVNCでアクセスすべきなのですが、お金ないのでDomain 0からアクセスします。以下はDomain 0にXをインストールした前提で話をすすめます。
% emerge vnc % vncviewer domU-host:1
これで一応はDomain Uに仮想的なXを置くことができました。使い勝手はかなり微妙ですが、我慢すれば何とかなるでしょう。Domain 0/UにVideoデバイスへのback/frontドライバが対応されればこのような苦労をすることがないのですが、それがそもそも可能なのかよくわかりませんし、可能であってもXenの思想に反しそうです。Xenを(マニアックな)デスクトップマシンとして使うにはまだまだ発展途上のようです。次回(があれば)はGentoo Domain UにとどまらずFedoraやBSDをいれてみたいと思います。
- Category(s)
- linux
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/matsuyama/Gentoo_Linux_2006_0_and_Xen_3_0_Installing_memo_Domain_U/tbping