1. host environmentを作る
- meta-container-host をgit clone します
- meta-virtualization, meta-container-host をbblayer.confに追加します。
- BBLAYERS =+ "\
${METADIR}/external/meta-virtualization \
${METADIR}/meta-container-host \
${METADIR}/meta-container-host/boardspecific/meta-container-renesas \
"
- BBLAYERS =+ "\
- local.confに追加
- DISTRO_FEATURES_append = " virtualization"
IMAGE_INSTALL_append = " lxc nano lxc-networking"
- DISTRO_FEATURES_append = " virtualization"
- もしくは下記を参照
https://jira.automotivelinux.org/browse/SPEC-2875?focusedCommentId=22410&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-22410 - rootfsを構築します。
- bitbake agl-demo-platform
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
- lxc-create -n <Name> -t none
- /var/lib/lxc/ にディレクトリとconfigファイルが作成される。各configを書き換える(要見直し)
#lxc.net.0.type = empty
lxc.cgroup.devices.allow = c 116:* rwm lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir lxc.mount.entry = /sys/fs/smackfs sys/fs/smackfs none bind 0 0 |
---|
- 上記パラメータの説明
- 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
ExecStart=/usr/bin/weston --tty=3 --idle-time=0 --log=/run/platform/display/weston.log
UtmpIdentifier=tty3
- 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で接続する。