ラズパイ用標準OSのraspbianにsnapdが用意されてサクッとLXDがインストールできるようなのでやってみた。
snap/LXD関係ないけどデフォルトでsshログインできなくなっているので、/boot/sshを作成
する必要があった。
# touch /boot/ssh
snap版LXDをインストール
# apt install snapd
# snap install lxd
piユーザをlxdグループに追加
# gpasswd -a pi lxd ←
Debian系ならadduser pi lxdでいけるっぽい
再起動が手っ取り早いかな
pi@raspberrypi:~ $ lxc list
ERROR: ld.so: object '/usr/lib/arm-linux-gnueabihf/libarmmem.so' from /etc/ld.so.preload cannot be preloaded (cannot open shared object file): ignored.
エラーが出たのでググって対処
# rpi-update
再起動して正常になった
※直前にapt dist-upgradeしたのがいけなかったんだろうか?それとも再起動せずに再ログインで済ませてたからだったりして。
追記)再び発生したので
こっちの対策(/etc/ld.so.preloadでコメントアウト)をやってみた。
# lxd init
対話は省略するけどストレージはデフォルトのbtrfsで、容量はとりあえずデフォの倍の2GBを指定
pi@raspberrypi:~ $ lxc launch ubuntu u18 ← ubuntu:が正解だったっぽいけど実行できた
Creating u18
The local image 'ubuntu' couldn't be found, trying 'ubuntu:' instead.
Starting u18
pi@raspberrypi:~ $ lxc list
+------+---------+--------------------+----------------------------------------------+------------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+---------+--------------------+----------------------------------------------+------------+-----------+
| u18 | RUNNING | 10.0.246.40 (eth0) | fd42:f3f0:ddfa:a6c:216:3eff:fe9e:8892 (eth0) | PERSISTENT | |
+------+---------+--------------------+----------------------------------------------+------------+-----------+
pi@raspberrypi:~ $ lxc exec u18 bash
root@u18:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.2 LTS
Release: 18.04
Codename: bionic
raspbianコンテナが無いようなんで、raspbianの元になったDebianにするか、Ubuntuにするか迷ってとりあえずUbuntuにしてみた
ついでにUbuntuコンテナの日本語環境の設定(※以下ラズパイ上で試してないけど)
$ lxc exec u18 bash
root@u18:~# apt install -y language-pack-ja fonts-takao
E: Unable to locate package fonts-takao ← apt updateしてなかったのでエラー(※ちなみにtakaoフォントは必要ないけども)
root@u18:~# apt update
root@u18:~# apt dist-upgrade
root@u18:~# apt install -y language-pack-ja fonts-takao
root@u18:~# update-locale LANG=ja_JP.UTF-8
root@u18:~# timedatectl set-timezone Asia/Tokyo
root@u18:~# exit
$ lxc restart u18 ← 念の為コンテナを再起動
$ lxc exec u18 bash
root@u18:~# su - ubuntu ← ユーザーアカウトへ
ubuntu@u18:~$ date
2019年 3月 25日 月曜日 13:23:04 JST ← 成功!
日本語化したのでコンテナ名を変更してみる
$ lxc mv u18 u18j
Error: Renaming of running container not allowed ← コンテナ動作中だったのでエラー
$ lxc stop u18
$ lxc rename u18 u18j ← renameコマンドを知ったので使用
$ lxc start u18j
$ lxc list
| u18j | RUNNING | 10.196.59.105 (eth0) | fd42:d2b7:8cf1:c761:216:3eff:fe7b:ba18 (eth0) | PERSISTENT | |
パスワード入力無しでu18jコンテナのubuntuユーザにsshログインするには
$ ssh-keygen
$ lxc file push .ssh/id_rsa.pub u18j/home/ubuntu/.ssh/authorized_keys
$ ssh ubuntu@10.196.59.105
今後は日本語化したのを色々と使い回ししたいのでイメージ化
$ lxc publish u18j --alias Japanese18.04
Error: The container is currently running. Use --force to have it stopped and restarted ← 再びコンテナ動作中だったのでエラー
$ lxc stop u18j
$ lxc publish u18j --alias Japanese18.04
Container published with fingerprint: bd939ff07(略)
$ lxc image list
| Japanese18.04 | bd939ff07daf | no (略) 288.24MB | Mar 25, 2019 at 4:52am (UTC) |
作成したイメージを使ってUbuntuデスクトップ用コンテナを作成
$ lxc launch Japanese18.04 u18x
Creating u18x
Starting u18x
$ lxc exec u18x bash
root@u18x:~# apt install ubuntu-desktop
root@u18x:~# apt install xrdp ← デスクトップ環境にRDP接続できるようにする
root@u18x:~# passwd ubuntu ← RDP接続用にubuntuユーザーのパスワードを設定する
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
コンテナのアドレスをproxy設定して外部からRDP接続でu18xのデスクトップにアクセス可能にする
root@u18x:~# exit
$ lxc list
| u18x | RUNNING | 10.196.59.61 (eth0) | (略)
$ lxc config device add u18x rdp proxy listen=tcp:0.0.0.0:3389 connect=tcp:10.196.59.61:3389 bind=host
Device rdp added to u18x
これで他のUbuntuマシン等からReminna等を使ってu18xのデスクトップを使えるようになった。
ただし、接続してログイン後に最初に表示されるカラー設定はキャンセルしないと落ちるので注意。
ちなみにコマンド入力が面倒くさいので.bashrcにaliasを設定している。※alias使うとオプションのタブキー補完が効かないので注意
alias x='lxc'
alias xl='lxc list'
alias xe='lxc exec'
alias xs='lxc start'
alias xf='lxc stop'
alias xr='lxc restart'
xfのfはFINのfのつもり