lxc を使って Plamo-64 on Plamo-64
64bit の Plamo の開発が進んでいますが,この開発環境を lxc 上で動かしてみたらどうだろう? ということでやってみました.基本は http://plamo.linet.gr.jp/drupal6/node/151 の P-Plamo64 環境をコピーして作った chroot 環境.
Plamo の場合,結構起動の rc スクリプトの中でベタに色々やっているので,その辺りを軒並みコメントアウトする必要があります.
chroot 環境は lxc デフォルトの /var/lib/lxc 以下に plamo64/rootfs としてあるものとします.
デバイスファイルの作成
# cd /var/lib/lxc/plamo64/rootfs/dev # mknod -m 666 null c 1 3 # mknod -m 666 zero c 1 5 # mknod -m 666 random c 1 8 # mknod -m 666 urandom c 1 9 # mkdir -m 755 pts # mkdir -m 1777 shm # mknod -m 666 tty c 5 0 # mknod -m 600 console c 5 1 # mknod -m 666 tty0 c 4 0 # mknod -m 666 tty1 c 4 1 # mknod -m 666 tty2 c 4 2 # mknod -m 666 tty3 c 4 3 # mknod -m 666 tty4 c 4 4 # mknod -m 666 full c 1 7 # mknod -m 600 initctl p # mknod -m 666 ptmx c 5 2
/etc/inittab
これはいつも通り tty の設定と,foregroud で lxc-start した時にコンソールログイン画面出したければ console の設定を追加.
# diff -u /etc/inittab etc/inittab --- /etc/inittab 1998-01-08 05:58:24.000000000 +0900 +++ etc/inittab 2010-11-18 20:56:22.000000000 +0900 @@ -45,12 +45,11 @@ # # Note: for 'agetty' you use linespeed, line. # for 'getty_ps' you use line, linespeed and also use 'gettydefs' +1:1235:respawn:/sbin/agetty 38400 console c1:1235:respawn:/sbin/agetty 38400 tty1 linux c2:1235:respawn:/sbin/agetty 38400 tty2 linux c3:1235:respawn:/sbin/agetty 38400 tty3 linux c4:1235:respawn:/sbin/agetty 38400 tty4 linux -c5:1235:respawn:/sbin/agetty 38400 tty5 linux -c6:12345:respawn:/sbin/agetty 38400 tty6 linux # Serial lines #s1:12345:respawn:/sbin/agetty 19200 ttyS0 vt100
/etc/rc.d/rc.S
diff の結果が 300 行近くなる程度に削るので,載せきれません.^^;
/etc/rc.d/rc.M
こちらはとりあえず alsa 関係の処理を止めました.(これが正解かはわからない)
config
設定ファイル,/var/lib/lxc/plamo64/config ファイルです.debian とかのファイルそのまま.
lxc.tty = 4 lxc.pts = 1024 lxc.rootfs = /var/lib/lxc/plamo64/rootfs lxc.cgroup.devices.deny = a # /dev/null and zero lxc.cgroup.devices.allow = c 1:3 rwm lxc.cgroup.devices.allow = c 1:5 rwm # consoles lxc.cgroup.devices.allow = c 5:1 rwm lxc.cgroup.devices.allow = c 5:0 rwm lxc.cgroup.devices.allow = c 4:0 rwm lxc.cgroup.devices.allow = c 4:1 rwm # /dev/{,u}random lxc.cgroup.devices.allow = c 1:9 rwm lxc.cgroup.devices.allow = c 1:8 rwm lxc.cgroup.devices.allow = c 136:* rwm lxc.cgroup.devices.allow = c 5:2 rwm # rtc lxc.cgroup.devices.allow = c 254:0 rwm # mounts point lxc.mount.entry=proc /var/lib/lxc/plamo64/rootfs/proc proc nodev,noexec,nosuid 0 0 lxc.mount.entry=devpts /var/lib/lxc/plamo64/rootfs/dev/pts devpts defaults 0 0 lxc.mount.entry=sysfs /var/lib/lxc/plamo64/rootfs/sys sysfs defaults 0 0 lxc.mount.entry=tmpfs /var/lib/lxc/plamo64/rootfs/tmp tmpfs defaults 0 0 lxc.utsname = plamo64 lxc.network.type = veth lxc.network.flags = up