Grubはシステムが正常に起動したことをどのように確認しますか?

Grubはシステムが正常に起動したことをどのように確認しますか?

私はEFIパーティションでGrub2を使ってWindowsからLinuxへの自動移行をテストしています。私の目標は、新しいLinuxイメージで起動が失敗した場合に既存のWindowsイメージがロードされるように代替ソリューションを作成することです。 Grubはすぐに利用可能な機能を提供します。https://www.gnu.org/software/grub/manual/legacy/Booting-fallback-systems.html

しかし、Grubがカーネルが正常にロードされたかどうかを正確に確認する方法をより深く理解したいと思います。つまり、ロールバックをどの時点まで実行できるかを知りたいのです。もしそうなら、Grubはどのようにシステムが正常に起動するのかを確認しますか?

たとえば、Grub フォールバックは、新しい Linux イメージで systemd プロセスが開始されることを保証しますか?

ベストアンサー1

リンクされたドキュメントではこれについて説明します。起動したシステムは、起動設定をリセットする役割を果たします。

常識を使うだけです。 Grubがそれを検出する責任がある場合、Grubは存在するか、存在していたか、まだ作成されていないすべてのオペレーティングシステムと通信する方法を知る必要があり、起動に成功しました。これまでに作成されたすべてのオペレーティングシステムを知ることは明らかに不可能であり、まだ作成されていないオペレーティングシステムを知ることも単に不可能であるため、これが機能する方法ではありません。

これはプロポーザルですぐに明確になります。

たとえば、Grub フォールバックは、新しい Linux イメージで systemd プロセスが開始されることを保証しますか?

これが真であれば、systemdを使用しないLinuxディストリビューションを起動できないことを意味します。一部のLinuxディストリビューションはupstartを使用し、一部はOpenRCを使用し、一部はrunitを使用し、一部はminitを使用し、一部はfinitを使用し、一部はsysvinitを使用し、一部はEpochを使用し、 、一部はs6を使用し、一部はinitngを使用し、一部はjinitを使用し、一部はcinitを使用し、一部はsimilinitを使用します。一部はtwsinitを使用し、時には特定のアプリケーションではinitシステムをまったく使用しません。

これらのいずれかを使用してシステムを起動できない場合、またはGrubはこれらすべてについて知っておく必要があります。これはLinux固有です。ほとんどのBSDには独自の初期化システムがあり、ほとんどの商用Unicesには独自の初期化システム(SolarisのSMFなど)があり、Windows、DOS、および他の何百ものオペレーティングシステムがあります。

おすすめ記事