テクノロイド

コンピュータやゲーム他、色々日々思ったことをつづっていきます。

LXC-to-LXDは諦めlxd-p2cにしたのだが・・・

2018-09-29 12:45:14 | LXC/LXD,コンテナ,snaps
LXC-to-LXDしたいのだがの続き

LXCで動いているコンテナを別サーバのLXDに移行したいのだが、lxc-to-lxdはLXCとLXDが同じサーバで動いている必要があるみたい。
やりたいのはLXCを動かしてるPCを(LXCをやめて)別な用途で使うことなので、これではちょっと使えない。
なので今度は、lxd-p2c(実環境からコンテナへのマイグレーション)をLXCコンテナ内で使えばLXD環境に移せるのでは?と思った。

lxc-to-lxdは、Ubuntu18.04のlxd-toolsパッケージに入っていたんだが、lxd-p2cが無かったんで結局goを使ってビルドする必要があった。なのでUbuntu18.04なLXDコンテナにgoを入れてビルドした。
# apt install golang-go
# go version
go version go1.10.1 linux/amd64
# go get -v -x github.com/lxc/lxd/lxd-p2c
# cd go/bin
# scp ./lxd-p2c otherPC.local:

LXCのコンテナ内へlxd-p2cを転送して実行してみた。
$ ./lxd-p2c
Description:
Physical to container migration tool
(略)

動くようなので、rootアカウントで実行
# ~ubuntu/lxd-p2c
Failed to mark / private: Permission denied
# ls -l ~ubuntu/lxd-p2c
-rwxr-xr-x 1 ubuntu ubuntu 13620760 9月 29 12:29 /home/ubuntu/lxd-p2c

ユーザー環境だと動くのにrootだと動かないとは初めての経験!?
エラーメッセージでググるがこれといった情報にヒットしないのでお手上げ。コンテナは実環境じゃないからとしか言えないか。

というわけで、素直にLXCでコンテナのイメージを作成してLXDでそのイメージをインポートするしかなさそう。無駄な時間を費やしたな、とほほ・・・。

追記)
そういえばLXC1.0だとイメージなんてないじゃん。LXC on LXDしてみるか。以前失敗した記憶があるんだが。
やってみたが、やはりCannot mknod: Operation not permittedでLXCコンテナが作られない(T_T)。

ググッてヒントを見つけた。どうやらこれが原因みたいだ。
> On 2015-07-01 17:22, Janjaap Bos wrote:
>>
>> You cannot create devices from the container. You need to create them
>> beforehand outside rootfs and bind mount them in the container config.
コンテナから作れないから外で作ってバインドマウントしろとある。めんどくさ。

なんて思っていたら以前privilegedっていうオプションあったなと思いだした。
これだった。security.privileged trueでやってみたらLXCコンテナ作れた。

しかし案の定動かずorz。
root@cond:~# lxc-ls -f
NAME STATE IPV4 IPV6 AUTOSTART
----------------------------------------
lxconlxd STOPPED - - NO
root@cond:~# lxc-start -n lxconlxd
lxc-start: cgfs.c: cgfs_init: 2335 cgroupfs failed to detect cgroup metadata
lxc-start: start.c: lxc_spawn: 903 failed initializing cgroup support
lxc-start: start.c: __lxc_start: 1149 failed to spawn 'lxconlxd'
lxc-start: lxc_start.c: main: 341 The container failed to start.
lxc-start: lxc_start.c: main: 345 Additional information can be obtained by setting the --logfile and --logpriority options.

エラーメッセージでググったらcgroupfs-mountパッケージを入れたら動いたというのでやってみたがobsoleteだった。
root@cond:~# apt-get install cgroupfs-mount
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package cgroupfs-mount is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'cgroupfs-mount' has no installation candidate

LXDとXephyr

