例としてDebianを使用したリモートLinux再インストール

システム管理者の作業を楽にする多くの機能があります。 さまざまなリモートコントロールシステムにより、OSをクリーンでクリーンなサーバーにインストールできますが、今日ではこれはまったく問題ではありません。 2台目のハードドライブが存在する場合でも、OSを再インストールするという問題が一般的なものになります。 したがって、この記事では最も深刻なケースを検討します。サーバーに完全に壊れたハードドライブが1つだけあるようにし、タスクはリモートでOSを再インストールすることです。



驚いたことに、私たちは眉を上げ、愛するOSの柔軟性に戸惑い、袖をまくり、ビジネスに取り掛かりました。







この方法の基本は、SWAPパーティションを使用して一時的なオペレーティングシステムをインストールし、立ち上がったときに主な操作を実行できるという考えに基づいています。 必要なのは、少なくとも420 MBのサイズのスワップだけです(これは、lennyが必要なものすべてを正確にどれだけ処理するかです)。



この記事では、次の前提が使用されています。

-あなたはデビアンを持っている、そしてあなたはデビアンを賭けることを計画している、

-MBRにインストールされたgrubを使用します。



作業の短い計画は次のようになります。



  1. スワップパーティションをext3に変更します。
  2. クリーンOSをインストールします。
  3. 再起動します。
  4. メインセクションで必要な変更を行います。
  5. クリーンOSを一時パーティションからメインパーティションにコピーします。
  6. メインパーティションから起動し、スワップを有効にします。




セクションの準備。





最初に行うことは、このスワップセクションがあることを確認することです。



 # free -m ... Swap: 470 0 470
      
      







あなたが見ることができるように-があり、サイズ(MBで表示)は非常に満足です。 ディスクがどのように壊れているかを調べることは残っています。



 # fdisk -l /dev/sda ... Device Boot Start End Blocks Id System /dev/sda1 * 1 462 3710983+ 83 Linux /dev/sda2 463 522 481950 5 Extended /dev/sda5 463 522 481918+ 82 Linux swap / Solaris
      
      







sda1では現在のOSであり、sda5ではスワップであることがわかります。 混乱することは困難ですが、何でも起こり得ます。



スワップをオフにします。



 # swapoff -a
      
      







オフにしたことを確認するには、同じことを無料で行うことができます。



 # free ... Swap: 0 0 0
      
      







パーティションテーブルを更新します。



 # fdisk /dev/sda Command (m for help): t Partition number (1-5): 5 Hex code (type L to list codes): 83 Changed system type of partition 5 to 83 (Linux) Command (m for help): w The partition table has been altered! WARNING: Re-reading the partition table failed with error 16:    . The kernel still uses the old table. The new table will be used at the next reboot. Syncing disks.
      
      







カーネルには再起動まで変更が表示されないことを慎重に通知されましたが、まだ必要ありません。 今こそ、古い新しいパーティションにファイルシステムを準備するときです。 たとえば、ext3:



 # mke2fs -j /dev/sda5 Writing inode tables: done Creating journal (4096 blocks): done
      
      







セクションをどこかにマウントすると、準備が完了します。



 # mkdir /mnt/temp # mount /dev/sda5 /mnt/temp # df -h      %   /dev/sda1 3,5G 600M 2,8G 18% / ... /dev/sda5 456M 11M 422M 3% /mnt/temp
      
      







「一時的な」OSのインストール。





ここでは、その場所でのみ一時的であることに注意する必要があります。 将来クリーンなシステムを構築するためにすべてのステップを二重に実行しないように、単純にメインセクションにコピーします。



最小限のインストールを行うために優れたツール-debootstrapを使用します。 以下では、サーバー上のインターネットに問題はないと仮定します(それ以外の場合、その後どのようなサーバーになりますか?)。そのため、リポジトリからすべてをポンプで送ります。



 # aptitude install debootstrap ...   debootstrap (1.0.10lenny1) ...
      
      







