Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 10 Current »

1. host environmentを作る

2. Guest environmentを作る

  • 1. で作成したhost のrootfsにゲスト用ディレクトリを作成する
    • mkdir -p /lxc/guest
    • mkdir -p /lxc/cluster
  • 各ディレクトリにguest用にビルドしたrootfsを展開する
    • tar xf *****.tar.bz2 -C <SD>/lxc/guest
  • hostを起動、ログインの後に、下記コマンドでlxcからコンテナを作成する
    • lxc-create -n <Name> -t none
      • 例) lxc-create -n guest -t none
      • 例) lxc-create -n cluster -t none
    • すでに作成ずみのファイルが有る場合、--config=<ファイル名>で指定する
      • lxc-create -n guest --config=config.ivi -t none
  • /var/lib/lxc/ にディレクトリとconfigファイルが作成される。各configを書き換える(要見直し)

#lxc.net.0.type = empty
lxc.net.0.type = veth
lxc.net.0.flags = up
lxc.net.0.link = lxcbr0
lxc.net.0.hwaddr = fe:0d:e4:0:xx:xx
#lxc.net.0.veth.mode = bridge
lxc.net.0.ipv4.address = 10.0.3.10/24


lxc.rootfs.path = dir:/lxc/guest
lxc.signal.halt = SIGRTMIN+3
lxc.signal.reboot = SIGTERM
lxc.uts.name = "busybox"
lxc.tty.max = 1
lxc.pty.max = 1

lxc.cgroup.devices.allow = c *:* m
lxc.cgroup.devices.allow = b *:* m


lxc.mount.auto = cgroup:mixed proc:mixed sys:mixed
lxc.mount.entry = /sys/kernel/security sys/kernel/security none ro,bind,optional 0 0

lxc.cgroup.devices.allow = c 116:* rwm
lxc.cgroup.devices.allow = c 13:* rwm
lxc.cgroup.devices.allow = c 226:* rwm
lxc.mount.entry = /dev/snd dev/snd none bind,optional,create=dir

lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry = /dev/tty3 dev/tty3 none bind,optional,create=file
lxc.mount.entry = /dev/input dev/input none bind,optional,create=dir

lxc.mount.entry = /run/platform/display mnt/tmp none bind,optional,create=dir
lxc.environment = XDG_RUNTIME_DIR=/home/0/tmp
lxc.mount.entry = /run/udev/data run/udev/data none bind,optional,create=dir

lxc.mount.entry = /sys/fs/smackfs sys/fs/smackfs none bind 0 0
lxc.mount.entry = /etc/smack etc/smack none bind,optional,create=dir

  • 上記パラメータの説明
    • cgroup.devices.allow  c 13: * => inputデバイス(マウス、touch)で必要
    • cgourp.devices.allow c 226:* => GPU (/dev/dri)で画面表示のために必要
    • mount /dev/snd => soundドライバ
    • mount /dev/dri, /dev/tty3 , /dev/input  => weston起動、OpenGLESのために必要。
    • mount /run/platform/display => wayland ソケットをコンテナ内と共有するために使用。コンテナ内の/run/ディレクトリと共有できないため、tmpフォルダを使用。
    • mount /sys/fs/smackfs => smack動作のために必要
    • mount /etc/smack => guestで作成したsmack dataベースをホストで管理、共有するため
  •  weston起動のために、udevをホストからlxc/guestのディレクトリへコピーする。
    • cp /run/udev/data/c226\:1 /lxc/guest/home/0
    • cp /run/udev/data/c13\:* /lxc/guest/home/0
  • guest側のweston.serviceを修正する。
    • 以下を追加
      ExecStartPre=+/bin/mkdir -p /run/udev/data
      ExecStartPre=+/bin/cp /home/0/c13:64 /run/udev/data/
      ExecStartPre=+/bin/cp /home/0/c13:65 /run/udev/data/
      ExecStartPre=+/bin/cp /home/0/c13:66 /run/udev/data/

    • ttyをtty3に変更

      TTYPath=/dev/tty3
      UtmpIdentifier=tty3

      ExecStart=/usr/bin/weston --tty=3 --idle-time=0  --log=/run/platform/display/weston.log
  • USBメモリ内のMP3ファイル認識のため、udevをホストからlxc/guestへコピー
    • cp /run/udev/data/b8\:* /lxc/guest/home/0

3. Guest コンテナを起動する

  • lxc-startで起動、ログイン

    • lxc-start -n guest 
    • lxc-attach -n guest
  • USB(/dev/sda1)メモリデバイスをguestに追加 (ホストで実行)
    • lxc-device -n guest add /dev/sda1



II Wayland Backendを使って表示させる

1. Host 環境

  • westonをdrm-backendで起動する。その際にwayland socketの名前を変更しておく。コンテナ内で使用するwayland socketと競合させないため。
  • これにより、Guest側アプリは何も手を入れることなく動作可能


2. Guest 環境

  • westonをwayland-backendで起動する。接続先のwestonはホストで動作するwestonのため、上記で変更したwayland socketで接続する。
  • No labels