2018-09-25 04:47:21 | LXC/LXD,コンテナ,snaps
ssh経由ではないLXDコンテナからGUIアプリを起動する方法では日本語入力ができなかったので、デスクトップ環境まで立ち上げたいと思った。
前回の参考サイトを見ていたら、セキュリティ対策的にXephyrを使うという話があったので、XephyrでLXD用スクリーンを立ち上げてコンテナ内からDisplayManagerを起動すればいいのかな?と思いまずはXephyrのテスト。
何故かうまく表示させられないのだが?と悪戦苦闘してたんだが、「現在の X サーバの実装では(デフォルトで)TCPポートをlistenしません。Unixドメインソケットでローカルの Xクライアントとだけ通信します。」とのことで、TCPポートをlistenさせる必要があった。

host$ Xephyr :1 -ac -listen tcp -screen 1000x600 &
[1] 28460
host$ lxc exec u16mate bash
root@u16mate:~# xeyes -display 10.49.54.1:1
でうまくいった。(※とりあえずxeyesを表示できた。)

今ココ

追記)
LXDのバージョンが上がってるからなのか、GUIプロファイルを追加して日本語入力できるようになったので、こっちは中断とする。Xephyrは面白そうなんで、いずれまた調査したい。
※GUIプロファイルで日本語入力できなかったのは、日本語環境(locale)をちゃんと構築してなかったせいだった。

追記2)
中断すると書き込んで2日くらいしか立ってないが、androidのtermuxを調べてたらstartlxdeでLXDEが起動できるのがわかったので続きをやってみた。

TCP経由でやるのは邪道な気がしたので、guiプロファイルに習ってhost側でXephiyr起動後にコンテナgui16の設定に下記を追加。(lxdeをインストール済みとする)
host$ Xephyr :1 -screen 1000x800 &
host$ lxc config device add gui16 X1 disk source=/tmp/.X11-unix/X1 path=/tmp/.X11-unix/X1
host$ lxc exec gui16 -- sudo -u ubuntu -i
ubuntu@gui16:~$ DISPLAY=:1 startlxde
何故かエラーダイアログが出るが、OKをクリックしたらばっちり動いた(^_^)v。
すごい不思議な感じでおもしろい。いやVNCとかxrdpとかでも見た目同じだけどさ。


WindowsでAndroidアプリが使えるBlueStacks 4

2018-09-22 01:42:55 | アプリ・ソフト
WindowsでAndroidアプリが使えるBlueStacks 4が正式リリースされたそうで。
AndroidアプリはWindowsタブレットと相性良さそう。というかWindowsタブレットの救世主か!?
AtomなWindowsタブレットでも使えるのかな。BlueStacks 4の動作環境見ると動いても良さそう。

今年0円でゲットしたGalaxyS8もほとんど5分間無料の電話にしか使ってない状況なんで、使いみちはほとんどないんだけど、WindowsタブレットのGPSがAndroidアプリで有効なら使いたいなあ。
なんたって無料で使えるナビアプリなんてWindowsアプリには無いからなあ。ナビアプリを使いたい、ただそれだけだったりする。いやAndroidタブレットも持ってるんで、単にWindowsタブレットにせっかくGPSが内蔵されてるんで使ってあげたいってだけか。

カメラ系アプリとかも動くのかな?音声検索は?あ、興味が湧いてきた。


LXC-to-LXDしたいのだがe.t.c.

2018-09-19 01:57:31 | LXC/LXD,コンテナ,snaps

WDP121にsnap版LXDをインストールしてみたらバージョン3.5が入ったではないか。2,3日前にUbuntu14.04に入れた時には3.4だったのだが。それにしても、Ubuntu14.04でも最新のLXDが入るなんてsnapはグレートだぜ。今後snap版がメインになるってのも歓迎だぜ。

というわけで、これまでUbuntu14.04上でLXCのコンテナで動かしてたのをLXDに移行(マイグレーション)したいので、それ用のツールlxc-to-lxdというのがあるので使いたい。
しかし、どうやって使ったらいいか情報が見つからないではないか。コマンド名がベタすぎてうまく引っかからない。困ったもんだ、トホホ。
lxd-p2c(実環境からコンテナへのマイグレーション)なら動画があってわかりやすいのに。

