Let’s Encryptのbuildエラー

筆者の管理する2つのサイトでLet’s Encryptの証明書を使用しています.証明書の有効期間は90日で,満了の30日前に更新の催促のメールが来て,忘れないうちにと更新するので,実質的には2か月ごとに更新してます.

手続きとしては,証明書の獲得・更新ツールをまずgitレポジトリーからpullして最新にして,ビルドスクリプトと思われる😥 tools/venv.pyを実行します.

どちらのサイトもSlackwareを使っているため,Pythonは2.7が最新で,3.xは,入っていません.困ったことに,この2か月間に,Python2.7のサポートが外されたようで,即エラーになりました.

sbopkgを使うことで,Python 3.7がインストールできますが,今度はtools/venv.pyの実行の途中でエラーが出ます1あとで,手でPython 3.9をインストールして試してみましたが,同じ結果でした.

どうも,cryptographyをbuildしているときにエラーが出るようです.これと同じです.

pipでcryptographyをbuildしようとしても同じ結果になります.しばらくは様子を見ることにしますが,それでは証明書が失効してしまうので,バックアップから前回のPython 2.7をサポートしていた状態に戻して,証明書の更新をしました.

追記(関連情報)

QEMUのコマンドラインに挑戦

下記サイトなどを参考に,こんな感じで,macOSや,Manjaro AMD64で,Raspberry Pi OSのイメージを起動して,updateまでできたのですが,そのあとでブートするとネットが繋がらなくなって,悩んでいるところです.

qemu-system-aarch64  -kernel boot/kernel8.img  \
    -dtb boot/bcm2710-rpi-3-b.dtb  \
    -M raspi3 -m 1024  -serial stdio  \
    -append "rw earlycon=pl011,0x3f201000 console=ttyAMA0 loglevel=8 root=/dev/mmcblk0p2 fsck.repair=yes net.ifnames=0 rootwait memtest=1" \
    -drive file=2021-01-11-raspios-buster-armhf-full.img,format=raw,if=sd  \
    -device usb-kbd  -device usb-mouse \
    -device usb-net,netdev=net0  \
    -netdev user,id=net0,hostfwd=tcp::5555-:22 \
    -no-reboot 

下準備としては,MacでもLinuxマシンでも適当なところに,フォルダーを作り,そこに,Raspberry Piのサイトからインストール用のイメージをダウンロードして,unzipします.微妙にSDイメージのサイズが2のn乗にならないので,qemu-imgでリサイズしました.そして,そのSDイメージのvfat部分をLinuxマシンにマウントして,SDイメージを展開したフォルダー内に “boot” というサブフォルダーを作ってコピーしました.

そこで,上記のqemu-system-aarch64 … を実行しました.

そうそう,libvirtやVirt-Managerとは違って,全部一般ユーザーの権限で作業できます.

Manjaro ARM64では,上記に “-accel kvm” を追加するのでいいと思うのですが,起動すらしてくれません.さらに深く悩み中です.

参考にしたサイト

Manjaro: hibernationに関するエラー

サブWS (Workstation)のメインOSである,Manjaro x86_641つい最近,Gentooに代わってメインOSに昇格しました😓の起動時(たぶんgrubがkernelをロードした時)に,ハイバーネーション用のUUIDなんたらのディバイスが見つからないというエラーメッセージが出ます.

たしかに,ログインの後blkidで表示しても,その指し示されたUUIDのディバイスはありません.

別にそれで不具合が生じているわけでなく,ブートに要する時間が遅くなっている感じもありません.

このManjaroは,現在は実マシンで動いていますが,もともと実マシンにインストールしたのではなく,仮想マシンを構築して,少々評価した後に,実マシンにクローニングしたもので,そのあたりがこのエラーの根源かと思います.

仮想マシンとして構築するときは, ほとんどの設定はお仕着せのままで,多分知らずにハイバネーション用のパーティションが仮想ディスクに切られたのだと思います.しかし,実マシンに移行する際,実際のディスク(SSD)のパーティションの切り直しは避けたので,ハイバネーション用のパーティションをManjaro用に作らなかったのです.

ざっと検索して,

superuser: How do I fix Manjaro error hibernation device not found on boot?

この記事を参考に,/etc/default/grubから,エラーの対象になるUUID以下を削除して,mkinitcpioと,grub-mkconfigを実行しましたが,今度は,そもそもハイバーネーションのディバイスがないというエラーに変わっただけで,エラーは出ています.

あ,こちらが正解ですね.mkinitcpioの設定をいじらないといけないようです.

以上まとめますと,

  1. /etc/mkinitcpio.conf のHOOKから,resumeを削除する
  2. ls /etc/mkinitcpio.d から,最新のLinuxバージョンを調べる(ここでは linux59.presetだったとする)
  3. root権限で, mkinitcpio -p linux59 を実行
  4. 要るのか要らないのかわからないけど, grub-mkconfig -o /etc/grub/grub.cfg もやっとく😥

コマンドラインじゃないとだめかも(QEMU)

Virt-Managerは,非常に解りやすいですが,複雑なQEMUのオプションの扱いを完全に網羅し切れているわけではないようです.

QEMU自体も,ハードウェアやOSによりいろいろ制約があるところ,それをサポートするlibvirtやVirt-Managerもそれぞれ制約があって,最終的に,Virt-Managerがカバーできる範囲が狭くなるのでしょう.

筆者自身,QEMUの複雑怪奇なオプションをいちいち調べて設定していられないよ,というのが,Virt-Mangerに頼るようになったきっかけ1libvirtやVirt-Managerの存在理由そのもの.なので,今さら,コマンドラインを打ち込みたくないのです.

しかし,Virt-Mangerだよりできた仮想マシンいじりの膠着状態を打開するには,QEMUに無数の😓オプションを指定して直接実行するしか選択肢はなさそうです.

コマンドラインでいくならば,Virt-Mangerはもとより,libvirtも不要なようなので制約条件はずいぶん緩和されると思います.Mac miniにMacPortsを再びインストールして,qemuのインストールからやり直すことにします.

サブWSもManjaroに

結局,LinuxのリアルマシンであるWorkstation (WS),あるいは,AMD64 (x86_64) WSとして2番めの使用頻度のマシンのdual boot設定のうちの第一のOSをManjaro x86_64にしました.

理由は,各種ソフト(OS,システム関係,アプリ)が最新に近いこと,ハードの能力をかなり引き出していると感じていること,QEMU/KVMをかなり守備範囲広くインストールできること1ここまでは.Arch Linuxのおかげ.,システムのインストールや,その後のupdateや追加が楽であることなどです.

簡単2Manjaroの一番の売り.で,最新3Distroの提供するパッケージとして.で,速い4個人の感想です.,といったところでしょうか5当社調べ

しかし,残念ながら,x86_64下でのRaspberry Piのエミュレーションはまだうまくいっていません.