私が読んだ文書忙しい箱目的は、小さなファイルサイズを活用して起動可能なCDを作成することです。
文書には次の内容が記載されています。
To create a working system, just add /dev, /etc, and a Linux kernel.
私はUbuntuやCentOSなどのいくつかのLinuxディストリビューションを使用していましたが、cmdを実行するとfdisk
通常/devで始まる追加のデバイスのリストを返し、ls
/ etcで実行するといくつかのファイルが表示されます。
ブートする前に、BusyBoxに/ devと/ etcをどのように/何を追加するのか混乱しています...ランタイム環境に追加されると思いました。
このように話すとき、/ devと/ etcは異なる観点から認識されますか?それとも、基本的なメカニズムをよく理解しておらず、事前に構築されたディストリビューションを使用するときに間違った視点を作成しますか?
答え1
ドキュメントで言おうとしているのは、これはかなり完全なユーザースペースですが、(組み込みデバイス用のファームウェアをリリースしたい人として)まだ実行する必要があるということです。
Busyboxは実行される環境についていくつかの仮定をしており、その説明はここに文書化されています。
- 何らかの方法で初期起動プロセスを処理します。これには、ブートローダをカーネルに渡すことが含まれます。カーネルはハードウェアに適している必要があり、通常は十分に「音」が必要です。
- Busybox自体は、追加の操作なしで利用可能なデバイスを実行するのに十分ではありません。単にビジボックスをコンパイルしてファイルシステムにダンプし、追加の操作なしでカーネルが起動するとすぐに制御を渡すことはできません。どこかに最初。ファイルシステムに/ devが存在し、デバイスinodeがハードウェアと一致するように満たされていることを確認する必要があります。これを行う正確なメカニズムは、カーネルのバージョンとターゲットとするハードウェア/プラットフォームによって異なり、Linuxカーネルのバージョンが進化するにつれて大幅に変更されており、これを行う方法はいくつかあります。
- 最後に、busyboxが提供する多くの部品(および他の場所で入手する必要がある部品)には一種の構成が必要です。これを管理する方法はあなた次第ですが、要点は、busyboxで実行されている多くのコマンドが/ etcから設定ファイルを読み込み、これらの設定ファイルを入力して維持するメカニズムを提供しない場合、これらのコマンドは機能しません。
おそらく、組み込みデバイスにはsquashfsのようなものを使用する1つのファイルシステムしかありません;その中のすべては読み取り専用です。ただし、要点は、コントロールを引き渡すときにイメージ/インストールプログラムが正しい場所に配置するためにすべての作業を行う必要があることです。