Quantcast
Channel: mattintosh note
Viewing all articles
Browse latest Browse all 881

Arch Linux ARM on Raspberry Pi で LXC を使って Ubuntu を4台同時起動してみる

$
0
0

最近、仮想化で遊んでます。Docker 前から気になってるんだけど………LXC(LinuX Containers)です。

調べてみたら Raspberry Piでも使えるので早速トライ。

lxcDebian系の Ubuntuを入れるので debootstrapをインストール。Arch Linuxの場合は arch-install-scriptsが必要。

pacman -S lxc debootstrap 

/usr/share/lxc/templates以下はこんな感じ。

コンテナを作ってみる。

sudo lxc-create -t ubuntu -n ubuntu01

暫く放置しておく。最期にデフォルトユーザとパスワードが出力されるので覚えておく。

##
# The default user is 'ubuntu' with password 'ubuntu'!
# Use the 'sudo' command to run tasks as root in the container.
##

ネットワークが使えるように /var/lib/lxc/ubntu01/configを編集する。ホストの Arch Linux ARM では systemd-networkdで既に br0は作成してある。

# Template used to create this container: /usr/share/lxc/templates/lxc-ubuntu# Parameters passed to the template:# For additional config options, please look at lxc.container.conf(5)# Uncomment the following line to support nesting containers:#lxc.include = /usr/share/lxc/config/nesting.conf# (Be aware this has security implications)# Common configuration
lxc.include = /usr/share/lxc/config/ubuntu.common.conf

# Container specific configuration
lxc.rootfs = /var/lib/lxc/ubuntu01/rootfs
lxc.rootfs.backend = dir
lxc.utsname = ubuntu01
lxc.arch = armhf

# Network configuration#lxc.network.type = empty
lxc.network.type = veth
lxc.network.link = br0
lxc.network.flags = up
lxc.network.ipv4 = 192.168.1.123/24
lxc.network.ipv4.gateway = 192.168.1.1
lxc.network.name = eth0

コンテナを起動する。

sudo lxc-start-n ubuntu01

ssh -Xで直接コンテナに接続して glxgearsを動かしてみたところ。30 fps以上出るし母艦の Raspberry Piにも余力がまだある。

f:id:mattintosh4:20160911163303p:plain

lxc-copy -n ubuntu01 -N ubuntu0Xでコンテナを複製してみた。ご丁寧に rootfs/etc/hostnamerootfs/etc/hostsも書き換えてくれるらしい。(ただし、configlxc.network.ipv4は変わらない)

Ubuntuのコンテナを複製して4台同時起動してみた。

f:id:mattintosh4:20160911191855p:plain

Raspberry Pi 3 一台で複数の OS が起動できるし、ネットワークインターフェイスも個別に設定が出来るから5〜6人ならそれぞれに仮想マシンを用意させてあげることができそう。lxc-createしてから少し時間はかかるけど時間あるときに作っておいてあとは lxc-copyで複製すればいいかな。

なんか IP が2つ割り当たっていて NICの設定を間違っているような気がするので追々調整する…。


DHCPが有効だとこれだけでいいっぽい。固定 IP にしようとすると IP が二つ割り当てられるんだけどどう設定するんだろ。

lxc.network.type = macvlan
lxc.network.link = br0

↑コンテナの中の /etc/network/interfaces編集するだけだった…。

auto eth0
iface eth0 inet static
    address 192.168.1.123
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8 8.8.4.4 192.168.1.1

ホスト側から設定ファイル修正出来るのも簡単でいいなぁ…。

Arch Linuxの場合はインターフェイスが起動しないので lxc.network.flags = upにしとく。

lxc.network.type = macvlan
lxc.network.link = br0
lxc.network.flags = up

んで ipコマンド。まだやってないけど /etc/systemd/networkに設定ファイル置いておけば起動するだろう。

ip a add 192.168.1.234/24 dev eth0
ip r add default via 192.168.1.1

Viewing all articles
Browse latest Browse all 881

Trending Articles