initramfsで何をマウントしてアンマウントする必要がありますか?

initramfsで何をマウントしてアンマウントする必要がありますか?

Gentoo Wikiでは、次の簡単なinitramfsの例を見つけました。

#!/bin/busybox sh

# Mount the /proc and /sys filesystems.
mount -t proc none /proc
mount -t sysfs none /sys

# Do your stuff here.
echo "This script just mounts and boots the rootfs, nothing else!"

# Mount the root filesystem.
mount -o ro /dev/sda1 /mnt/root

# Clean up.
umount /proc
umount /sys

# Boot the real thing.
exec switch_root /mnt/root /sbin/init

proc/procにインストールされsysfsます/sys。最後に、以前にswitch_root削除します。しかし、man switch_root私が読んだ後は次のようになります。

switch_root moves already mounted /proc, /dev, /sys and /run to newroot and makes newroot the new root filesystem and starts init process

  • このinitramfsの例がアンマウントされた理由は何であり、proc移動するsys必要がありますか?switch_root
  • sysfsinstall to /sys;はどこから来て、sysfs名前が違うのですか?
  • 例を見てみ/devましたが、マウントするディレクトリをどうやって知ることができますか?

ベストアンサー1

このinitramfsの例がアンマウントされた理由は何であり、proc移動するsys必要がありますか?switch_root

これマニュアルページあなたは文書を読んだルートディレクトリの切り替え提供:ユーティリティLinux。言うように、このコマンドはいくつかの仮想ファイルシステムを新しいルートディレクトリに移動します。ただし、提供したスクリプトではシェルボーン #!/bin/busybox sh、これは次のことを意味します。忙しい箱。 BusyBoxはそれ自体を提供します。ルートディレクトリの切り替え、これはこれらのファイルシステムを移動しません。 BusyBox の目的は、複数のパッケージを 1 つにまとめることであるため、このスクリプトは BusyBox バージョンのswitch_root.

sysfsinstall to /sys;はどこから来て、sysfs名前が違うのですか?

これこのスクリプトのコマンドは以下を使用します。mount -t [type] [device] [dir]:

  • cat /proc/filesystemsリスト[type]
  • cat /proc/filesystemsファイルシステムが次のようにリストされてnodevいる場合仮想ファイルシステム[device]任意です(通常none)。
  • [dir]マウントポイントです。

ファイルシステムの現在のマウントポイントを表示するには、find file systemを実行してmount使用します。私のシステムgrepでは。mount | grep sysfssysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)

例を見てみ/devましたが、マウントするディレクトリをどうやって知ることができますか?

どの仮想ファイルシステムをマウントする必要があるのか​​を知ることはできませんが、Gentooの例を信頼しています。 initramfsでやるべきことがあれば(おそらくそうするでしょう)、次のことをお勧めします。

mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t devtmpfs devtmpfs /dev
mkdir /dev/pts
mount -t devpts devpts /dev/pts

おすすめ記事