1. ホーム
  2. リナックス

Linuxカーネルのコンパイル設定(menuconfig)、ファイルシステムの製作について説明する。

2022-02-24 19:36:34
<パス

より多くの技術的な知識のために、コードをスキャンしてくださいとブロガーのWeChat公開番号に注意を払う:HowieXue、ハードウェアとソフトウェアの技術的な知識の経験を議論するために一緒に学ぶために、注意がああ受信する無料の学習教材を大量に持っているでしょう:.


目次


Linuxカーネルのコンパイル設定(menuconfig)、ファイルシステムの作成について説明します。

  • Linuxカーネルコンフィギュレーションの原則
  • Menuconfigの主な機能オプションの紹介
  • カーネルステップのコンパイルとコンフィギュレーション
  • ファイルシステムの作成手順
  • ファイルシステムとルートファイルシステムの差分接続

I. Linux カーネル設定の原則

Linuxカーネルの設定システムは、以下の3つの部分から構成されています。

というものです。
1. Makefile:Linuxカーネルのソースコードのルートディレクトリと各レベルのディレクトリに配布され、Linuxカーネルのコンパイルルールを定義しています。
2. 設定ファイル(config.in):ユーザーが設定を選択する機能を提供します。
3、設定ツール:設定コマンドインタプリタ(設定スクリプトで使用する設定コマンドを説明する)、設定ユーザーインターフェース(ユーザー設定のための文字ベースのインターフェース、Ncursesベースのグラフィカルインターフェース、Xwindowsベースのグラフィカルインターフェースがあり、それぞれMake config, Make menuconfig, make(xconfig)に相当する)を含む。

Linuxカーネルのコンパイルメニューには、3つのメソッドがあります。

1) make config: コマンドラインに移動して、一行ずつconfigureする。使い勝手は悪いが、コマンドで一度実行することで、ここでは特に説明しないが、コンパイルの過程を深く理解することができる。
2) make menuconfig : 使い慣れたmenuconfigメニューに移動し、グラフィカルなインターフェースから設定を選択します
3) xconfigを作る。2.4.X 以前のバージョンでは、xconfig メニューは TCL/TK グラフィカルライブラリに基づいており、これは触れられていません。廃止されたようです。

Menuconfigのコンフィギュレーションカーネル原理。

Linux内部で目にするmenuconfigのインターフェースは、カーネルのトップレベルKconfigを設定することで生成されており、make menuconfigコマンドを入力すると、システムはMakefileを読み込んでKconfigを解析します。
  Kconfigの内部には、通常、次の4つの項目が書かれています。
  1. module で始まるモジュール名。
  2. オプション。通常、bool(2択)またはtrastate(3択)に設定されます。
  3. デフォルトのオプション。
  4.ヘルプの説明。
KConfigについて 詳細な説明は、http://blog.sina.com.cn/s/blog_4ba5b45e0102e6vp.html にあります。


II. Menuconfigの主な機能オプションの紹介。

ソースディレクトリで # make menuconfig ARCH=arm と入力すると、次のようなメニューが表示されます。(Menuconfigのメインインターフェイス)

どこ 一般的な設定 の重要なオプションは

  • クロスコンパイラツールのプレフィックス クロスコンパイラツールのプレフィックス(例:arm-linux-)です。
  • local version - append to kernel release カーネルに表示されるバージョン情報です。
  • システムV IPCは、システムのプロセス間通信Inter Processを示します。
  • プロセッサがプログラム間の同期や情報交換を行うための通信である
  • eventpollサポートの有効化:イベントの丸めをサポートするシステムコールです。

2. ローダブルモジュールのサポートを有効にする 重要なオプションは以下の通りです。(カーネルモジュール設定)

  • モジュールのアンロードにより、ロードされたモジュールのアンロードが可能
  • モジュールのバージョニングサポートにより、他のカーネルバージョンのモジュールが使用可能(問題がある可能性あり)
  • Source checksum for all modules は、すべてのモジュールのソースコードをチェックしますが、独自のカーネルモジュールを書かない場合は必要ありません。

