本文へ移動
TURNKEYGNU / LINUX
アプリドキュメントブログスクリーンショットGitHubTurnKey Hub
文日本語
EnglishEspañol中文日本語PortuguêsDeutsch
ふりがな/方法:ライブCD / ISOまたは代替Linuxシステムを介して壊れたシステムにChroot

ドキュメント

方法:ライブCD / ISOまたは代替Linuxシステムを介して壊れたシステムにChroot

時々、壊れた/unbootable TurnKeyサーバーを救う必要があるかもしれません。 ハードウェアの故障が起きているか、それとも何かを誤って壊れているか、壊れたバグ修正をインストールしたのか?

これらの問題は、機能(Linux)システムから壊れたシステムに「chrooting」で固定することができ、問題の解決に必要な手順を講じます(grubを再インストールします。 カーネルを再インストールし、initramfs を再構築するなど)。 明らかに壊れたシステムを修正する手順は、実際に壊れたシステムに依存します。 わからない場合は、新しいスレッドを新しいスレッドで起動するのが最善でしょう。 フォーラム (新しいスレッドを開始するには、無料のウェブサイトのユーザーアカウントが必要です)ので、問題の診断をお手伝いします。

このドキュメントでは、chroot を入力すると、特定の問題の解決方法の詳細に進むまで、私はちょうどアドバイスします(ただし、もし/私は取得するとき おそらく、私は、最もよくある問題のいくつかのためにドキュメントページを書いていますか?!)。

注意:: このガイドでは、rootユーザアカウントでログインしていると仮定します。もしそうでなければ、chroot以外のコマンドは'sudo'で前向きにする必要があるかもしれません。 sudo で chroot を入力すると、chroot 内では一度は必要とされないはずです。

まずは、少し背景を上回って。もし、もし、そうなら、まっすぐにジャンプしてみたい。 chroot の設定お気軽にお問い合わせ下さい。

"chroot" とは

ウィキペディアによると、 chroot の:

現在の実行プロセスとその子のルートディレクトリを変更します。 そのような環境で実行されるプログラムは、指定されたディレクトリツリーの外に名前(そしてそれ故に通常アクセスできません)ファイルの名前をつけません。

Linux ユーザとして、遭遇するchroot の 2 種類があります。"標準" chroot を呼び出すと、"chroot jail" も表示されます。

chroot の目的は、ディレクトリツリーの特定の部分内のユーザまたはプロセスをロックする。例えば プログラムは、ファイルシステムの残りの部分にアクセスしないように、独自のディレクトリ(たとえば、postfix は、このように設定されます)に "chrooted" されるかもしれません。 または、限られたユーザが、ホームディレクトリに "chrooted" である可能性があるため、SFTP を使うことができますが、ファイルシステム全体を参照することはできません。

起動できないシステムを調査し、修理するために「標準」のchrootを使用することができます。また、新しいLinuxシステムを構築するのに一般的に使用されています。 例えば、TurnKey は "標準" chroot を使用します (on) 寸法: TKLDev) TurnKey アプライアンス をビルドします。 これは、ここでドキュメントするchrootのソートです。

chroot の設定

準備方法

最初に行うことは、システムが壊れたシステムからアクセス可能であることを確認することです。 ベアメタルインストールやVMの場合、これはライブCD / USB / ISOから起動するのが最も簡単な方法です。 一般的なルールとして、壊れたシステムが何であるかと同じOSを使用するのが最善です。 TurnKeyの場合、あなたは使用することができます コアコア (またはその他のサーバー; コアは最小限です) 同じメジャーバージョンの。例えば、v15.0コアは、v15.x アプライアンスを修正するために使用するのが良いです。 オプションでない場合、Debian Liveシステムも良いオプションです。 ケースのシナリオを心配すると、マッチングバージョンのTurnKey(またはDebian)が優先されているにもかかわらず、比較的最近のLinuxのdistroで逃げることができます。

