WPP
LM22: Mozc の辞書ツールにキーボードショートカットを割り当てて、ユーザ辞書を追加した

最近、日本語変換で積極的に単語登録するようにしている。特別な方法ではなくよくある「よろ」で「よろしくお願いします」に変換するような短縮を登録している。

で、辞書に単語登録するのが面倒な理由の一つが辞書ツールや登録ツールを呼び出すのに IME のアイコンから右クリックしてメニューを選択するというアクションがいちいち面倒なためだと思う。
この面倒さは、Linux のデスクトップでも Windows でもほとんど変わらない。しかの最終的に変換できてしまうものだからなんとなく後回しにしがち。

でだ、辞書ツールのコマンドラインがわからないので Archi Linux の Wiki を調べるとユーザー辞書を追加したほうがいいよ的なことが書いてあるのであわせて実施してみた

辞書ツールにショートカット割り当て

LM22 (Linux Mint) のCinnamon で行っているので Ubuntu とか他のデスクトップ環境では若干異なると思うがほぼ同じようなことはできるはずだ。

辞書ツールのコマンド

Mozc – ArchWiki によると設定ツール、辞書ツール、単語登録というのは mozc_tool という一つのファイルで引数を切り替えることで使い分けているようです。

実際のコマンドはこんな感じらしい。

設定ツール:
/usr/lib/mozc/mozc_tool –mode=config_dialog

辞書ツール
/usr/lib/mozc/mozc_tool –mode=dictionary_tool

単語登録
/usr/lib/mozc/mozc_tool –mode=word_register_dialog

今回は、ラウンチャアイコンは作成せずに、辞書ツールに直接キーボード・ショートカットを割り当てることにした。

  1. 設定アプリからキーボードを開く
  2. ショートカットタブを選択する
  3. カスタムショートカットを選択
  4. [Add custom shortcut] ボタンをクリック
  5. Name: を適当に決める
  6. Command: に /usr/lib/mozc/mozc_tool –mode=dictionary_tool を指定する
  7. 登録して、ダイアログを閉じる。
  8. 下段のキーボードバインディングで unassigned の行をダブルクリックする。
  9. 割り当てたいキーボードショートカットを押す。

自分は、Shift + Ctrl + D をショートカットに割り当てましたが、このへんは好みで変えてほしい。
また、個人的な好みでダブリ登録したくないので辞書ツールを起動しているが、単語登録でもいいと思う。

ユーザー辞書登録

ネット上では Mozc UT ってのを使うっていう記事がたくさん見つかりますがこれ、Mozc そのものをビルドしなきゃいけないんですね。ちょっと面倒なので、他の方法でいくことにした。

Mozc UT Dictionaries

utuhiro78/merge-ut-dictionaries: Merge multiple Mozc UT dictionaries into one and modify the costs.

だいぶ古い記事になるのですが、

Google日本語入力 強化辞書の構成を変えてみた。 – 黒MacBookが好き の辞書をインポートして使っている。

Mozcに辞書を追加した: arcadia’s blog のやり方が参考になるかもしれない。

考えるのも面倒だったので、自分の場合はそのまま辞書ツールでインポートした。

英和と和英辞書はインポートしなくてもよかったかもしれない。

Remmina が mdns で名前解決できるようにした

最近は、いちいち VNC クライアントをインストールがめんどうなので LM22 にはじめから入っている Remmina を 使っている。

がしかし、Remmina だと mdns による名前解決が使えなくて困っていた。

Remmina 自身は flatpak でインストールしていたが、D-Bus のパーミッション (socket=system-bus、socket=session-bus) を許可しても現象に変化がなかった。

Claude に聞いてみると /etc/nsswitch.conf を書き換えろってことでやってみた。

変更前:
hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname mymachines

変更後:
hosts: files mdns4_minimal mdns4 [NOTFOUND=return] dns myhostname mymachines

[NOTFOUND] の前に mdns4 を追加すると Remmina でも名前解決できるようになった。

LM22.1 にアップグレード

Linux Mint 22 から 22.1 にアップグレードした。

今回は、21 から 22 のときのような TimeShift のバックアップを要求されずにすんなりとアップグレードできた。

画面は全くキャプチャ取っていないが、何も難しいことはないので問題ないだろう。

os-realease と upstream-relase/lsb-release はこうなった。

$  cat /etc/os-release 
───────┬──────────────────────────────────────────────────────────────────────────────────────────────
       │ File: /etc/os-release
