140文字以上

140文字では伝わらないことを書いています。禁無断転載

twitter(@chromarock), github, bluesky, Mastodon(japanet), misskey, ほしいものリスト, 本人証明, その他プロフィール

ubuntu 22.04設定メモ

正式にUbnutu 22.04 LTSがリリースされ、Japan Remix(日本語環境向けに調整されたもの)もリリースされたので、18.04 LTSだった環境を入れ替えしました。

ちなみに、自分が確認した環境は以下です。

$ screenfetch
                          ./+o+-       xxx@xxxxxxxx
                  yyyyy- -yyyyyy+      OS: Ubuntu 22.04 jammy
               ://+//////-yyyyyyo      Kernel: x86_64 Linux 5.19.0-35-generic
           .++ .:/++++++/-.+sss/`      Uptime: 5h 29m
         .:++o:  /++++++++/:--:/-      Packages: 2186
        o:+o+:++.`..```.-/oo+++++/     Shell: bash
       .:+o:+o/.          `+sssoo+/    Resolution: 1920x1080
  .++/+:+oo+o:`             /sssooo.   DE: GNOME 41.7
 /+++//+:`oo+o               /::--:.   WM: Mutter
 \+/+o+++`o++o               ++////.   WM Theme: Adwaita
  .++.o+++oo+:`             /dddhhh.   GTK Theme: Yaru-dark [GTK2/3]
       .+.o+oo:.          `oddhhhh+    Icon Theme: Yaru
        \+.++o+o``-````.:ohdhhhhh+     Font: Ubuntu 11
         `:o+++ `ohhhhhhhhyo++os:      Disk: 1.8T / 8.2T (22%)
           .o:`.syhhhhhhh/.oo++o`      CPU: Intel Core i7-4790 @ 8x 4GHz [45.0°C]
               /osyyyyyyo++ooo+++/     GPU: NVIDIA GeForce GTX 960
                   ````` +oo+++o\:     RAM: 3960MiB / 15917MiB
                          `oo++.  

USB版のインストールイメージを作る

最近のPCはDVDドライブすらないとかままあるので、RaspberryPIなんかでよく使われているbalenaEtcherを使ってUSBメモリからライブUSBを作るのが早い。
8GB以上のUSBメモリ推奨とのこと。

https://www.balena.io/etcher/ に行ってAppimageをダウンロード

解凍して以下コマンドを実行

$ ./balenaEtcher-1.7.9-x64.AppImage

なお、etcherは内部的にElectronを使っていてこれはGUIの表示にChromiumレンダリングエンジンを使っていてぶっちゃけブラウザ上で走っているようなものなので(考えてみるとすごい時代だ…)、libvaのエラーが出てしまって起動しない場合がある。

特にnvidiaの新しいドライバを使用している場合などは以下のようにしてgpuを使用しないようにするとよい。

$ ./balenaEtcher-1.7.9-x64.AppImage --disable-gpu-sandbox

後はGUIが出てくるので、イメージを設定して、USBメモリも指定して「Flush」を押して書き込み

参考:
https://kledgeb.blogspot.com/2022/04/ubuntu-2204-64-windowslinuxmacosubuntu.html


小ネタ:FreeDOSをUSBから起動する方法

古いマシンを復活させようとしてBIOSをアップデートしないといけなかったりする場合があったりするとWindowsからかDOSから起動しないといけないことって多々ありますよね。
そういう場合は先程の「balenaEtcher」とFreeDOSを使えばUbuntuでもDOSの起動USBメモリを生成できます。

FreeDOSはここ
http://freedos.org/download/ から[FreeDOS 1.3 LiteUSB]をダウンロードすればOK。

そしてそれをbalenaEtcherで書けば動きます。楽ですね。


インストール時に気をつけること

インストール時に使用しているメディアにもよるが、最初のGrubの画面でカーネルのコマンドライン(引数)に

fsck.mode=skip

を指定しないとメディアに対してfsckをやってしまうらしく、インストーラが立ち上がるのが遅いことがあるそうなので気をつけること


Virtualboxにインストールする場合

USBメモリを使いたい場合はExtpackをインストールの後、これをしてLinux再起動

$ sudo gpasswd -a USER_NAME vboxusers

EFIを使用するにチェックを付けておくと、Boot時にVirtualBOXのロゴが出て解像度が少し上がる
チェックを入れなくてもインストール自体は可能。

しかし解像度が最低の640*480になってしまい、インストーラのGUIがはみ出て選択できなくなる。

こういう場合はとりあえずインストーラのGUIが出てきたら「Ubunutuを試す」をやって、Live版が起動したら右下のアプリケーション表示のアイコンから「設定」を選び、「ディスプレイ」ー「解像度」を選び、1024*768とか選んで解像度を大きくしたあとで、Ubuntuをインストールするを実行すればOK

あと、UEFIではないのでディスク設定に注意(何も考えずデフォルトでインストールする分には問題ないが、インストールのついでにパーティションを切るとかBtrfsに入れたいとかする場合は注意)


インストール後の基本セット

自分はインストール後にまずこれをしてとりあえず必要なものをインストールしています

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install build-essential cmake git gitk ssh gufw samba vim filezilla minicom mcomix gtkterm shutter vlc ffmpeg geany flatpak flex bison screenfetch htop apt-transport-https gnupg2 gnome-shell-extension-manager

Codecをまとめてインストール

動画のコーデック関連の話。Ubuntu18でもありましたね。
Ubuntuのデフォルトでは権利関係が微妙な(微妙にライセンスがオープンじゃなかったり)怪しいものは除外される運命だけど、これをすることによってインストール出来るというアレ。

但し、libavcodecが消えてしまう(その代り権利怪しいアレなバージョンが入る)

$ sudo apt install ubuntu-restricted-extras

あれとか言ってるけど、動作的には問題ないので心配しないでほしい。どう違うか?は以下の通り。

libavcodec - 権利がしっかりしたもの
libavcodec-extra - ubuntu-restricted-extrasで勝手に入る。権利怪しいもの


リカバリーモード(Recovery mode)への入り方

Ubuntuはごくまれにですがグラフィックドライバの更新失敗などなどで、通常のGUIログイン画面が出てこなかったり、そうでなくてもディスクの故障などでこれもやはり通常のGUIで操作ができなくなり困る場面は出てくると思います。
あとは、Nvidia系のグラフィックボードを入れたのだけどnouvauドライバが対応しておらずGUIにすら入れない状態ですね…

そういう場合はリカバリーモードで入って、rootシェルでなんとかして復旧させるということをします。
とりあえずリカバリーモードへの入り方とネットワークの活かし方は以下です。

1.Grubの画面で「Advanced options for Ubuntu」を選択して、「起動するLinuxバージョン名の後ろに(recovery mode)」のものを選択
2.しばらくするとメニュー画面が出るので「root」を選択
3.Ctrl+Dを押すとなんとか…という画面が出るけど、ここでリターンを押してrootシェルに入る
4. そのままではネットワークが動いておらず何もできんので、とりあえずip linkコマンドでLANインターフェイスの名前を見る(例だとeth0がそれ)

# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff

ここで「DOWN」になっているはずなので以下で復帰させます。
これでとりあえずネットワークとインターネットが使えるようになって、apt updateなどが使用可能になります
(これはDHCPがルータにある場合。ない場合はipコマンドでIPAddressを割り振ればOK)

# ip link set eth0 up
# dhclient eth0
# systemctl start systemd-resolved

(余談:昔はrecovery modeでは読み取り専用マウントにされてしまうので、改めて読み書き可にするためのremountをしないといけなかったけど、いつの間にかそれをしなくても良くなったようです)


handbrakeでNVENCが使えない

古いPCにUbuntuを入れる活用法はあるあるだけど、nvencを使ってhanbbrakeでH.264やH.265のエンコードしたい場合はドライバのバージョンが390系だったりするとだめ。
ドライバのバージョンが5xx系だと使用可能。

ここを見て自分が使っているビデオボードがエンコードをサポートしているGPUかまず確認しよう。
https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new

これはOBSでnvencを使ってハードウェアエンコードしながら配信したい場合も同じなので注意。


Btrfsにインストール

20.04のときは確かBtrfsを選べなかった気がするが、22.04になってようやくBtrfsにも入れることができるようになった。
Ext4と比べても良くなってるので、もうできる限りBtrfsにしましょう。
→標準のUbuntuからインストールではなくて、Lubuntuフレーバでいきなりインストールする人はBtrfsで動かんらしいので気をつけよう

gnome-shell拡張の導入 (gnome-extension-manager)

Ubuntuのデフォルトではデスクトップの細かいカスタマイズができません
gnome-shell拡張はこれを拡張してくれるやつで、入れておくと使い勝手が格段に向上するので入れておいたほうが吉です。

$ sudo apt install gnome-shell-extension-manager

これをしてから、extension-managerで探して起動するとGUIが出てくると思います。
この中からオススメは以下です

Allow Locked Remote Desktop   
 Ubunutの標準のデスクトップ共有を使うと、画面をロックしたりログアウトするとリモートデスクトップが完全停止してしまい
 再び許可しないと受付してくれないのでそれをどうにかする拡張。
 したがって、標準のまま共有を使うにはほぼ必須級だがセキュリティは弱くなるので考えてから導入  
Applications Menu  
 アクティビティの横にアプリケーションメニューできて、そこからアプリを選べる
Frippery Move Clock
 時刻表示を通知バー右端に寄せるとかできる
NVIDIA GPU State Tool
 通知バーにGPUの温度とかを表示できる(NVidia GPU専用)
Status Area Horizonatal Spacing
 通知バーのスペース具合を調整できる
Vitals
 通知バーにCPU温度とかシステムの状況を表示できる

GuestAdditionCDの導入(Virtualbox環境)

Virtualboxにインストールしたときに「GuestAddition」を入れないとクリップボード共有が動かなかったり、解像度をウィンドウサイズに追従させられなかったり等色々不便なので現状は入れておくと良い。
(本来はVboxSVGAを選択すれば要らないのだが動かないので)

まずgccなど必要なコンパイラ類をまとめて入れる

$ sudo apt install build-essential

この後でGuest addition CDを投入後、以下実行し、再起動でOK

$ cd /media/xxx/VBOXxxx
$ ./autorun.sh

google-chromeのインストール

以下のコマンドを打てばOK

$ sudo apt install apt-transport-https gnupg2
$ wget -O- https://dl.google.com/linux/linux_signing_key.pub | gpg --dearmor | sudo tee /usr/share/keyrings/google-chrome.gpg
$ echo deb [arch=amd64 signed-by=/usr/share/keyrings/google-chrome.gpg] http://dl.google.com/linux/chrome/deb/ stable main | sudo tee /etc/apt/sources.list.d/google-chrome.list
$ sudo apt update
$ sudo apt install google-chrome-stable

vscodeのインストール

以下のコマンドを打てばOK

$ sudo apt install apt-transport-https gnupg2
$ wget -O- https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor | sudo tee /usr/share/keyrings/vscode.gpg
$ echo deb [arch=amd64 signed-by=/usr/share/keyrings/vscode.gpg] https://packages.microsoft.com/repos/vscode stable main | sudo tee /etc/apt/sources.list.d/vscode.list
$ sudo apt update
$ sudo apt install code

sshとsshd

sshが無いと色々めんどくさいので早めにやっておく。
この辺はUbuntu18.04と同じ。

ub2204: $ sudo apt install ssh

もしもホスト側の.ssh/configが公開鍵オンリーになっていたら以下のようにホスト側のエントリーを書かないといけない

Host ub2204
	User XXX
	HostName YYY
	port 22
	IdentitiesOnly no
	PreferredAuthentications password

これで一応PasswdでログインOK
インストール直後は.sshが作られていないのでsshで入ったあとで自分で自分のサーバに入る

host: $ ssh ub2204
(Pass聞いてくる)
ub2204:$ ssh localhost
(FingerPrint合ってるかどうか聞いてくるのでYと答える)
(Pass聞いてくる)
ub2204:$ exit

ホスト側(もしあれば)で、ed25519な鍵生成

host: $ ssh-keygen -t ed25519

何処に出力するか聞いてくるので、設定して鍵ファイルを作る

インストール先に公開鍵を転送

host: $ scp (作った秘密鍵).pub (転送先サーバ名):/home/xxx/

転送先で鍵設定

ub2204:$ cp (作った秘密鍵).pub .ssh/authorized_keys
ub2204:$ chmod 600 .ssh/authorized_keys

セキュリティを高めるために、転送先のsshd_configを触って鍵オンリーにしてパスワードログインは禁止。
/etc/ssh/sshd_configを以下のように変更

PubkeyAuthentication yes
PasswordAuthentication no

最後に、sshdリスタート

ub2204:$ systemctl restart sshd

Samba設定

まず、Sambaをインストール

$ sudo apt install samba

次に/etc/samba/smb.confに追記

[ユーザ名]
        path = /home/ユーザ名
        writeable = yes
        browseable = no
        valid users = ユーザ名

browseableは必要に応じて変える

sambaのパスワードをセットする

$ sudo smbpasswd -a ユーザ名

(-a を入れないとエラーになる)

最後にsmbdリスタート

$ sudo systemctl restart smbd

minicomなどで使用するターミナルの権限変更等

/dev/ttySなんとかのグループがdialoutになっているのでそれを利用する

$ sudo gpasswd -a ユーザ名 dialout
$ sudo chown root:dialout /etc/minicom
$ sudo chmod 775 /etc/minicom

詳細
https://qiita.com/chromabox/items/306386a886bee4fb7810

なお、デフォルトではFT23X系のチップを使用したUSBシリアル変換を接続すると、しばらく間をおいて途中で勝手に切られてしまう….
このときのdmesgはこんな感じ

[ 6114.316364] usb 1-3.4: New USB device found, idVendor=0403, idProduct=6001, bcdDevice= 6.00
[ 6114.316374] usb 1-3.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 6114.316378] usb 1-3.4: Product: FT232R USB UART
[ 6114.316380] usb 1-3.4: Manufacturer: FTDI
[ 6114.316383] usb 1-3.4: SerialNumber: XXXXXXXX
[ 6114.319137] ftdi_sio 1-3.4:1.0: FTDI USB Serial Device converter detected
[ 6114.319181] usb 1-3.4: Detected FT232RL
[ 6114.320031] usb 1-3.4: FTDI USB Serial Device converter now attached to ttyUSB0
[ 6131.973998] usb 1-3.4: usbfs: interface 0 claimed by ftdi_sio while 'brltty' sets config #1
[ 6131.975270] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
[ 6131.975311] ftdi_sio 1-3.4:1.0: device disconnected
[ 6572.726767] usb 1-3.4: USB disconnect, device number 9

調べるとどうやら「brltty」という点字関連のアクセシビリティのものが悪さをしているので、以下を実行してbrlttyをアンインストールするとよい

$ sudo apt remove brltty

flatpakの権限設定を変えたい

flatpakは便利なのですが権限設定がやりにくいというのがあります
(権限関連でうまく動かなかったりするとかあります)

権限設定するにはflatsealをflatpakから入れるのが楽です


sudo apt autoremoveするとnvidiaドライバが何故か消えてしまいnouveauドライバになる

インストール時に3rdパーティのドライバをインストールするを選択すると、インストール後に自動的にNvidiaのドライバが入るようになって万々歳のところが、ここで。。。

$ sudo apt autoremove

をやってしまうと、再起動時に何故かNvidiaのドライバがなくなりnouveauドライバになってしまう
こういうときは焦らずに

$ sudo ubuntu-drivers autoinstall

して、再起動すれば復活する。


gdm3でWaylandを無効にする

Ubuntu22.04もデフォルトではWaylandを使おうとする。
しかし、barrierやteamviewer等色々と対応していないアプリはあるので、これらを動かすときはOFFにしておいたほうが無難。

/etc/gdm3/custom.confを以下のように、WaylandEnable=falseにする。

[daemon]
# Uncoment the line below to force the login screen to use Xorg
WaylandEnable=false

RDP(Ubuntu22.04で標準で入るようになったgnome-remote-desktop)について

Ubuntu22.04の目玉(?)機能の一つとしてリモートデスクトップが標準サポートされるようになりました。
しかし、接続元のRemminaが古いとRDPで接続ができないとかあります。
(例えば、Ubuntu20.04のデフォルトで入れられるRemminaなど)

これは、RemminaをSnap版にして新しいのを入れると問題なく接続できるようになります。
Snap版にしたときは権限設定を忘れずに(ほとんどONでいいと思う)

この際なのでUbuntu22.04側のRemminaもSnap版に入れ替えしたほうが良いですね。

また、Wayland環境でもVNCでも画面をロックしたりログアウトするとリモートデスクトップが切れ、次に接続しようとしても受付しなくなります。これが地味にしんどい…
(TeamviewerやWindowsリモートデスクトップのような完全なリモートデスクトップじゃなくて、gnome-remote-desktopは、操作アシスタント的な使い方を想定している…とのことのようです。)
これなんですが、一応の解決策としてextension-managerを入れてからAllow Locked Remote Desktopを入れるという手が使えます。
これをすると、画面をロックしたりログアウトしてもリモートデスクトップ機能が切れずに受付はされるので活用したいヒトにはかなりの朗報です。

ただし、セキュリティには気をつけておかないといけないので、最低でもufwでポートを締めてsshと鍵認証でガッチリ固めておきましょう。これの説明はとても長くなるのでこちらへ…

あとは昔からあるXRDPを使うという方法もあります。
ただ、物理マシンを使うときにリモートがそのまま動いていると入れない(この逆もあり、物理マシンでログインしているとリモートからは同じユーザでログイン不可)とかいう場合が出てきたり、音声がうまく飛んでくれなかったりするのでケースバイケースですね

2方式の違いをまとめると次のような感じです
「Ubuntu標準のリモートデスクトップ」: ユーザで画面を共有できる感じ。VNCやTeamviewerのRDP版。プロトコルがRDPなので軽い。デスクトップ音声も飛んでくる。
「XRDP」: ユーザで画面は共有できず、ログインしたユーザに固定する。WindowsのProエディションで入ってくるリモートデスクトップのイメージに近い。XRDPはデスクトップ音声を飛ばすのは難しい


日本語がうまく入らない(ubuntu日本語Remix版では治っているかも)

そのままだと変換ボックスがウィンドウの下に出ます。
ただそれだけではなく、geditなんかで日本語入力がおかしくなり非常に日本語入力が厳しくなる。。。

gsettingsの値がこうだとだめらしい

$ gsettings get org.gnome.desktop.interface gtk-im-module
''

これが空なのがいけないようなので次のようにするとよい

$ gsettings set org.gnome.desktop.interface gtk-im-module 'ibus'

参考:
https://askubuntu.com/questions/1405101/japanese-input-candidate-window-appears-at-the-bottom-after-upgrading-ubuntu-fro


Flatpakのインストール

ubuntuはリリースバージョンでアプリのバージョンが固定されてしまうのでなるべくflatpakかsnapでリリースされているものを使うのが良いとのこと

$ sudo apt install flatpak
$ sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
$ sudo apt install gnome-software-plugin-flatpak

これをしたあとで、gimpのページの
https://www.gimp.org/downloads/ にある[install flatpak GIMP]をクリックしてflatpakrefを開くとflatpak版gimpがインストールできる

flatpakのアップデートは

$ flatpak update

でOK


Golangのインストール

18.04や20.04の場合はlongsleep/golang-backportsのppaを取り込む必要があったけど22.04は現時点で最新版がUbuntu標準に含まれているので必要ないとのこと
(今後、Golangがアップデートされたりしたらまた必要になるのかも?)

というわけで以下でOK

$ sudo apt install golang-go

scrcpyのインストール

Android端末の画面をそのままコピーしてUbuntu上で操作できるようにするツール。かなり便利。
snap版のほうが新しいので、例によってsnap版のをインストールすると良い(権限設定は忘れずに)

また、Android端末側はUSBデバッグを有効にするのと、初回接続時はこのPCからの接続を許可するか?の問答があるので設定をすること。

$ sudo snap install scrcpy

OBSのインストール

例によってflatpak版をインストール

1.公式からFlatpakをダウンロード
2.ファイルマネージャー等で開く
3.プラグインも全部入れる
4.普通に起動

Webカメラが動作できて録画できることまでは確認。ただし配信は未確認(TwichかTwitterでの配信で問題ある環境があるとか?)
v4l2関連でエラーが出るかもしれないらしい(自分の環境では出ず)

その時はこれをすると良いとのこと

$ apt install v4l-utils libv4l-dev

barrierについて

wayland環境は未対応なので注意すること。よって、gdm3のwaylandは外しておくこと。
xorg環境でないと動きません。

調べたところ、2.4系はなんか変らしいので2.3.3でトライしました。

ビルドについてはこことほとんど同じだが、ubuntu22.04はlibqt4が無いのでlibqt4-devは外してしまって良い
https://chromabox.github.io/140m/linux/barrier_ubuntu1804/

以下そのまま順に実行。/usr/local/binにbarrierが入ります。

$ sudo apt install cmake xorg-dev g++ libavahi-compat-libdnssd-dev libx11-dev libcurl4-openssl-dev qtbase5-dev libssl-dev
$ git clone https://github.com/debauchee/barrier.git
$ cd barrier
$ git checkout v2.3.3 -b v2.3.3_mod
$ wget https://gist.githubusercontent.com/chromabox/61404314887e61c1c32e325a6dc37e41/raw/a83699cc038dc547bb90aab6af6e810200ddee04/barrier-2_3_3-Fix-daemon-mode-execute-missing.patch
$ git am barrier-2_3_3-Fix-daemon-mode-execute-missing.patch
$ ./clean_build.sh
$ cd build
$ sudo make install

barriercの自動実行について

電源投入時にBarriercも自動実行させたいときはgdm3の設定が必要になる。
lightdmのときと違い、gdm3の設定はなかなかに面倒

参考:
http://masaoo.blogspot.com/2021/07/ubuntu-2004-gdm-synergyc.html

/usr/share/gdm/greeter/autostart/barrierc.desktopを新規作成

[Desktop Entry]
Type=Application
Name=barrierc
Exec=/usr/local/bin/barrierc --debug INFO --name (このマシンの設定名) (サーバIP)
NoDisplay=true
X-GNOME-AutoRestart=true
$ cd /etc/gdm3/PostLogin
$ sudo cp Default.sample Default

/etc/gdm3/PostLogin/Defaultを編集

#!/bin/sh
#
# Note: this is a sample and will not be run as is.  Change the name of this
# file to <gdmconfdir>/PostLogin/Default for this script to be run.  This
# script will be run before any setup is run on behalf of the user and is
# useful if you for example need to do some setup to create a home directory
# for the user or something like that.  $HOME, $LOGIN and such will all be
# set appropriately and this script is run as root.

killall barrierc

/etc/gdm3/PostSession/Defaultを編集

#!/bin/sh

/usr/bin/killall barrierc
while[ $(pgrep -x barrierc) ]; do sleep 0.1; done

xauthfile=$(ps aux |grep Xauth | grep '^root' | grep -oP '\-auth \K[\w/]+')
export DISPLAY=:0
export XAUTHORITY=${xauthfile}

/usr/local/bin/barrierc --debug INFO --name (このマシンの設定名) (サーバIP)

exit 0

ログイン後に自動起動させたいので以下のようにする

$ cd ~/
$ mkdir bin
$ cd bin
$ touch start-barrierc.sh
$ chmod 775 start-barrierc.sh

start-barrierc.shを編集

#!/bin/sh
/usr/bin/killall barrierc
while [ $(pgrep -x barrierc) ]; do sleep 0.1; done
/usr/local/bin/barrierc --debug INFO --name (このマシンの設定名) (サーバIP)

あとは、このstart-barrierc.shをUbuntuの「自動起動するアプリケーション」(システムツールの自動起動するアプリケーション)で指定してあげればOK


teamviewerを使いたい

gnome-extension-managerを入れることによってteamviewerをUbunut22.04で使う意義はまま薄れましたが、それでもLAN内からとかVPNでリンクされている箇所からとかじゃなくて、本当にグローバルなネットからでも接続できるとか利点はあるのでそういうことをしたい人向け。(最低でもVPN間接続して保護したほうがいいとは思うけど)
teamviwereはWaylandセッションでは動かない(対応していない)ので気をつけること
Waylandを事前に無効にしておくのが良いかもしれない。
ただ、パフォーマンスはRDP(Ubuntuの標準デスクトップ共有)と比べるとやっぱり悪い

以下コマンドを順に入れればOK

$ sudo apt install wget apt-transport-https gnupg2
$ wget -O- https://download.teamviewer.com/download/linux/signature/TeamViewer2017.asc | gpg --dearmor | sudo tee /usr/share/keyrings/teamview.gpg
$ echo deb [arch=amd64 signed-by=/usr/share/keyrings/teamview.gpg] http://linux.teamviewer.com/deb stable main | sudo tee /etc/apt/sources.list.d/teamviewer.list
$ sudo apt update
$ sudo apt install teamviewer

インストール時に設定ファイルに差異があるけど、どうするか聞いてくるけどNで良い


hugoのインストール

最新が0.98.0なので最新をインストールする。
なお、ubuntu 22.04で通常の方法でインストールすると0.92.2-1となる。
※前提条件:Golangを入れておくこと

0.すでにHugoを入れてしまっている場合はアンインストール

$ sudo apt remove hugo

1.ここから最新のdebを落とす(extend付きが良い。0.98.0で確認)
https://github.com/gohugoio/hugo/releases/

2.以下コマンドでインストール。/usr/localにインストールされる

$ sudo dpkg -i ./hugo_extended_0.98.0_Linux-64bit.deb

3.確認

$ hugo version
hugo v0.98.0-165d299cde259c8b801abadc6d3405a229e449f6+extended linux/amd64 BuildDate=2022-04-28T10:23:30Z VendorInfo=gohugoio
$ which hugo
/usr/local/bin/hugo

vpnを起動時にONにする(問題あり)

参考:
https://itectec.com/ubuntu/ubuntu-20-04lts-networkmanager-vpn-always-on/

nm-connection-editor を使いましょうということらしい
が、nm-connection-editorを使うと電源再投入後にLANが有効にならないという問題がある…(調査中)


Lubuntuを後から入れる

18.04のときのようにこれをする

$ sudo apt install -y lubuntu-desktop

しかし、今回ディスプレイマネージャはsddmを使うらしい…ということでgdm3かsddmかを聞いてくる
自分はgdm3をやってみました。
sddmはまた後ほど…

Ubuntuを普通に入れた後でLubuntuを入れると日本語設定もそのままなので楽。
Lubuntuから入れるとBtrfsで起動しない問題があるそうだが、この方法だとBtrfsに入れても起動しないということはない。

少し試した感じでは特に問題はなかったです。
ただ、Ubuntuの標準もだいぶこなれてはきたので今更Lubuntuもという感じは多少あります…


Kdenliveについて

動画編集アプリのkdenliveです
例によってFlatpak版。
なお、現状はFlatpak版が一番新しいようです。
https://kdenlive.org/en/download/

再生にGPU支援を使用するを有効にしてしまうと駄目なので気をつけよう。
snap版もインストールしてみたものの、モーショントラッカーを設定するときに範囲指定をマウスでできなかったので使用せず。


小ネタ1:モーショントラッカーの使い方

動く物体に対して色々したい場合に使うあれ。
昔はAutoMaskだったが、名前が変わって安定性と機能が大幅向上してMotionTrackerに生まれ変わっている。
エフェクト選択ではMotion Trackerを選ぶと良い。

トラッキングアルゴリズムも色々ある。
細かいパラメータなど詳しくはここを参照。


小ネタ2:DaSIAM RPNトラッカーの使い方

OpenCVなんかで使用できるDaSIAM RPNをkdenliveで気軽に試すことができる。
これはディープラーニングのモデルに基づいていて、他のアルゴリズムと違って精度はなかなか良さげ。
Distractor-aware Siamese Networks for Visual Object Trackingというそうな
VOT-18 challenge(毎年モーショントラックを競い合う競技)で勝ったそうな、なんか知らんけどすごい。

https://github.com/foolwood/DaSiamRPN
論文
https://arxiv.org/pdf/1808.06048.pdf

ただ、デフォルトでは学習モデルが用意されていない。
どこからか持ってきて設定する必要がある。

しかしこれはKdeが公式に用意していて、まずは以下のファイルをダウンロード
https://files.kde.org/kdenlive/motion-tracker/DaSiamRPN/dasiamrpn_kernel_cls1.onnx https://files.kde.org/kdenlive/motion-tracker/DaSiamRPN/dasiamrpn_kernel_r1.onnx https://files.kde.org/kdenlive/motion-tracker/DaSiamRPN/dasiamrpn_model.onnx

このダウンロードしたファイルをFlatpak版の場合は
$HOME/.var/app/org.kde.kdenlive/data/kdenlive/opencvmodels にコピー

その後はいつものようにMotionTrackerを設定後、[Tracker Algorithm]を[DaSIAM]にして[解析]を押せばOK


ファイル単位での完全消去

消す前に3度ランダムデータを書いてから消すあれ
rmの変わりにshredを使うのもいいが事故ると困るので「File Shredder」を使うと良い。
Flatpakでのみ存在しているのでflatpakをセットアップの後、アプリセンターから「Shredder」を検索してインストール。


ディスクの完全消去

Ubuntuに限らずLinuxにはcoreutilsにshredというコマンドがある。
NSA方式(3度ランダムデータ書く)でディスクを完全消去ができる

$ sudo shred -uvz <ファイルシステム名>

全領域に対して3回ランダムデータを書くのでかなり時間がかかる。
実施の際は色々確認した上で、UbuntuのLiveUSBにも入っているのでLiveUSBからやったほうがいいかもしれない。


snap版remminaで個々の接続の設定ができず落ちる、ある日突然接続できなくなって落ちるなどあった場合の対処法

Snapの権限設定になんの問題もなく、Remminaを開いて[設定]-[オプション]-[Remminaのデータフォルダ]が
/home/user/snap/remmina/バージョン/.local/share/remmina/
になっていて、dmesgの結果

[87494.552862] audit: type=1400 audit(1653524117.897:180): apparmor="DENIED" operation="mknod" profile="snap.remmina.remmina" name="/home/user/snap/remmina/バージョン/.local/share/remmina/XXX.remmina.YYYYYYY" pid=141664 comm="remmina" requested_mask="c" denied_mask="c" fsuid=1000 ouid=1000

とか、AppArmorでDENYされて蹴られている場合は、データフォルダに原因がある。
よってこの[Remminaのデータフォルダ]を他の場所に移す。

Remminaを一旦終わらせた後で以下のようにして、接続設定を移しておく

$ cd ~
$ mkdir remmina_data
$ cp ~/snap/remmina/current/.local/share/remmina/* remmina_data/

その後、Remminaを再起動して[設定]-[オプション]-[Remminaのデータフォルダ]を
/home/user/remmina_data
に指定。
その後、もう一度Remminaを再起動すればOK。

これはSnap版Remminaのコンフィグに前のバージョンのデータDIRの設定が残っていて、そこに書かれた前のSnapバージョンのDirを参照しようとしてAppArmorに「それは違うだろ」って蹴られていることが原因だが、Remminaプロジェクトはこれを治す気はないようで、データDirを共通の場所に移してほしいと言っている。

https://gitlab.com/Remmina/Remmina/-/issues/2548#note_622712677

他のSnapアプリだとそういうことはあまりないのでうーんと言ったところだけど、微妙にハマりポイントですねこれ…


使用カーネルをMainlineにする(13世代Intel向け)

Ubuntu22.04はRaptorなどの比較的新しいCPUに完全には対応していません。
これには(AlderはCPUにもよりますが)PコアとEコアという2種類のスペックの違うコアが協調して動いており(ハイローミックス)、ある程度はCPUで面倒を見る感じなのですが、完全にきれいにスケジューリングするにはOSでも対応が必要となっています。
Alderは5.16から対応が始まっており、Ubuntu 22.04をアップデートしていれば現在は5.19になっているので特に何もすることはないのですが、Raptorに関しては6.1からの対応ということで、カーネルを自力で上げるかUbuntu公式が変えてくれるのを待つしかありません。

昔はUbuntuで使っているカーネルを自力更新するのは手間だったわけですが、現在は Ubuntu Mainline Kernel Installer というものがありGUIで入れ替えることができ相当楽になっています。

Ubuntu Mainline Kernel Installerは以下のようにしてインストールします。

sudo add-apt-repository ppa:cappelikan/ppa
sudo apt update
sudo apt -y install mainline

その後、Ubuntu Mainline Kernel Installerを起動して、使用したいカーネルバージョンを選択すればOKです。

UEFIが有効になっているようなPCでBIOS画面に入りたい

最近、ようやくBootがUEFIなPCにUbuntuを入れることになってハマりそうになったので…

UEFIなPCにUbuntuを入れて電源を入れるとUEFI BIOSの設定によっては間髪入れずgrubが立ち上がってどうやってBIOSに入るんだこれみたいな感じになりますが、そんなときはこれをすると良いそうな

$ sudo systemctl reboot --firmware-setup

これを実行すると再起動して、すぐさまUEFIなBIOSに入れます。(最近のWindowsで言うところの[システム]→[回復]からの[トラブルシューティング]のあれみたいなもんですな)
めでたしめでたし。
(なお、poweroffコマンドもrebootコマンドも実体はsystemctlだったりします)

gdbでlibなんとかなどの既にインストールされているライブラリのデバッグをしたい

主にプログラムを作る人向けの話です
ubuntuのデフォルトではgdb(や、そこにつながるvscode)でコードのデバッグをするときに既にインストールされているライブラリの挙動が観たい場合があります。
そのときにそのライブラリのデバッグシンボル情報が入っていないと、正しく追っかけることができません。
デフォルトでは入れてくれないので、以下手順で入れます。

1.デバッグシンボル用の鍵を入れる

$ sudo apt install ubuntu-dbgsym-keyring

2.デバッグシンボルのパッケージのダウンロード先をaptに教えるためにddebs.listを追加する

$ echo -e "deb http://ddebs.ubuntu.com $(lsb_release -cs) main restricted universe multiverse \ndeb http://ddebs.ubuntu.com $(lsb_release -cs)-updates main restricted universe multiverse \ndeb http://ddebs.ubuntu.com $(lsb_release -cs)-proposed main restricted universe multiverse" |  sudo tee -a /etc/apt/sources.list.d/ddebs.list > /dev/null

3.パッケージリストを更新

$ sudo apt update

4.必要なデバッグ対象のライブラリのシンボルを得る(例ではlibcurl4とstdcのデバッグシンボル)

$ sudo apt install libcurl4-dbgsym libstdc++6-11-dbg

これでgdbは一応シンボルを探してくれます。

実は22.04以降ではこれをしなくてもDebuginfodというサービスが有効にできて、自動的にシンボルをUbuntuサーバからダウンロードしてくれるという便利機能があるのですが、時々まともに動かずgdbそのものがうんともすんとも言わないことがあるので手動インストールしたほうが無難かな…という感じです。


画像をきれいにアップスケールしたい(超解像に特化した機械学習を使ってアップスケール)

小さい画像を手軽にきれいにアップスケールしたいなんてことはよくあるかなと思います。
そういう場合は、ESRGANの一種の実装であるRealESRGANを入れるのが良いです。
ESRGANというのは、元々SRGAN(Super-Resolution Generative Adversarial Network)っていう深層学習系のがあって、これは深層学習を利用した超解像=元画像を強化学習器を使ってできるだけきれいにアップスケールする手法なのですが、それにEがついてEnhanced SRGAN=ESRGANというわけですな。

で、RealESRGANは元々Pythonを入れないといけなかったりするのですが、RealESRGANのプロジェクトページには親切にもVulkanさえあれば動くものも用意されています。
試した所GTX960でも動きました。
ということでなかなか良さげなのですが、sudo apt では入れられないので以下手順を踏む必要があります。

1.githubにあるRealesrganのプロジェクトからportable版を落としてくる

$ wget realesrgan-ncnn-vulkan-20220424-ubuntu.zip  

2.落としてきたものを解凍

$ unzip realesrgan-ncnn-vulkan-20220424-ubuntu.zip

3.ここからrealesrgan-ncnn-vulkanに実行権限を付与して、realesrgan-ncnn-vulkanmodelsを実行パスを指定しているパスへコピー

$ chmod +x realesrgan-ncnn-vulkan
$ cp realesrgan-ncnn-vulkan /usr/local/bin/
$ cp -r models /usr/local/bin/

以上で使えます。こんな感じで使うと良いです
(例ではsrc.pngを2倍にしてdst.pngを生成します。モデルはアニメビデオに強いrealesr-animevideov3を指定)

$ realesrgan-ncnn-vulkan -i src.png -o dest.png -s 2 -n realesr-animevideov3 -v
MESA-INTEL: warning: Haswell Vulkan support is incomplete
[0 NVIDIA GeForce GTX 960]  queueC=0[16]  queueG=0[16]  queueT=1[2]
[0 NVIDIA GeForce GTX 960]  bugsbn1=0  bugbilz=105  bugcopc=0  bugihfa=0
[0 NVIDIA GeForce GTX 960]  fp16-p/s/a=1/1/0  int8-p/s/a=1/1/1
[0 NVIDIA GeForce GTX 960]  subgroup=32  basic=1  vote=1  ballot=1  shuffle=1
[1 llvmpipe (LLVM 15.0.7, 256 bits)]  queueC=0[1]  queueG=0[1]  queueT=0[1]
[1 llvmpipe (LLVM 15.0.7, 256 bits)]  bugsbn1=0  bugbilz=0  bugcopc=0  bugihfa=0
[1 llvmpipe (LLVM 15.0.7, 256 bits)]  fp16-p/s/a=1/1/1  int8-p/s/a=1/1/1
[1 llvmpipe (LLVM 15.0.7, 256 bits)]  subgroup=8  basic=1  vote=1  ballot=1  shuffle=1
[2 Intel(R) HD Graphics 4600 (HSW GT2)]  queueC=0[1]  queueG=0[1]  queueT=0[1]
[2 Intel(R) HD Graphics 4600 (HSW GT2)]  bugsbn1=0  bugbilz=0  bugcopc=0  bugihfa=0
[2 Intel(R) HD Graphics 4600 (HSW GT2)]  fp16-p/s/a=1/0/0  int8-p/s/a=1/0/0
[2 Intel(R) HD Graphics 4600 (HSW GT2)]  subgroup=32  basic=1  vote=1  ballot=1  shuffle=1
0.00%
25.00%
50.00%
75.00%
src.png -> dest.png done

あと、当然なんですが元画像はある程度解像度があったほうがいいです。
256x256くらいからかなとは思います。

なお、Realesrganのプロジェクトは以下にあります。
ソースコードからビルドしたい人はこの辺からgit cloneすればいいと思います。
https://github.com/xinntao/Real-ESRGAN
https://github.com/xinntao/Real-ESRGAN-ncnn-vulkan

もし、UbuntuのGUIでお手軽にやりたい場合は「Upscaler」というFlathubのアプリがRealESRGAN-Vulkanを内包しているようなのでそれを使うのがいいと思います。
普通にソフトウェアから検索したらFlathub版が出てくるのでそれを入れましょう。
ただし、倍率は4倍固定になってたりFlathub特有の制限があるので、FlatsealでHomeディレクトリを許可するかアクセスできるディレクトリを有効にする必要があります。


Stable Diffusion Web UI(AUTOMATIC1111,A1111)を動かす

画像生成AIのアレです。
最近何かと騒がしているStable Diffusionですが、素の実装ではコマンドラインだけだったり簡単には動かしにくいものになっています。
ということでフロントエンドをかぶせて、ブラウザ上から実行できあたかもGUIアプリとして利用できるようにしたのが、Stable Diffusion Web UI(AUTOMATIC1111)となります。

Ubuntuでも以前はCUDAライブラリやらcuDNNライブラリを入れたり色々しないとGPUが使えなかったり、Pythonのバージョンを合わせないと動かなかったんですが、最近だとvenvという仮想環境みたいなのをWebUI側が使ってくれるおかげで元のUbuntuの環境を触らずにCUDAもcuDNNも使って動くようになったので素のUbuntuに気軽に入れられるようになりました。
(わざわざDocker環境を作る必要性も下がりました)

以下手順で簡単にセットアップできます。(GPUがnvidiaの場合)

1.GPU用にnvidiaのドライバを入れます。
さすがに標準で入ってくる「nouveau」ドライバでは動きません。
nvidiaのドライバを入れる必要があります。
これは全く難しくなく、「追加のドライバー」で出てくる最新のドライバーでOKです。

2.Python類を入れ、stable-diffusion-webuiのソースをgithubから取ってくる

$ sudo apt install google-perftools python3 python3-pip python3-venv
$ git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
(必要に応じてTagを変更する。masterは安定版になっているようだ)

3.stable-diffusion-webui/webui-user.shに書かれている以下の表記を、インストール先に変える

#install_dir="/home/$(whoami)"

4.実行

$ cd stable-diffusion-webui
$ ./webui.sh --listen --port 7860 --allow-code --xformers --enable-insecure-extension-access --api

これで http://0.0.0.0:7860 に接続すればWebUIの画面が出ます。
初回実行時にroot権限を要求されることすらないので、元のUbuntu環境を変更していないということも解ると思います。
かなり簡単ですね。


ComfyUIを動かす

画像生成AIのアレその2です。
ローカル画像生成AI界隈(?)で定番のアプリはおおよそAutomatic 1111 WebUIとComfyUIで二分しており、片割れのほうになります
Automatic 1111(以後A1111とします)がダイアログのようなページのような普通に考えそうなGUIに対して、ComfyUIは機能ごとに箱があってそれらに線をつなげて(ノード)実現していくというような、よくあるノードベースのGUIになっています。

ノードベースということで、やや上級者向けになっています。
PythonでDiffuserを直接触って実行することを考えるとノードをGUIでつなげて色んな機能を実現できるわけで、生成が極まってくるとこちらのほうが良い…ということもあり、生成AIの仕組みの学習用途だとこちらのほうがいいのかもしれません。

ノードをプログラミングでいう「関数」と例えると、実質Stablediffusion用のノーコードツールとして捉えることができるかなと思います。

インストール手順はA1111より若干手数がかかります(以下はGPUがnvidiaの場合)

1.GPU用にnvidiaのドライバを入れます。
この辺はA1111と同じなので略

2.Python類を入れる、
この辺はA1111と同じなので略

3.ComfyUIのソースをgithubから取ってくる

$ git clone https://github.com/comfyanonymous/ComfyUI.git

ComfyUIはA1111とは違い常に最新版を使うことが推奨されています
なにか問題があれば自分でgitを使って手戻りしないと行けないかもしれませんが、そのあたりはきっちり管理されてるようで基本そんなことは無いかなといった感じです

4.venv環境の設定と依存パッケージをvenv環境に入れる
A1111はこの辺を自動でやてくれますが、ComfyUIは自分でする必要があります。以下のようにするとOK

$ cd ComfyUI
$ python3 -m venv ./venv 
$ source venv/bin/activate
$ pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu121
$ pip install -r requirements.txt
$ deactivate

まずvenvの環境をComfyUI/venvに作ってそこにComfyUIで使うためだけのPytorchなど色々入れています。
venvの環境で行うため、ホストUbuntuの環境を汚さなくてすみます。
UbuntuはPythonで他のアプリなんかにも使われていることが結構あるので、野良のものを入れる場合はできるだけvenv環境下でやったほうがいいでしょう。
venv環境から抜ける場合はdeactivateで抜けます。

5.実行
venv環境に入ってから実行です。A1111だとあちらが用意してくれているシェルスクリプトで一発で動きますが、ComfyUIはひと手間かける必要があります

$ cd ComfyUI
$ source venv/bin/activate
$ python main.py --listen

これで http://0.0.0.0:8188 に接続すればComfyUIの画面が出ます。

・拡張機能マネージャ(ComfyUI-Manager)の入れ方

ワークフロー(ノードのつなぎかたのレシピなど)は公開されているのですが、たいていの場合はなんらかの拡張機能が使われていてそのままでは使えないパターンが多いです。
人のワークフローから使用されている拡張機能を探してgit cloneで取ってきて…となるとかなり面倒な作業になるのでComfyUI用の拡張機能マネージャこと「ComfyUI-Manager 」を入れることが推奨されています。

以下手順で入れます

$ cd ComfyUI/custom_nodes
$ git clone https://github.com/ltdrdata/ComfyUI-Manager.git

Cloneできたら、ComfyUIをCtrl+Cなんかで終了させて再起動します。
画面右端のバーに「Manager」の項目ができるのでそこから拡張機能をインストールしたり、足りない拡張機能をインストールすることができます。


メニューやランチャーに登録されていないアプリやコマンドを登録して使えるようにする

自作のGUIアプリとか、githubから持ってきて自分でビルドしたGUIアプリなんかはコンソールから実行しないといけないのですが、Ubuntuの標準ではそういったアプリをランチャーに登録していく機能がないので頻繁に実用していく場合はちょっと面倒な場合があります

一応対処法はあって、こういう場合は前まではdesktopエントリの設定ファイルを作ってエディタなどで編集する必要がありましたが、alacarteを入れると簡単にGUIで編集できるようになりました
しかしまあ標準機能では入ってないのが謎ですね

$ sudo apt install alacarte

あとはランチャーに「メイン・メニュー」というアプリが登録されるのでそれを実行して追加していけば良いかと思います
これ何気に必須級かもしれませんねぇ。。。
なおシェルスクリプトだけのものも登録していけるのでその点でも便利です


共有する 共有用にコピー