組み込みLinuxシステム構築

[cover photo]
この商品は品切れ再入荷未定です

本書はLinuxシステムを組み込み機器上に構築するための解説書です。多種多様なアーキテクチャやハードウェア構成に対応するための実践的かつ詳細な情報を提供します。本書の内容は「GNUツールチェーンのコンポーネントの構築」「Linuxカーネルの選択、設定、クロスコンパイル、インストール」「ルートファイルシステムの構築」「記憶装置のセットアップと操作」「ブートローダのインストールと設定」「デバッグのためのツールとテクニック」など。取り上げている開発ツールがオープンソースのものであることも大きな特徴です。付録にLinuxカーネルのライセンスに関して、Linus Torvalds氏がメーリングリストに投稿したメッセージを収録するなど、Linuxのライセンスに関しても随所で触れています。

まえがき 
        対象読者 
        必要な予備知識 
        本書の構成 
        本書で使用するハードウェア 
        ソフトウェアのバージョン 
        本書のWebサイト 
        表記法 
        問い合わせ先 
        謝 辞 
1章      はじめに 
        1.1     定義 
                1.1.1 Linuxとは何か 
                1.1.2 組み込みLinuxとは何か 
                1.1.3 リアルタイムLinuxとは何か 
        1.2     実世界の組み込みLinuxシステム 
                1.2.1 組み込みLinuxシステムのタイプ 
                1.2.2 例 
                1.2.3 調査結果 
                1.2.4 Linuxを選ぶ理由 
                1.2.5 組み込みLinuxの舞台のプレーヤ 
                1.2.6 著作権と特許権の問題 
                1.2.7 ディストリビューションの使用 
        1.3     マルチコンポーネントシステムの例 
                1.3.1 アーキテクチャの概要 
                1.3.2 各コンポーネントの要件 
                1.3.3 多様な要件 
        1.4     設計方法と実装方法 
                1.4.1 ターゲットLinuxシステムの構築 
                1.4.2 開発ツールのセットアップと使用方法 
                1.4.3 組み込みのための開発 
                1.4.4 ネットワーク 
2章      基本概念 
        2.1     ホストのタイプ 
                2.1.1 Linuxワークステーション 
                2.1.2 Unixワークステーション 
                2.1.3 Windows(2000、NT、98など)ワークステーション 
        2.2     ホスト/ターゲットの開発構成のタイプ 
                2.2.1 リンク構成 
                2.2.2 移動可能記憶装置構成 
                2.2.3 スタンドアロン構成 
        2.3     ホスト/ターゲットのデバッグ構成のタイプ 
        2.4     組み込みLinuxシステムの一般的アーキテクチャ 
        2.5     システムの起動 
        2.6     ブート構成のタイプ 
                2.6.1 半導体ディスク媒体構成 
                2.6.2 ディスク 
                2.6.3 ネットワーク 
        2.7     システムメモリのレイアウト 
3章      ハードウェアサポート 
        3.1     プロセッサアーキテクチャ 
                3.1.1 x86 
                3.1.2 ARM 
                3.1.3 IBM/Motorola PowerPC 
                3.1.4 MIPS 
                3.1.5 日立SuperH 
                3.1.6 Motorola 68000 
        3.2     バスとインタフェース 
                3.2.1 ISA 
                3.2.2 PCI 
                3.2.3 PCMCIA 
                3.2.4 PC/104 
                3.2.5   VME 
                3.2.6   CompactPCI 
                3.2.7   パラレルポート 
                3.2.8   SCSI 
                3.2.9   USB 
                3.2.10  IEEE1394(FireWire) 
                3.2.11  GPIB 
                3.2.12  I2C 
        3.3     I/O 
                3.3.1   シリアルポート 
                3.3.2   パラレルポート 
                3.3.3   モデム 
                3.3.4   データ収集 
                3.3.5   プロセス制御 
                3.3.6   ホームオートメーション 
                3.3.7   キーボード 
                3.3.8   マウス 
                3.3.9   ディスプレイ 
                3.3.10  音響 
                3.3.11  プリンタ 
        3.4     記憶装置 
                3.4.1   MTD 
                3.4.2   ATA-ATAPI(IDE) 
                3.4.3   SCSI 
        3.5     汎用ネットワーク 
                3.5.1   イーサネット 
                3.5.2   IrDA 
                3.5.3   IEEE 802.11(無線) 
                3.5.4   Bluetooth 
        3.6     工業用ネットワーク 
                3.6.1   CAN 
                3.6.2   ARCnet 
                3.6.3   Modbus 
                3.6.4   その他の工業用ネットワーク 
        3.7     システムの監視 
