結局、microSDカードのスロットが空いてしまっている。
予定ではそこからbootして、うひょひょひょひょっ、と喜色満面の予定だったのだが。
ただこのスロットは埋めておきたい。
いつもの貧乏性からだけでなく、何もいれていないと、FreeBSDの起動に時間がかかるからだ。なぜだか、知らないが——WindowsもUbuntuもだいじょうぶだったのに、bootのときに、このスロットを確認しにいくのである。何度もTimeoutしてもしつこく。
なのでとりあえず、microSDカードをいれておきたい。
ところが壊れたmicroSDカードも手元にないし、使えるものをただ、いれておくというのも忍びない。
そうだ。
mirrorにしよう。
microSDカードを使おうと試行錯誤していたとき、USBメモリとmicroSDカードをstripeにしたことはあるのだけど、これはうまくいかなかった。bootの途中で、microSDカードを認識できないので、stripeに失敗するからだと思う。mirrorならうまくいくんじゃないか。
そこでmirror用にmicroSDカードを購入した。
boot用のmicroSDカードと同じ128Gのものである。mirrorは同じサイズにしなければ、いけないからだ。なんか、貧乏性でいろいろ、工夫しているのに、金が出ていくな。
届いたmicroSDカードにFreeBSD12をinstall。
インストールディスクからbootしたあと、zroot2をimportして
$ sudo zpool attach zroot2 da0p4 mmcsd0p4
しばらくしてエラーがでた。
smallなんとかかんとか。
あれ?
$ gpart show da0 => 40 250560432 da0 GPT (119G) 40 409600 1 efi (200M) 409640 1024 2 freebsd-boot (512K) 410664 984 - free - (492K) 411648 4194304 3 freebsd-swap (2.0G) 4605952 245952512 4 freebsd-zfs (117G) 250558464 2008 - free - (1.0M) $ gpart show mmcsd0 => 40 249737136 mmcsd0 GPT (119G) 40 409600 1 efi (200M) 409640 1024 2 freebsd-boot (512K) 410664 984 - free - (492K) 411648 4194304 3 freebsd-swap (2.0G) 4605952 245129216 4 freebsd-zfs (117G) 249735168 2008 - free - (1.0M)
同じ128GのmicroSDカードなのにサイズがちがうじゃないか。
しかも新しく購入した方が小さい。逆ならリサイズしてなんとか、なったのに。mmcsd0p4をいくら拡張してもda0p4のサイズにならない——頭を抱えてしまった。da0の方が破損したときに、mmcsd0のmicroSDカードからbootできるようにしたいので同じような構成したのだが。
あきらめることも含めて検討した結果、swap領域を小さくしてmmcsd0p4をサイズ拡張した。
$ sudo gpart delete -i 4 mmcsd0 mmcsd0p4 deleted $ sudo gpart delete -i 3 mmcsd0 mmcsd0p3 deleted $ gpart show mmcsd0 => 40 249737136 mmcsd0 GPT (119G) 40 409600 1 efi (200M) 409640 1024 2 freebsd-boot (512K) 410664 249326512 - free - (119G) $ sudo gpart add -a 4k -t freebsd-swap -s 1G mmcsd0 mmcsd0p3 added, but partition is not aligned on 4194304 bytes $ gpart show mmcsd0 => 40 249737136 mmcsd0 GPT (119G) 40 409600 1 efi (200M) 409640 1024 2 freebsd-boot (512K) 410664 2097152 3 freebsd-swap (1.0G) 2507816 247229360 - free - (118G) $ sudo gpart add -a 4k -t freebsd-zfs -s 117G mmcsd0 mmcsd0p4 added, but partition is not aligned on 4194304 bytes $ gpart show mmcsd0 => 40 249737136 mmcsd0 GPT (119G) 40 409600 1 efi (200M) 409640 1024 2 freebsd-boot (512K) 410664 2097152 3 freebsd-swap (1.0G) 2507816 245366784 4 freebsd-zfs (117G) 247874600 1862576 - free - (909M) $ sudo gpart resize -s 245952512 -i 4 mmcsd0 mmcsd0p4 resized $ gpart show mmcsd0 => 40 249737136 mmcsd0 GPT (119G) 40 409600 1 efi (200M) 409640 1024 2 freebsd-boot (512K) 410664 2097152 3 freebsd-swap (1.0G) 2507816 245952512 4 freebsd-zfs (117G) 248460328 1276848 - free - (623M) $ gpart show da0 => 40 250560432 da0 GPT (119G) 40 409600 1 efi (200M) 409640 1024 2 freebsd-boot (512K) 410664 984 - free - (492K) 411648 4194304 3 freebsd-swap (2.0G) 4605952 245952512 4 freebsd-zfs (117G) 250558464 2008 - free - (1.0M)
これでmmcsd0p4とda0p4は同じサイズになったのでattach。
$ sudo zpool attach zroot2 da0p4 mmcsd0p4 Make sure to wait until resilver is done before rebooting. If you boot from pool 'zroot2', you may need to update boot code on newly attached disk 'mmcsd0p4'. Assuming you use GPT partitioning and 'da0' is your new boot disk you may use the following command: gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0 $ $ zpool status zroot2 pool: zroot2 state: ONLINE status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scan: resilver in progress since Mon Jun 21 13:13:29 2021 21.7G scanned at 208M/s, 1.19G issued at 11.4M/s, 21.7G total 1.18G resilvered, 5.48% done, 0 days 00:30:45 to go config: NAME STATE READ WRITE CKSUM zroot2 ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 da0p4 ONLINE 0 0 0 mmcsd0p4 ONLINE 0 0 0 errors: No known data errors
同期してしまうのにしばらくかかった。