Tag: Linux

LUKSで暗号化した外部メディアを秘密鍵バックアップに使う

LUKSで暗号化した外部メディアを秘密鍵バックアップに使う

秘密鍵の backup は、単に別 directory へ copy しても十分ではない。

同じ workstation 上に平文 copy を増やすと、disk 故障や誤削除には少し効くが、侵害時の影響範囲はあまり変わらない。普段は unplug しておく外部メディアを暗号化し、必要な時だけ mount する方が扱いやすい。

ここでは Linux で USB メモリや SD カードを LUKS2 化し、小さい秘密ファイルを保存する手順を整理する。

方針

  • media 全体を LUKS2 にする
  • backup 対象は暗号化済み filesystem を mount してから copy する
  • plain filesystem へ一時 copy してから暗号化しない
  • backup 後は fingerprint や hash で内容を確認する
  • mount 解除後に LUKS mapper も close する
  • media の label、serial、保管場所、passphrase は公開メモに書かない

対象デバイスの確認

cryptsetup luksFormatmkfswipefs は破壊的である。まず read-only な確認だけを行う。

lsblk -o NAME,PATH,TRAN,MODEL,SIZE,FSTYPE,LABEL,UUID,MOUNTPOINTS
udevadm info --query=property --name=/dev/sdX | grep -E '^(ID_BUS=|ID_MODEL=|ID_SERIAL=|ID_FS_TYPE=|ID_FS_LABEL=)'

見る点:

Read more...

MIDI controllerでLinux desktopのモニター入力と明るさを操作する

目的

KORG nanoKONTROL2 のような USB MIDI controller を、Linux desktop の物理操作盤として使いたいのでGolangで作った。

midi-switch

MIDI event を ALSA sequencer で読み、ddcutil でディスプレイの入力ソース、明るさ、コントラストを操作し、必要なら pactl で音量も操作する。

構成は単純にする。

USB MIDI controller
  -> ALSA sequencer event
  -> small daemon
  -> ddcutil / pactl
  -> display input / brightness / contrast / volume

できた感想

リモートワークで窓際で作業してるのですが時間帯や天気によってディスプレーの明るさやコントラストを変えたくなるのですが MIDIのスライドバーとかボリュームボタンで変えられて嬉しいです あとラズパイの検証時、ディスプレー入力をちょいちょい変えたくなるので便利になった(稀に起動初期の画面がみたい事がある)

方針

初期実装では MIDI library へ直接つながず、aseqdump の stdout を読む方式で十分に価値がある。

理由:

  • aconnect -laseqdump の結果をそのまま調査ログとして使える
  • MIDI button、knob、slider の note / controller 番号を目視で確定しやすい
  • ALSA sequencer port が見えていれば Go や shell からすぐ扱える
  • 仕様が固まってから gomidi / RtMidi などへ移行できる

ddcutil 側も、まずは ddcutil detectgetvcpsetvcp を外部 command として呼ぶ。 daemon 内で DDC/CI protocol を直接実装しないことで、モニター差分の切り分けを ddcutil に寄せられる。

Read more...

日常CLIコンテナでhost UID/GIDに合わせてshellへ入る設計

日常CLIコンテナでhost UID/GIDに合わせてshellへ入る設計

目的

日常的に使う CLI tool をコンテナ image にまとめると、host の環境を壊さずに新しい tool や最新版を試せる。 一方で、作業ディレクトリを bind mount して shell に入る場合、コンテナ内ユーザーの UID/GID が host とずれると、作成ファイルの所有者が壊れる。

Dockerfile に個人の user name、UID、GID を焼かず、起動時に host user に合わせる。

shell wrapperとentrypointを分ける

責務を分ける。

shell wrapper:
  - host側で実行する
  - container runtimeを選ぶ
  - bind mountを組み立てる
  - hostのUID/GID/USER/HOMEを環境変数で渡す
  - containerは一度rootで起動する

entrypoint:
  - container内で実行する
  - hostと同じUID/GIDのuser/groupを作る
  - 必要な補助groupを設定する
  - 作業userへ権限を落としてcommandを実行する

この形にすると、image 自体は汎用のままにできる。 利用者ごとの UID/GID は runtime の入力として扱う。

Read more...

NEC VersaPro J TypeVT に Gentoo を入れるときのメモ

NEC VersaPro J TypeVT に Gentoo を入れるときのメモ

NEC VersaPro J TypeVT PC-VK16XTAAN は、Atom x7-Z8700 世代の 2-in-1 タブレット。 古い Atom タブレットらしい癖はあるが、64-bit UEFI、i915、eMMC、Broadcom Wi-Fi、Wacom touch/pen、UPower、backlight が Linux から見えるため、Gentoo amd64 の軽量デスクトップとしては十分に検証できる。

最初からカーネルを削り込まず、sys-kernel/gentoo-kernel-binsys-kernel/linux-firmware、NetworkManager、PipeWire/WirePlumber、ALSA UCM、軽量 Wayland compositor で立ち上げるのがよかった。

機種メモ

NEC の商品情報では PC-VK16XTAAN は Atom x7-Z8700 搭載機として扱われている。 Linux 事例を探すときは、NEC の型番だけでなく ThinkPad 10 系の情報も参考になる。 キーボードドックも Linux からは ThinkPad 10 系の USB HID keyboard / mouse として見える。

Boot menu は、キーボードドック接続時なら F12 で入れる。 Secure Boot や firmware 設定は個体や BIOS revision の影響を受けるため、インストール時はまず Secure Boot を無効化したシンプルな構成で確認する方が切り分けしやすい。

Read more...