Linuxを実行するシングルボードコンピューター(RaspberryPi、CubieTruckなど)を使用して、プロジェクトのシステムを設計することを考えています。
私の主な要件は、起動したSDカードの複雑さを最小限に抑えることです。私のビジョンは次のようなものです。
/
boot.txt
settings.txt # DHCP /ifconfig data etc.
error.log # optional
OS.tar.gz # the OS Omni-file
Kernel.img # If it can't fit with the Omni-file
OSは、エラーログを除いて、ファイルを変更する必要はありません。
これまでの私の最善の推測は、 easy2boot を使用して実際のISOから起動することですが、レイアウトは十分に些細なものではありません(そしてそれはちょっと逆に思えます)。
目標を達成するのに役立つプロジェクト/ブートオプションはありますか?
更新
私は ループデバイス について知りました。これは私が必要としているもののように見えます-a FSファイル内。
次のようにフォーマットしてマウントすることができました。
losetup /dev/loop0 /tmp/disk.img
mkfs -t ext2 /dev/loop0
losetup -d /dev/loop0
mkdir /tmp/disk-mount
mount /tmp/disk.img /tmp/disk-mount -o loop
touch /tmp/disk-mount/bla
umount /tmp/disk-mount
そのようなデバイスから起動するためのドキュメントはありますか?
ターゲットルートファイルシステムを作成するには、 Buildroot の使用を検討してください。このプロジェクトは、Linuxカーネル構成を活用し、組み込みシステムファイルシステム全体へのワークフローを構築します。
私があなたを正しく理解していれば、カスタムルートファイルシステムを構築するためのツールが必要です。私が使用したツールの1つは http://www.ptxdist.org/software/ptxdist/index_en.html ですが、ブートローダーをRiで実行するように設定するかどうかはわかりません。簡単な作業になります。
また、例で定義したファイルの中には、それらを設定するために何らかの形式のデーモンが必要なものがあり、デーモンはファイルシステム階層のどこかにあるバイナリであることを考慮してください。
だからあなたが言うときThe OS doesn't have to modify its files, except possibly for some error log.
それを変更するアプリケーションは、おそらくrootfsのどこかにあるユーザースペースデーモンです(たとえば、/usr/bin
)。
ループデバイスの使用に関する2番目の(「更新」)質問に続いて:ブートフローに精通している限り、最初に最初のramdisk(initrd)を起動する必要があります-最小ルートFS =メインルートをマウントするのに十分なコンテンツを保持するカーネルイメージに埋め込まれたイメージFSループデバイスとして。メインルートFSをマウントした後、initrdからfull(ループ)に「chroot」マウントされたルートイメージ。