河豚板6.6のリリースについて
OpenBSD 6.6
2019年10月17日リリース
主なもの
- 1023GB以上のメモリに対するサポートを修正(amd64)
- ベースシステムのコンパイラをclangに変更(powerpc): GNU binutils ld → lld
- SMPの改良 ... 幾つかのシステムコールでロックを除去/MPセーフに
- IEEE 802.11および汎用ネットワークスタックの改良
河豚板6.6
OpenBSD 6.6をベースにした河豚板6.6を作成し、リリース
- 2019年11月2日 - i386, amd64
- 2019年11月12日 - arm64
河豚板リリース - 今回のハマりどころ
毎回のリリースでは、一定の手順に従って作業を行うが、OpenBSDが前回リリースから種々の変更がなされているため、それらの影響により手順どおり河豚板を作成しても、本来の動作をしない場合が多々ある。
インストール容量の増大
amd64でインストール直後のディスク容量が1GB超え → LiveCDの容量(700MB)に収まらない!
- 対策
- LiveCDからLiveDVDに変更 → ISOイメージサイズを946MBとした
- 併せてLiveUSBのイメージサイズも2GBに変更
- DVDへの書込みはcdio(1)は使用できず、portsなどからdvd+rw-toolsなどをインストールしてそれにより書き込む必要がある。
vnconfigのエラー
河豚板をビルドし起動してみたところvnconfigがエラー(invalid argument)となり、正常に起動できない。
さらに調査を行ったところ、以下の点が判明
- read onlyでマウントしたファイルシステム上でvnconfigを実行するとエラーとなる
- アーキテクチャ/プラットフォームに関らず発生
- 素のOpenBSD(GENERICカーネル)でも発生
- 発生元と思われる /usr/src/sys/dev/vnd.c は、6.5からの変更点は一箇所のみ。この箇所を6.5と同じ状態に戻してbuildしても状況は変らず
以上の内容をバグレポートとしてbugs@openbsd.orgに報告。
数日後、Bob Beck氏よりvnd.cの修正diffをメールにて受け取る。
OpenBSDのリポジトリに対しても、HEADブランチにて修正が入る。
河豚板でもカーネルを修正後、ビルドし、正常動作を確認。
arm64での動作不安定
arm64ビルド後、実行してみたところ、以下の不具合が発生
- 起動時/etc/rcの中で行っているASLR処理で、リンカがkillされる
- 起動完了後も、ランダムなタイミングでプロセスがkillされる
/etc/login.confで設定されるリソースのリミット値(1プロセスが扱えるメモリやスタックサイズの最大量など)を変更してみたが状況は変らず。
スワップパーティションを追加してみたところ、不具合は解消。
ただし、不具合解消時にスワップが使われた形跡なし。現象発生時は、メモリ不足となるような状況ではなく、メモリ使用量のごく少ないプロセスでもkillされていた。よって原因は未だ不明。
arm64の配布イメージにスワップパーティション(64MB)を追加することで対処した。
改良点
usbfadmの改良
- 前項の不具合に対応して、usbfadmユティリティにてLiveUSB作成時、スワップパーティションを作成できるように機能追加
- プログレスバー表示ユーティリティpvをportsより追加
併せて、usbfadmにて時間のかかるファイル転送時、プログレスバーを表示するようにした
- ファイル転送時、差分転送ではない箇所を rsync から pax / dd に変更。