PaSoRi RC-S330購入。

年明けの目標 の一つの電子マネーに集約する件でANAのEdyカードを使い始めているが、チャージ用の端末があるのは普段の生活圏では新宿のマクド位しかないのと、クレジットカードでチャージできた方が便利&クレジットカードのポイントが貯まる(?)ので 1 、PaSoRiを購入した。クレジットカードの登録には2,3日かかるらしいので、今週末位からカードでチャージできるようになるかな、と。

これのためにWindowsを起動しないとアカンのは非常に不便だが、年賀状の印刷と同じように許容範囲とするか…。

1

マイルはJCBのワイドゴールドカードじゃないとダメだけどな。

lxcバージョンアップのメリット。

lxc-infoを実行するのに、root権限が必要無くなった!今まではsudoでわざわざやってたもんな。とりあえずそんだけ。

続々・lxcが起動しない。

新バージョンで作成したコンテナの設定ファイルがどこにあるのか見当がつかないので、findでやみくもに探すのも時間がかかるので、既存のコンテナのconfigのlxc.mountを削除して起動させてみたが、ダメだった。

で、とりあえず、既存のコンテナを起動させることを優先して、destroy, createを行った。destroy時にrootfsを削除しないこと、create時に既存の設定どおりにIPアドレスなどを指定し、rootfsを既存のrootfsのフルパスを指定することがポイント。

$ sudo bash lxc-debian-new destroy
What is the name for the container ? [debian] hoge
Shall I remove the rootfs [y/n] ? n
$ sudo bash lxc-debian-new create
What is the name for the container ? [debian] hoge
What hostname do you wish for this container ? [hoge]
What IP address do you wish for this container ? [172.20.0.21] 192.168.xxx.xxx
What is the gateway IP address ? [172.20.0.1] 192.168.xxx.yyy
What is the MTU size ? [1500]
Specify the location of the rootfs [./rootfs.hoge] /var/cache/lxc/debian/rootfs.hoge
Specify the location for an extra fstab file [(none)]
Generating locales (this might take a while)...
  ja_JP.EUC-JP... done
  ja_JP.UTF-8... done
Generation complete.
update-rc.d: using dependency based boot sequencing
update-rc.d: using dependency based boot sequencing
update-rc.d: using dependency based boot sequencing
Done.

You can run your container with the 'lxc-start -n hoge'

$ lxc-start -n hoge -d
$

これで無事起動できるようになった。

新しいコンテナは、/tmp下に一時ディレクトリを作るのだが、中身は特にない。lxc-stopかけてsegfaultを起こすと、このディレクトリが残ってしまうんだが。

$ ls -l /tmp/
合計 16
drwx------ 2 root  root  4096 2010-01-12 11:24 lxc-rFVrEH3
drwx------ 2 root  root  4096 2010-01-12 10:39 lxc-rKmMOYg

続・lxcが起動しない。

Upstreamのバージョンが0.6.3から0.6.4になったということで、先ほどlxc-debianで作成したコンテナが起動しなかったが、そもそもスクリプトの内容が変わっているのではないかと思い、確認してみたらやっぱり。

--- lxc-debian  2009-10-30 17:58:20.000000000 +0900
+++ lxc-debian-new      2010-01-12 10:15:14.000000000 +0900
@@ -136,7 +136,6 @@
 lxc.network.link = br0
 lxc.network.name = eth0
 lxc.network.mtu = $MTU
-lxc.mount = $TMPMNTFILE
 lxc.rootfs = $ROOTFS
 lxc.cgroup.devices.deny = a
 # /dev/null and zero
@@ -155,14 +154,17 @@
 # rtc
 lxc.cgroup.devices.allow = c 254:0 rwm
 EOF
+
+       if [ ! -z "$TMPMNTFILE" ]; then
+               cat $TMPMNTFILE >> $CONFFILE
+       fi
 }

 write_lxc_mounts() {

-    TMPMNTFILE=$(mktemp lxc.XXXXXXXXXX)
-
     if [ ! -z "$MNTFILE" ]; then
-       cp $MNTFILE $TMPMNTFILE
+       TMPMNTFILE=$(mktemp lxc.$NAME.XXXXXXXXXX)
+       sed -e 's/^\(.*\)/lxc.mount.entry=&/' $MNTFILE >$TMPMNTFILE
     fi
 }

