NetBSD6/amd64 で Ubuntu を動かそう,おー。
pkgsrcの,sysutils/xenkernel42/ と sysutils/xentools42/ にて make install clean する。xenkernel42のときに 「……pkg/xen42-kernel/xen.gz こぴれ」とかメッセージが出るので 分かりやすい場所(以下の例では / )にコピーする。
/usr/src/sys/`uname -m`/conf の XEN3_DOM0 でカーネルを作る。 わかんなければ ftp://ftp.jp.netbsd.org/pub/NetBSD/NetBSD-6.1.3/amd64/binary/kernel/ とかから入手。gz のままでよいので / に置く。
/boot.cfg にこんな行を追加。
menu=Xen:load /netbsd-XEN3_DOM0.gz console=pc;multiboot /xen.gz dom0_mem=512M
netbsdカーネル起動に console=pc を足しておかないと dom0 のコンソールがなくなる。 シリアルコンソール化してあるときは console=com0 とか。
で,リブートして上記のmenuに該当する番号を選んで起動。 一発でうまく行ったらおめでとう。画面が消えちゃったりしたら xen.gz のかわりに xen-debug.gz を読ませたり,あるいは xen.gz(xen-debug.gz) のオプションに sync_console なんかを追加してエラーメッセージを見て なんとかしよう。
どっかからisoイメージを持って来よう。わしは ftp.jaist.ac.jp:/pub/Linux/ubuntu-jp-cdimage/releases/13.10 から ubuntu-ja-13.10-desktop-i386.iso を頂いた。藤枝さんいつもありがとう。
インストール用ディスクイメージは8GBでいいかな。 NetBSD6でも「穴空き(sparse)」ディスクで行けるのでこんな感じで。
dd if=/dev/zero of=ubuntu.img bs=1m seek=8191 count=1 ls -lFh -rw-r--r-- 1 root wheel 1.0G Nov 6 11:16 ubuntu-ja-13.10-desktop-i386.iso -rw-r--r-- 1 root wheel 8.0G Mar 2 10:28 ubuntu.img
ブリッジインタフェースを作っとく。 メインのNICがalc0だとするとこんな感じ。
ifconfig bridge0 create brconfig bridge0 add alc0 ifconfig bridge0 up
この作業を /etc/ifconfig.bridge0 に書いておける。こんな感じ。
create !brconfig $int add alc0 up
次回ホスト側起動時に有効になる。
さて,ホスト側準備OK。 domUへのUbuntuインストールはhvmで。confはこんなふう。
# ramdisk = "/opt/xen/kern/initrd.img" # kernel = "/opt/xen/kern/vmlinuz" kernel = "/opt/pkg/lib/xen/boot/hvmloader" memory = 1024 name = "ubuntu" vif = [ 'bridge=bridge0' ] builder = 'hvm' # root = '/dev/xvda1 rw' vcpus = 2 disk = [ 'file:/opt/xen/img/ubuntu.img,ioemu:hda,w', 'file:/opt/xen/img/ubuntu-ja-13.10-desktop-i386.iso,ioemu:hdc:cdrom,r' ] boot = 'dc' usb = 1 usbdevice = 'tablet' sdl = 0 vnc = 1 vncdisplay = 1
このファイルを ubuntu という名前で保存したならこんな風に起動。
xl create ubuntu
すかさず別の端末からvncで接続。ああそうそう,先に vncviewer を入れとかないとね。pkgsrc/net/tightvnc あたりをどうぞ。
vncviewer :1
起動直後の画面:
画面モードが切り替わるとvncviewer自体がバキっと落ちちゃうかもしれないが,
そしたら再度vncviewerを起動すればよろし。はい,Ubuntuデスクトップ
上がって来ました。
めちゃんこ,モッサリ動きます。 クリックの反応が悪くて,どこを何回クリックしたか分かんなくなっちゃう 程なので,できればカーソルキーでアイコンを選んでEnterで進む方が いいと思う。がんばって「Ubuntuのインストール」を起動してインストール。 20分くらいで入ったかな。遅いっちゃ遅いが, ホストシステムは1.6GHzなのでそれ考えるとまあ悪くない。 でも,常用したいかっつーと嫌なレベル。
「こんなん使い物にならんわー」と嘆くことなかれ。 あとで準仮想化モードにすればサクサクでっせ。
できたら一度 xl destroy ubuntu してから,ディスクから起動。 やりかた色々。xl create してすぐにvncviewerでつないで, F12を押して「Hard Disk」から起動を選ぶとか, configファイルの disk= から iso イメージの方を削るとか。
で,めでたく起動したらターミナルエミュレータを起動して sshd をenable しておく。あれ,どうやったっけ。 service ssh enable だったかな。ちゃうわ, apt-get -y install openssh-server か。
それから,次のステップの準仮想化に備えて, カーネルとinitrdファイルをdom0側にscpしておく。 ようはこんな風。まず,domU ubuntu内から,
scp /boot/{vmlinuz,initrd.img} dom0:
その後,dom0ホストで2つのファイルをしかるべき場所に移動しておく。 以下の例では /opt/xen/kern にした。
Para-Virtualizationモードに変更しませう。 設定用に起動したdomU-ubuntuを落とす。xl destroy ubuntu とかでも桶。 で,xenの定義ファイルを以下のように変更。
#kernel = "/opt/pkg/lib/xen/boot/hvmloader" kernel = "/opt/xen/kern/vmlinuz" ramdisk = "/opt/xen/kern/initrd.img" memory = 1024 name = "ubuntu" vif = [ 'bridge=bridge0' ] # builder = 'hvm' root = '/dev/xvda1 rw' vcpus = 2 disk = [ 'file:/opt/xen/img/ubuntu.img,ioemu:hda,w', 'file:/opt/xen/img/ubuntu-ja-13.10-desktop-i386.iso,ioemu:hdc:cdrom,r' ] boot = 'c' usb = 1 usbdevice = 'tablet' sdl = 0 vnc = 1 vncdisplay = 1
kernelとramdiskとboot変更, builder除去,root追加。 「root=」の行が大事ネ。これに気付かなくて随分苦労した。できたら起動。
xl create -c ubuntu
行ったー。
ちなみに root= の行がないとこんなエラーが出る。
Daemon running with PID 3452 [ 0.000000] Reserving virtual address space above 0xf5800000 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Initializing cgroup subsys cpuacct [ 0.000000] Linux version 3.11.0-12-generic (buildd@komainu) (gcc version 4.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu7) ) #19-Ubuntu SMP Wed Oct 9 16:12:00 UTC 2013 (Ubuntu 3.11.0-12.19-generic 3.11.3) [ 0.000000] KERNEL supported cpus: : :(中略) : mount: can't read '/etc/fstab': No such file or directory Begin: Running /scripts/local-bottom ... done. done. Begin: Running /scripts/init-bottom ... mount: mounting /dev on /root/dev failed: No such file or directory done. mount: mounting /sys on /root/sys failed: No such file or directory mount: mounting /proc on /root/proc failed: No such file or directory Target filesystem doesn't have requested /sbin/init. No init found. Try passing init= bootarg. BusyBox v1.20.2 (Ubuntu 1:1.20.0-8.1ubuntu1) built-in shell (ash) Enter 'help' for a list of built-in commands. (initramfs)
xlでコンソール画面を見てそのまま使えないのもあれだから コンソールにgetty走らせよう。えー,inittabじゃないのー? わかんねー
/etc/init のなかの tty6.conf とかの真似をして ttyなんちゃら.conf を作ればいいらしい。へえー。
cd /etc/init sed 's/tty6/hvc0/' tty6.conf > ttyHVC.conf
このあとどうしたらいいかワカラン。kill -1 1 じゃないのけ。 わかんねー。reboot。/dev/hvc0 がxenコンソール。
なんかさー,/etc/X11/Xsession がうまく走らないの。うちだけ? unityもよくわかんないし,xfce4でいいよねー。
apt-get -y install xfce4
lightdmってのもxdmcpうまく飛ばせなーい。なんでー? わからんときは xdm じゃ。
apt-get -y install xdm vi /etc/X11/xdm/xdm-config (DisplayManager.requestPortの行を ! でコメントアウト)
domU リブートして外からログインしてvncserverを起動。 1回目はダミーで起動して ~/.vnc/xstartup を作らせてから 以下のように変更。
#!/bin/sh case "$VNCDESKTOP" in query) ;; *) xrdb $HOME/.Xresources xsetroot -solid grey export XKL_XMODMAP_DISABLE=1 unset SESSION_MANAGER export GTK_IM_MODULE=scim XMODIFIERS=@im=SCIM scim & xfwm4 & xfce4-session ;; esac
あー,そうそう,なんかiBusがうまく起動できなかったのさ。 てのはおいといて,さらに ~/.xsession をこう。
export GTK_IM_MODULE=scim XMODIFIERS=@im=SCIM scim& xfce4-session
vncserverをいったんkillしてから再起動。
vncserver -name query -query localhost -geometry 1024x700
外から vncviewer で繋ぐ。
Firefoxとかgimpとか,親のNetBSDでの起動と大差ない速さで行ける。 ていうか,LibreOfficeとかは圧倒的にdomUのubuntuの方が速い。あれまあ。