前回準備したクロスコンパイル環境を使って「BusyBox」を構築。BusyBoxの設定方法と静的なバイナリの構築方法を伝授する!
前回「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
関連リンク: | |
---|---|
⇒ | 組み込みLinuxで際立つ「BusyBox」の魅力 |
続いて、BusyBoxをどのように構築するのかを設定していきます。
Linuxカーネルをソースから構築したことのある方はご存じかもしれませんが、Linuxカーネルの設定ではテキストベースの設定のほか、GUIを使った設定が可能になっています。BusyBoxも同様に、テキストベースだけでなくGUIによる設定方法も用意されています。
GUIが使えるLinux環境であれば、コマンドプロンプトから「make gconfig」、または「make xconfig」を実行することで、グラフィカルな設定画面を利用できます(画面1、画面2)。それぞれ、gconfigはGTK+ベース、xconfigはQtベースのGUIとなっています。
GUIが使えない場合は、コマンドプロンプトから「make menuconfig」と実行することで、テキストベースのメニュー方式による設定画面を利用できます(注1)(画面3)。
万一、上記の方法が使えない場合は最終手段として、「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で設定する項目は大きく、
の2つに分類できます。
まず、「BusyBox全体に関係する設定」では、以下のような項目を設定します。
続いて、「使用するアプレットの選択」では、ターゲットの環境で必要となるコマンド機能を選択していきます。ここではターゲットで最低限必要となるコマンド機能のみを選ぶことで、全体のサイズを小さくできます。
種類 | 内容 |
---|---|
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」など、印刷関連のコマンド |
Copyright © ITmedia, Inc. All Rights Reserved.