2022/09/11(日)hpt27xxがない
ディスクが見えなくなった。
調べた結果、hpt27xx ドライバがないのが原因らしい。
過去にカーネルに組み込まなくなったのでモジュールを読み込むように、という情報はあったが、ドライバが消える、という話は知らない。
ASMedia チップの SATAカードを買うか、と思いつつ確認。
man 4 hpt27xx は FreeBSD13向けにもあるんだよなぁ。
ソースは?
sys/dev/hpt27xx
あるんだよなぁ。
memstick.img の内容を見てみる。ドライバはないな。
ビルドしたら生えそうじゃない?
その前に。
/user/src を下手にいじると freebsd-update が動かなくなるっぽい。
しかしながら freebsd-update は、 /usr/src/sys/conf/newvers.sh ファイルを常にアップデートします。別ディレクトリに src を取得。
[(access failed) https://docs.freebsd.org/en/books/handbook/cutting-edge/#freebsdupdate-security-patches]
# mkdir /usr/src.build # cd /usr/src.build # git clone -o freebsd --depth 1 --no-single-branch https://git.freebsd.org/src.git . # git checkout freebsd/releng/13.1なんでドライバがなかったのかコードをチラ見。
sys/conf/kern.opts.mk をみると、ベンダーからバイナリが提供されているドライバをビルドしないオプションが追加されているらしい。
man 5 src.conf にも何か書いてある。
KCSAN_ENABLED は知らん。多分今回は関係ない。
.if ${MK_SOURCELESS_HOST} != "no" && empty(KCSAN_ENABLED) _hpt27xx= hpt27xx .endifいつからあるのか、いつから有効になったのかわからないが、この指定を上書いてやればよさそう。
make に変数定義のオプションを付けて実行。
# make -DSOURCELESS_HOST -j4 buildkernel <...> %file /usr/obj/usr/src.build/amd64.amd64/sys/GENERIC/modules/usr/src.build/sys/modules/hpt27xx/hpt27xx.ko /usr/obj/usr/src.build/amd64.amd64/sys/GENERIC/modules/usr/src.build/sys/modules/hpt27xx/hpt27xx.ko: ELF 64-bit LSB relocatable, x86-64, version 1 (FreeBSD), BuildID[sha1]=c1644a27be0f617b756e6cb6193f1fa9792ff87d, not stripped出来た!
こいつを /boot/kernel/ 以下にコピー。
起動時に読み込ませる。
%cat /boot/loader.conf [/usr/src.build] kern.geom.label.disk_ident.enable="0" kern.geom.label.gptid.enable="0" hpt27xx_load="YES" [color:#aa0000:<----これ] zfs_load="YES"デバイスが生えた!
%devinfo nexus0 <...略...> acpi0 pcib0 pci0 hostb0 pcib1 pci1 hpt27xx0 <...以下略...>ディスクが見えた!
うぇーーい!
%sudo camcontrol devlist <TOSHIBA THNSNJ128GCSU JURA0101> at scbus2 target 0 lun 0 (pass0,ada0) <PLEXTOR PX-64M5M 1.02> at scbus3 target 0 lun 0 (pass1,ada1) <AHCI SGPIO Enclosure 2.00 0001> at scbus6 target 0 lun 0 (pass2,ses0) <HPT DISK 0_0 4.00> at scbus7 target 0 lun 0 (pass3,da0) <HPT DISK 0_1 4.00> at scbus7 target 1 lun 0 (pass4,da1) <HPT DISK 0_2 4.00> at scbus7 target 2 lun 0 (pass5,da2) <HPT DISK 0_3 4.00> at scbus7 target 3 lun 0 (pass6,da3) <HPT DISK 0_4 4.00> at scbus7 target 4 lun 0 (pass7,da4) <HPT DISK 0_5 4.00> at scbus7 target 5 lun 0 (pass8,da5) <TOSHIBA TransMemory-Mx PMAP> at scbus8 target 0 lun 0 (da6,pass9) %zpool status -x all pools are healthyfreebsd-update のたびにこれやるの忘れるなぁ。
High Point 2千番台のカードは製品寿命を終わらせたそうなので買い換えるのが吉みたい。