4章      開発ツール 
        4.1     実用的なプロジェクト作業領域の使用方法 
        4.2     GNUクロスプラットフォーム開発ツールチェーン 
                4.2.1   GNUツールチェーンの基礎 
                4.2.2   カーネルヘッダのセットアップ 
                4.2.3   binutilsのセットアップ 
                4.2.4   ブートストラップコンパイラのセットアップ 
                4.2.5   Cライブラリのセットアップ 
                4.2.6   完全なコンパイラのセットアップ 
                4.2.7   ツールチェーンのセットアップの完了 
                4.2.8   ツールチェーンの使用方法 
        4.3     Cライブラリの選択肢 
                4.3.1   uClibc 
                4.3.2   ダイエットlibc 
        4.4     Java 
                4.4.1   Blackdownプロジェクト 
                4.4.2   オープンソース仮想マシン 
                4.4.3   GNU Javaコンパイラ 
        4.5     Perl 
                4.5.1   microperl 
                4.5.2   miniperl 
        4.6     Python 
        4.7     Ada 
        4.8     他のプログラミング言語 
        4.9     統合開発環境 
        4.10    端末エミュレータ 
                4.10.1  シリアルポートへのアクセス 
                4.10.2  minicom 
                4.10.3  UUCP cu 
                4.10.4  C-Kermit 
5章      カーネルのセットアップ 
        5.1     カーネルの選択 
        5.2     カーネルの設定 
                5.2.1   設定オプション 
                5.2.2   設定方法 
                5.2.3   複数の設定の管理 
                5.2.4   変数EXTRAVERSIONの使用 
        5.3     カーネルのコンパイル 
                5.3.1   依存関係のビルド 
                5.3.2 カーネルのビルド 
                5.3.3 モジュールのビルド 
        5.4     カーネルのインストール 
                5.4.1 複数のカーネルイメージの管理 
                5.4.2 カーネルモジュールのインストール 
        5.5     カーネルの動作 
                5.5.1 カーネルの障害への対処 
6章      ルートファイルシステムの内容 
        6.1     基本的なルートファイルシステムの構成 
        6.2     ライブラリ 
                6.2.1 glibc 
                6.2.2 uClibc 
        6.3     カーネルモジュール 
        6.4     カーネルイメージ 
        6.5     デバイスファイル 
        6.6     主要なシステムアプリケーション 
                6.6.1 完全な標準アプリケーション 
                6.6.2 BusyBox 
                6.6.3 TinyLogin 
                6.6.4 embutils 
        6.7     カスタムアプリケーション 
        6.8     システムの初期化 
                6.8.1 標準的なSystem Vのinit 
                6.8.2 BusyBoxのinit 
                6.8.3 Minit 
7章      記憶装置のセットアップ 
        7.1     MTD装置 
                7.1.1 MTDの基本的な使用方法 
                7.1.2 ネイティブのCFIフラッシュ 
                7.1.3 DiskOnChip 
        7.2     ディスク装置 
                7.2.1 コンパクトフラッシュ 
                7.2.2 フロッピーディスク 
                7.2.3 ハードディスク 
        7.3     スワップを使用すべきかどうか 
8章      ルートファイルシステムのセットアップ 
        8.1     ファイルシステムの選択 
                8.1.1   ファイルシステムの特徴 
                8.1.2   ファイルシステム選択のガイドライン 
                8.1.3   ディスク装置用のファイルシステム 
        8.2     ファイルシステムイメージをフラッシュに書き込むためにNFSを使用 
        8.3     CRAMFS 
        8.4     JFFS2 
        8.5     NFTL上のディスクファイルシステム 
        8.6     RAMディスク上のディスクファイルシステム 
        8.7     TMPFSにディレクトリをマウント 
        8.8     マウント中の更新 
                8.8.1   rsyncユーティリティ 
                8.8.2   パッケージ管理ツール 
                8.8.3   特製のスクリプト 
9章      ブートローダのセットアップ 
        9.1     豊富なブートローダ 
                9.1.1   LILO 
                9.1.2   GRUB 
                9.1.3   ROLO 
                9.1.4   loadlin 
                9.1.5   EtherBoot 
                9.1.6   LinuxBIOS 
                9.1.7   Compaqのbootldr 
                9.1.8   blob 
                9.1.9   PMON 
                9.1.10  sh-Boot 
                9.1.11  U-Boot 
                9.1.12  RedBoot 
        9.2     ネットワークブートのサーバ設定 
                9.2.1   DHCPデーモンの設定 
                9.2.2   TFTPデーモンの設定 
                9.2.3   NFSサーバにルートファイルシステムをマウント 
        9.3     ディスクとコンパクトフラッシュ装置でLILOを使用 
        9.4     DiskOnChip装置でGRUBを使用 
                9.4.1   DOCでGRUBを使用するための設定とビルド 
                9.4.2   GRUBをDOCにインストール 
                9.4.3   DOCからGRUBをブートするための設定 
        9.5     U-Boot 
                9.5.1   コンパイルとインストール 
                9.5.2   U-Bootによるブート 
                9.5.3   U-Bootの環境変数の使用方法 
                9.5.4   ブートスクリプトの作成 
                9.5.5   バイナリイメージの準備 
                9.5.6   BOOTP/DHCP、TFTP、NFSを使用したブート 
                9.5.7   バイナリイメージをフラッシュにダウンロード 
                9.5.8   RAMディスクを使用してブート 
                9.5.9   コンパクトフラッシュ装置からのブート 
                9.5.10  U-Bootの更新 