Ubuntu18.04でlxc-to-lxdとコマンド入力すると「lxd-toolsをインストールしろ」と出るんで、Ubuntu14.04でインストールしてみたがlxc-to-lxdは入ってないし、snap版はない。
公式サイトを見るとGO言語で書きなおしたとあるではないか。おいおい、GOなんて使ったことないし、どうやってビルドすりゃあいいんだよって感じ。

とりあえずlxc-to-lxdよりは情報があるlxd-p2cをチェック。
go get -v -x github.com/lxc/lxd/lxd-p2c
とやればいいらしいのだがエラー。
エラーメッセージでググるとgoのバージョンが古すぎるようだ。
なのでtrusty-backportsにあったv1.6をインストールしたが、それでもエラー。
エラーメッセージでググるとv1.7以降じゃないと駄目とのこと。ぉぃぉぃ。

んでlxd-p2cでググった先をよくみると、「スタティックリンクしてるから他の環境から持ってきても動くよ」とのこと。あちゃ〜、今までの苦労は!?
Ubuntu18.04でlxd-toolsをインストールして、lxc-to-lxdをUbuntu14.04に持ってきたら動くようだ。

~$ ./lxc-to-lxd
usage: lxc-to-lxd [-h] [--dry-run] [--debug] [--all] [--delete]
[--move-rootfs] [--lxcpath LXCPATH] [--lxdpath LXDPATH]
[CONTAINER [CONTAINER ...]]
lxc-to-lxd: error: You must be root to run this tool
~# ./lxc-to-lxd containername
LXD isn't running.

あちゃ〜、やっぱしLXDも動いてなきゃ駄目なんだ。動かしたいのは容量が切迫してるPCだったのに。
というかLXCv1.xとLXDは共存できるのか?
lxc-to-lxdを使うのはあきらめて、lxd-p2cの実演動画にあるようにコンテナ内を実環境に見立てて、lxd-p2cで他のLXDホストに移行した方がいいかも。

注:LXD3.3からlxc-to-lxdがgo言語で描き直しされて、lxd-p2cと同様にコンテナを転送できるようになってた。上は古いlxc-to-lxdの話。

WDP121にUbuntu18.04を入れる

2018-09-19 01:07:26 | Ubuntu Linux
WDP083でUbuntuがほぼ完璧に動くようになったので気を良くして、同様にWDP121にUbuntu18.04をインストールした。のだが、最後にGRUBのインストールに失敗。
EFIパーティションが作成できなかったのか?と思ったが問題ないようだ。そういえばこれは64bitWindowsが載ってたからEFIが64bitなせいかも?と思ったがインストーラにはちゃんと64bit版のブーター(?)も入ってる。

ググったら、Ubuntu標準のインストーラでもトラブってたようだ(過去形)。ネットに接続していたら失敗するんでネット接続なしでインストールするとよいとのことだが、実はWindowsのbroadcom43455ドライバを保存しとくの忘れてたままサクッとWindowsを消したので、WiFi無し(ネット無し)でインストールしたんだがなあ。
とりあえず2回くらい失敗してから、USBのLANアダプタを付けてネット接続してインストールしたら無事成功した。なんなんだ。

そしてSG116jの4345r6nvram.txtを使えばWiFiも使えるようになるかな?なんて思っていたが、ググったらbrcmfmac43455-sdio.txtを発見したのでダウンロードしてWiFiが使えるようになった。
$ wget https://github.com/khadas/android_hardware_amlogic_wifi/raw/b6709758755568e4a0ff6e80993be0fc64c77fb9/bcm_ampak/config/6255/nvram.txt
$ sudo cp nvram.txt /lib/firmware/brcm/brcmfmac43455-sdio.txt

タッチパネルとサウンドが駄目。サウンドは設定を見ると一見ドライバがあるようなんだが音が出ない。WDP083と同様にblacklistを作成すると逆にドライバが表示されなくなった。

実はストレージ64GBのSG116jにWindowsとの共存でUbuntuを入れようと、インストーラを立ち上げた時に入力が引っかかる(というか一時停止する)現象があったのでちょっとインストールに躊躇してて、CPUが同じCherryTrailのWDP121でも同じ現象だったので、まずはこちらで試したってところ。インストールすると謎現象は起きないようだ。

