連載
» 2008年08月04日 00時00分 公開

いますぐ使える! BusyBox活用術(2):「BusyBox」の設定とコンパイルを実践してみよう (1/2)

前回準備したクロスコンパイル環境を使って「BusyBox」を構築。BusyBoxの設定方法と静的なバイナリの構築方法を伝授する!

[宍道 洋 busybox同好会,@IT MONOist]

 前回「BusyBoxをクロスコンパイルする環境を構築しよう」で紹介したクロスコンパイル環境の構築はうまくいきましたでしょうか? 今回はこのクロスコンパイル環境を使って、実際にBusyBoxを構築していきます。

 ここでは、執筆時点で最新のバージョン「BusyBox 1.11.1」を使います。まずは、BusyBoxのサイトからBusyBox 1.11.1(busybox-1.11.1.tar.bz2)をダウンロードしてください。

 そして、以下のコマンドを実行し、ダウンロードしたファイルを作業用ディレクトリに展開し、“busybox-1.11.1”ディレクトリの中に入ります。

$ tar jxf busybox-1.11.1.tar.bz2
$ cd busybox-1.11.1 

BusyBoxの設定方法について

 続いて、BusyBoxをどのように構築するのかを設定していきます。

 Linuxカーネルをソースから構築したことのある方はご存じかもしれませんが、Linuxカーネルの設定ではテキストベースの設定のほか、GUIを使った設定が可能になっています。BusyBoxも同様に、テキストベースだけでなくGUIによる設定方法も用意されています。

 GUIが使えるLinux環境であれば、コマンドプロンプトから「make gconfig」、または「make xconfig」を実行することで、グラフィカルな設定画面を利用できます(画面1、画面2)。それぞれ、gconfigはGTK+ベース、xconfigはQtベースのGUIとなっています。

「make gconfig」の例 画面1 「make gconfig」の例
「make xconfig」の例 画面2 「make xconfig」の例

 GUIが使えない場合は、コマンドプロンプトから「make menuconfig」と実行することで、テキストベースのメニュー方式による設定画面を利用できます(注1)(画面3)。

※注1:ただし、ncursesライブラリを必要とします。


「make menuconfig」の例 画面3 「make menuconfig」の例

 万一、上記の方法が使えない場合は最終手段として、「make config」を実行してすべての項目を1つ1つ順番に設定していきます。

$ make config
 
 
(中略)
 
 
Enable options for full-blown desktop systems (DESKTOP) [N/y/?]
Assume that 1:1 char/glyph correspondence is not true (FEATURE_ASSUME_UNICODE) [N/y/?]
Buffer allocation policy
> 1. Allocate with Malloc (FEATURE_BUFFERS_USE_MALLOC)
  2. Allocate on the Stack (FEATURE_BUFFERS_GO_ON_STACK)
  3. Allocate in the .bss section (FEATURE_BUFFERS_GO_IN_BSS)
choice[1-3?]:
Show terse applet usage messages (SHOW_USAGE) [Y/?] y
 
 
(以下略) 

 そのほか、「make defconfig(デフォルト設定)」や「make allyesconfig(すべて有効)」「make allnoconfig(すべて無効)」などといった設定も可能です。

 これらの方法により設定した結果は、現在のディレクトリ内の“.config”というファイルに格納されます。

BusyBoxの主な設定項目

 それではBusyBoxの設定内容について見ていきましょう。

 BusyBoxで設定する項目は大きく、

  • BusyBox全体に関係する設定
  • 使用するアプレット(コマンド機能)の選択

の2つに分類できます。

 まず、「BusyBox全体に関係する設定」では、以下のような項目を設定します。

  • General Configuration 
    バッファ確保方法やUsageメッセージ表示形式、suidビットの有無、SELinuxサポートの有無などを設定します。
  • Build Options 
    静的なバイナリを作るかどうかなど、コンパイルに関するオプションを設定します。
  • Debugging Options 
    デバッグシンボルを含めるかどうかなど、デバッグに関するオプションを設定します。
  • Installation Options 
    インストール先やコマンド名のリンクをBusyBoxバイナリにリンクする際の方法など、インストールに関するオプションを設定します。
  • Busybox Library Tuning 
    最少パスワード文字数やコマンドライン編集に関する設定など、多くのアプレットが共通して使用する機能に関する設定を行います。

 続いて、「使用するアプレットの選択」では、ターゲットの環境で必要となるコマンド機能を選択していきます。ここではターゲットで最低限必要となるコマンド機能のみを選ぶことで、全体のサイズを小さくできます。

種類 内容
Archival Utilities 「tar」「gzip」など、アーカイブや圧縮に関連するコマンド
Coreutils 「ls」「cp」「cat」など、OSに必要な基本コマンド
Console Utilities コンソールの操作で使われるコマンド
Debian Utilities 「start-stop-daemon」など、Debian由来のコマンド
Editors 「awk」「sed」「vi」などテキスト処理・編集コマンド
Finding Utilities 「find」「grep」といった検索コマンド
Init Utilities 「init」「poweroff」など、起動・終了処理用のコマンド
Login/Password 
Management Utilities
ログインやパスワードなど、ユーザー管理や認証に関連するコマンド
Linux Ext2 FS Progs 「fsck」など、Ext2ファイルシステム関連コマンド
Linux Module Utilities 「depmod」など、Linuxカーネルモジュール関連のコマンド
Linux System Utilities 「fdisk」「mount」など、Linuxシステム関連のコマンド
Miscellaneous Utilities ほかの項目として分類していないコマンド
Networking Utilities 「ping」「httpd」など、ネットワーク関連のコマンド
Process Utilities 「ps」「kill」など、プロセス関連のコマンド
Shells 「ash」などのシェル
System Logging Utilities 「syslogd」「klogd」などのログ関連のコマンド
Runit Utilities サービスの起動や監視を行うrunit関連のコマンド
Selinux Utilities SELinuxを使う場合に必要となるコマンド 
(BusyBox全体に関係する設定でSELinuxサポートを有効にする必要あり)
Print Utilities 「lpr」など、印刷関連のコマンド
       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.