3. ブロックレイヤーの有効化 ハードディスク/USB/SCSIデバイスを使用している場合に必須となるブロックデバイスのサポートは、ブロックデバイスをカーネルから削除できるようにします。重要なオプションは以下の通りです。

  • 大きな(2TB以上)ブロックデバイスとファイルのサポート 2TB以上のブロックデバイスを使用する場合のみ必要です。
  • ブロックレイヤーのバイオスロットリングサポートを利用して、デバイスのIO速度を制限することができる
  • IOスケジューラ IOスケジューラI/Oは、主にハードディスクの入出力帯域制御であり、コアには必須である。ここでは3つのIOスケジューラが提供されています。

4. プロセッサの種類と特徴(Processor type and features)

  • 対称型マルチプロセッシング対応 複数のCPUを搭載している場合やマルチコアCPUを使用している場合は、対称型マルチプロセッシング対応を選択する
  • プロセッサーファミリー(Pentium-Pro)は、実際に使用するCPUに応じて選択してください、プロセッサーの種類は以下の通りです。
  • Generic x86 support このオプションは、x86シリーズのCPUに対してより一般的な最適化を行うものです。上記の項目でi386、i586などを選択した場合のみ、このオプションを選択してください。
  • マルチコアスケジューラ対応 マルチコアスケジューラ対応をマルチコアCPUに最適化、デュアルコアCPUに最適化

5. 電源管理およびACPIオプション(電源管理関連)
6、バスオプション(PCI , ISA , その他のバスのサポートと設定。)
7、実行可能ファイル形式/エミュレーション(使用していない、よく理解していない)
8、ネットワーク対応(ネットワーク設定、重要)

  • ネットワークオプション ネットワークプロトコルおよびネットワークパケットパラメータの設定(TCP/IP関連プロトコルをONにする必要があるところ)。
  • ワイヤレス ワイヤレスNICのサポートを使用
    RFスイッチサブシステムのサポート RFスイッチデバイス

9. デバイスドライバ

  • 汎用ドライバオプション
  • ラムディスク、ディスクアレイ、CD/DVDライティングなど、サポートしたいデバイスをブロックする。
  • Misc devices サポートするその他のデバイス
  • SCSIデバイスのサポート SCSIデバイスドライバ
  • シリアルATA、パラレルATAドライバ SATAデバイスドライバ
  • IEEE1394(FireWire)対応
  • ネットワークデバイス対応 例:イーサネット(1000Mbit) 対応するハードウェアを選択してください。
  • 文字デバイス 文字デバイスは、一般的に独自のセンサークラスドライバは文字型である、あなたは、シリアルポートTTYなど、そこにそれらを設定する必要がある書き込む。
  • SPI/I2C対応
  • サウンドカード対応 サウンドカード

10、ファームウェアドライバ(BIOS関連、一部システム管理ツールを使用する場合があります。)
11, ファイルシステム (ファイルシステムのサポート、重要!)

<ブロッククオート
  • Extended 4 (ext4) ファイルシステム
  • Ext4 セキュリティ・ラベル <=== SELinux サポートの削除
  • XFSファイルシステムのサポート
  • ISO 9660 CDROM ファイルシステム対応
  • NTFSファイルシステム対応

12、カーネルハッキング(カーネルデバッグ関連、使用木材)
13、Security options(セキュリティ関連オプション)

<ブロッククオート
  • Cryptographic API -> // Cryptographic API、オプションのこの部分は、前回の最適化に従って自動的に調整されます。

III. カーネルステップのコンパイルと設定

Linux 3.5カーネルバージョンを例にとると、まずlinux-3.5ソースコードを解凍します。
次に、ディレクトリに cd して、タイプしてください。

make menuconfig ARCH=arm