───────┼──────────────────────────────────────────────────────────────────────────────────────────────
   1   │ NAME="Linux Mint"
   2   │ VERSION="22.1 (Xia)"
   3   │ ID=linuxmint
   4   │ ID_LIKE="ubuntu debian"
   5   │ PRETTY_NAME="Linux Mint 22.1"
   6   │ VERSION_ID="22.1"
   7   │ HOME_URL="https://www.linuxmint.com/"
   8   │ SUPPORT_URL="https://forums.linuxmint.com/"
   9   │ BUG_REPORT_URL="http://linuxmint-troubleshooting-guide.readthedocs.io/en/latest/"
  10   │ PRIVACY_POLICY_URL="https://www.linuxmint.com/"
  11   │ VERSION_CODENAME=xia
  12   │ UBUNTU_CODENAME=noble
───────┴──────────────────────────────────────────────────────────────────────────────────────────────

$ cat /etc/upstream-release/lsb-release 
───────┬──────────────────────────────────────────────────────────────────────────────────────────────
       │ File: /etc/upstream-release/lsb-release
───────┼──────────────────────────────────────────────────────────────────────────────────────────────
   1   │ DISTRIB_ID=Ubuntu
   2   │ DISTRIB_RELEASE=24.04
   3   │ DISTRIB_CODENAME=noble
   4   │ DISTRIB_DESCRIPTION="Ubuntu Noble Numbat"
───────┴──────────────────────────────────────────────────────────────────────────────────────────────
arm64 ROS2 環境を podman で動かす

いろいろと紆余曲折ありましたが、最終的に podman で動かすことで落ち着きそうなので記事にします。

d最近の私のお供は Claude なのですが早速聞いてみますとつらつらと Dockerfile を提示してきます。多少アレンジしてますが骨子はそのままです。

FROM --platform=linux/arm64 ubuntu:22.04


ENV DEBIAN_FRONTEND=noninteractive

RUN rm /var/lib/dpkg/info/libc-bin.* && apt-get clean

# 日本のミラーに向ける
RUN sed -i 's@archive.ubuntu.com@ftp.jaist.ac.jp/pub/Linux@g' /etc/apt/sources.list

RUN apt-get update && \
    apt-get install -y wget \
    curl \
    git \
    vim \
    lsb-release \
    build-essential python3-pip python3-setuptools python3-dev \
    gnupg2 xterm x11-apps

# ROSのセットアップ(ここでは例としてROS 2 Humbleを使用)
RUN curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
RUN echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | tee /etc/apt/sources.list.d/ros2.list > /dev/null
RUN apt-get update && apt-get install -y \
    ros-humble-ros-base \
    ros-humble-rqt* \
    ros-humble-rviz2 \
    python3-colcon-common-extensions

# 作業ディレクトリの作成
RUN mkdir -p /workspace
WORKDIR /workspace

# 環境変数の設定
RUN echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc

変更かけたのは、 sed で日本のミラーに向けたところと、rm /var/lib/dpkg/info/libc-bin.* でファイルを削除した箇所です。

特にこの libc-bin.* の削除をしないと、apt-get でのパッケージインストールにことごとく失敗するします。なんとなく削除するのは良くないような気もするのですが、 Stack Overflow でもいくつか Good がついているので大丈夫じゃないかと。

setup.bash もすでに読み込み済みなので起動すると即 ros2 コマンドが実行できる状態になっています。

ビルドと起動は下のようにします。

Claud は気が利いているのどうなのかこの状態で GUI アプリも動作出来るようにしてくれているようでコンテナを実行するにはこうするみたいです。

$  ls ./Dockerfile
./Dockerfile

$ podman build -t ros2-arm64 .

$ podman run --platform linux/arm64 \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -e DISPLAY=$DISPLAY \
  -v $HOME/.Xauthority:/root/.Xauthority \
  -v $HOME/ros2_ws:/workspace \
  --net=host \
  -it localhost/ros2-arm64

起動のたびにこのコマンド打つのはしんどいのでシェルスクリプトかなんかにしたほうがよさげ。

でコンテナの中で動作確認するには、下のようにしろと Claude が言うので試してみる。

; ホストに 目玉アプリが表示される。
in-contailner: # xeyes

; ホストに ros2 の rqt が表示される
in-contailner: # rqt 

ちゃんと計測したわけではないが qemu-system でエミュレーションより少し早い気がする。

