Linuxカーネルのコンパイル設定(menuconfig)、ファイルシステムの製作について説明する。
より多くの技術的な知識のために、コードをスキャンしてくださいとブロガーの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など)を使用して生成する必要があります
ブロガーがおすすめする人気記事
一気読みシリーズ。
- 無接点充電技術について1記事で読む(ソリューションの選択と原理分析付き)
- Android/iOS携帯がオーディオインターフェース(ヘッドフォンジャック)を通じて周辺機器と通信する方法
- 一読の価値あり。AndroidスマホでUSBポート経由で周辺機器と通信する方法(原理解析とソリューションの選定を含む)
LoRa Meshシリーズ。
- LoRa学習:LoRaの主要パラメータ(拡散係数、符号化率、帯域幅)の設定と説明
- LoRaの学習。チャネル占有率検出(CAD)の原理
- LoRa/FSK無線スペクトル波形解析(LoRa/FSK帯域幅、電力、周波数誤差などを試験するスペクトルアナライザ)。
サイバーセキュリティシリーズ。
- ATECC508A チップ開発ノート(I)。暗号化チップの初公開
- SHA/HMAC/AES-CBC/CTRアルゴリズム実行効率およびRAM消費量テスト結果
- 一般的な暗号化/署名/ハッシュ化アルゴリズムの性能比較(マルチプラットフォーム AES/DES, DH, ECDSA, RSA, etc.)
- AES暗号化・復号化効率テスト(Pure Software AES128/256) - 組み込み用Cortex-M0およびM3プラットフォームを例として
エンベデッド開発シリーズ。
- 組み込み学習で整理すべきベタープラクティスプロジェクトとトピック(コード資料、学習ビデオ、組み込み学習プランニング付き)
- IARデバッグスキルまとめ:データブレークポイント、CallStack、スタック設定、スタック使用量とスタック深度の表示、メモリ、Set Next Statement、など。
- Linuxカーネルコンパイルの設定(Menuconfig)、ファイルシステムの作成 詳細手順
- C言語コードへのAndroidの基礎的な呼び出し(JNI実装)
- Raspberry Piを最初のステップへ:電源投入と起動、中国語フォントのインストール、仮想キーボード、SSHのオープンなど。
- Android/Linux端末 有線・無線デュアルネットワーク共存(内部・外部ネットワーク同時接続)
AI / 機械学習シリーズ。
- AI:機械学習はいくつかの用語を知っておく必要があります。テーブル、フィーチャー、モデル...
- AI:オーバーフィッティングを解決する畳み込みニューラルネットワークCNN (Overcome Overfitting)
- AI:機械学習のためのデータクリーニングとは(データクリーニング)
- AI:機械学習モデルはどのように学習させるのですか?(試行錯誤の学習)
- データの可視化。TensorboardXのインストールと使用(インストールテスト+サンプルデモ)
関連
-
undefinedlinuxでは127.0.0.1、 : では0.0.0.0です。
-
R パッケージのインストール: パッケージ 'phangorn' のインストールで終了ステータスが 0 以外になった。
-
gdbが実行可能なファイル形式でない ファイル形式が認識できない
-
linux リモートコピーコマンドと通常のファイルソリューションではありません。
-
UBUNTUの一般的なエラーと解決策
-
5 無料で使えるLinux用アンチウイルスソフト ベスト
-
-bash: !" : イベントが見つかりません
-
www-dataユーザーグループを認証する
-
Cmakeのアンインストールとインストール関連の終了について
-
curlコマンドの使用。HTTPリクエスト、ファイルダウンロード、FTPアップロードとダウンロード
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ConnectionRefusedErrorです。[Errno 111] 接続が拒否されました。
-
警告について:互換性のないポインタ型からの初期化【デフォルトで有効
-
linux system: make: *** `install' をターゲットにするルールがありません。停止してください。
-
centos 7.2 make: *** `default' が必要とする `build' をターゲットとするルールがありません。停止します。
-
テキストファイルがビジー状態になる問題を解決
-
cp: 通常のファイル `/usr/local/bin/orange' を作成できません。テキストファイルがビジー状態
-
Ubuntu 18.04で「Dockerデーモンソケットに接続しようとしたときにパーミッションが拒否されました」問題を解決する
-
コンピュータに利用可能なGPUデバイスがあるかどうかを確認する
-
データラボ コンピュータシステム実験への深い理解
-
Linux Final Exam Practice Questions