GRUB2のメニュー出力を見つける方法

GRUB2のメニュー出力を見つける方法

私はUbuntu Server 12.04を実行しているリモートコンピュータを更新しました。 SSH経由でのみアクセスでき、今すぐ再起動が必要です。新しいカーネルがインストールされているようです。非常に特定のカーネルから起動する必要があります。それ以外の場合は動作が中断されます。 SSHを介して接続しているので、コマンドラインから次の再起動時にGRUB2が何をすべきかを確認する方法はありますか?

主に次の点を確認する必要があります。

  1. Previous Linux Versionsマシンは正しいカーネルから起動します(「サブメニュー」に移動した可能性があります)。
  2. GRUB_TIMEOUTGRUB2メニューはタイムアウト要求を「従順」します(場合によっては、で指定されたパラメータにもかかわらず、システムがGRUB2ブートメニューで停止することがわかりました/etc/default/grub)。

もしそうなら、次の再起動時にGRUB2が何をすべきかを「シミュレート」または診断する方法はありますか? 「などの一部の小切カーネルyaddayaddayaddaを起動し、yadda秒のタイムアウトを有効にします。

可能性が低いことはわかりますが、診断ツールのようなものがあるかもしれません(コマンドラインである必要があります...接続されているコンピュータにX-Windowsもありません)。

よろしくお願いします!

ベストアンサー1

私が知っている限り、実際にエミュレートする唯一の方法は、ディスクを仮想マシンに渡すことです。

私はしばしばデスクトップとネットブック用のカーネルだけでなく、12のLinux Live CDとブートオプションmemtest、DOS、Windowsなどを含むGRUB2 USBスティックを使ってこれを行います。

設定で何かを変更した場合(たとえば、他のLive CD ISOの追加など)、KVMセッションでUSBスティックを起動して起動するかどうかをテストできます。

残念ながら、システムが実際に起動してディスクに書き込む場合、このソリューションは致命的です!ファイルシステムはホストがまだ使用しているので、繁栄し、ゲストもファイルシステムの修復と使用を開始します。

したがって、安全に使用するには、仮想マシンが読み取り専用モードで使用されていることを確認する必要があります。これを達成する最も安全なオプションは、読み取り専用ループデバイスを使用することです。

#losstup --読み取り専用 --find --show /dev/sda
/dev/loop42
#Sync
# qemu-kvm -disk file=/dev/loop42、読み取り専用

GRUB自体は書き込み操作を実行する必要がないため、何が起こるのかを正確に確認する必要があります。 /boot の最近のファイルの変更は、まだディスクではないメモリにのみ存在できるため、ディスクが同期していることを確認してください。 /bootをアンマウントできる場合は、これが最善の選択になります。

コマンドラインの質問については、SSHを介してXを実行できることに注意してください(非常に遅いですが)。 KVMはVNC、シリアルコンソール、その他のリモート機能も提供します。

サーバーで仮想マシンを実行できない場合(たとえば、仮想サーバーなど)、ネットワークブロックデバイス(NBD)を使用して、ネットワーク経由で読み取り専用モードまたはコピーモードでサーバー仮想マシンを実行できます。 -書き込みモード。サーバーはNBDをサポートする必要もなく、サーバーデーモンを実行するだけです。ただし、クライアントはカーネルでNBDをサポートする必要があります。

もちろん、 grub.cfg ファイルだけを読んで理解することができれば、エミュレーション全体の努力は過度に見えます。残念ながら、自動生成されたコンテンツは不要なスタイルのために読み取れなくなる可能性があります。

おすすめ記事