テクノロイド

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

LXDコンテナ内でSamba(というよりCIFS)

2023-04-02 02:21:02 | LXC/LXD,コンテナ,snaps
windowsのフォルダをマウントして利用するUbuntuで動くツールを使おうとしたら、Ubuntu22.04にはインストールできないことに気が付いた。うっかりしてた。
というわけで、Ubuntu20.04なLXDコンテナ作ってsamba(じゃなくてcifs-utils)を設定したのだがマウントできなかった。
ブリッジじゃ駄目か?とか思い、元々windowsとはクロスケーブル直結用のNICなのでコンテナのnicをphysicalにしようかと次のように設定したが駄目だった。
host$ lxc config device add ubuntu2004 winlan nic nictype=physical name=eth1 parent=enx4

次にホストでsambaして、そのフォルダをコンテナ内で見えるようにすればコンテナ内のツールが使えるんじゃないかと、コンテナとホストの間でUIDやGIDのマッピングを行った。

host$ echo "root:1000:1" | sudo tee -a /etc/subuid
host$ echo "root:1000:1" | sudo tee -a /etc/subgid
host$ echo -e "uid 1000 123\ngid 1000 1001" | lxc config set ubuntu2004 raw.idmap -

しかし、うまく行かなかった。sambaマウントしたフォルダ内がコンテナから見えなかった。

諦めてホストOSをインストールしなおそうかと思ったが、ググってこちらを参考にして設定したらコンテナ内でsambaできた。

host$ lxc config set ubuntu2004 raw.apparmor 'mount fstype=cifs,'
host$ lxc config set ubuntu2004 security.privileged true

(解決)Ubuntu18.04で動かしてたUbuntu16.04コンテナがUbuntu22.04で挙動不審

2022-08-29 02:52:01 | LXC/LXD,コンテナ,snaps
Ubuntu18.04で動かしてたUbuntu16.04コンテナをexportして、今回インストールしたUbuntu22.04にimportして使おうかと思ったらアドレスが割り振られない。
lxc shellでU16.04コンテナにログインしてdhclientコマンドを実行するとipアドレスは割り振られるんだがドメイン名が使えない。オプション何も無しでdhclientコマンドを叩いてるのがいけないかもしれないけども。

ps axしてもプロセスが5行くらいしか表示されない。
そしてlxc stopしても終了ないのでforceオプションを付けて強制終了するしかない。コンテナ内でshutdown(poweroff)コマンドも効かない。
試しにUbuntu22.04でlxc launch ubuntu:16.04してU16.04コンテナを作成すると普通にipアドレスも割り振られて問題なし。←追記)再びチャレンジしたら駄目だった。もしかして20.04で試してしまったかも。
カーネルのせいなのか、はたまたsystemdのせいなのか。

Ubuntu18.04からUbuntu20.04にバージョンアップしたPC環境でimportしてみたら普通に使えたので、その環境でコンテナimageを作成してそのイメージをU22.04に持っていってコンテナ作ってみたが駄目だった。
通常サポート切れのUbuntu16.04を使ってるのが悪いんで何も言えねー。

ちなみにUbuntu22.04上のlxcコマンドでTAB補完が効かずに地味に困ってる。これは何でだろ?

追記)
にっちもさっちもいかないので、20.04上の16.04コンテナ内でdo-release-upgradeを実行して18.04にして、さらにdo-release-upgradeを実行して20.04にした。普通に実行できてビックリしたけど、snapが動いたりするようになるので使わない方がいい。データを最新アプリ用に自動で更新してくれるので、thunderbirdの~/.thunderbirdデータを公式20.04イメージから作成したコンテナに持って行って展開するだけ(※別途、日本語環境とthunderbirdのインストールは必要)で使用できた。そしてその20.04コンテナを22.04に持ってきて完了。
thunderbirdからリンククリックでepiphanyブラウザが起動するようにインストールしてたんだけど、20.04コンテナだと何故かbwrap云々というエラーが出て使えない。仕方なくfirefoxを入れた。
TAB補完が効かない件はLXD関係者がsnap化担当者のせいって言っててそのままっぽい。とほほ。

