LoginSignup
3
4
はじめての記事投稿
Qiita Engineer Festa20242024年7月17日まで開催中!

Plamo Linux 8.xでIncusを使用してUbuntu 22.04のGUIアプリを動かす

Last updated at Posted at 2024-06-23

はじめに

Plamo Linuxを愛する皆さんの中にはUbuntuでは動くのにPlamoで動かせない、または動かすのに苦労することで悩んだ経験がある方もいらっしゃるのではないかと思います。

Ubutu用のバイナリをdeb形式で配布しているアプリには、debファイルを解凍してPlamo形式のディレクトリ配置にすれば問題なく動くものも存在します。
(例: Google Chrome、Microsoft Edge)

しかし、要求されるPythonのバージョン不一致や、何故だか分からないけどPlamoでは動かないアプリも存在します。

この記事ではIncusを使用してホストPlamoでゲストUbuntu 22.04のGUIアプリとしてGIMPを動かすこと、日本語入力ができること、音が鳴ることを目標にします。

GPU関連の相性や設定などもあるかもしれませんが、SteamやOpenVINO AI Plugins for GIMPも動かせました。

スクリーンショット_2024-06-22_22-21-32.png
スクリーンショット_2024-06-23_21-00-32.png

この記事はの次の記事を参考にしました。
https://qiita.com/usagr10asu1/items/a720f9e664e5948c4e31
https://wiki.archlinux.jp/index.php/LXD

私はIncus初心者です。質問を頂いても答えられないことの方が多いですが、Plamo LinuxのMLにはIncusの達人もいらっしゃいますので、もしかしたら教えてもらえるかもしれません。

Incusのインストール

次のURLにPlamo用のincusがあります。最新版を入手してください。
http://repository.plamolinux.org/pub/linux/Plamo/Plamo-8.x/x86_64/contrib/container/

ここでは執筆時点の最新版であるincus-6.0.0-x86_64-B1.tzstを入手します。

wget http://repository.plamolinux.org/pub/linux/Plamo/Plamo-8.x/x86_64/contrib/container/incus-6.0.0-x86_64-B1.tzst

入手したincusをインストールします。

sudo installpkg incus-6.0.0-x86_64-B1.tzst

また、lxcとlxcfsがインストールされていない場合はインストールします。
次のURLにPlamo用のlxcとlxcfsがあります。最新版を入手してください。
https://repository.plamolinux.org/pub/linux/Plamo/Plamo-8.x/x86_64/plamo/16_virtualization/

ここでは執筆時点の最新版であるlxc-6.0.0-x86_64-B1.tzstとlxcfs-6.0.0-x86_64-B1.tzstを入手します。

wget https://repository.plamolinux.org/pub/linux/Plamo/Plamo-8.x/x86_64/plamo/16_virtualization/lxc-6.0.0-x86_64-B1.tzst
wget https://repository.plamolinux.org/pub/linux/Plamo/Plamo-8.x/x86_64/plamo/16_virtualization/lxcfs-6.0.0-x86_64-B1.tzst

入手したlxcとlxcfsをインストールします。

sudo installpkg lxc-6.0.0-x86_64-B1.tzst lxcfs-6.0.0-x86_64-B1.tzst

dnsmasqもインストールされていなければインストールします。
次のURLにPlamo用のdnsmasqがあります。最新版を入手してください。
https://repository.plamolinux.org/pub/linux/Plamo/Plamo-8.x/x86_64/plamo/08_daemons/

ここでは執筆時点の最新版であるdnsmasq-2.89-x86_64-B1.tzstを入手します。

wget https://repository.plamolinux.org/pub/linux/Plamo/Plamo-8.x/x86_64/plamo/08_daemons/dnsmasq-2.89-x86_64-B1.tzst

入手したdnsmasqをインストールします。

sudo installpkg dnsmasq-2.89-x86_64-B1.tzst

Incusの初期設定

まずIncusデーモンを起動します。

sudo /etc/rc.d/init.d/incus start

初期設定をします。筆者は「新しい loop デバイスのサイズ」以外はデフォルトにしました。

