FreeBSD 13.0-RELEASE/arm64(Raspberry Pi 3B+)でSwapを増やす

Raspberry Pi 3B+でFreeBSD 13.0-RELEASEをインストールする際、メインメモリが1GBしか無いのでスワップ領域を設けたいのだが、新しくパーティションを切れないのでスワップファイルで増やす

以前のシステムでは/etc/rc.confにswapfile=/path/to/swapfile.2gと1行足しておけば良かったのだが、13.0Rでは使用不可だった。


1. スワップ用のファイルを用意する。
今回は2GBもあれば十分。メインメモリから溢れたデータが書き込まれるのでrootのみ読み書き可、所有者とグループをroot:wheelにしておく。
# dd if=/dev/zero of=/path/to/swapfile.2g bs=1m count=2048
chmod 0600 /path/to/swapfile.2g
chown root:wheel /path/to/swapfile.2g



2. スワップ領域はディスクのデバイスファイルでなければならないらしいので、/path/to/swapfile.2g をディスク(vnode)に見立てる
下記コマンドでは/path/to/swapfile.2gを/dev/md0というディスクに見立てて使用可能にし、swaponコマンドでスワップ領域として認識させる。
# mdconfig -a -t vnode -f /path/to/swapfile -u 0
md0
# swapon /dev/md0


現在スワップ領域として使用しているディスク領域は下記のコマンドで確認できる。
# swapinfo


3. 作ったスワップを破棄するには下記の手順を取る。
ただし破棄しようとするスワップ領域よりスワップ使用量が多い場合は失敗する。
# swapoff /path/to/swapfile.2g
# mdconfig -d -u 0



4. /etc/fstabに書き込んで起動時に設定する。
事前にファイルは作っておかないとダメ。
意外だが、lateオプションは追加しておくほうがすんなりいった。
md255 none sw,file=/path/to/swapfile.2g,late 0 0


2の手順は4で書いてからmount -aでも良いかもしれない。



参考
少なくとも2014年3月ごろのFreeBSDシステムでは/etc/rc.confにswapfile行を書き込むことで有効にできたようだ→swapが足らなくなってキレたFreeBSDの怖さは異常(と、その対処法) (nobwak's Lair)

参考2(2022/09/19)
より具体的にはFreeBSD9系あたりとFreeBSD10系に境目があるという。How To Add Swap on FreeBSD Unix Systems(www.cyberciti.biz)

参考3(2022/09/19)
ちゃんとFreeBSD Handbookに書いてある。12.12. Adding Swap Space(freebsd handbook)

コメント