追記2)
解決:cgroupのバージョン違いのせいだったようだ
Does Ubuntu 16.04 lxc container work on Ubuntu 22.04 lxd host?
GRUBに「systemd.unified_cgroup_hierarchy=false」を追加すると動く。

またLXDコンテナが起動しなくなってた

2022-01-28 11:52:41 | LXC/LXD,コンテナ,snaps
Ubuntu14.04のマシンでUbuntu18.04なLXDコンテナを動かしているんだが、今朝は起動しなかった。
ip aすると何故かlxdbr0じゃなくてlxcbr0がある。はて?今までそんなこと無かったのに何でやねん。
syslogを見るとlxcbr0があるからlxdbr0が作成できなかったっぽい。そしてlxdbr0がないのでコンテナが動かせないと。
多分、このlxcbr0は以前snap版じゃないLXDを動かしていた名残りのが突然動き出したんじゃないかなと思う。
そんなのどうやって消せばいいんだかわからなかったが、lxcbr0でググって設定ファイルが/etc/default/配下に有りそうと見てみると/etc/default/lxc-netってのがあったので覗くと、
USE_LXC_BRIDGE="true"
#
LXC_BRIDGE="lxcbr0"
LXC_ADDR="10.0.3.1"
LXC_NETMASK="255.255.255.0"
LXC_NETWORK="10.0.3.0/24"
LXC_DHCP_RANGE="10.0.3.2,10.0.3.254"
LXC_DHCP_MAX="253"

とあったんでUSE_LXC_BRIDGE="false"にして再起動したら直った。

なんで突然そんなことになったかわからないので再発が不安だったりする。

LXDコンテナのMACアドレスのリセット

2021-11-12 05:38:45 | LXC/LXD,コンテナ,snaps
1つのコンテナから複製で複数作ってたコンテナのいづれかを起動しようとすると、いつの頃からかMACアドレスが重複しているということで起動しなくなってた。
Error: Failed preparing container for start: Failed to start device "eth0": MAC address "xx:xx:xx:xx:xx:xx" already defined on another NIC

仕方なく手動でvolatile.eth0.hwaddrの値を変更して起動してたんだが、複数あるんで面倒くさい。
何とかならんのかと必死でググってやっと解決できた。

lxc config unset コンテナ名 volatile.eth0.hwaddr

消せば良きに計らってくれるんだったのか。

LXD4.13でコンテナが起動しなくなって困った件

2021-04-26 07:20:50 | LXC/LXD,コンテナ,snaps
snap版LXDを使っててLXDが勝手にバージョンアップするのだが、数日前にLXD4.13になりコンテナが起動しなくなって困った。
ip aするとlxdbr0がなくて、ログを見ると落ちるようになってた。
原因は/etc/default/grubでGRUB_CMDLINE_LINUX="ipv6.disable=1"を指定してIPv6を殺してたせいだったので、その指定をやめればとりあえずコンテナは動かせた。

根本的な解決じゃないので、lxdbr0が落ちないようにしたいのだが、その方法がわからなくて困ってた。
久々にググってようやくこの話題を発見できた。

$ lxc network edit lxdbr0
で以下の2行を追加
ipv6.address: none
ipv6.firewall: "false"

解決した。そのうちバグ修正されると思うけど。
まあそもそもLXDが勝手にバージョンアップされないようにしとけばいい話なんだけども。

LXDでVMとしてUbuntuデスクトップをインストール

2021-03-18 22:54:31 | LXC/LXD,コンテナ,snaps
LXDでWindowsのインストール方法がわかったので、同様にしてUbuntuデスクトップがインストールできるかやってみた。
ちょうどUSBメモリにlubuntu20.04のインストーラCDイメージをバックアップしてたのを発見したのでそれを使用する。windowsだとdistrobuilderでCDイメージの変換が必要だったけど、Ubuntuだとどうなのかわからないので使わないで試した。

$ lxc init u20vm --empty --vm -c security.secureboot=false
$ lxc config device override u20vm root size=16GiB
$ lxc config device add u20vm iso disk source=/media/user/USBflash/lubuntu-20.04-desktop-amd64.iso boot.priority=10

どんなだったか忘れかけてるが、多分問題なくインストールできたんじゃなかったかな。(思い出したら追記する。)
lubuntuなんでメモリはデフォの1GBでとりあえず動くし。
まあでもメモリあるならlxc config set u20vm limits.memory 4GiBしとくのが無難?