ハードウェアに応じたプロセッサの選択(コンフィギュレーション)を行います。


ネットワークプロトコル設定(ハードウェアおよびソフトウェアの要件に合わせて切り詰めることができます)。

デバイスドライバ:図はネットワークカードドライバ

お使いのチップに適したNICドライバを選択します

ファイルシステムの選択:例えば、ex4ファイルシステムを使用する場合は、チェックボックス

図は、次のように値をとります。 <> は未選択、<*> はカーネルイメージ zImage に圧縮されてメモリ上で実行、< M> は moudule カーネルモジュールにコンパイルされて ROM に格納、使用時に zImage コールで動的にメモリ上にロードされる。

makemenuconfig で選択されたものが .config ファイルで照会されます: (関連する Cofig が y として設定されている場合、カーネルコードはこの時点で静的にコンパイルされているこの関連するコードでコンパイルされます)

選択したら、makeしてカーネルをコンパイルし、arch/arm/bootディレクトリにzImageを生成します。これは、ボードに直接書き込むことができるカーネルイメージファイルです(SDカードまたはUSB)。


IV. ファイルシステム作成手順

まず、ツールキット linux_tools.tgz をインストールします。

tar xvzf linux_tools.tgz -C /...

次に、ファイルシステムのイメージファイル (qtopia_qt4.img) を生成します。

make_ext4fs -s -l 314572800 -a root -L linux rootfs_qtopia_qt4.img rootfs_qtopia_qt4

make_ext4fs コマンドは rootfs_qtopia_qt4 ファイルを rootfs_qtopia_qt4.img ファイルシステムイメージにパッケージ化します。

  • l314572800" はパーティションサイズ -s は ext4 の S-mode プロダクションです。
  • 314572800/1024/1024 = 300M
  • -a rootは、このimgがLinux用であることを意味します(-a systemがandroidの場合、マウントポイントは/systemです。
  • . /rootfs_qtopia_qt4.img は、イメージファイルがカレントディレクトリに生成されることを意味します。
  • . /rootfs_qtopia_qt4 ルートファイルシステムソースパスを指定する

書いたアプリケーションをrootfs_qtopia_qt4に入れ、ext4ファイルシステムのイメージファイルとしてパッケージ化すれば、アプリケーションはシステムに固定されるので、二度インストールする必要はありません。

説明すると、ext4ファイルシステムのイメージを作るには、make_ext4fsコマンドを使用し、まずツールキットをusr/binに展開します。使い方の参考までに。

<ブロッククオート

make_ext4fs -s -l 512M -a システム system_new.img システム

512M テーブルパーティションサイズ 最初のsystemはマウントポイントが/system、2番目のsystemはシステムディレクトリを意味します。
新しく生成されたsystem_new.imgは、焼くための準備が整っています。


V. ファイルシステムとルートファイルシステムの違いリンク

の違いをご存じない方が多いようです。 ファイルシステム ルートファイルシステム の違いとつながり

個人的な理解では、いわゆる**Root Filesytem**は、linuxの起動に必要なディレクトリや重要なファイルやコマンドを含めることであり、ファイルディレクトリ構造全体がルートファイルシステムで構成されていると考えています。
ルートファイルシステムは、busyboxで直接生成することができる

いわゆる ファイルシステム (ファイルシステム) ファイルの保存やデータの整理を簡単に管理する方法を指します。一般的なlinuxのファイルシステム。NFSネットワークルートファイルシステム、nandflash用YAFFS2、EXT3、EXT4など。また、WindowsでおなじみのFAT、FAT32、NTFSなどのシステムもある
ファイルシステムは、システムの種類とハードウェアのサポートに応じて、パッケージングツール(Make_ext4など)を使用して生成する必要があります


ブロガーがおすすめする人気記事

一気読みシリーズ。

LoRa Meshシリーズ。

サイバーセキュリティシリーズ。

エンベデッド開発シリーズ。

AI / 機械学習シリーズ。