2025年6月10日

Arch Linux (LVM on LUKS)をTPM2を使って起動させる

奥さんがPCを使うにあたって、パスワード入力だと不便。

せっかくTPM2が使える機種(ThinkPad X13 Gen2)なので使えるようにしてみる。

(テスト運用として、とりあえず使えれば良しとする)

 

1. ブートローダーの変更

ブートローダーをgrub から systemd-bootに変更する。

以下のコマンドでインストールする。

# bootctl install

grubと両存可能だったので、こちらも念の為残しておくことにする。


以下のようにエントリファイルを作成する。

{UUID}の部分はlsblk -fで確認する。 

$ cat /boot/loader/entries/arch.conf

title    Arch Linux
linux    /vmlinuz-linux
initrd    /initramfs-linux.img
options    luks.name={UUID}=cryptroot root=/dev/mapper/System-root rw
 
最後のoptionsの行は、busybox initを使うかsystemd initを使うかでフォーマットが変わるらしい。おそらくsystemd initじゃない場合は以下になる。
(systemd-bootを使ってsystemd initじゃないということがあるのかわからないけど)
options cryptdevice=UUID={UUID}:cryptroot root=/dev/mapper/System-root rw
 
 
2. mkinitcpio フックの変更
systemd initベースにするため、/etc/mkinitcpio.confのフックを変える
 
・before
HOOKS=(base udev autodetect modconf block encrypt lvm2 filesystems keyboard fsck)
 
・after
HOOKS=(base systemd autodetect modconf sd-vconsole block sd-encrypt lvm2 filesystems keyboard fsck)
 
変更点
udev -> systemd
sd-vconsoleの追加(英字キーマップなので不要かも)
encrypt -> sd-encrypt
 
編集後は、
# mkinitcpio -p linux
しておく
 
 
3. TPM2デバイスを登録する
systemd-cryptenrollを使って、LUKSボリュームにTPM2デバイスを追加する。
あらかじめ、tpm2-tssパッケージを入れておく
 
# systemd-cryptenroll --tpm2-device=auto /dev/sdX 
TPM2デバイスが1つであれば、上記で完了するはず
 
# cryptsetup luksDump /dev/sdX
これで確認できる 
 

上記によって、通電してそのままLightDMまで到達することを確認した。
UEFI設定でgrubから起動すると、従来通りパスワードを求められる。
 
実際は色々試行錯誤したので、別の設定が効いている可能性も否定はできない。 
(一応、Clevisを始めとするその他の設定やパッケージはすべて消したつもりではあるが)

2023年8月2日

Arch Linux + PlatformIOでCH32Vの開発環境を構築する

 最近話題な? 秋月で50円で買えるマイコン

 https://akizukidenshi.com/catalog/g/gI-18061/

 を買ってみたので、Arch LinuxとPlatformIOで開発環境を構築したメモ

 VSCodeにPlatformIOのプラグインを導入して、基本的な環境構築はできているものとする。

  1. PlatformIOにch32v環境を追加する
    PlatformIOのAdvanced Installationから下記リポジトリを追加する。
    https://github.com/Community-PIO-CH32V/platform-ch32v.git

  2. udevルールを追加する(1のリポジトリにも手順は記載されている)
    /etc/udev/rules.d/99-platformio-udev.rules
    (PlatformIOの環境を作ってたら大抵あるはず)
    に以下を追記 (追記後は再ログイン必要)
    SUBSYSTEM=="usb", ATTR{idVendor}="1a86", ATTR{idProduct}=="8010", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTR{idVendor}="4348", ATTR{idProduct}=="55e0", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTR{idVendor}="1a86", ATTR{idProduct}=="8012", GROUP="plugdev"

  3. mounriverのツールチェーンをインストールする
    多分これが通常ハマるのではないか? 下記パッケージをインストールしておく
    https://aur.archlinux.org/packages/mounriver-studio-toolchain-openocd-bin

    これがなくてもビルドはできるが、書き込みに失敗する。

 
とりあえずLチカはできました

 





2022年10月10日

Canonレーザープリンター(LBP6200)の64bitドライバーをセットアップ

 LBP6200のセットアップに色々ハマったのでメモ

 

1. 公式サイトからドライバをインストール

cndrvcups-common_3.21-1_amd64.deb

cndrvcups-capt_2.71-1_amd64.deb

 

2. 足りないライブラリをインストール

Ubuntu(20.04)では 

/usr/bin/captfilterの動作にlibpopt0:i386

/usr/bin/captstatusuiの動作にlibxml2:i386

が追加で必要だった


3. /etc/ccpd.confの確認

デバイスパス、ポート等確認。デフォルトのままでいいはず

 

4. lpadminコマンドでCUPSにプリンタを追加

sudo lpadmin -p LBP6200 -m CNCUPSLBP6200CAPTJ.ppd -v ccp://localhost:59687 -E

(ccpから始まるアドレスのポートががccpd.conf内の"PDATA_Port"と一致してるか確認)

 

5. ccpdadminコマンドでccpdにプリンタを追加

sudo ccpdadmin -p LBP6200 -o /dev/usb/lp0

(デバイスのパスがccpd.confと一致してるか確認)


(ここで一旦PCを再起動しておくといいかも・・・)


6. ccpdの再起動

sudo /etc/init.d/cupsd start

sudo /etc/init.d/cupsd start 

 

7. プリンタの状態を確認する

captstatusui -P LBP6200

でプリンタと疎通を確認。電源ON/OFFでメッセージが出なければなにかおかしい


8. テストページ印刷

CUPSのWebインターフェースからテストページ印刷できれば成功

 

2021年2月3日

Raspberry Pi picoをArch Linuxでプログラミングしてみる

早速買ってみたので動かしてみる

1. 必要なパッケージを入れておく
arm-none-eabi-binutils
arm-none-eabi-gcc
arm-none-eabi-newlib
cmake
あたりのパッケージでサンプルコードのビルドができた

2. SDKとサンプルコードを調達する 
raspberrypi/pico-sdkとraspberrypi/pico-examplesをcloneする。

3. ビルドする
pico-examples以下にbuildディレクトリを作成
buildディレクトリ内で cmake .. -DPICO_SDK_PATH=(pico-sdkのディレクトリを指定)

あとはmakeするだけ。build以下に.uf2ファイルなどが出力される。

4. picoに書き込む
BOOTSELボタンを押しながらUSB接続すると、マスストレージとして認識されるので、
先程の.uf2ファイルをコピーすると、自動的にpicoが再起動しプログラムが動作する


Lチカでモールス信号

とっかかりはとても簡単

2021年2月1日

フロートバルブ

 バイクが不調 (ガソリンがあるのにガス欠症状を起こす)

色々順番に調べたが、原因はフロートバルブだった。バルブシートも併せて交換。以後ガス欠症状は発生しなくなった




2019年8月18日

PC入れ替え

いわゆるSandyBridgeおじさんからZen2へ刷新 (2600K -> 3700X)

ArchLinuxも5年ぶりに新規インストール