次にVGAコンソールの使い方がわかったんで、あらかじめ用意されているVMイメージでubuntu-desktopパッケージをインストールして動かしてみた。
すると18.04はデスクトップが使えたが、20.04は起動時にremote-viewerの画面が黒いまま固まったような感じになる。
違いはなんだろ?って比較していたら、20.04のVMイメージはカーネルがKVM用みたいでデスクトップ用途が考慮されてないからのようだった。なので標準カーネルをインストールしたり色々やってようやくデスクトップが使えるようになった。
そしてVMイメージでubuntu-desktopを入れた18.04と20.04は、インストーライメージでインストールしたのと違って解像度が変更できなかった。
色々と比較するとvirtio-gpuというモジュールが適用されてないのが原因だとわかった。そのモジュールはどのパッケージに含まれてんのかと思ったら、通常はlinux-modules-extra-なんちゃら-genericって名前のようだ。20.04のKVM用カーネルはそれが用意されていないようだ。

日本語化設定も必要だったり、かなりめんどくさいので素直にインストーラ(isoファイル)からインストールするのが良さげ。

LXDでVMとしてWindowsをインストール

2021-03-08 20:14:50 | LXC/LXD,コンテナ,snaps
久しぶりにUbuntu18.04上のLXDで、Ubuntu18.04なVM(VirtualMachine)を起動しようとしたらコケた。はて?
メッセージをよく見るとメモリ4GB指定してるけど、VMが1GBだから合わせろみたいなエラーメッセージだった。
lxc config show vmU18するとraw.qemu: -m 4Gを指定してたんだけど、limits.memory: 4GiBを追加したら動いた。いつの間にか仕様変わったのか。(指定したら起動できなくて使ってなかったかもしれず)

で、LXDでコンテナじゃなくVMを試そうとしたのは、How to run a Windows virtual machine on LXD on Linuxを見たから。
以前からLXDでWindowsを動かしているというのは目にしていたが、ようやくやり方がわかるぞと。

そして案の定一筋縄じゃ行かなかったので苦労した点をメモ。
まずdistrobuilderがエラーで動かない。メッセージ忘れたけど、apt install wimtoolsで動いた。
次に作成したVMをlxc start win10 --console=vgaやlxc console win10x --type=vgaでGUIのコンソール画面を開こうとしてもvirt-viewer/remote-viewerが無くて開けなくて、apt install virt-viewerでインストールが必要だった。
そしてようやく画面が開いたのだが、キー入力を受け付けてくれなかった。これが結構わけがわからなかったが、結果的にデスクトップ画面がUbuntu on Waylandで動いていたからだった。のでログアウトしてUbuntuでログインし直し。

ようやくまともにGUI画面が使えるようになったんだが、今度はdistrobuilderで変換かけたisoイメージをCDとしてVMが起動するはずなのに、読み込んでくれずにネットワークブートしようとする。
この状態になると操作ができなくなり、ウィンドウを閉じてもVMが終了してくれない。remote-viewerのメニュー画面の「Send key」からCtrl+Alt+Delを送信すると、VMが「瞬時に」再起動して結局同じ状態になるのでいじれない。
lxc stop win10で終了しようとしても終了できず、全く反応しない。
killしておかしなことになったら困るんでホストPCの再起動しようかな?と思っても、LXDは起動状態のコンテナ/VMはホストPCを再起動しても起動されてしまう。lxc config edit win10にboot.autostart: "false"を追加してホストを再起動しようかと思ったら、VMが起動中なので書き換えできないとなる。詰んだ。

色々試行錯誤した結果次のようにやれば終了できた。
1.端末でlxc stop win10を実行しておく(反応はない)。
2.lxc console win10x --type=vgaでGUI画面(remote-viewer)を起動し、メニュー画面の「Send key」からCtrl+Alt+Delを送信。
これでremote-viewerが閉じるとともにlxc stop win10が終了してVMが停止状態になる。
追記)UWR#679によると、「lxc stop -f win10」で強制(force)終了できるらしい。なるほど。

