GNU/Linux >> Linux の 問題 >  >> Linux

最小の組み込み Linux ディストリビューション?

夢を見ていると言えます。主な問題は RAM の制限です。

2004 年、Eric Beiderman は 2.5MB の RAM でカーネルを起動することに成功しました。 の機能が削除されました。

ただし、これは x86 での話であり、ARM について話しているのです。そこで、「汎用性の高い」プラットフォーム (最も単純なものの 1 つ) のために、可能な限り最小の ARM カーネルを構築しようとしました。 すべてをオフにしました 探しているもの(USB、WiFi、SPI、I2C)を含む構成可能なオプションを使用して、どれだけ小さくなるかを確認します。さて、ここではカーネルについて言及しているだけで、これには何も含まれていません ユーザー空間コンポーネント。

良いニュース:フラッシュに収まります。結果の zImage は 383204 バイトです。

悪いニュース:256kB の RAM では起動できません:

$ size obj/vmlinux
  text     data     bss     dec     hex filename
734580    51360   14944  800884   c3874 obj/vmlinux

.text セグメントは利用可能な RAM よりも大きいため、カーネルは圧縮を解除できず、ブート用のメモリを割り当てることも、有用なものを実行することもできません。

回避策の 1 つは、システムがサポートしている場合 (つまり、フラッシュから直接命令をフェッチできる場合)、その場で実行サポート (CONFIG_XIP) を使用することです。ただし、これは、カーネルが圧縮されていない状態でフラ​​ッシュに収まる必要があり、734kB> 700kB である必要があることを意味します。また、.data セクションと .bss セクションの合計は 66kB で、他のすべて (つまり、カーネル内で動的に割り当てられたすべてのデータ構造) のために約 190kB が残ります。

それはまさにカーネルです。必要なドライバーやユーザースペースがありません。

そうです、もう少し RAM が必要になります。


IMO、あなたは夢を見ています。特に USB、ネットワーキング、および 802.11/wifi では。あなたにそれができるとは思えませんし、M3 は本当に無理です。

OpenWRT は、私が知っているネットワーク用の最小かつ最も組み込み可能な Linux ディストリビューションの 1 つであり、特に Wifi では 2MB 以下にするのは困難です。

それが本当に必要な場合は、ハイエンドの ARM チップを検討するか、現在ルーターで一般的に使用されている Broadcom または Atheros SoC を使用してください。


プロセッサに MMU はありますか?そうでない場合は、 http://www.uclinux.org/ を参照してください。これにより、言及されているよりもはるかに小さいカーネルサイズが得られるはずです。一部の CortexM3 Atmel チップで動作するため、あなたのチップでも動作する可能性があります。私はそれを使用していないので、これは推測にすぎません.Doh、私はちょうどその質問が更新されているのを見ました-MMUを持っていない場合(おそらく持っていない)、「通常の」カーネルを使用できず、 ucLinux を使用する必要があります。


Linux
  1. 組み込みLinuxでリカバリパーティションを作成しますか?

  2. Linux –異なるLinux / UNIXカーネルは交換可能ですか?

  3. Linux 端末のスクロールバック バッファ サイズを増やす

  1. Linuxカーネルテストのライフサイクル

  2. Linuxデスクトップでカーネルをアップグレードする方法

  3. glibc の代わりに libc を使用して Linux ディストリビューションを構築できますか?

  1. Linux –カーネル:名前空間のサポート?

  2. Linux –カーネルIP転送?

  3. Linux – Linuxの汚染されたカーネル?