にしても Claude に言われるがままだな。

参考

Dockerのイメージビルド中でapt-getを高速化するたった1つの方法 | ゲンゾウ用ポストイット
souces.list のミラーを日本の jaist に向ける設定

ruby on rails – Docker build fails because unable to install libc-bin – Stack Overflow
libc-bin のエラー回避

x86_64 の LM22 で arm64 の ubuntu 22.04 を動かす

前回記事では、同じ x86_64 の LM22 で arm64 向けのクロスビルド環境を設定しましたが、ちょっと考えてみると、ROS2 からヘッダやらライブラリを取ってきて /usr/aarch64-linux-gnu 以下に適切に配置するのはちょっと面倒そうだと思えてきたので qemu で arm64 の ubuntu を動かすことにした。

流れとしては Ubuntu の ARM64 vitual machines on QRME のページでいいのだが、Qita 見ないと行けない部分があったので記事にする。

$ sudo apt install qemu-kvm qemu-system-arm64 libvirt-daemon-system libvirt-clients bridge-utils virtinst libosinfo-bin

Ubuntu 22.04.05 をインストールインストールしたかったので releases から .iso ファイルをダウンロードしたのだが上手く起動しなかった。

Ubuntu Cloud Images – the official Ubuntu images for public clouds, Openstack, KVM and LXD から 22.04 を指し示す jammy > current と進み、jammy-server-cloudimg-arm64.img をダウンロードする。

wget https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-arm64.img

としてもいい。

ここから先は、Ubuntu 公式ではなく Qiita の参考ページの手順をやっていく。イメージサイズを変更する必要があるらしい。

$ qemu-img resize  jammy-server-cloudimg-arm64.img 16G

cloud イメージ用に設定ファイル作成する。

$ touch meta-data
$ touch user-data
$ vi user-data
;; 以下の内容を入れるらしい
#cloud-config
user: xxxxx
passowrd: xxxx
chpassword: { expire: Fail }
ssh_pwauth: True
:wq

上の設定だと、ユーザーが作成されて初回起動時にパスワード変更を強制される。さらに ssh のパスワード認証も許可される。
パスワード変更の強制が面倒なのであとで回避できる設定を調べようと思う。

ユーザーデータを保存?するイメージを作成する必要もあるみたい。
CD-ROMイメージだし、恐らく user-data と meta-data を読み出すためだけに作るものっぽい。

 ci$ genisoimage --output ./udata.iso --volid cidata -joliet -rock user-data meta-data

で、やっと仮想マシンを作成すると、ままんま

$ virt-install \
--connect qemu::///system \
--name u22-arm64 \
--vcpus 4 --ram 4096 \
--hvm --virt-type qemu \
--arch aarch64 \
--os-type linux --os-variant ubuntu22.04 \
--import --norebooy \
--disk path=./jammy-server-cloudimg-arm64.img  \
--disk path="./udata.iso,device=cdrom"

ここで iso ファイルにアクセスできない「permission denied」エラーが出ので最後の参考ページの内容を実行する。

/etc/libvirt/qemu.conf にユーザー名とグループ名を設定する

$ vi /etc/libvirt/qemu.conf
以下の2行をいい感じのところに追記

user = "ログインユーザー名"
group = "libvirt"
:wq

/etc/libvirt/libvirtd.conf も設定しないと行けないようだ。

$ vi /etc/libvirt/libvirtd.conf
unix_sock_group = "libvirt"
unix_socl_ro_perms = "0777"
unix_sock_rw_perms = "0770"

auth_unix_ro = "none"
auth_unix_rw = "nonw"
:wq

自分のケースはこのファイルは何も変更する必要がなかったかもしれない。

もう一度 virt-install をし直すと、無事に仮想マシンが作成され実行出来るようになった。

ブリッジネットワークを作成する必要があるというページもいくつか見かけたが、今回試した際は手動で作成することなく自動的にブリッジネットワーク(NAT)が作成されて完了した。

これで ROS2 のビルドできそうだ。とはいえこの PC だと遅い。

参考

Boot ARM64 virtual machines on QEMU – Ubuntu Server documentation
ARM64 となっているのに qemu-system-arm をインストールとなっているのは、qemu-system-arm64 の間違いだと思う。

Ubuntu20.04@x86_64のLinuxKVM上にaarch64のUbuntu20.04仮想マシンを立てる #Ubuntu – Qiita

