多くのLinuxシステムはinitrd/initramfsでブートし、次に実際のルートファイルシステムをマウントし、そこにchrootして、ブートを続行します。私のinitrdはまだ技術的にマウントされていますが、どうすればそれを取得できますか? initrdを変更してマウント自体を新しいルートにバインドすると、表示されます。しかし、それらの手順を踏まずにアクセスすることは可能ですか? mountをバインドできるinitrdに関連付けられた特定のデバイスファイルはありますか?
なぜこれが欲しいのか...
ルートファイルシステムが、squashfsイメージの上にあるtmpfsのオーバーレイである組み込みシステムがあります。システムで作業したいので、tmpfsを見て、ファイルシステムの変更内容を確認します。ブートを変更しない通常の操作では、tmpfsおよびsquashfsレイヤーのマウントは、システムがオーバーレイルートに切り替わると非表示/失われます。
linux/Documentation/initrd.txtの下のLinuxカーネルドキュメントから:
noinitrd
initrd data is preserved but it is not converted to a RAM disk and
the "normal" root file system is mounted. initrd data can be read
from /dev/initrd. Note that the data in initrd can have any structure
in this case and doesn't necessarily have to be a file system image.
This option is used mainly for debugging.
Note: /dev/initrd is read-only and it can only be used once. As soon
as the last process has closed it, all data is freed and /dev/initrd
can't be opened anymore.
つまり、起動オプションでnoinitrd
を指定すると、pivot_rootが「実際の」ルートに切り替わった後、/initrd
マウントポイントで元のinitrdにアクセスできることになります。おそらく20年前にこれで遊んでみたが、まだうまくいくかどうかわからない。