4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

FreeBSDAdvent Calendar 2020

Day 5

RaspberryPi 4 (4G/8G)環境設定用のMakefile / スクリプトを作った

Last updated at Posted at 2020-12-05

#目的
起動用の設定や、起動後のOS設定やアプリケーションインストールを自動で行う Makefileやスクリプトを作ったので、その紹介です。Makefileは 8G版メインですが、4G版でも使えます。設定スクリプトは、Pi4以外でも使えると思います。

Raspberry Pi4 の FreeBSD での対応

RaspberryPi 4 が発売されて一年、8G 版が発売されて半年経ちますが、FreeBSD の対応はどうなってるのでしょう。現在は1/2/4G版までは普通に(RaspberryPi3B用イメージが)起動し、8G版はひと工夫しないと起動しません(2020/12/03 段階のsnapshot でもだめでした)。
相変わらず内蔵 WiFi/Bluetoothは動きません。

実際の設定に関しては 山本さん(@bsd-hacker)の記事に詳しく書いてあります。

8G版イメージを作る Makefileを作りました

8G のイメージ作るのが地味に面倒なので、


**最新スナップショットイメージをダウンロードする**
↓
**8G版で必要なファイルをダウンロードする**
↓
**イメージのファイルを差し替え**
↓
**環境設定用スクリプトをイメージにインストール**
↓
Pi4 8Gで起動するイメージ完成

を勝手にやってくれる Makefile とスクリプトを作りました( https://github.com/s-mitu/FreeBSD-raspberrypi-make )。「環境設定用スクリプト」については後述します。

使い方は FreeBSD 環境で


git clone https://github.com/s-mitu/FreeBSD-raspberrypi-make
cd FreeBSD-raspberrypi-make
make

を実行します。
しばらく待つと、freebsd-pi.img ってのができるので、それを dd コマンドなりで SDカードに書き込めばOKです。
SDカードは 3G以上の容量があればOKです。起動時にSD全体に領域を拡張してくれるので、大容量SDでも使い切ってくれます。
出来たイメージは 1/2/4G版でも動きます。これらのバージョンは小細工は不要なので、Makefileを使わなくてもFreeBSD公式イメージのまんまでOKなのですが、最新イメージダウンロードを勝手にやってくれる点と、インストールされた設定用スクリプトが使える点でまぁまぁ便利かも(弱い推奨)。

(※)RaspberryPi の EEPROMが古い場合があるのでその場合はアップデートする必要があります。「Raspberry Pi 4 EEPROM boot recovery」をSDに焼いて起動してupdateします。

インストールされた設定スクリプト setup.sh の使い方

SD挿して起動し、ログインプロンプトが出るところまで来たら第一段階成功です。

name pass
スーパーユーザー root root
一般ユーザー freebsd freebsd

DHCP環境でLANケーブルを挿せば、ネットワークも使えるはずです。
そのままの環境だと何も入っていない状態です。ここで「環境設定スクリプト」を実行すると、タイムゾーンを日本にしたり、X環境 pkgを入れたりする一通りの設定が実行されます。
スクリプトは /boot/msdos/setup.sh に入っていますので、実行して数時間放置すると環境が設定されます。
具体的に setup.sh が実行するのは

  • タイムゾーンを日本に設定
  • ntpdate を起動時実行に設定 & 実行
  • powerd を起動時実行に設定 & 実行
  • WindowManager fluxbox インストール(依存するX関係のpkgがインストールされる)
  • RaspberryPi でXを実行するためにグラフィックドライバxf86-video-scfb をインストール
  • 日本語フォント noto インストール
  • dbus を起動時実行に設定 & 実行
  • sudo をfreebsdユーザーに許可
  • 日本語入力環境として ibus/mozc をインストール
  • fstab で / のマウントオプションに noatime を追加(SDへの余計な書き込み削減のため)

地味に「グラフィックドライバxf86-video-scfb」入れるとか「dbusを起動する」とかがハマりどころなので、スクリプトで勝手にやってくれるのは楽だと思います。
最後の行でコメントアウトで xfce4 のインストールする行もあります。8G版ならデスクトップ環境も普通に動きますので、使いたい方はコメントを外すか、後からその行だけ実行してください。

setup.sh実行後、追加で /boot/msdos/setup-xlogin-slim.sh を実行すると、Xログインマネージャーの slim と slim用 FreeBSDスキンがインストールされます。起動するとデーモン君のXのログイン画面が出るようになります。

setup.sh スクリプトは単独で実行可能なので、公式イメージにスクリプトだけ持ってきて実行するのも可能です。スクリプト自体はRaspberryPi4限定な要素はないので、Pi3/Pi2/PiZeroでも使えると思います。

#動画
起動してslimでログインし、xtermを開いて、GPIO操作を行い、Lチカまで実行する動画です。撮影しながらタイプしてたどたどしかったり、コマンド打ち間違えでコマンドライン睨んだりの実録動画です。

RaspberryPi4 8G 起動動画

#カスタマイズ
スクリプトは、「fluxbox使いたくない」「そもそもX使いたくない」とかそういう人は、単なるスクリプトなので適当にいじれば自分好みの環境設定用スクリプトになると思います。ハマりどころは抑えてあるので、pkg の顔ぶれだけ変更すればいいのは楽なんではと思います。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?