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” とあるのが怪しいな…。見てみるか。