Facebookにある FreeBSD研究部で話題になった話を転載。
amd64カーネルで、i386バイナリのjailを動かしてて気づきましたが、i386バイナリのunameはアーキテクチャにi386を返すのですね。ま、良いんですが、、。 % uname -a FreeBSD fw2 11.3-RELEASE FreeBSD 11.3-RELEASE #0 r349754: Fri Jul 5 04:45:24 UTC 2019 root@releng2.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64 % /export/jail/jail1/usr/bin/uname -a FreeBSD fw2 11.3-RELEASE FreeBSD 11.3-RELEASE #0 r349754: Fri Jul 5 04:45:24 UTC 2019 root@releng2.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC i386
に関して以下のような返答が出ていました。
jail 環境かどうかは特に関係なく、デフォルトは実行しているバイナリのABIに対応するアーキテクチャ名を返します。 この挙動が困るようなら、sysctl debug.adaptive_machine_arch=0 を設定してください。 こうすると、ネイティブなアーキテクチャ名を返すように変わります。