どんなことでも NOT の 壊れたシステムの上にインストール! 回復不可能になります!

ディスク(物理または仮想)を別の(動作)マシン(TurnKey/Debian/etc を上回る)に移動することもできます。 必要なのも本質的にAWSサーバーのために(つまり、壊れたシステムから一次ボリュームを分離し、作業システムに再添付する)。

マウントする正しいボリュームを見つける

作業システムに分割した主体積を取り付けた後、次のステップをマウントします。 マウントするには、きれいなマウント位置を持っていることを確実にする必要があります。また、マウントする必要があるディスク/ボリューム/パーティションを動作させる必要があります。

きれいなマウント位置が使えるようにする簡単な方法が1つあります。

mkdir /rescue

正しいドライブ/ボリューム/パーティション(s)が少しトリッキーであることができることを確認するが、使用できるツールは fdisk です。 添付したすべてのボリュームを表示するには、次のコマンドを実行します。

fdisk -l

現在、AWSサーバで出力している。/dev/xvdf,として、デフォルトのルートボリューム(つまり、別のサーバーのルートボリューム)を/dev/xvdf,として付けた二次ドライブ(別のサーバーのルートボリューム)があります。 作業サーバーのルートボリュームは、/dev/xvda. です。(AWS にいると同じでしょう) あなたのために異なるかもしれません。ここでは、フル出力です。

root@core ~# fdisk -l
Disk /dev/xvda: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 6183BC26-31B1-41F2-9AB9-319B7C4A85B0

Device     Start      End  Sectors Size Type
/dev/xvda1  2048     6143     4096   2M BIOS boot
/dev/xvda2  6144 20969471 20963328  10G Linux filesystem

Disk /dev/xvdf: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 0029AB38-4BE5-4009-B163-9A7B4F597FE4

Device     Start      End  Sectors Size Type
/dev/xvdf1  2048     6143     4096   2M BIOS boot
/dev/xvdf2  6144 20969471 20963328  10G Linux filesystem

どのボリュームが1つであるのかわからない場合は、既にどのボリュームがマウントされているかを確認してください。 このようにしてください。

 mount | grep ^/dev

つまり、私のケースで/dev.から始まるマウント出力からすべての行をチェックします。これは私が既に知っているものを確認します、私が既にマウントしたボームは/dev/xvda:です

root@core ~# mount | grep ^/dev
/dev/xvda2 on / type ext4 (rw,relatime,data=ordered)
/dev/xvda2 on /tmp type ext4 (rw,relatime,data=ordered)
/dev/xvda2 on /var/cache/tklbam type ext4 (rw,relatime,data=ordered)

chroot に準備ができた壊れたシステムを取付けて下さい

そこで、どのパーティションをマウントする必要があるかを調べた。それはかなり簡単です。私の場合、マウントする必要があるパーティションは/dev/xvdf2です(つまり、マウントする必要がある。 上記で/dev/xvf).の2番目のパーティションは、fdiskから出力されたとき、/dev/xvdf1が「BIOS boot」と/dev/xvdf2が「Linux filesystem」になっていることがわかります。 このように簡単にマウントするには:

mount /dev/xvdf2 /rescue

/rescue (つまり、ls /rescue), でチェックすると、次のようなものが表示されます。

