読者です 読者をやめる 読者になる 読者になる

TenForward

技術ブログ。はてなダイアリーから移転しました

lxc を使って Plamo-64 on Plamo-64

Container

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 行近くなる程度に削るので,載せきれません.^^;

  • ハードウェア関係の処理削除
    • udev
    • fsck
    • mount
    • hwclock
  • カーネルモジュール関係の処理削除
  • バイスファイルの作成を削除

/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