FreeBSD 12.0-RELEASE は /etc/passwd と /etc/group に ntpd ユーザが必要なので installworld DESTDIR= は失敗する2018年12月13日 13時30分31秒

昨日公開された FreeBSD 12.0-RELEASE だが、コードからの更新は注意が必要。

要約すると installworld が /etc/passwd と /etc/group に ntpd を使ってディレクトリやファイルを作成するので installworld DESTDIR= は失敗する。

DESTDIR 無しの、installworld だと、mergemaster -p を行って ntpd ユーザを追加するように促される。その後の installworld は問題なく処理される。このバグ自体は今までずっとあったバグの様で、FreeBSD 12.0-RELEASE だから失敗するわけではない。

修正方法としては、DESTDIR/etc を見るようにすれば、いい。以下のものが修正の一案。

--- Makefile.inc1
+++ Makefile.inc1
@@ -837,7 +837,7 @@ 
 DB_FROM_SRC=	yes
 .endif
 
-.if defined(DB_FROM_SRC)
+.if defined(DB_FROM_SRC) || defined(DESTDIR)
 INSTALLFLAGS+=	-N ${.CURDIR}/etc
 MTREEFLAGS+=	-N ${.CURDIR}/etc
 .endif
@@ -853,7 +853,7 @@ 
 .if defined(BUILD_PKGS)
 INSTALLFLAGS+=	-h sha256
 .endif
-.if defined(DB_FROM_SRC) || defined(NO_ROOT)
+.if defined(DB_FROM_SRC) || defined(NO_ROOT) || defined(DESTDIR)
 IMAKE_INSTALL=	INSTALL="install ${INSTALLFLAGS}"
 IMAKE_MTREE=	MTREE_CMD="mtree ${MTREEFLAGS}"
 .endif
@@ -1187,13 +1187,13 @@ 
 _installcheck_world: __installcheck_UGID
 __installcheck_UGID: .PHONY
 .for uid in ${CHECK_UIDS}
-	@if ! `id -u ${uid} >/dev/null 2>&1`; then \
+	@if ! `grep "^${uid}:" ${DESTDIR}/etc/passwd > /dev/null 2>&1`; then \
 		echo "ERROR: Required ${uid} user is missing, see /usr/src/UPDATING."; \
 		false; \
 	fi
 .endfor
 .for gid in ${CHECK_GIDS}
-	@if ! `find / -prune -group ${gid} >/dev/null 2>&1`; then \
+	@if ! `grep "^${gid}:" ${DESTDIR}/etc/group > /dev/null 2>&1`; then \
 		echo "ERROR: Required ${gid} group is missing, see /usr/src/UPDATING."; \
 		false; \
 	fi

FreeBSD 12.0-RELEASE が正式に公開されている2018年12月12日 12時54分47秒

FreeBSD 12.0-RELEASE が正式に公開された。

グラフィック関連に結構変更があったようだ。グラフィックドライバーが ports に移り、rc.conf で指定する必要があるようだ。一応、そのままでも動くらしいが新しい機種では性能が落ちるらしい。五年から二十年物のハードウェアには影響はないとのことか。

また、13.0-RELEASE に向けて廃止されるネットワークドライバが結構並んでいる。個人的には使っている物には該当しないようだが。

引用も含めて、後程取り上げたいと思っている。

FreeBSD 12.0-RELEASE の pkg が公開されている2018年12月11日 13時13分02秒

FreeBSD:12:i386/release_0 を筆頭に、FreeBSD 12.0-RELEASE のパッケージも既に準備されている。日付を見ると、十一月二十二日になっている。ほぼ一ヵ月前から準備されていたわけだ。

FreeBSD 12.0-RELEASE の PAE カーネルが壊れている2018年12月10日 13時42分55秒

releng は 12.0と銘打たれたが、まだ若干問題は散見するようだ。

数日前に気が付いたのは PAE カーネルが起動しなくなっている事。ZFS 用に PAE カーネルを作っているのだが head や stable の時は、面倒なので作っていなかった。数日前に、12.0-RELEASE が近いので、ZFS カーネルを作ると起動しない。環境の所為だか、ハードウェアの所為だかを突き止めるのに、一式インストールして試す必要があるため、二、三日掛かった。PR は PAE が起動しないとだけだが登録しておいた。何しろ、ブート画面の最初のスクロールを見る時間もない程高速で再起動に入るのだから仕方がない。

時間が取れたら、何時ぐらいから壊れているかを調べようと思うのだが、ディスクの容量と時間が足りない。丸二日も経たないうちに、PR に返事とパッチが付けられて更新されていた。なお、この修正を適応後はしっかりと起動したので、そのうち修正は 12.0-RELEASE にも下りてくるだろう。GENERIC カーネルに影響はないので、恐らく ERRTA などで来るのではないだろうか。