このユーティリティは、目的のアーキテクチャ、リリース名、インストールディレクトリ、フルミラーへのリンクの4つのパラメーターを渡すだけで十分です。 アーキテクチャは `uname -a`の出力によって決定できます。好みに応じてディストリビューションを選択します。この場合のディレクトリはセクションをマウントした場所です。ミラーへのリンクは次の場所にあります: http : //www.debian.org/mirror/list 。 起動ラインは次のようになります。



 # debootstrap --arch i386 lenny /mnt/temp http://ftp.ru.debian.org/debian/
      
      







Enterキーを押すと、パッケージのダウンロードとインストールのプロセスが開始され、平均的なインターネット接続(約10 Mbps)で約5〜10分かかります。お茶を飲む時間すらありませんでした。 最後に、システムが正常にインストールされたことを示すメッセージが表示されます。



 I: Base system installed successfully.
      
      







これで、最も重要な手順の1つが始まります。新しいシステムを適切に構成する必要があります。 すべてのシステム管理者は、おそらくマシンのリモートコントロールを失うことについて悪夢を抱いていたため、最終的にデータセンターに行かないようにするためにこれをすべて正確に開始しました。 だから、コーヒーのマグカップを脇に置き、集中します。



まず、すべての重要な設定をコピーします。 おそらく、誰もが本来あるべき場所にない非常に重要なファイルを見つけるでしょう。 たとえば、すべての非標準ルートを持つ特定の/etc/rc.routesがあります。 主なことは、何も忘れないことです。 ここにリストを表示するのはまったく無意味なようですが、私にとっては次のようになります。



 # cp /etc/{resolv.conf,hosts,rc.local} /mnt/temp/etc # cp /etc/network/interfaces /mnt/temp/etc/network # cp /etc/your-stuff /mnt/temp/etc
      
      







fstabでは、最も必要なものを記述します-procとルートセクション:



 # cat > /mnt/temp/etc/fstab << "#EOF" > proc /proc proc defaults 0 0 > /dev/sda5 / ext3 errors=remount-ro 0 1 > #EOF
      
      







次に、dev環境をマウントし、一時システムのコアに移動して、すぐにprocをマウントします。



 # mount --bind /dev /mnt/temp/dev # chroot /mnt/temp /bin/bash # mount -t proc proc /proc
      
      







もちろん、パッケージマネージャーが必要です。その構成について個別に話す必要はないと思います。



 # wget http://debian.soar.name/sources.list -O /etc/apt/sources.list # aptitude update
      
      







タイムゾーンを設定します。



 # dpkg-reconfigure tzdata
      
      







また、次のパッケージも必要です。



 # aptitude install locales # dpkg-reconfigure locales # aptitude install console-data # aptitude install ssh # aptitude install sudo
      
      







すぐに、忘れないように、ユーザーを作成してパスワードを割り当てます。そうしないと、後でsshで許可されません。



 # adduser --ingroup users soar # visudo
      
      







次に、ブートローダーを再インストールします。 最初に、新しいドライブにすべてのブートローダーファイルを作成する必要があります。



 # aptitude install grub # grub-install /dev/sda
      
      







次に、新しいセクションから起動するようにICBMを初期化する必要があります。 これを行うには、ユニット内のすべてが同じ場所にあり、ホーンビームコンソールに入り、次のように記述します。



 # grub grub> root (hd0,<TAB> Possible partitions are: Partition num: 0, Filesystem type is ext2fs, partition type 0x83 Partition num: 4, Filesystem type is ext2fs, partition type 0x83
      
      







タブーの一種のオートコンプリートは、どのセクションが自由に使えるかを教えてくれます。 ご覧のとおり、すべてがシステム内の名前よりも1つ少なくなっています。 sda5からのダウンロードを初期化します。



 grub> root (hd0,4) Filesystem type is ext2fs, partition type 0x83 grub> setup (hd0) ... Done. grub> quit
      
      







ブートローダーは必要に応じてインストールされます。 次に、適切なカーネルを選択してインストールします。



 # aptitude search linux-image # aptitude install linux-image-2.6.26-2-686
      
      