root@core ~# ls -l /rescue
total 92
drwxr-xr-x   2 root root  4096 Apr 16 02:49 bin
drwxr-xr-x   3 root root  4096 Apr 16 02:50 boot
drwxr-xr-x   5 root root  4096 Oct  3  2018 dev
drwxr-xr-x 100 root root  4096 Apr 16 02:50 etc
drwxr-xr-x   3 root root  4096 Oct  3  2018 home
lrwxrwxrwx   1 root root    29 Oct  3  2018 initrd.img -> boot/initrd.img-4.9.0-8-amd64
lrwxrwxrwx   1 root root    29 Oct  3  2018 initrd.img.old -> boot/initrd.img-4.9.0-8-amd64
drwxr-xr-x  18 root root  4096 Oct  3  2018 lib
drwxr-xr-x   2 root root  4096 Mar 11  2018 lib64
drwx------   2 root root 16384 Oct  3  2018 lost+found
drwxr-xr-x   2 root root  4096 Mar 11  2018 media
drwxr-xr-x   4 root root  4096 Apr 16 02:49 mnt
drwxr-xr-x   2 root root  4096 Mar 11  2018 opt
drwxr-xr-x   2 root root  4096 Feb 23  2018 proc
drwx------   5 root root  4096 Oct  3  2018 root
drwxr-xr-x  12 root root  4096 Oct  3  2018 run
drwxr-xr-x   2 root root  4096 Apr 16 02:49 sbin
drwxr-xr-x   2 root root  4096 Mar 11  2018 srv
drwxr-xr-x   2 root root  4096 Feb 12  2017 sys
drwxrwxrwt   7 root root  4096 Apr 16 02:51 tmp
drwxr-xr-x  10 root root  4096 Mar 11  2018 usr
drwxr-xr-x  13 root root  4096 Oct  3  2018 var
lrwxrwxrwx   1 root root    26 Oct  3  2018 vmlinuz -> boot/vmlinuz-4.9.0-8-amd64
lrwxrwxrwx   1 root root    26 Oct  3  2018 vmlinuz.old -> boot/vmlinuz-4.9.0-8-amd64

明らかに日付は異なりますが、それ以外の場合は、システムが期待通りにマウントされていることを示しています。 TurnKeyのすべての現在のビルドには、/bootパーティションが含まれているが、一部の古いリリースでは、インストールがLVMを使用している場合は、/bootパーティションを別々にマウントする必要があります。 その場合、メインOSがマウントされた後、ブートディレクトリをマウントします。 このように何か(スーツに合わせるのは簡単です):

mount /dev/sdXN /rescue/boot

/dev/sdXN がブート情報を取り除いたパーティションです。

しかし、もっと待って...!メインOSがマウントされたら、chrootが正しく機能するように、ホストからいくつかの特別なディレクトリをマウントする必要があります。 主にこれらは/dev, /procと/sys. /dev/ptsも実装価値があります。 経験の中で、取り付けなしで逃げることができますが、誤りがよくなりますので、騒音を抑えるのは、取り付ける価値があります。

mount -t proc proc /rescue/proc
mount -t sysfs sys /rescue/sys
mount -o bind /dev /rescue/dev
mount -t devpts pts /rescue/dev/pts

チェルートイン

単に chroot を chroot に chroot する という 必要が あります。 このようにして います:

chroot /rescue

こんな感じで簡単! :)

システムの修正に必要なものは何でも行います。 満足したら(または単にテストの準備が整った)、このようにchrootを終了できます。

exit

後方を拭き取る

壊れたドライブを取除くためにサーバーを停止する必要がある場合は、クリーンアップは必要ありません。 コンポーネントは、シャットダウンプロセスの一部として自動アンマウントされるべきです。 サーバーを停止する必要がない場合、再起動は、chroot をクリーンアップするための最も簡単な方法です。 しかし、使用しているサーバーを停止しない場合、または何らかの理由でchrootの設定を解除したい場合は、chrootを終了した後、chrootを終了した後、chrootを終了したら、chrootを退出する必要があります。 上記のコマンドのバックトラック。 マウントではなくumountを使用し、マウントされた逆の順番にそれらをアンマウントします。 すなわち:

umount /rescue/dev/pts
umount /rescue/dev
umount /rescue/sys
umount /rescue/proc

別のブートパーティションをマウントすると、その次のアンマウント。 私は「umount /rescue/boot'.」のその後、最後に、メインボリューム:

umount /rescue
TURNKEYGNU / LINUX

ゼロから始めずに、自分のインフラを管理できます。

TurnKey を見る
概要ドキュメントよくある質問ブログGitHub
フリーでオープンソース初期設定から安全すぐに展開可能