sudo incus admin init
クラスタリングを使用しますか? (yes/no) [default=no]:
新しいストレージプールのの設定をしますか? (yes/no) [default=yes]:
Name of the new storage pool [default=default]:
使用するストレージバックエンド名 (dir, lvm, lvmcluster, btrfs) [default=btrfs]:
新たに BTRFS プールを作成しますか? (yes/no) [default=yes]:
既存の空のブロックデバイス(ディスクやパーティションなど)を使用しますか? (yes/no) [default=no]:
新しい loop デバイスのサイズ (GiB) (1GiB minimum) [default=30GiB]: 200GiB
新しいローカルネットワークブリッジを作成しますか? (yes/no) [default=yes]:
新しいブリッジは何という名前にしますか? [default=incusbr0]:
どの IPv4 アドレスを使いますか? (CIDR subnet notation,“aut” or“non”) [default=auto]:to]:
どの IPv6 アドレスを使いますか? (CIDR subnet notation,“aut” or“non”) [default=auto]:to]:
Would you like the server to be available over the network? (yes/no) [default=no]: 
キャッシュされた古いイメージを自動的に更新しますか? (yes/no) [default=yes]: 
YAML 形式の初期設定値を表示しますか? (yes/no) [default=no]: 

使用しているユーザをincusグループに所属させます。
ここではtakahiroユーザをincusグループに所属させます。適宜置き換えてください。

sudo usermod -aG incus takahiro

サブUIDとサブGIDの設定をします。
ここではユーザtakahiroとrootにそれぞれ100000から65536個のサブUIDとサブGIDを設定しています。
takahiroはご自分のユーザ名に置き換えてください。

まずはサブUIDです。

sudo vim /etc/subuid
takahiro:100000:65536
root:100000:65536

サブGIDです。

sudo vim /etc/subgid
takahiro:100000:65536
root:100000:65536

設定を確実に有効にするため、ここでシステムを再起動します。

sudo reboot

Incusコンテナの作成

Incusコンテナの作成をします。
この記事ではゲストの名前をubuntu-containerにします。
incusコマンドでホストからゲストの設定をしています。

incus launch images:ubuntu/22.04 ubuntu-container

ゲストのUbuntuをアップデートします。

incus exec ubuntu-container -- /bin/bash -c "apt update && apt full-upgrade -y && apt autoremove -y"

ゲストのUbuntuを再起動します。

incus exec ubuntu-container -- reboot

Incusコンテナの設定

デバイスの設定を行ないます。
まずゲスト内に/mnt/xorg1/というディレクトリを追加します。

incus exec ubuntu-container -- mkdir -p /mnt/xorg1/

次のコマンドでエディタを開いてデバイスの設定を行ないます。

incus config edit ubuntu-container

deviceのセクションを以下のように記述します。

devices:
  Xsocket:
    bind: container 
    connect: unix:/tmp/.X11-unix/X0
    gid: "1000"
    listen: unix:/mnt/xorg1/X0
    mode: "0777"
    security.gid: "1000"
    security.uid: "1000"
    type: proxy
    uid: "1000"
  mygpu:
    gid: "44"
    type: gpu
  pa:
    path: /tmp/.pulse-native
    source: /run/user/1000/pulse/native
    type: disk

記述の説明をします。
Xsocketデバイスの

    connect: unix:/tmp/.X11-unix/X0
    listen: unix:/mnt/xorg1/X0

の2箇所のX0の部分は、ホストの/tmp/.X11-unix/ディレクトリの内容に依存します。
ホストで実行する次のコマンド

ls /tmp/.X11-unix/

の結果が

X0=

であれば、Xsocketデバイスの設定には

    connect: unix:/tmp/.X11-unix/X0
    listen: unix:/mnt/xorg1/X0

と記述し、ホストの/tmp/.X11-unix/ディレクトリの中身が

X1=

であれば、Xsocketデバイスの設定には

    connect: unix:/tmp/.X11-unix/X1
    listen: unix:/mnt/xorg1/X1

と記述します。

mygpuデバイスの

    gid: "44"

の44は、ゲスト内のvideoグループのGIDに一致させます。
ホストで以下のコマンドを実行するとGIDを調べることができます。

incus exec ubuntu-container -- getent group video
video:x:44:ubuntu

44がvideoグループのGIDになります。

Incusコンテナにパッケージをインストール

X Window Systemやフォント、インプットメソッド、GIMPと音声再生のためSoxのインストールまで行ないます。

incus exec ubuntu-container -- bash -c "apt install -y x11-apps pulseaudio dbus-x11 language-pack-ja fonts-noto-cjk-extra task-japanese-gnome-desktop language-pack-gnome-ja-base language-pack-gnome-ja gnome-user-docs-ja gnome-control-center fonts-noto-color-emoji manpages-ja fcitx5-mozc ibus-mozc wget sox gedit gimp"