FreeBSD の releng/12.0 が 12.0-RELEASE になった2018年12月08日 12時56分01秒

releng/12.0 のバージョンが FreeBSD 12.0-RELEASE へと変更された。公式リリースは来週火曜日の十二月十一日との事なので、リリースの最終工程に入ったと言うことだろう。

12 系の方が、ZFS やカーネル等の動作が良いのだが、残念ながら seamonkey が起動しなくなった。ここ、二ヵ月ぐらいで、大量のタブを開いたままにする使い方を始めたら、大量のページが開きっぱなしになっているので、何らかのリソースが足りていないのを疑っているのだが、原因は特定できていない。12 系は長いこと使っていて、他の部分は気に入っていたので、早めに原因を突き止めたいところ。当分の間は、11.2-RELEASE と 12.0-RELEASE の並列で行くことになりそう。

FreeBSD bhyve の SA2018年12月05日 13時01分01秒

https://www.freebsd.org/security/advisories/FreeBSD-SA-18:14.bhyve.asc が出ている。bhyve-firmware を使って、ブートした場合に、bhyve のメモリを誤って上書きしてしまう不具合だそうだ。bhyveload や grub2-bhyve を使っている場合は影響がないが、Windows をゲストとして動かすには bhyve-firmware が必須。

bhyve は 64bit のみだと思ったが、対象は i386 と amd64 と書いてある。一時は bhyve であれこれと試していたが、最近は使っていない。カーネルを変更して試すのは便利だったが、なかなか時間が取れなかったのが、主な原因。

gimp-app の pkg upgrade が失敗する2018年12月03日 11時47分41秒

FreeBSD 12.0-RELEASE が間近なの、最新を追って環境の互換性と案安定性を調べている。

今、FreeBSD 12-BETA を元に、pkg の latest を追っているが、gimp-app に不具合があり、更新に失敗する。

$ pkg-static upgrade
...
pkg-static: Fail to create temporary file: /usr/local/libexec/gim
p/2.2/plug-ins/align-layers/.align-layers.5mNPPjPZEFcM:Not
 a directory
どうも、ファイルが既に存在しているのが原因の様だ。
$ rm /usr/local/libexec/gimp/2.2/plug-ins/align-layers
$ pkg-static upgrade
...
pkg-static: Fail to create temporary file: /usr/local/libexec/gim
p/2.2/plug-ins/animation-optimize/.animation-optimize.1eMv
bgotdQR5:Not a directory
なんだか、おかしい。

インストールされていたパッケージが悪かったのか、ファイルシステムを壊してしまったのかのどちらかの様だ。

$ rm /usr/local/libexec/gimp/2.2/plug-ins/*
全ての、ファイルを消してから、再度試みたらうまくいった。

FreeBSD NFS の SA と EN が三つ2018年11月28日 13時17分28秒

FreeBSD-SA-18:13.nfs が出された。NFS サーバの不具合。対象は 11.2-RELEASE となっている。新しいサポート方式に移ってから 10 系は引退したもようだ。NFS サーバで panic を呼んでいるため、該当の条件にあってしまったらサーバを落すことが出来る。

ついでの様に三つ EN も出されている。

FreeBSD-EN-18:13.icmp は icmp のバッファの処理の不具合。FreeBSD-EN-18:14.tzdata は夏時間の修正と調節。FreeBSD-EN-18:15.loader はローダのパスワードが見えてしまう問題を修正。

releng/12.0 の buildworld が nfs 上ではうまくいかなくなった様だ2018年11月21日 13時05分09秒

FreeBSD 12.0-BETA のインストール手順を上げたが、ここ数日 buildworld がおかしい。NFS 越しにマウントした /usr/obj では、buildworld が途中で異常終了するようになってしまったようだ。

問題の切り分けのために、nfs の利用を止めて、ufs と zfs の /usr/obj を準備したところ、問題は再現はしないようだ。

とりあえず自分の忘備録メモ。

FreeBSD 12.0-BETA の installworld は mergemaster -p が必須2018年11月20日 12時15分44秒

FreeBSD 12.0-RELEASE から新たに ntpd ユーザとグループが加わるので、make installworld の前の mergemaster -p は必須。-p は installworld の下準備で、ntpd を /etc/passwd 等に追加する。

その為、FreeBSD 12.0 に以前のリリースから更新する場合は、基本的に以下の手順になる。

% make buildworld -j 10
% make buildkernel -j 10
$ make installkernel
$ reboot

$ mergemaster -p
$ make installworld
$ mergemaster -UPiF

なお、FreeBSD 12.0 から /usr/obj 以下のディレクトリの使い方が変わったので、/usr/obj 以下を消しておかないと、ディスク容量が無駄になる。/usr/obj/usr/src だったものが、/usr/obj/usr/src/i386.i386 等と各種アーキテクチャ毎に分けられる。