新しいスクリプトでコンテナを作成しなおしてみたらあっさり起動した。旧バージョンで作成したコンテナと、新バージョンで作成したコンテナの違いは、/var/lib/lxc/ディレクトリ以下の構成が明らかに違う。新しい方は、configファイルしかない。

$ ls -l /var/lib/lxc/{hoge,foo}
/var/lib/lxc/foo:
合計 4
-rw-r--r-- 1 root root 683 2010-01-12 10:18 config

/var/lib/lxc/hoge:
合計 40
-rw-r--r-- 1 root root  283 2009-12-04 18:12 cgroup
-rw------- 1 root root  712 2009-12-04 18:12 config
-rw------- 1 root root   74 2009-12-04 18:12 fstab
-rw------- 1 root root    5 2010-01-04 09:23 init
drwxr-xr-x 3 root root 4096 2009-12-04 18:12 network
lrwxrwxrwx 1 root root   22 2010-01-04 09:23 nsgroup -> /var/local/cgroup/hoge
-rwxr-xr-x 1 root root    6 2009-12-04 18:12 pts
drwxr-xr-x 2 root root 4096 2009-12-04 18:12 rootfs
-rw------- 1 root root    7 2010-01-12 09:13 state
-rwxr-xr-x 1 root root    3 2009-12-04 18:12 tty
-rwxr-xr-x 1 root root    6 2009-12-04 18:12 utsname

configファイルの内容の違いは以下。lxc.mountパラメータが無くなっている。

$ sudo diff -u /var/lib/lxc/{hoge,foo}/config
--- /var/lib/lxc/hoge/config    2009-12-04 18:12:13.000000000 +0900
+++ /var/lib/lxc/foo/config     2010-01-12 10:18:34.000000000 +0900
@@ -1,4 +1,4 @@
-lxc.utsname = hoge
+lxc.utsname = foo
 lxc.tty = 4
 lxc.pts = 1024
 lxc.network.type = veth
@@ -6,8 +6,7 @@
 lxc.network.link = br0
 lxc.network.name = eth0
 lxc.network.mtu = 1500
-lxc.mount = lxc.QFWBT5fvhU
-lxc.rootfs = ./rootfs.hoge
+lxc.rootfs = ./rootfs.foo
 lxc.cgroup.devices.deny = a
 # /dev/null and zero
 lxc.cgroup.devices.allow = c 1:3 rwm

他のファイル、というか情報はどこへ行ったのか?

lxcが起動しない。

昨日のlxc 0.6.4-1へのアップデートのあと、別件でホスト毎リブートしたら、コンテナが起動しなくなってしまった。

$ sudo lxc-start -n mycontainer
lxc-start: No such file or directory - failed to use 'lxc.XXXXXXXXXX'
lxc-start: failed to setup the mounts for 'mycontainer'
lxc-start: failed to setup the container

調べてみたら、cgroupファイルシステムへのsymlinkが作成されてない。

$ ls -l /var/lib/lxc/mycontainer/nsgroup
lrwxrwxrwx 1 root root 21 2010-01-04 09:23 /var/lib/lxc/mycontainer/nsgroup -> /var/local/cgroup/mycontainer
$ ls -l /var/local/cgroup/mycontainer
$ ls -l /var/local/cgroup/web
ls: cannot access /var/local/cgroup/web: そのようなファイルやディレクトリはありません

既存のコンテナだけの問題なのかを確認するために、新しくコンテナを作成してみた。が、やっぱり駄目だった。

$ sudo ./lxc-debian create
(snip)
You can run your container with the 'lxc-start -n fuga'
$ sudo lxc-start -n fuga
lxc-start: No such file or directory - failed to use 'lxc.XXXXXXXXXX'
lxc-start: failed to setup the mounts for 'fuga'
lxc-start: failed to setup the container

Debianの変更履歴を確認してみると、

http://packages.debian.org/changelogs/pool/main/l/lxc/lxc_0.6.4-1/changelog

(0.6.4-1) unstable; urgency=low

  [ Stphane Graber ]
  * Upgrade standards-version to 3.8.3
  * Drop the copy of etc/* from rules as "etc" is no longer in the tarball

  [ Guido Trotter ]
  * New Upstream Version
  * Update libcap2-dev dependency to libcap-dev
  * Install upstream-built man pages via debian/lxc.manpages
  * Drop unneeded docbook-utils build dependency

 -- Guido Trotter <ultrotter@debian.org>  Sun, 10 Jan 2010 10:40:21 +0100

“New Upstream Version” とあるのが怪しいな…。見てみるか。