何とか終了のさせ方はわかったが、本題のWindowsのインストールはできないまま。
distrobuilderが日本版isoファイルに対応できないんだろうか?と英語版を使ってみたりしたが変わらない。
どうしようもないなとググると、先のURL記事の元になった情報発見。(←URL記事の冒頭にリンクがあった)
やり方が違うので、そのオリジナルのやり方をやってみたが駄目。とりあえずbios画面の入り方がわかったんでbios設定をいじったりもしたんだが駄目だった。

もう為す術ないんだけどと諦めかけていた時に偶然起動できた。あ〜〜〜〜〜って感じ。
なんと起動時にCD探しているメッセージが出ているところでESCキーを押したらCD(イメージのiso)から起動してくれた。日本版isoでも問題なかった。
良かった〜〜〜〜。(T_T)
これがbiosへの入るのにESCキー押すんで、たまたまそうなって発見できたという・・・。

なんで記事通りに進まずにこんだけハードルにぶち当たるんだよぉ。いつものことなんだけど、マジやばかった。
最後のハードルは画面の解像度の変え方だなあ。どうすんだろ、まだまだ先は長そう。とほほ・・・。
→ググってもわからなかったが、とりあえずbios設定で解像度は変えられた。OS起動後にGUIで自由に変更なんてできないが、とりあえずはこれでいっか。

LXD 4.7で困ったことが→直った

2020-10-28 17:47:27 | LXC/LXD,コンテナ,snaps
LXD 4.7でようやくカスタムストレージボリュームがバックアップできるようになったか、なんて思っていたんだが、それは置いといて困ったことが発生。

Ubuntu14.04のsnap版LXDでUbuntu16.04コンテナを動かしているんだが、設定を変更しようかとコンテナのbashを起動しようとしたらエラーが発生してコンテナにログインできない。

user@host:~$ lxc exec u16 bash
Error: TIOCGPTPEER required but not available
user@host:~$ lxc shell u16
Error: TIOCGPTPEER required but not available

簡単な作業をやるはずが、成す術なくてタイムリミットもあるんで焦りまくってパニックに。
ググったらカーネルをバージョンアップして対処したというのが見つかったが、こちらには時間がない。
しょうがないから、コンテナ停止してホスト上で直接コンテナ内のファイルを編集して起動して何とかなったから助かった。ふぅ。

LXDニュースを見ると、バグ修正と改良に"openpty: use TIOCGPTPEER if available"と書かれてるんだけど(←古いバージョンのだった)、思いっきりバグられてんですけども・・・。

そういえばlxc consoleなら上手くいったかな?
→ログインプロンプトは出たが、ユーザ名とパスワードが必要なので(パスワード設定してないから)ログインできず・・・

最近は、以前頻発してた"Failed to start dqlite server: raft_start()"エラーの方は出てないな。
dqliteからsqliteに戻っただかの影響か?

追記)
11/4現在、不具合は直ったようでホッとした。何かあった時どうしよう?って思ってたので。LXD/snap/カーネルのどれが悪かったかわからないが、手動では何もせずに直ってた。

ラズパイのLXDコンテナのUbuntuでdist-upgradeエラー

2020-09-24 02:15:57 | LXC/LXD,コンテナ,snaps
ラズパイOSのLXDでUbuntu18.04を入れてるんだが、dist-upgradeしたらエラーが出る。
bcm2709-rpi-2-b.dtbということで、コンテナなら関係ないと思うんで無視してもいいと思うんだけど、エラーを無くす方法がわからん。
とりあえずメモ。

root@ubpi:~# apt dist-upgrade
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
アップグレードパッケージを検出しています... 完了
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
1 個のパッケージが完全にインストールまたは削除されていません。
この操作後に追加で 0 B のディスク容量が消費されます。
続行しますか? [Y/n]
flash-kernel (3.98ubuntu11~18.04.2) を設定しています ...
Using DTB: bcm2709-rpi-2-b.dtb
Couldn't find DTB bcm2709-rpi-2-b.dtb on the following paths: /etc/flash-kernel
/dtbs /usr/lib/linux-image- /lib/firmware//device-tree/
Installing into /boot/dtbs//./bcm2709-rpi-2-b.dtb
cp: '' を stat できません: そのようなファイルやディレクトリはありません
dpkg: パッケージ flash-kernel の処理中にエラーが発生しました (--configure):
installed flash-kernel package post-installation script subprocess returned er
ror exit status 1
処理中にエラーが発生しました:
flash-kernel
E: Sub-process /usr/bin/dpkg returned an error code (1)
root@ubpi:~#

