読者です 読者をやめる 読者になる 読者になる

do:kalaclism

『輝かしい青春』なんてなかった人のノート

Archlinux の rootfs encryption をリモートから unlock する

とりあえず、試行錯誤した末に出来たのでメモ。

今回の作業の概要

Archlinux on Mac mini late 2012 with rootfs encryption

と言う環境で、

ssh 経由で roorfs encryption の unlock が出来る

というのを作った。

下準備

とりあえず今回は Wi-Fi から繋げたかったので、

  • Archlinux on Mac mini late 2012 with rootfs encryption

から Wi-Fi 接続出来る様に、下記のパッケージを導入した:

  • wpa_supplicant - pacman から
  • b43-firmware - yaourt から

まあ後は Arclinux で Wi-Fi 使う要領で作業すれば良い。

あと、基本的に Mac mini に Archlinux を入れるには、

  • USB 接続の Keyboard
  • Ehternet 接続できるネットワーク

辺りがないと、ドライバとかの加減で pacstrap 出来ねぇとかなるので、その辺りは用意しておいた方が良い。

ちなみに僕は、押し入れなどで眠っていた、

  • PS/2 Keyobard + PS/2 <=> USB のケーブル
  • 古い Ehternet Converter の子機

を使いました。

rootfs encryption の remote unlock over Wi-Fi

これがまあ面倒だったんだけど、基本的には、

をアレンジして、下記の様になった:

  1. パッケージの追加
    • mkinitcpio-nfs-utils (pacman)
    • mkinitcpio-dropbear (yaourt)
    • mkinitcpio-utils (yaourt)
  2. ssh 鍵の追加
    • 今回だと /etc/dropbear/root_key に ssh 公開鍵を登録する
  3. mkinitcpio 用に wifi フックの追加
  4. /etc/mkinitcpio.conf の編集と initramfs の rebuid
    • MODULES に Mac mini late 2012 用の Wi-Fi ドライバを追加 (環境固有)
      • b43, bcma
    • FILES に 上記ドライバが動作するためのファームウェアを追加 (環境固有)
      • /lib/firmware/b43/ht0bsinitvals29.fw
      • /lib/firmware/b43/ht0initvals29.fw
      • /lib/firmware/b43/ucode29_mimo.fw
    • BINARIESwpa_passphrasewpa_supplicant を追加 (共通)
    • HOOKS を 編集
      • encryptwifi net dropbear encryptssh
    • あとは mkinitcpio -p linux で initramfs を rebuild
  5. Bootloader の kernel parameter の編集
    • これは各ネットワーク環境に合せて ip= を追加する
    • 僕の場合だと: ip=::192.168.2.1:255.255.255.0::wlan0:dhcp
    • ちなみに、これに指定するパラメーターは nfsroot (kernel.org) を参照

以上

それで、ここまでで設定とかミスってなければ、

  • Archlinux on Mac mini

を起動した際に ssh が立ち上がって、リモート経由で rootfs unlock 出来る様になる……はず。 なんかミスってたら、各自設定とか見直してください。ちなみに僕は wifi フックを作るときに SSID の書き方をミスっていて、 これで数時間ぐらいは詰ってました。

あと、今回のこれは initramfs とかを弄るため、 なにかミスってて起動しなくなる と言うコトが良く起きます。 そのため、USB Stick 等で Archiso を起動できる Recovery 環境が無いとつらいかもです。はい。


という事で今回のメモは以上。

まあ転んでも泣かないヒト向けのメモでした。

Cross-Platform な Gyazo Clone を作るための資料まとめ

概要

本日、割と雑に、

あー Cross-platform な Gyazo Clone とか作れないかなー

と思って色々とこう調べてたら、結構資料が集まったので、 その辺りの URL を忘れない内にメモってる次第です。はい。

以下資料集

個人的なアイディアとか

  • UI は Electron で作れば (たぶん) なんとかなりそう
  • Gif アニメは ffmpeg + ImageMagick でゴニョると綺麗なのが出来そう
  • 公開用サーバの類いは、AWS S3 + CDN でゴニョれば楽出来そう

と言う事で

以上です。はい。

Ricty を含む FontForge で生成したフォントを Windows 向けに修正する方法

元ネタ

と言うか参考にしたページ

itouhiro.hatenablog.com

使うモノ

  • FontForge で生成 or 合成したフォント
  • ttx (fonttools)
  • テキストエディタ

修正の仕方

主に Unix-like 環境での作業の仕方 (WSL を含む)

1. ttx (fonttools) をインストールする

これは、例えば Archlinux だと、

# pacman -S python-fontools

で入る。

2. ttx コマンドで OS/2 テーブルを XML で出力

$ ttx -t 'OS/2' target.ttf

3. ttx で出力した target.ttxを テキストエディタで編集する

$ vim target.ttx

それで、Windows で FontForge の全角文字幅が奇妙な事になるのは、

  • xAvgCharWidth

の値がおかしなモノになっているのが原因なので、これを直す。

ちなみに、xAvgCharWidth の最適な値の見付け方は、 例えば Ricty の様な合成フォントの場合、 合成の元になった日本語フォントの MIGU 1MxAvgCarhWidth を指定してやると良い。

4. 修正した OS/2 テーブルを元のフォントに書き戻す

これは例えば使っているシェルが zsh の場合、

$ ttx -m target.tt{f,x}

とすると、割と楽に書き戻す事が出来る。

以上

作業の流れはざっとこんな感じ。

まあ、基本的には、

  1. FontForge デフォントを合成する
  2. ttx (fontools) で OS/2 テーブルを出力して修正
  3. ttx (fontools) で OS/2 テーブルを書き戻す

という感じで良いっぽいです。

ちなみに、 Ricty の場合だと os2version_reviser.sh で文字幅がおかしいのが直せるらしいんですが、

github.com

を合成した Ricty だと上手く動いてくれなかったので、今 (2017-01-30) 現在、 mintty 等で使っている Ricty with NERDFont patched はこの方法を使って Windows 対応させて使っています。はい。