2013年09月05日

理解が一歩前進。chroot/linux

きょう、archbangを復活させる過程で、またchrootコマンドを
使用することになった。興味のない人には、
もういいよ、の話だろうけど、マルチブートを頻繁にやっている
と、事故も起こりやすい。chrootは、
看過できない重要なポイントで、これを
しっかり理解したいと思っている。

http://wiki.bit-hive.com/north/pg/BIND%A5%AA%A5%D7%A5%B7%A5%E7%A5%F3%A4%C7%A4%CEmount
のサイトに、mountコマンドのオプション、--bind について
「任意のディレクトリ以下を仮想の独自のファイルシステムとしてアタッチすることができます。
mount --bind olddir newdir
olddirはnewdirとなり、まさにシンボリックリンクと同じようになことが実現できます」
という説明がある。

つまり、じぶんが実行したmountは、
こちらの環境の /dev と /proc を仮想の独自ファイルとして
あちらの環境にアタッチ(付与?)した、ってことなんだろう。

それから、chrootして、ネットが「hostnameを解決できず」とかで
pacman -S コマンドが使えなかった。確かに、hostnameは、
こちらの環境とあちらの環境では、違ったはずである。

ま、二つのポイントからでしかないが、chrootの根源は、
こっちの環境をあちらに持っていき、そこにいるがごときに
あっちを改変する、ということになりそうだ。

換言すれば、修正を試みるに当たって、
何から起動するかは、重要な要素のようなのだ。

動作していないあっちの環境(システム)にはあるけれど、
こっちにない機能(平たくいえば、コマンド)は、
chrootしたからって、使えない、ってことではないのか。
あっちへchrootしたからって、生きている
もの(起動したシステム)のようには
振る舞わせられない、ってことのようなのだ。

「そんなこと、常識じゃん」という中級以上の
人は多いだろうけど、でも、初級者にちゃんとわかるように
説明してくれている人はいない。

fedora19のインストールディスクを使って、
chrootし、debian(ubuntu)系のlubuntuに
grub-installコマンドなどが
使えたわけは、linuxなら、ほとんどのディストリ
ビューションでgrub2を使っているからでしかない。
そして、押し入った環境内の/boot/grub/grub.cfgを
読み込んで、grub-mkconfig させられたってこと。

結論的に云えば、修復したい環境と同じか近い環境から
chrootするのがいい、ってことになると思う。

ずーっとこの辺りのことで悶々としていた。どっちのコマンドを
使っていることになるのか、よく解らなかったのだ。
上記のような空想から、今日の修復では、debianを使った。なぜって、
solusosのインストールディスクを探し出すのがたいへんだから。
chroot先のsources.listを見ると、debianのsqueezeだから、
ほぼ同じってことで。

それから、インストールメディアって、live動作上で、
インストールできるもののすべてが、「開いている」わけでも
なさそうだよね。そういうことからすると、込み入ったことを
しようとするには、osインストール済みの別のhddを
つないで、そこからchrootするのがいいのかもしれない、
とも思った。

ちなみに、おもしろいというか、chrootの優柔不断さといってもいい
と思うんだけど、chrootしたら、mountした先のpathで操作する。
たしかに、change root。いる場所があっちになる。
でも、grubのインストール先としては、sdaでなく、sdbだったりもする。
あっちで操作しているのに、こっちから見たときの、
デバイスってことになるね。
なりすまし具合が中途半端ってことじゃないのか!

操作を間違わないためには、
chrootした先で、
# fdisk -l /dev/sdaとか
# fdisk -l /dev/sdbとか
やってみることは、必要な操作だと思う。
あっちの環境としてじぶんが
どう見えているかが判る。



posted by ブログ開設者 at 19:51| Comment(0) | linux | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: