update-kernel で zfs が mount できない

投稿者: | 2024年10月6日

 春先、ReadyNASが壊れて IODATA のNASユニットを中古で買って Alpine Linux でNASを組んだ。
USB でブートし、RAM上で運用している。職場のNASはミラーリングされたHDDを ext4 でフォーマットしてあったのでカーネルをアップデートしてもすぐに使うことができた。順調に稼働している。

 しかし、調子こいて家のNASも同じようにUSBブートで組んだのだが、カーネルをアップデートしたらHDDがマウントできなくなった。zfsでフォーマットしてあったからだ。Boot USB の boot ディレクトリに modloop-lts というファイルがあるのだが、update-kernel だけでは、ここに zfs modules が組み込まれないからだと分かった。

対処法は、run alpine linux as ramdisk/iso/usb with zfs modules (modloop) に書いてあった。

$ mkdir /tmp/a
$ cd /tmp/a
$ unsquashfs /media/sd**/boot/modloop-lts
$ mv squashfs-root/ lib
$ tar -xzvf /etc/apk/cache/zfs-lts-*.apk
$ depmod -b /tmp/a
$ mksquashfs lib/ modloop-lts -noappend -always-use-fragments
$ mount -o rw,remount /media/sd**
# do backup but not as /filename or /boot/filename, alpine will be use it)
$ mv /tmp/a/modloop-lts /media/sd**/boot/modloop-lts
$ sync
$ mount -o ro,remount /media/sd**

# disable modloop signature verification
$ vi /etc/init.d/modloop

--- /etc/init.d/modloop
+++ /etc/init.d/modloop
@@ -31,7 +31,7 @@
 	IFS="$oifs"
 	for line; do
 		img=${line%%:*}
-		verify_modloop "$img" || eerror "Failed to verify signature of $img!"
+#		verify_modloop "$img" || eerror "Failed to verify signature of $img!"
 		mount "$img" -o loop,ro /.modloop || continue
 		if [ -d /.modloop/modules/$kver ]; then
 			return 0
@@ -88,7 +88,7 @@
 
 	ebegin "Mounting modloop $modloop"
 	if [ -n "$modloop" ]; then
-		verify_modloop "$modloop" || eerror "Failed to verify signature of $img!"
+#		verify_modloop "$modloop" || eerror "Failed to verify signature of $img!"
 		mount -o loop,ro $modloop /.modloop
 		eend $? || return 1
 	else


$ lbu add /etc/init.d/modloop
$ lbu ci

$ reboot

これでうまく行きました!つまり、

  • squashfsで固められているmodloop-ltsファイルを展開し名前を本来のlibにかえる
  • zfs-ltsパッケージを展開して zfs kernel modules を加える
  • depmod で依存関係を整理
  • もう一度squashfsで固めて新しい modloop-lts を作り、USBの/bootフォルダに書き込む
  • 起動スクリプトを変更して、modloop の signature が違ってもスルーするよう改変する

なのだ!

update-kernel で zfs が mount できない」への1件のフィードバック

  1. ピンバック: USBで運用するAlpineLinuxのkernelアプデ – つれづれなるままに

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です