2020/01/23(木)Raspberry Pi 3 Model B+ FreeBSD12.1 その他の情報

雑多な情報を、書き残しておきます。

・FreeBSD RaspBerry Pi 3 は FreeBSD/ARM 対応プロジェクトの一環で開発作業が続けられており、
 位置づけは、Tire 2 となっています。
 従って、Tire 1 サポート(i386、amd64 が該当)のみとなっている FreeBSD UPDATE は使えません。

・FreeBSD/ARM 対応プロジェクトは、Tire 1 に乗せる準備が進められている模様。
 FreeBSD が組み込み機器用途で使用できる最初のプラットフォームになれるかも。

・FreeBSD における GPIO 制御は、gpioctl コマンドが使用できます。
 Perl には、これと同じことを Perl スクリプトで行うための Device::BCM2835 なるモジュールや、
 RPi::Pin、WiringPi::API などありますが、FreeBSD12.1 ではどれも使えません。

 以下のような感じでピン情報を取得します(例):
  $result = qx(gpioctl -l) ;
  chomp ($result) ;
  my @iostat = split("\n",$result) ;

  foreach my $getpin (@iostat) {
    $getpin =~ /\Apin\s(\d+):\s+(\d)/ ;
    next if ($pinnum ne $1) ;
    $lvlstat = $2 ;
    last ;
  }
# $pinnum に文字列でピン番号を与え、$lvlstat に 0か1 が入ります。
# 0 がL、1 がHです。

2020/01/23(木)Raspberry Pi 3 Model B+ に FreeBSD12.1 をインストール (3)

次は、任意でユーザ環境の設定です。
.cshrc や .profile でお好みな環境をセットアップしますが、ここは個人の好みの部分なので、
説明省略。

筆者の環境では、基本的に Perl5 を使いたいので、
このあと、ports にてパッケージインストールを行います。
以下のような感じで root ユーザにて導入します:
# cd /usr
# mkdir ports
# portsnap fetch extract
# cd /usr/ports/editors/vim-console
# make install
# make clean

# cd /usr/ports/misc/lv
# make install
# make clean

# cd /usr/ports/ports-mgmt/portupgrade
# make install
# make clean
portupgrade のインストールにて、依存するパッケージとして、ruby や Perl がインストールされます。

途中、青地画面で、インストールオプションの選択画面が何度か出るが、適当にデフォルト値に任せずに、必ず内容を確認して作業しましょう。

2020/01/23(木)Raspberry Pi 3 Model B+ に FreeBSD12.1 をインストール (2)

起動ができるようになったら、次の段階として、設定を行います。
/etc/rc.conf に最初に記述されている、イーサネット関連のデフォルト設定値は、
ifconfig_DEFAULT="DHCP"
となっています。
この状態で起動すると、DHCPネゴシエーションで通知された参照用DNS設定ファイル /etc/resolv.conf が自動生成されています。
当然のことながら、LAN上にDHCPサーバが無い場合、このファイルは自動生成されません。

筆者の場合は以下のようになりました:
search deverop.basekernel.ne.jp
nameserver xxx.xxx.xxx.xxx
nameserver yyy.yyy.yyy.yyy
#セキュリティ対策上、IPアドレスは伏せてあります。

見てのとおり、IPv4 で機能しています。
適宜変更が必要かもしれません。

先ずは、ユーザ名 freebsd の削除・変更と、root パスワードの変更。
初期値は、ユーザ名 freebsd パスワード freebsd でログインでき、root のパスワードは、root なので、変更すべきです。(メンテナンスを簡単に始められるようにこうなっている)

先ず、ユーザ名 freebsd を削除して、新たに任意のユーザ名を追加、root のパスワードは変更しましょう。
更に、/etc/group の wheel 行に、root ユーザになれるように 新たに追加した任意のユーザ名を追加し、ユーザ名 freebsd は削除することを忘れないように。

次に /etc/rc.conf の変更。以下のようにします:
hostname="bypass_ctl"
defaultrouter="172.16.15.1"
ifconfig_ue0="inet 172.16.15.188 netmask 0xffffff00"

ntpd_enable="YES"
ntpd_sync_on_start="YES"

inetd_enable="YES"
sendmail_enable="NONE"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
growfs_enable="YES"

keymap="jp.kbd"
ホスト名、IPアドレスやネットマスク、デフォルトルータあたりの設定は、使用中のネットワークポリシーに合わせます。
/etc/ntp.conf はデフォルト値でも大丈夫ですが、ネットワーク内に公開NTPサーバがある場合や、指定されている場合は、そのサーバを設定します。

基本インストールの最後に、タイムゾーンの設定です。
日本時間の指定は、以下のコマンドを root ユーザにて実行します:
# tzsetup /usr/share/zoneinfo/Asia/Tokyo
一度設定すれば、次回の起動以後もこのタイムゾーンで動作します。
設定の最後に
# shutdown -r now
で、再起動します。