組み込みLinuxプラットフォーム用のカーネルイメージの構築

組み込みLinuxプラットフォーム用のカーネルイメージの構築

Ingenic SoCベースのプラットフォーム用のLinuxイメージのコンパイルに興味があります。ベンダーは、ターゲットSoC用のLinuxカーネルをコンパイルする方法についてあいまいなガイドラインを提供します。したがって、ベンダーの指示とオンライン検索によると、このプラットフォームの組み込みLinuxイメージを取得するには、次のものが必要です。

  1. コンパイルツールチェーン(Mipsベースのアーキテクチャ用mipsel)
  2. ツールチェーンを使用した特定のドライバ/BSPを使用したLinuxカーネルのコンパイル
  3. ルートファイルシステムのコンパイル - Busyboxが推奨する(理由は不明)
  4. ターゲットSoC用のuBootのコンパイル
  5. ターゲット固有のパーティションテーブルを使用するパーティションストレージ(例:sd)
  6. フル画像をSDにフラッシュ

その場合、問題は、なぜルートファイルシステムがカーネルイメージから分離されているのかということです。ファイルシステムの作成では、busyboxはどのような役割を果たしますか?また、Linuxイメージがルートファイルシステムなしでコンパイルされている場合、ドライバがルートファイルシステムの/ sysディレクトリにあるように2つのイメージをどのようにマージしますか?

ベストアンサー1

Embedded Linuxの構築は非常に広範で難しいテーマであり、EE.SEまたはUnix / Linux.SEサイトに適しているかどうかはわかりません。

あなたの問題を解決できるいくつかの本はここにあります。

最初からLinux(LFS)
http://www.linuxfromscratch.org/
「人気のあるLinux-From-Scratch-HOWTOから派生したこの本は、必要なソフトウェアソースのみを使用してインストールされたLinuxディストリビューションから最初から独自のLinuxシステムを作成するプロセスについて説明しています。」

この本はLinux文書化プロジェクトの一部です。
https://www.tldp.org/guides.html

EE.SEに関する以前の質問では、組み込みシステムについて自分で学んでいるように見えるので、この記事を読むことをお勧めします。 Linux from Scratchは、同じPC用にPC上にLinuxディストリビューションを構築すると想定しています。これは、PC以外のシステムのクロスコンパイル問題とは別のものです。

その他の推奨読書資料(上記のTLDPガイドリンクにもあります):

  • Bash初心者ガイド
  • Linuxについて - 実用ガイド
  • GNU/Linux コマンドラインツールの概要
  • 高度なバッシュスクリプトガイド
  • Linuxシステム管理者ガイド
  • デバイスドライバの作成を開始する場合のLinuxカーネルモジュールプログラミングガイド
  • カスタムLinux:移行ガイド - LinuxPPCをカスタムSBCに移行する

また、Embedded Linux Wikiをチェックしてみてください。https://elinux.org/Main_Page

既存のサポートが多いRaspberry PiやBeagleboneなど、より一般的にサポートされている組み込みターゲットシステムから始めることを検討できます。まず、PCに最新のディストリビューションを構築してから、組み込みターゲットシステムで実行する最新のディストリビューションを構築すると、プロジェクトが成功する可能性が高くなります。本質的に同じ質問ですが、より多くの人がRaspian(Debian Stretch)の構築に関する具体的な質問に役立ち、Ingeninc SoCについて具体的に推測したい人は少なくなります。たとえば、RaspberryPi.SEで次の質問を参照してください。https://raspberrypi.stackexchange.com/questions/3196/building-kernel-image-img-include-ramdisk

ルートファイルシステムがカーネルイメージから分離されたのはなぜですか?

Linuxはこのように設計されています。カーネルイメージは、カーネル空間で(起動時に特別な権限を使用して)実行される実行コードであり、ルートファイルシステムはそのデータです。ブートメディアが特定のターゲットシステム用に構築されていない場合、2つのメディアを組み合わせることは意味がありません。

ファイルシステムの作成でbusyboxはどのような役割を果たしますか?

まったく。 Busyboxは、最も一般的に使用されている複数のUnixユーティリティをシェル実行可能ファイルに結合します。

多数の小さなスタンドアロンユーティリティを好む従来のUnixとは異なり、Busyboxのアプローチは、最も一般的に使用されているいくつかのユーティリティをシェル組み込みにバンドルしています。 Busyboxは非常にコンパクトで便利なパッケージに多くの便利なユーティリティを提供するので、ターゲットシステムのルートファイルシステムに含めるのに最適です。

「Linux from Scratch」ガイドは、Busyboxではなく伝統的なアプローチに従います。ターゲットシステムにBusyboxが含まれていることを心配するのではなく、まずプロセスを進めることをお勧めします。

Linuxイメージがルートファイルシステムなしでコンパイルされている場合、ドライバがルートファイルシステムの/ sysディレクトリにあるように2つのイメージをどのようにマージできますか?

デバイスドライバは、カーネルイメージの一部として構築された、または起動プロセス中に選択的にロードできる別々のロード可能なカーネルモジュールです。

「ファイル」という用語は、通常、ハードドライブやUSBスティックなどの不揮発性記憶装置に格納されているビットストリームを意味しますが、「ファイル」とは、名前または一部の情報を含む一時データビット文字列を指すこともあります。他のタイプ。扱う。 /proc、/sys、および/devには、カーネルによって生成され、ルートファイルシステムの空の/proc /sysおよび/devプレースホルダの上にインストールされる特別で動的に生成されたファイルがあります。

おすすめ記事