私は組み込みLinuxのルートファイルシステムを作るのにいつもBuildrootを使っています。
そのときにいつもしていることを備忘録がてら書いておきます。
#ccache を有効にする
ルートファイルシステムを構築するときに、特に最初の段階では何度もmake clean
してからビルドをやり直すことが多くなります。そうするとクロスコンパイラを作るところからやり直しになるので、かなり時間がかかります。この時間を短縮するのにccacheが効果が高いです。
ccacheは一度コンパイルした内容を別のところにキャッシュとして保存しておき、次に同じソースを同じコンパイルオプションでコンパイルするときにはそのキャッシュからとってきてくれます。
Buildrootではccacheの使用がサポートされていて、コンフィグの設定を有効にするだけで簡単にccacheを利用することができます。
make menuconfig で
Build options --->
Commands --->
[*] Enable compiler cache
詳細はここを参照
https://buildroot.org/downloads/manual/manual.html#ccache
#DHCPサーバからIPアドレスを取得できるようにする
私の場合、開発時には必ずEthernetを使用するのでこれは必須。
System configuration --->
(eth0) Network interface to configure through DHCP
ここにeth0を入力して、dhcpcdをインストール。
Target packages --->
Networking applications --->
[*] dhcpcd
#sshでログインできるようにする
デフォルトではrootのパスワードが空なので、なにか設定する。この例ではppaasswwoorrdd
System configuration --->
[*] Enable root login with password
(ppaasswwoorrdd) Root password
sshのサーバとしてdropbearをインストール
Target packages --->
Networking applications --->
[*] dropbear
[*] client programs
[*] disable reverse DNS lookups
[*] optimize for size
[ ] log dropbear access to wtmp
[ ] log dropbear access to lastlog
rootでsshのログインをさせたくない場合は、別のユーザを登録する。
https://buildroot.org/downloads/manual/manual.html#customize-users
dropbearは省メモリ版のsshソフト。sshサーバ、sshクライアント、scpが使用できる。sftpは無い。
フルセットのsshの機能が欲しい場合は代わりにopensshを入れるのがいいでしょう。
#IPアドレスを調べなくてもホスト名で指定してsshでログインできるようにする
ホスト名をセットする。この例ではneo
System configuration --->
(neo) System hostname
avahiのmDNSのdaemonをインストール
Target packages --->
Networking applications --->
[*] avahi
[ ] IPv4LL network address configuration daemon
[*] mDNS/DNS-SD daemon
[*] libdns_sd compatibility (Bonjour)
libdns_sd compatibility (Bonjour)
はよくわからないけどONにしておいた。
参考。
NanoPi NEOのホスト名変更とavahi-daemonの有効化
#/devの扱いの選択
System configuration --->
/dev management (Dynamic using devtmpfs only) --->
選択肢として以下がある
- Static using device table
- Dynamic using devtmpfs only (これがデフォルト設定)
- Dynamic using devtmpfs + mdev
- Dynamic using devtmpfs + eudev
起動時からデバイスに変化が無いならばデフォルトのままでよい。
USBやSDカードなどで途中で抜き差しすることがあって、そのタイミングで何かしたいのならばmdevかeudevを併用する。
mdevはbusyboxに統合されているのでサイズが小さくて済む。PC Linuxのudevスクリプトをそのまま使いたい場合はeudevがよい。
詳細はここを参照
https://buildroot.org/downloads/manual/manual.html#_dev_management
#straceをいれる
今までの経験から、トラブルシューティングの初動にはstraceが役に立つので入れておく。
Target packages --->
Debugging, profiling and benchmark --->
[*] strace
#ここまで
気がついたら追記する予定。
#関連
NanoPi NEOのルートファイルシステムをBuildrootで作る(1)
NanoPi NEOのルートファイルシステムをBuildrootで作る(2)