virsh-install時にpermission deniedとなる場合 #KVM – Qiita

お手軽に arm64 クロスビルド環境を作る

引きつづきラズベリーパイの ROS2 環境をいじっているんですが、ふと ROS2 用のコードをビルドするだけなら何も Docker や Podman、QEMU で OS 動かしたりする必要ねんじゃね?と思い PC 側でクロスビルド環境を作ってみた。

$ sudo apt install crosbuild-essential-arm64
$ sudo libc6-dev-arm64-cross

もしかすると、libc6-dev-arm64-cross はいらないかもしれない。

インストールすると /usr/aarch64-linux-gnu/ にライブラリやヘッダーファイルなどが保存される

試しにソースをビルドしてみます。

#include <stdio.h>

int main(int, char**)
{
   printf("hello- arm!!\n");
   return 0;
 }

clang でビルドしてみる

$ clang --target=aarch64-linux-gnu hello.c

a.out が出来るので確認してみる

$ file a.out
a.out: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=af0df26fcefe0b9815d6892dd721439aaf1759e6, for GNU/Linux 3.7.0, not stripped

ちゃんと aarch64 になってる。

普通に実行すると怒られる
$ a.out
aarch64-binfmt-P: Could not open '/lib/ld-linux-aarch64.so.1': No such file or directory

実行する。

$ sudo apt install qemu-user
$  qemu-aarch64  -L /usr/aarch64-linux-gnu/ ./a.out 
hello- arm!!

または、QEMU_LD_PREFIX 環境変数を設定して実行
$ QEMU_LD_PREIX=/usr/aarch64-linux-gnu ./a.out

もしかすると qemu-user-static パッケージも必要かもしれない。そのへんは適宜インストールすること。

Arm 用の ROS2 環境を /usr /aarch64-linux-gnu に展開する方法はまた考えよう。

参考

clang + cmake で aarch64 linux 向けに C/C++ アプリをクロスコンパイルするメモ #CMake – Qiita

QEMU でARM エミュレータ環境を作成する #ARM – Qiita

LM22 Cinnamon のアプレットで caps ロックを表示する

個人的な環境の話で申し訳ないが、今デスクトップ PC に接続しているキーボードはキャプスロックの LED がなく、ロック状態を表示するものがない。

このままでもいいっちゃいいんだが、なんかいい方法がないか調べてみる。

すると cinnamon のアプレットに “Lock keys indicator with notifications” というのがあるので入れてみた。以前の Linux Mint にもきっとあるはず。

設定画面を開くとこんな感じ

caps lock や num lock があるので好きなのをチェックすると Cinnamon のパネル状に小さなアイコンが表示される。アイコンをクリックしてもロック状態を切り替えることができる。

Ubuntu や他の環境でも同じような extension は多分あると思われる。

LM22 にハイバネーション設定

この年末でノート PC が壊れてしまい タワー型の PC をメインで使うことになりました。随分前から使っているのですが、サスペンド/ハイバネートが効かないのが気にはなっていました。

ハイバネートできなくても使うこと自体にはなんら支障はありませんが、普段ノートを使い電源切らない運用しかしていないのでビミョーに不便です。やっぱり中断前の作業状態にすぐ復帰できるの地味ながらとても便利です。

でネットを調べるといろいろな手順がヒットしますがまとめると概ねこんな感じになるらしい。

  1. スワップファイルかスワップパーティションを作成する
  2. GRUB にスワップを使うことを知らせる (/etc/defaults/grub の更新)
  3. update-grub で設定を反映し、テスト

スワップファイルを作成

ネット上ではスワップファイルを使うケースが多いが若干設定箇所が異なるので注意が必要です。

この PC はすでにスワップファイル使っているのでスワップパーティションの作成はしません。

この辺は適当に。

スワップファイルのある場所の UUID とオフセットを確認する。自分の例ではスワップファイルは /swapfile というパス名で作成していますので適宜あわせてください。

; uuid の確認
$ sudo findmnt / -o UUID
e62d2aa4-2253-4f99-bb9b-28cc9bd0c888

; 別の方法
$ ls -l /dev/disk/by-uuid
rwxrwxrwx - root 29 Dec 14:46 181B-6932 -> ../../sda2
lrwxrwxrwx - root 29 Dec 14:46 be4c8276-05df-4175-9e40-55a460df91db -> ../../sdb
lrwxrwxrwx - root 29 Dec 14:46 e62d2aa4-2253-4f99-bb9b-28cc9bd0c888 -> ../../sda3


