# Mount the root filesystem.
1 .mount -o ro /dev/sda1 /mnt/root
# Boot the real thing.
2 .exec switch_root /mnt/root /sbin/init
これはinitramfsの/ initファイルにあるコードの断片です。パプアニューギニア。ここでは、rootfsが/mnt/rootにマウントされ、次にnewrootとして/mnt/root、ターゲットとして/sbin/initを使用してswitch_rootが実行されます。
最初の行が実行されると、/dev/sda1 の内容が /mnt/root にマウントされます。頑張りました。
sudo mount -o ro /dev/sda1 /mnt/temp
そしてこのようなメッセージを受け取り、
マウント: /mnt/temp: /dev/sda1 が /boot/efi にマウントされます。
だから試してみたら cd /boot/efi
こうなりました。
CD:コマンドが見つかりません
だから./efi
/ bootディレクトリで試してみましたが、次のメッセージが表示されます。
bash: ./efi: ディレクトリです
それから/sbin/initの内容を見ようとしました。
cd /sbin/init
しかし今はこう言います。
bash: cd: /sbin/init: ディレクトリではありません。
混乱しています。 /dev/sda1と/mnt/rootがディレクトリなのに、なぜ突然/sbin/initが実行可能ファイルになったのですか?それもディレクトリではありませんか?
ベストアンサー1
ここでの混乱は、あなたが何をしてswitch_root
いるのか誤解したからです。
マンページから:
NAME
switch_root - switch to another filesystem as the root of the mount tree
SYNOPSIS
switch_root [-hV]
switch_root newroot init [arg...]
DESCRIPTION
switch_root moves already mounted /proc, /dev,
/sys and /run to newroot and makes newroot the new root
filesystem and starts init process.
WARNING: switch_root removes recursively all
files and directories on the current root filesystem.
素人の観点から、これは次のとおりです。目次最初の引数(あなたの場合は/mnt/root
新しいルートファイルシステムになる()になる/
)として指定され、さまざまな仮想ファイルシステムツリーがマウントされます。プログラム2番目の引数で指定された内容はnewとして実行されますinit
。
さらに重要なのは、このガイドラインが間違っているように見え、あなたの場合は/dev/sda1
EFIファイルシステムがマウントされているため、どの設定でも機能しないことです。
私強く現在行っていることと理由を知るまで、これを試してはいけません。