/sbin/initは実行ファイルですか?

/sbin/initは実行ファイルですか?
# 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/sda1EFIファイルシステムがマウントされているため、どの設定でも機能しないことです。

強く現在行っていることと理由を知るまで、これを試してはいけません。

おすすめ記事