; オフセットの確認
~$ sudo filefrag -v /swapfile
Filesystem type is: ef53
File size of /swapfile is 34359738368 (8388608 blocks of 4096 bytes)
 ext:     logical_offset:             physical_offset:  length:   expected: flags:
   0:            0..   32767:   78086144..  78118911:  32768:            
   1:    32768..   65535:     4161536..   4194303:   32768:   78118912:
   2:    65536..   98303:     8355840..   8388607:   32768:    4194304:
..... ずっと続く

; この例だと 78086144.. が該当します。

設定ファイルを更新する

カーネルにレジュームを使うことと、スワップファイルの位置を知らせる。

設定ファイルの場所はいくつかあるらしいが /etc/default/grub を変更することにした。GRUB_CMDLINE_LINUX_DEFAULT= に resume=UUID=e62d2aa4-2253-4f99-bb9b-28cc9bd0c888 resume_offset=78086144 を追記する。

sudo vi /etc/default/grub
...
GRUB_CMDLINE_LINUX_DEFAULT="quiet splashi apm=off acpi=force resume=UUID=e62d2aa4-2253-4f99-bb9b-28cc9bd0c888  resume_offset=78086144"
...
:wq

設定を反映する

最近 GRUB の設定をいじることはあまりなくなってすっかり忘れていましたが、gurb を更新します。よくわかっていませんが、このコマンドの過程で initramfs も更新される? のかなと思います。

$ sudo update-grub

再起動して、テストする。

$ systemctl hibernate

うまく行くと SSD への少し長いアクセスのあと電源が切れます。もちろん電源を再投入すると元の作業状態でデスクトップが再開されます。

もしかすると BIOS/UEFI で ACPI を有効にする設定が必要かもしれません。

2024-12-30 追記

終了ダイアログにハイバーネートを追加

systemctl hibernate が動いているのですっかり OK かと思っていたが、終了ダイアログにハイバーネートボタンがないことに気づいた。

ターミナルから入力すればいいのだが、これはこれで微妙に面倒くさい。「交流電燈舎第弐工房日誌」さんの記事の通りに、/etc/polkit-1/localauthority にフォルダとファイルを作成してみる。

こんな感じで /etc/polkit-1/localauthority/50-local.d/50-hibernate.pkla ファイルを作成した。(pkla はピーケーエルエーです。)
ファイル名は数字から始まり、かつ .pkla で終われば適当な感じでOKだと思う。

[Re-enable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

[Re-enable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
ResultActive=yes

再起動するもダイアログの内容は変わらなかった。

いろいろ調べてみるとどうも polkit (policy kit) というのでハイバーネート権限があるかどうかで挙動が変わるらしい。早速確認すると、sudo なしだと no で policy kit 的にはハイバーネートできないってことになっているらしい。

$ busctl call org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager CanHibernate 
s "no"
$ sudo busctl call org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager CanHibernate 
s "yes"

参考リンクの Linux Mint Forums の記述を参考に .rules ファイルを作成する。

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.login1.hibernate" ||
        action.id == "org.freedesktop.login1.hibernate-multiple-sessions" ||
        action.id == "org.freedesktop.upower.hibernate" ||
        action.id == "org.freedesktop.login1.handle-hibernate-key" ||
        action.id == "org.freedesktop.login1.hibernate-ignore-inhibit")
    {
        return polkit.Result.YES;
    }
});

本来なら subject に実行ユーザーの情報が入ってくるので、一定の権限のユーザーだけ許可するように処理を書くべきなようです。今回は subject を捨てて闇雲に許可しているのでセキュリティ的には問題ありそうですが、よくわからないので良しとします。

ファイルを保存して再起動すると、.pkla ファイルが反映され、終了ダイアログと設定 “Power Management” でハイバーネートの設定が表示されるようになりました。

Windows ならインスーラが認識できなければほぼ実現できないことがやれるようになるのは Linux のいいところでもあり、だからこそ煩わしいところでもある。昔よりはずっと良くなったがまだまだ覚えなければいけないことはたくさんある。

参考

電源管理/サスペンドとハイバネート – ArchWiki
このページは ArchiWiki の中では比較的わかりにくいです。

ハイバネーション, レジューム, サスペンド, LinuxMint – 交流電燈舎第弐工房日誌
このページはわかりやすかった