Incusコンテナのサウンドの設定

サウンドの設定を行ないます。

incus exec ubuntu-container -- /bin/bash -c 'sed -i "s/; enable-shm = yes/enable-shm = no/g" /etc/pulse/client.conf'
incus exec ubuntu-container -- /bin/bash -c "echo export PULSE_SERVER=unix:/tmp/.pulse-native | tee --append /home/ubuntu/.profile"

Incusコンテナの日本語環境を設定

以下のコマンド群を実行します。

incus exec ubuntu-container -- /bin/bash -c "update-locale LANG=ja_JP.UTF-8"
incus exec ubuntu-container -- /bin/bash -c "timedatectl set-timezone Asia/Tokyo"
incus exec ubuntu-container -- /bin/bash -c 'localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"'
incus exec ubuntu-container -- /bin/bash -c "echo export LANG=ja_JP.UTF8 | tee --append /home/ubuntu/.profile"
incus exec ubuntu-container -- /bin/bash -c "localectl set-x11-keymap jp jp106"
incus exec ubuntu-container -- /bin/bash -c 'sh -c "dbus-uuidgen > /var/lib/dbus/machine-id"'

ここでゲストのubuntu-containerのユーザubuntuのシェルに入ります。

incus exec ubuntu-container  -- /bin/su - ubuntu

次はゲストのubuntuユーザのシェルです。

ubuntu@ubuntu-container:~$ im-config -n fcitx5
ubuntu@ubuntu-container:~$ source /etc/default/locale
ubuntu@ubuntu-container:~$ vim .profile 

.profileに以下の記述を追加します。

export GTK_IM_MODULE=fcitx5
export QT_IM_MODULE=fcitx5
export XMODIFIERS=@im=fcitx5
export DefaultIMModule=fcitx5
if [ $SHLVL = 1 ] ; then
  (fcitx5 > /dev/null 2>&1 &)
  xset -r 49  > /dev/null 2>&1
fi

export DISPLAY=:0
export NO_AT_BRIDGE=1

ここでゲストを再起動します。
コンテナのシェルを実行していれば次のようにします。

ubuntu@ubuntu-container:~$ sudo reboot

IncusコンテナのGUIアプリを起動して設定の続きを行なう

ゲストのGUIアプリを実行してインプットメソッドの設定を行ないます。

まずホストで次のコマンドを実行します。
このコマンドは、ゲストのGUIアプリを使用したい場合、X Window Systemの起動や再起動する毎に行なう必要があります。
自動で行ないたい場合は各自で適宜設定してください。

xhost +local:

続けて次のコマンドを実行します。
このコマンドは、ゲストのGUIアプリを使用したい場合、ゲストの起動や再起動する毎に行なう必要があります。
自動で行ないたい場合は各自で適宜設定してください。
X0の部分は上記の説明と同様にホストの/tmp/.X11-unix/ディレクトリ以下の結果によって異なります。

incus exec ubuntu-container -- sudo --user=ubuntu --login ln -s /mnt/xorg1/X0 /tmp/.X11-unix/X0

ゲストのgnome-language-selectorを実行します。
追加のパッケージのインストールを求められた場合はインストールしようとするとエラーが起こる可能性があります。
筆者はエラーが出ても無視し、求められたパッケージを後でaptでインストールしました。

incus exec ubuntu-container -- sudo --user=ubuntu --login gnome-language-selector

スクリーンショット_2024-06-23_10-29-33.png
キーボード入力に使うIMシステムをFcitx5に設定します。

GIMPの起動

GIMPを起動してみます。

incus exec ubuntu-container -- sudo --user=ubuntu --login gimp

スクリーンショット_2024-06-23_15-25-17.png
GIMPが起動しました。

日本語入力できることを確認

geditを起動し、Ctrl + Spaceで日本語入力モードにし、入力してみます。

incus exec ubuntu-container -- sudo --user=ubuntu --login gedit

スクリーンショット_2024-06-23_16-00-53.png

音が鳴ることを確認

サンプル音源を入手します。

incus exec ubuntu-container -- sudo --user=ubuntu --login wget http://freewavesamples.com/files/Kurzweil-K2000-Dual-Bass-C1.wav

再生してみます。

incus exec ubuntu-container -- sudo --user=ubuntu --login play /home/ubuntu/Kurzweil-K2000-Dual-Bass-C1.wav

音が鳴ったでしょうか?

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4