LoginSignup
15
10

More than 5 years have passed since last update.

Buildrootでルートファイルシステムを構築するときに必ずすること

Last updated at Posted at 2018-02-12

私は組み込み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)

15
10
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
15
10