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를 사용하고, 일부는 simpleinit를 사용합니다. 일부는 twsinit를 사용하고 때로는 특정 애플리케이션의 경우 init 시스템을 전혀 사용하지 않습니다.

이들 중 하나를 사용하여 시스템을 부팅할 수 없거나 Grub이 이들에 대해 모두 알아야 합니다. 이것은 Linux에만 해당됩니다. 대부분의 BSD에는 자체 초기화 시스템이 있고, 대부분의 상용 Unices에는 자체 초기화 시스템(Solaris의 SMF와 같은)이 있으며, Windows, DOS 및 기타 수백 가지 운영 체제도 있습니다.

관련 정보