RAMでrootfsを使用してLinuxを起動する方法は?

RAMでrootfsを使用してLinuxを起動する方法は?

rootfsは私のブートローダがSDRAMのアドレスにロードするsquashfsイメージです。そこからrootfsをマウントできるように、カーネルにどのパラメータを渡す必要がありますか? Squashfsのサポートが組み込まれており、すでに次のように動作します。

root=/dev/mtdblock2 rootfstype=squashfs  

フラッシュメモリから起動する場合。

編集:これはカスタムブートローダを使用するMIPSベースの組み込みデバイスです。通常、ブートローダは圧縮カーネルをフラッシュからSDRAMに抽出し、カーネルは/ dev / mtdblock2をrootfsとしてマウントします。イメージをRAMにダウンロードし、フラッシュに書き込むことなく起動できるように、ブートローダを改善しようとしています。

LinuxでファイルシステムイメージをRAMにrootfsとしてマウントする方法を知りません。

ベストアンサー1

initramfsを使いましょう。 (http://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt)

多くのLinuxディストリビューションは、起動プロセス中に主に起動プロセスの最初にユーザースペースプログラムを起動できるようにinitramfs(initrdとは異なります)を使用します。ただし、必要に応じて使用できます。

initrdと比較してinitramfsの利点は、initramfsがtmpfsファイルシステムを使用し、initrdがRAMブロックデバイスを使用することです。ここで最大の違いは、initrdを使用すると、ファイルシステムのすべてのスペースを使用する予定がない場合でも、事前に割り当てる必要があることです。そのため、ファイルシステムスペースを使用しないとメモリが浪費されます。 TmpfsはRAMを使用しますが、現在のファイルシステムで使用されているRAMの量だけを使用するファイルシステムです。したがって、tmpfsからファイルを削除すると、メモリはすぐに解放されます。

現在、通常 initramfs は一時的であり、起動プロセスの初期に一部のプログラムを実行するためにのみ使用されます。これらのプログラムが実行された後、物理ディスク上で実行されている物理ファイルシステムに制御が転送されます。しかし、必ずしもそうする必要はありません。 initramfsが無限に使い果たされるのを防ぐ方法はありません。

おすすめ記事