Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
5
Help us understand the problem. What is going on with this article?
@tetsu_koba

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

More than 3 years have passed since last update.

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

5
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
tetsu_koba
組み込みの人。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
5
Help us understand the problem. What is going on with this article?