LXDコンテナ内でFirefox(X11ソフト)を動かす

2020-08-02 13:50:21 | LXC/LXD,コンテナ,snaps
ドンキNANOTEにwubi使ってUbuntu20.04を入れた際UbuntuStudioにも対応だったので、遊び用として考えてるデスクトップPCにwubiを使ってホビー用途なUbuntu Studioを入れて使うことにした。昔EeePC(と110Gc)にKXStudioは入れたことがあるが、Ubuntu Studioは初めてなのでwubiを使ってお試し気味に。
LMMSにデモソングが入ってないんだなと思ったが、今のKXStudioってそもそもLMMS入ってないのか?それともライブCDの部屋版KXStudioだったからかな。

wubiでUbuntuStudioということは、ルートがループバックマウントで、カーネルがLowLatencyな状況なんだが、LXDがちゃんと使えるかやや気になる。
host$ df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/loop0 31G 15G 15G 51% /
host$ uname -a
Linux ubuntu 5.4.0-42-lowlatency #46-Ubuntu SMP PREEMPT Fri Jul 10 01:43:58 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

そんな環境でLXDコンテナ使ってFirefox(X11ソフト)を動かそうかとやってみた。snap版LXDは普通にインストールできた。
LXDコンテナでX11ソフトを使うやり方は、ずっとこっちのguiプロファイルでやってたが、改良されたらしいこっちのx11プロファイルを使って見ようとしたら見事ハマってしまうという、やはりという展開だった・・・。

(※プロファイル中のX1はX0に変更)
host$ lxc launch ubuntu:18.04 --profile default --profile x11 u18g
起動しなくてlxc info --show-log local:u18gとメッセージが出るので確認したが、さっぱり要領を得ないメッセージ。
wubiでUbuntuStudioなだけに、そもそもコンテナが動くのか動かないかもよくわからないのでx11プロファイルなしで作成すると起動はできた。

ということで、そういえば最近コンテナでGUIアプリを動かす記事見たなと、プロファイルを使わずにコマンド入力でやると動いた。
動くんだということでx11プロファイルをよく確認するとnvidia.〜なんて設定が記述されているではないか。IntelCPUのGPU使ってるんで不要なのでlxc profile edit x11でコメントアウト。
host$ lxc start u18g
Error: Error occurred when starting proxy device: Error: Failed to listen on /home/ubuntu/pulse-native: listen unix /home/ubuntu/pulse-native: bind: no such file or directory
Try `lxc info --show-log u18g` for more info
またエラーが出たが、今度は /home/ubuntu/pulse-nativeが無いとわかりやすいメッセージ。
しかしどういうこと?と思いつつググったら、ここに回答があった。
「ubuntu:18.04イメージは初回起動時に/home/ubuntuが存在しない」から「images:ubuntu/bionicを使え」と。
えー、別の同じようなイメージをまたダウンロードしたくないからどうしよう。
なんて思ってたが、再びlxc start u18gして見たら起動するではないか。初回起動時にエラー出したけど/home/ubuntuは作成されてたようだ。ちゃんちゃん。

host$ lxc shell u18g
mesg: ttyname failed: No such device
root@u18g:~# su - ubuntu
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

ubuntu@u18g:~$ ls
pulse-native
ubuntu@u18g:~$ xlogo
xlogoがちゃんと表示された。

次にfirefoxを使えるようにする。
host$ lxc exec u18g -- sudo -iu ubuntu bash
ubuntu@u18g:~$ sudo apt install firefox
漢字が表示されないのでフォントをインストール(※文字化け修正のみで日本語化したわけではない)
ubuntu@u18g:~$ apt install fonts-noto
YouTubeで音が鳴らなかったので環境変数を登録
ubuntu@u18g:~$ export PULSE_SERVER=unix:/home/ubuntu/pulse-native
ubuntu@u18g:~$ echo export PULSE_SERVER=unix:/home/ubuntu/pulse-native >> .profile
後はfirefoxでデフォルトブラウザ設定をした。
ubuntu@u18g:~$ firefox
使えるようになった。