Linux Mint 21.2 でハイバネートできるようにする(rEFInd を使っている場合) – 🍣すしでもどうですか
rEFInd は GRUB2 のようなブートローダらしい、なのでブートローダ関連のファイル修正は GRUB2 とは異なる

How to enable Hibernate Mode on Linux Mint | FOSS Linux

[SOLVED] Mint 22 enable hibernation in power and shutdown menu – Linux Mint Forums

Pi5 に PoE+ HAT で NVME 起動するように設定する

先日から始まった ROS2 関連のエントリになります。

とりあえず ROS2 を Raspberry Pi で動かしているのですが、Pi 4 が 1 台だけだと心もとないので Pi 5 用の POE+ ハットを購入して動かすことにしました。

買ったのは WaveShare の PoE M.2 HAT+ という商品です。日本だと 4,000 から 5,000 円くらいで入手できると思います。自分は WaveShare 公式から買いました。

そんなことはどうでもいいのですが、この HAT には M.2 NVME ソケットがついていて SSD を接続するとそこから Pi 5 を起動できるようになります。というのも ROS2 のモジュールを作る際、ビルドが早い環境があったほうが何かと都合がいいので SSD 起動を試します。

基本、参考セクションの公式のページ通りにやれば何も問題は起きないはずです。が、自分の場合はなぜか pcie デバイスとして認識しない事態になりました。

というのもこの HAT のケーブル向きがあるんです !

写真は最終的に成功したときの様子です。

Pi5 + WaveShare PoE M.2 HAT+ 接続全体

接続がうまく行っているときは右上の赤枠の通り、電源 LED が点灯し、緑のアクセスランプが適宜点灯(要するに点滅)します。

で前述のケーブルの向きですが、こうなります。

PoE M.2 HAT+ ではケーブル向きを上の写真のように三角の位置を揃える必要があるってことです。

これ普通に公式 Wiki 見ていればきづくはずですが、フラットケーブルの端子面は気にしていたのですが、見落としてました。

一般的に片面にしか端子がないフラットケーブルはひっくり返すと通電しません。(コネクタ側も片面しか端子がないので、当たり前です。)

さらに、この HAT の場合には、三角マークの部分で左右非対称になっているようで三角の位置を合わせないとダメでした。つまりこのケーブルは、Pi 5 に挿す側と HAT に挿す側が予め決まっており、裏表も正しく挿す必要がありました。

同様の事態になる人は少ないと思いますが、自戒の意味を込めて晒します。

あとは、まあ公式通りです。

/boot/firmware./config.txt に dtparam の行を追加します。

$ sudo vi /boot/firmware/config.txt
[all]
dtparam=pciex1
dtparam=pciex1_gen=3
:wq

動画かなにかで [cm4] セクションに書いている例もありましが、なんとなく気持ち悪いので [all] セクションに書きました。正直無名セクションや、pi0 系のセクション以外ならで良いとおもいますが。。。

再起動して lspci で SM2263 が表示されれば OKです。

次に rpi-eeprom-config –edit でブートオーダーを変更します。

$ sudo rpi-eeprom-config -edit
BOOT_ORDER=0xf416

あとは、”SD Card Copier” でコピーするなり、”Raspberry Pi Imager” で SSD にOSを書き込めば起動します。

参考

PoE M.2 HAT+ – Waveshare Wiki

Raspberry Pi 5をNVMe SSD起動でデスクトップPC化

dock 風ラウンチャ Plank を使う

以前から使っていて、再セットアップ時に名前を思い出せなかったので記事にします。完全に備忘録ですね。

いわゆる MacOS のドック風のしたからせり出してくるラウンチャ

同様のアプリは Cairo-dock のほうがメジャーらしいのですがプラグインがたくさんあるけど、きっと使わないだろうと思い Plank にしました。

$ sudo apt install plank
; 設定するには
$ plank --preferences

設定画面には、ラウンチャーを表示してアプリとアプリの間の起動しない下地の部分で右クリックすれば行けるのですがこれがなかなか難しいのでコマンドもメモ。

Icon Zoom: を設定してやると Mac みたいにビューンとアイコンが大きくなる動作をします。まあ、まんまです。

コマンドの存在を忘れるとそもそも思い出すのも面倒なのでどっちのほうが簡単かは悩ましいところ。

参考

Ubuntuで使用できるMacのドックのようなPlankの使い方 | virtualiment