10章     ネットワークサービスのセットアップ 
        10.1    インターネットスーパーサーバ 
                10.1.1  inetd 
                10.1.2  xinetd 
        10.2    SNMPによるリモート管理 
        10.3    Telnetを通したネットワークログイン 
                10.3.1  netkitのtelnetd 
                10.3.2  utelnetd 
        10.4    SSHによる安全な通信 
                10.4.1  OpenSSH 
                10.4.2  他のSSHの実装 
        10.5    HTTPを通したWebコンテンツの提供 
                10.5.1  Boa 
                10.5.2  thttpd 
                10.5.3  Apache 
        10.6    DHCPによる動的な設定 
11章     デバッグツール 
        11.1    gdbによるアプリケーションのデバッグ 
                11.1.1  gdbコンポーネントのビルドとインストール 
                11.1.2  gdbコンポーネントでターゲットアプリケーションをデバッグ 
                11.1.3  グラフィカルなフロントエンドインタフェース 
        11.2    トレース 
                11.2.1  単一プロセスのトレース 
                11.2.2  システムのトレース 
        11.3    性能解析 
                11.3.1  プロセスのプロファイリング 
                11.3.2  コードのカバレッジ 
                11.3.3  システムのプロファイリング 
                11.3.4  カーネルのプロファイリング 
                11.3.5  割り込み待ち時間の測定 
        11.4    メモリのデバッグ 
                11.4.1  Electric Fence 
                11.4.2  MEMWATCH 
        11.5    ハードウェアツール 
付録A     ワークシート 
        A.1     プロジェクト概要 
        A.2     ハードウェア一覧 
        A.3     開発ツール 
        A.4     カーネル 
        A.5     ルートファイルシステム 
        A.6     記憶装置の構成 
        A.7     ブートローダの設定と使用方法 
        A.8     ネットワークサービス 
        A.9     カスタムのプロジェクトソフトウェア 
        A.10    デバッグ上の注意 
        A.11    補足 
        A.12    組み込みLinuxシステムのワークシート 
付録B     参考情報 
        B.1     オンライン 
        B.2     書籍 
        B.3     雑誌 
        B.4     組織 
        B.5     Linuxとオープンソース指向のハードウェアプロジェクト 
付録C     ライセンスに関する重要な注意事項 
        C.1     カーネルのGPLからユーザ空間アプリケーションを除外 
        C.2     バイナリカーネルモジュールについての注意 
                C.2.1   カーネルインタフェースのスレッドにTorvalds氏が投稿した
                        最初のメッセージ 
                C.2.2   カーネルインタフェースのスレッドにTorvalds氏が投稿した
                        2番目のメッセージ 
                C.2.3   カーネルフックのスレッドにAlan Cox氏が投稿したメッセージ 
                C.2.4   セキュリティフックのライセンスのスレッドにTorvalds氏が投稿した
                        最初のメッセージ 
                C.2.5   セキュリティフックのライセンスのスレッドにTorvalds氏が投稿した
                        2番目のメッセージ 
        C.3     カーネルについてのLinus Torvalds氏による法的な説明 
索 引 
コラム
        16ビットLinuxは存在するか 
        gcc 3.2以降を使用する場合の注意 
        クロスコンパイルの可能性 
        30年前からの偉大なソフトウェア... 
        カーネルバージョンのバリエーション 
        クロス開発ツールチェーンの検証 
        類似したディレクトリの混乱 
        さまざまなルートファイルシステム構成でLinuxを実行 
        /devエントリの自動的な作成 
        NORフラッシュとNANDフラッシュの動作 
        MTDのパーティション情報を与える別の方法 
        M-Systems社のDOCドライバ 
        ROMFSはROM用ではない 
        初期RAMFS 
        diffとpatch 
        GNU cp以外でディレクトリツリー全体をコピーする方法 
        DiskOnChip装置でLILOを使用する場合の注意 
        物理RAMとフラッシュの場所 
        デバッグ情報とシンボルテーブルとstrip

Feedback

皆さんのご意見をお聞かせください。ご購入いただいた書籍やオライリー・ジャパンへのご感想やご意見、ご提案などをお聞かせください。より良い書籍づくりやサービス改良のための参考にさせていただきます。
[feedbackページへ]