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
sysfs
install to/sys
;はどこから来て、sysfs
名前が違うのですか?- 例を見てみ
/dev
ましたが、マウントするディレクトリをどうやって知ることができますか?
答え1
このinitramfsの例がアンマウントされた理由は何であり、
proc
移動するsys
必要がありますか?switch_root
これマニュアルページあなたは文書を読んだルートディレクトリの切り替え提供:ユーティリティLinux。言うように、このコマンドはいくつかの仮想ファイルシステムを新しいルートディレクトリに移動します。ただし、提供したスクリプトではシェルボーン #!/bin/busybox sh
、これは次のことを意味します。忙しい箱。 BusyBoxはそれ自体を提供します。ルートディレクトリの切り替え、これはこれらのファイルシステムを移動しません。 BusyBox の目的は、複数のパッケージを 1 つにまとめることであるため、このスクリプトは BusyBox バージョンのswitch_root
.
sysfs
install 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 sysfs
sysfs 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