chroot を使用していない場合、/ の inode は常に 2 になります。
stat -c %i /
また
ls -id /
興味深いですが、chroot ディレクトリのパスを見つけてみましょう。stat
/ がどのデバイスにあるかを尋ねます:
stat -c %04D /
最初のバイトはデバイスのメジャーで、残りのバイトはマイナーです。たとえば、0802 はメジャー 8、マイナー 1 を意味します。/dev をチェックインすると、このデバイスが /dev/sda2 であることがわかります。root の場合は、対応するデバイスを chroot で直接作成できます。
mknode /tmp/root_dev b 8 1
それでは、chroot に関連付けられた inode を見つけてみましょう。debugfs では、inode 番号を使用してファイルの内容を一覧表示できます。たとえば、923960 がls -id /
返されます。
sudo debugfs /tmp/root_dev -R 'ls <923960>'
923960 (12) . 915821 (32) .. 5636100 (12) var
5636319 (12) lib 5636322 (12) usr 5636345 (12) tmp
5636346 (12) sys 5636347 (12) sbin 5636348 (12) run
5636349 (12) root 5636350 (12) proc 5636351 (12) mnt
5636352 (12) home 5636353 (12) dev 5636354 (12) boot
5636355 (12) bin 5636356 (12) etc 5638152 (16) selinux
5769366 (12) srv 5769367 (12) opt 5769375 (3832) media
興味深い情報は、..
エントリの inode: 915821 です。その内容を尋ねることができます。
sudo debugfs /tmp/root_dev -R 'ls <915821>'
915821 (12) . 2 (12) .. 923960 (20) debian-jail
923961 (4052) other-jail
と呼ばれるディレクトリdebian-jail
にはinode 923960があります。したがって、私のchrootディレクトリの最後のコンポーネントはdebian-jail
. 親ディレクトリ (inode 2) を見てみましょう:
sudo debugfs /tmp/root_dev -R 'ls <2>'
2 (12) . 2 (12) .. 11 (20) lost+found 1046529 (12) home
130817 (12) etc 784897 (16) media 3603 (20) initrd.img
261633 (12) var 654081 (12) usr 392449 (12) sys 392450 (12) lib
784898 (12) root 915715 (12) sbin 1046530 (12) tmp
1046531 (12) bin 784899 (12) dev 392451 (12) mnt
915716 (12) run 12 (12) proc 1046532 (12) boot 13 (16) lib64
784945 (12) srv 915821 (12) opt 3604 (3796) vmlinuz
呼び出されたディレクトリopt
には inode 915821 があり、inode 2 はファイルシステムのルートです。したがって、私の chroot ディレクトリは/opt/debian-jail
. 確かに、/dev/sda1
別のファイルシステムにマウントされている可能性があります。それを確認する必要があります(lsofを使用するか、情報を直接選択します/proc
)。