ラズパイでARM版の(フル)Windowsが動くようだ

2018-09-19 00:52:59 | パソコン/マイコン全般
最近見てなかった某チャンネルのラズパイスレを見てたら、ラズパイにARM版の(フル)Windowsをインストールできるようになったという話題が出てた。実用レベルじゃないだろうけど面白い。
ツベの動画:How to install Windows 10 WoA (not iot) on raspberry pi 3

個人的にはメモリ2GBのAtomタブレットやスティックを、WindowsからUbuntuLinuxに入れ替えているくらいなんで、メモリ1GB以下のラズパイで動いてもなと思わんでもないけど。

そういえば、最近Windows95がsnapやAppleWatchで動いたとかもあったな。


LXDのWebUI管理ツールが開発されてたんで使ってみた

2018-09-12 00:19:56 | LXC/LXD,コンテナ,snaps
LXDUI is a web UI for the native Linux container technology LXD/LXC
というLXDのWebUI管理ツールを発見してたんでインストールして使ってみた。

ドキュメント通りに実行
$ sudo apt install -y git build-essential libssl-dev python3-venv python3-dev zfsutils-linux bridge-utils
$ git clone https://github.com/AdaptiveScale/lxdui.git
$ cd lxdui/
~/lxdui$ python3 setup.py install
Traceback (most recent call last):
File "setup.py", line 2, in <module>
from setuptools import setup, find_packages
ModuleNotFoundError: No module named 'setuptools'
~/lxdui$

いきなりエラーっぽい、Pythonなんて初めて使うんですけどお。Python3とか互換性がなくて情報得るのもややこしいんですけどお。
とりあえずDebianの方法を見つけたんで実行
~/lxdui$ sudo apt install python3-setuptools

~/lxdui$ python3 setup.py install
running install
error: can't create or remove files in install directory

The following error occurred while trying to add or remove files in the
installation directory:

[Errno 13] Permission denied: '/usr/local/lib/python3.6/dist-packages/test-easy-install-19897.write-test'
(以下略)

パーミッションがねえよって言ってんだけどお。sudoつければいいのか、Python3のセットアップが足りないのかわかんねえんだけどお。

setuptoolsとやらでセットアップが必要なのかとググるけどわからないので、結局sudoで実行
~/lxdui$ sudo python3 setup.py install
running install
running bdist_egg
running egg_info
creating LXDUI.egg-info
(以下略)

どうやらインストールされたようだ。
LXDUI起動!
/lxdui$ python3 run.py start

するとFirefoxが悪いのかセットアップがうまく行ってないのか知らないが、GitHubにあるscreencastを見ると左上に小さく表示されているロゴが、トップにでっかくど〜んと鎮座して肝心のコンテナ表示/操作エリアがディスプレイに収まらずに下の方に隠れてしまっているではないか。う〜ん。

まあとりあえずコンテナの停止/起動やコピーや、imageのダウンロードなんかのコマンド入力が面倒くさい場合は便利かな。リモートでも見られるし。いきなりおかしい画面レイアウトを見ると、正常に動作するのか不安になるのだけれども、まあFirefoxのせいだと思うことにしよう。
コンテナをチェックしてからActionsにTerminalってあったんで選んでみたら、ブラウザにコンテナの端末画面が表示された。おぉすげえってlsと入力したらlが入力されずsのみ。何回かやっても同じ。いろんなアルファベットキーを押してたら、そのうちキー入力を受け付けなくなった・・・。
Chrome限定とかなのかな・・・。
とか言ってる途端にFirefoxのAddOnのVimVixenのせいなのに気付く。無効にしたら動作した。いやあ最初から疑うのはよくないね(汗;。
追記)
Firefoxを最大化したら画面レイアウトが正常になった。横幅が足りなかった状態だったようだ・・・。

LXDが3.0になってがんがん便利になってる

