以下にリソースを示します。
「ルートの変更」または「chrooting」は、ファイルシステムの一部を拡大するための方法です。そのため、たとえば、/path
以前はでアクセスできたものを参照します/mnt/path
。「chroot」という表現の「root」は/
、rootユーザーではなく、rootファイルシステムを指します。(通常、chrootを実行するにはrootユーザー権限が必要です。)
準備
このガイドのすべての手順は、rootユーザーとして実行する必要があります。
ハードディスクは/ dev / sda1にあり、ファイルタイプはext3であると想定しています。ディスクの場所とファイルタイプがわからない場合は、の出力を読んでくださいfdisk -l
。
起動したシステムのアーキテクチャ(32ビットLiveCDなど)と入力したいシステム(ハードドライブへの32ビットインストールなど)が一致していることを確認してください。を使用して起動したアーキテクチャを決定できますuname -m
。
必要なカーネルモジュールがロードされていることを確認してください。
必要に応じてネットワークをセットアップします(たとえば、更新されたパッケージをインストールするため)。
必要に応じて、スワップパーティションを初期化します(例:)swapon /dev/sda3
。
chrootの実行
cd /
mount -t ext3 /dev/sda1 /mnt
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev
あなたの場合は/boot
ディレクトリは異なるパーティション上にある/
、あなたは(あなたがなど、カーネルのアップグレードを実行し、GRUBで作業することがあります場合は、例えば)その上でファイルを操作したい、あなたもそのパーティションをマウントする必要があります。/ dev / sda2にあり、ファイルタイプがext2である場合は、次を実行します。
mount -t ext2 /dev/sda2 /mnt/boot
同様に、別のパーティションにあるがアクセスする必要があるファイルシステムの他の部分(/var
、/usr
)についても同様です。一般に、何かを修正するためにchrootしているとき、/ homeにアクセスする必要はないので、気にする必要はありません。
(chrootした後にファイルシステムをマウントすることもできますが、事前に行う方が賢明です。理由は、それを実行すると、外部/カーネル環境がマウントされたファイルシステムを認識しないためです。 chrootを終了する前にそれらをアンマウントすると、システムはシャットダウン時にそれらをアンマウントすることも知りません。これにより、これらのファイルシステムが損傷する可能性があります。
ネットワークをセットアップし、chrootされたシステムで使用したい場合は、/etc/resolv.conf
ドメイン名を解決できるようにコピーしてください:
cp -L /etc/resolv.conf /mnt/etc/resolv.conf
これで、マウントされたファイルシステムに移動する準備ができました。
chroot /mnt /bin/bash
(これがエラーを返す場合chroot: cannot run command '/bin/bash': Exec format error
、これは通常、1つのアーキテクチャ(x86_32など)でブートし、別のアーキテクチャ(x86_64など)にchrootしようとしていることを示します。 chroot into。)
この時点で、ブートしたカーネルをまだ実行していますが、すべてのパス/path
は以前のものを参照します/mnt/path
。
GRUBで何かを行う場合は、/etc/mtab
ファイルが最新であることを確認する必要があります。
grep -v rootfs /proc/mounts > /etc/mtab
この時点で以下を行うことも役立つ場合があります。
source /etc/profile
export PS1="(chroot) $PS1" # add a reminder to your prompt
汚い仕事をする
この時点で、必要なトラブルシューティングを実行できます。
- レジントールGRUBをディスクのMBRに
- 忘れたパスワードをリセットする
- カーネルのアップグレード(またはダウングレード)を実行します
- initramdiskを再構築します
- / etc / fstabを修正します
- パッケージマネージャーを使用してパッケージを再インストールする
- なんでも
清掃
終了したら、実行中のプログラムがすべて停止していることを確認します。次に、chrootを終了します。
exit
マウントしたすべてのパーティションをアンマウントします。
umount /mnt/boot # if you mounted this or any other separate partitions
umount /mnt/{proc,sys,dev}
最後に、ハードドライブをアンマウントします。
umount /mnt
/ mnt(または他のパーティション)がビジーであるというエラーが表示された場合、これは次の2つのいずれかを意味します。
後者の場合、最初に問題のマウントポイントをアンマウントします。現在のすべてのマウントポイントのリマインダーを取得するにmount
は、パラメーターなしで実行します。
最後に:
reboot
chroot.sh
使用するすべてのシステムのルートに呼び出されるスクリプトを残す傾向があり、その内容はほぼ上記と一致します。LiveCDなどからそのシステムにchrootする必要があるときは、ルートファイルシステムをマウントしてchrootスクリプトを実行するだけです。適切なコマンドを探し回る必要はありません。