気の向くままに辿るIT/ICT/IoT
ハードウェア

Raspberry Pi 400/Raspberry Pi OSにsnapをsnapからアプリをインストール

ホーム前へ次へ
Raspberry Piって?

Raspberry Pi 400/Raspberry Pi OSにsnapをsnapからアプリをインストール

Raspberry Pi 400/Raspberry Pi OSにsnapをsnapからアプリをインストール

2022/09/25
Raspberry Pi 400/Raspberry Pi OS/snapでLXDをインストールしてlxd init

 Raspberry Pi 400パソコン/Raspberry Pi OSにsnapdをインストールしてみた話。

 先日、ノートパソコンdynabookのDebian amd64でSnappy(snap/snapd)デビューしたものの、今や、ラズパイ400がメインと化しているので。

 snapは、依存関係を含めてパッケージ(独立・隔離・サンドボックス)として提供されるパッケージ管理システムで似たような仕組みのものにはFlatpakがあります。

 Wikipediaによれば、snap/Snappyとは、カノニカル(社)が設計・開発したソフトウェアデプロイメントシステムかつパッケージ管理システムとのこと。

 サンプルとしてsnapリポジトリからLinuxコンテナLXCをUbuntuを開発したCanonical社が改良、LXCを内包した(と思われる)LXDをインストールしてみました。

snapdのインストール

rpi64bit:~ $ sudo apt install snapd
rpi64bit:~ $ sudo snap install core
rpi64bit:~ $ sudo snap install snap-store
rpi64bit:~ $

 snapは、Raspberry Pi OSのリポジトリにsnapdパッケージとして存在するのでaptでインストールできます。

 そしてsnapでcoreをインストールしておくのがお作法のようです。

 また、パッケージのあるsnap-storeをインストール。

snapでLXDをインストール

rpi64bit:~ $ snap search lxd
lxd ...
rpi64bit:~ $ sudo snap install lxd
lxd 5.5-37534be from Canonical(checked) installed
rpi64bit:~ $

 存在を知っていれば、任意のアプリlxdを探してみて収録されており、かつ、ホストのアーキテクチャーに対応していれば結果表示されるのでインストールできます。

 LXDはLinuxホスト上で別のLinuxなどのOSを走らせることができる軽量なコンテナハイパーバイザー。

 LXD3.xまでは、コンテナを作ることができる、LXD4.0からは、コンテナの他、KVMのようにQEMUを使って仮想マシンも作ることができるようになり、また仮想の多重化(コンテナ内にVirutalBox入れたりとか)もできるとのこと。

 現在のバージョンは、5.5でした。

 尚、LXDのコンテナは、Dockerのように特定アプリケーション用ではなく、Linux環境そのもののコンテナと言って良さげ。

 SPICE経由などでリモートデスクトップ上にGUIデスクトップを表示させることは可能も基本、CLIベースのサーバを構成することが主眼の模様。

 また、現状、作成される仮想マシンは、コンテナと比べると制限があるようですが、将来的には、コンテナでも仮想マシンでも同じことができるようにするのが目標とのこと。

 ちなみに(checked)の部分は、実際には、レ点のような薄緑色のマークです。

rpi64bit:~ $ vi ~/.profile
...
/snap/bin:PATH
export PATH
...
rpi64bit:~ $ source ~/.profile
rpi64bit:~ $ sudo usermod -aG lxd USER
rpi64bit:~ $

 lxdは、/snapにインストールされるようなので/snap/binにPATHを通しました。

 また、グループlxd(あるはずですが、なければ作成)にUSERを追加しました。

 これを有効にすべく、一度、ログアウトし、再ログイン。

rpi64bit:~ $ sudo lxd init
...
rpi64bit:~ $

 lxd initで対話形式の初期設定。

 へ?なにそれ?yesだとどうでnoだとどうなるの?みたいなのもありますが、さておきます。

rpi64bit:~ $ lxc remote list
images ...
local (current) ...
ubuntu ...
ubuntu-daily ...
rpi64bit:~ $ lxc image list images: debian arm64 bullseye | grep -i container
...
debian/11 (7 more) ...
...
rpi64bit:~ $ lxc launch debian/11 debian-container
rpi64bit:~ $ lxc --help
...
rpi64bit:~ $ lxc list
debian-container ...
rpi64bit:~ $ lxc stop debian-container
rpi64bit:~ $ lxc start debian-container
rpi64bit:~ $ lxc info debian-container
...
rpi64bit:~ $

 コンテナや仮想マシンの管理には、lxcコマンドを使うとのこと。

 リモート先にあるコンテナのリストを確認(lxc remote list)すると初期段階では?、images、local (cuurent)、ubuntu、ubuntu dailyの4つがあることがわかります。

 例えば、imagesのリストを確認するとしたら、lxc image list images:で一覧が、: の右辺に一定のキーワードを指定すると絞り込みができ、そうでないものは、必要なら結果を見てからgrep等で。

 ダウンロードと実行は、lxc image launchで、あとは、lxc --helpを確認すると一通りできることがわかります(そんなに多くはありません)。

rpi64bit:~ $ lxc exec debian-container -- apt update
...
rpi64bit:~ $

 lxc execを使うとホストからコンテナに対してコマンドを送ることができました。

 lxc file pullやlxc file pushでコンテナから、またはコンテナにファイルを渡すこともできるようです。

rpi64bit:~ $ lxc exec debian-container -- /bin/bash
root@debian-container:~# exit
rpi64bit:~ $

 コンテナにログインするには、同じく、lxc execでシェルを起動すれば良いようです。

 抜けるには、exit+[Enter]か、[Ctrl]+[d]。

 コンテナ、かつ、CLIということもあってか、ホストのCPUもRAMも、使った分だけということなのかディスクも、ほとんど消費していないようです。

 その辺り含め、他の仮想化とは違って、なかなか、興味深いですね。

 imagesには、最新の面白いディストロもある一方、種類が、やや少ない気もしますが、そこは、さておきます。

 何れにせよ、ここでは、この辺までということで。

2022/10/06

 LXDによる仮想マシン作成機能としてPC/Debian bullseye amd64/snap/LXDの仮想マシンにWindows 10 x86_64をインストールしてみました。

 ARM版Windows 10/Windows 11のインストーラISOは現時点では入手できない模様、Windows 11 Insider Program版はARM版もHyper-V用仮想マシンであり、Raspberry Pi 400/KVMでも試してはみましたが、起動させることができずじまい。

 そもそもLXDにおけるqemuの使用はホストアーキテクチャー縛りがあるっぽい。

 仮にできたとしてもarm64 Raspberry Pi 400/Raspberry Pi OS/KVMでWindows 10 x86_64のインストーラISOやMSEdge仮想マシンを試してみた結果、後者はできず、できた前者にしてもWindowsのインストールにおける言語選択の初期画面が表示されるまですら長く、その後の工程も推して知るべしかと検証を断念したほどなので。

ホーム前へ次へ