2018-09-05 00:55:00 | LXC/LXD,コンテナ,snaps
Ubuntu Weekly Recipe#532のLXDのコンテナからGPUを利用するを見たら、LXDのコンテナ内からホストのGPU,USB,NIC等が簡単に使えるようになったとあった。
そして、そのページの「パンくずリスト」のADMINISTRATOR STAGEをクリックすると丁度、「LXCで学ぶコンテナ入門」の記事があり、その記事から執筆者のブログへ飛ぶと「LXD コンテナに物理NICを直接与える」という記事でNICの場合の設定が書かれていた。
そこではNICが多数あった場合と書かれていたが、もしNIC(有線LAN)が1つしかなかったらどうなんの?ってことでやってみた。
すると見事にホスト上でNICが使えなくなり、外部からsshでコンテナ(のUbuntu)に接続できた。
コンテナを終了するとホストのNICが復活する。これは面白い。
ちょうどWiFiあるけど事実上使えないNC01U5でやってるのでホストにアクセスできなくなるけど、WiFiあれば普通にホスト上でもネットできるな。
何か便利に使えそう(具体的には思いついてないけど)。

で、本当はUbuntu14.04で動くGUIアプリが素人にも使えるように、画面(とUSB)までコンテナが奪って実はUbuntu18.04が動いてんだけど、見た目はUbuntu14.04(でシャットダウンすると18.04が使える)ってできるとありがたいと思ってるんだが、画面まで奪う方法はないんだろうか?
なんて必死にググりもせず思っていたんだが、いくや氏のツィートでHow to easily run graphics-accelerated GUI apps in LXD containers on your Ubuntu desktopという記事を知った。
上の方法でNICをコンテナが奪うとWiFiなかったらホスト上でコンテナのGUIアプリをssh接続で使えないなあ、なんて思っていたけどこれなら問題ないのかな?
(今deb版LXD入れてたのをsnap版LXDに切り替えようとしてるのだがすでに作ったコンテナの環境(/var/lib/lxd配下)をそのまま使うlxd initの設定がわからず停滞中・・・)

いくや氏のツィートで他にHow to use the X2Go remote desktop with LXD containersWindowsにUbuntuをインストール[Hyper-Vの使い方]を知った。

追記)
deb版からsnap版のLXDにした時に、何故か/usr/bin/lxcが残ってたので怪しい挙動になってわけわかめになってた・・・。snap版は/snap/bin/に配置され、コンテナ等は/var/snap/lxd/配下になるようだ。
そして非SSH方式で使おうと思ってたGUIアプリはIMが起動しないので日本語入力ができなかった。snap対応アプリでそういう問題があったりするようなのでsnap版のせいかも?と思い、deb版を入れなおしてやってみたがだめだった。う〜ん、残念。

追記2)
さっき(11/16)別のUbuntu18.04入れたPCにsnap版のLXDを入れてGUIプロファイルを追加して、export XMODIFIERS=@im=ibus;export GTK_IM_MODULE=ibusしてgnome-terminalを起動したら日本語入力できた。LXDのバージョンが上がってるからなのかどうかわからないができるようになって良かった。
追記3)
原因がようやくはっきりした。ssh接続の場合はXMODIFIERS,GTK_IM_MODULEの設定だけでいいが、guiプロファイルの場合はlocale環境をしっかり構築しないと駄目だった。LANG=ja_JP.UTF-8になってる状態でXMODIFIERS,GTK_IM_MODULEを設定しないと駄目で、これを設定した後でLANG=ja_JP.UTF-8にしても入力できないようだ。それで混乱して何が何だかわからなかったのか。コンテナ内にibus入れたりして、かなり時間を無那にしてショック。

Tracktion 7というDAWが無料になったらしい

2018-09-04 22:59:06 | Synth/MIDI
Tracktion 7という2年前に最新のDAWが無料になったらしい。これが何とWindows/MacOS/Linuxで動くとかスゲー。
Tracktion 7 Digital Audio Workstation is Now a Free Download

The system requirements for Linux are listed as:
Intel Core i5 2GHz Processor
4GB RAM (8GB Recommended)
さすがに元々有料の高機能ソフトだけあって要求スペックは高いな。