インストール中に、「現在のカーネルイメージへのシンボリックリンクを作成しますか?」と尋ねられます。これは肯定で答えます。 また、ブートローダーからのinitrdサポートを必要とするカーネルをインストールしていることを報告し、気が変わったかどうかを明確にします。

「いいえ」と答えると、インストールは終了します。 ブートローダメニューを更新するために残ります:



 # update-grub Found kernel: /boot/vmlinuz-2.6.26-2-686 Updating /boot/grub/menu.lst ... done
      
      







サーキットを離れ、神経を拳で集め、サーバーを最初の再起動に送ります。



 # exit # reboot
      
      







すべてが正しく行われた場合、マシンは一時システムで再起動します。 追加したユーザーとしてsshにログインできます。



システムを1次区画に転送します。





古いセクションをフォーマットしてマウントします。



 # mke2fs -j /dev/sda1 Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done # mkdir /mnt/temp # mount /dev/sda1 /mnt/temp
      
      







ところで、この段階で、ディスクメンテナンスを実行することもできます。たとえば、メインパーティションを再パーティション化し、ファイルシステムをチェックします。



クリーンなOSをメインパーティションにコピーします。



 # cp -a -x / /mnt/temp/
      
      







fstabを更新しています。 今回は、すべてのルールに従ってそれをとかします:



 # cat > /mnt/temp/etc/fstab << "#EOF" > # /etc/fstab: static file system information. > # > # <file system> <mount point> <type> <options> <dump> <pass> > proc /proc proc defaults 0 0 > /dev/sda1 / ext3 defaults,errors=remount-ro 0 0 > #EOF
      
      







もう一度、ホーンビームを更新する必要があります。 今回-すでにメインセクションからダウンロードするには:



 # mount --bind /dev /mnt/temp/dev # chroot /mnt/temp/ /bin/bash # grub-install /dev/sda # grub grub> root (hd0,0) Filesystem type is ext2fs, partition type 0x83 grub> setup (hd0) Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/e2fs_stage1_5" exists... yes Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 17 sectors are embedded. succeeded Running "install /boot/grub/stage1 (hd0) (hd0)1+17 p (hd0,0)/boot/grub/stage2 /boot/grub/menu.lst"... succeeded Done. grub> quit # update-grub Updating /boot/grub/menu.lst ... done
      
      







この場所では、最初のケースとは異なり、menu.lstの更新が拒否され、sda5へのリンクが残っていたことは注目に値します。 これが起こる理由-私はまだ理解していなかったので、このファイルを手動で編集しました:



 # sed -i -e 's/sda5/sda1/g' /boot/grub/menu.lst # sed -i -e 's/(hd0,4)/(hd0,0)/g' /boot/grub/menu.lst
      
      







回線を終了し、2回目の再起動を実行します。



 # exit # reboot
      
      







再起動後、再びネイティブメインセクションにいることを確認できます。



 # df -h      %   /dev/sda1 3,5G 436M 2,9G 13% /
      
      







スワップを作成して有効にすることは残ります。



 # fdisk /dev/sda Command (m for help): t Partition number (1-5): 5 Hex code (type L to list codes): 82 Changed system type of partition 5 to 82 (Linux swap / Solaris) ... The new table will be used at the next reboot. Syncing disks. # cat >> /etc/fstab << "#EOF" > /dev/sda5 none swap sw 0 0 > #EOF # mkswap /dev/sda5 # swapon -a
      
      







すべてが正常であることを確認します。



 # free -m Swap: 470 0 470
      
      







最後に、/ boot / grub / menu.lstを手作業で編集した場合は、スクリプトを実行して再度更新する必要があります。



 # update-grub Updating /boot/grub/menu.lst ... done
      
      







まとめると。





この方法は、システムを再インストールする最も簡単な方法ではありませんが、多くの場合、唯一の方法になります。 さらに、手順全体には約25分かかります。したがって、DCが道路の向こう側にない場合は、いずれにしても、かなりの時間の節約になります。 驚くほど多くの文字が判明しました-私は詳細かつ明確にペイントしようとしましたが、実際には操作は簡単で十分に高速です。



All Articles