궁금하신 점은 특정 시스템을 부팅하는 데 어떤 부트로더가 사용되는지 알아내는 것이 가능합니까? 시스템은 다음과 같이 시작됩니다.애벌레,릴로아니면 다른 부트로더가 있나요?
동일 /sys
하거나 변수가 있어야한다고 생각합니까?/proc
편집하다:
부팅 정보 요약: => Lilo는 /dev/sda의 MBR에 설치됩니다.
sda1:_________________________________________________
File system: Boot sector type: Unknown Boot sector info: Mounting failed: mount: unknown filesystem type ''
/dev/sda
부팅해야 하는 유일한 장치입니다.
사용 가능한 유일한 단일 파티션에 알려진 파일 시스템이 없으면 어떻게 부팅되는지 궁금합니다.
답변1
/sys
이 정보는 아래 또는 아래에서 의미 있는 방식으로 추적되지 않는다고 생각합니다 /proc
. 부팅 후 이 정보에 액세스할 수 있는 유일한 방법은 시스템에 GRUB 또는 Lilo 구성 파일이 있는지 확인하도록 요청하거나 다음과 같은 스크립트를 사용하는 것임을 이해합니다.bootinfoscript
.
예 - 부팅 장치 확인
시스템이 어떤 장치에서 부팅되었는지 알고 있다면 dd
부트로더의 내용을 덤프한 다음 grep
GRUB 또는 LILO를 덤프할 수 있습니다.
다음 명령을 사용하여 GRUB 또는 LILO를 사용하는지 확인할 수 있습니다.
$ sudo dd if=/dev/sda bs=512 count=1 2>&1 | grep GRUB
$ sudo dd if=/dev/sda bs=512 count=1 2>&1 | grep LILO
이 문자열을 반환하는 것은 사용 중인 부트로더입니다.
Binary file (standard input) matches
예 - bootinfoscript 사용
$ sudo ./bootinfoscript --stdout
Boot Info Script 0.61 [1 April 2012]
============================= Boot Info Summary: ===============================
=> Grub2 (v1.99) is installed in the MBR of /dev/sda and looks at sector 1 of
the same hard drive for core.img, but core.img can not be found at this
location.
sda1: __________________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System:
Boot files: /grub2/grub.cfg
...
그러나 여러 부트로더가 공존할 수 있으므로 이러한 방법 중 어느 것도 "결정적"이지는 않지만 적어도 어떤 부트로더가 "사용 중일 수 있는지"에 대한 대략적인 아이디어를 제공합니다.
인용하다
답변2
바라보다이것. 그러나 스크립트는 Bash로 작성되었으므로 임베디드 플랫폼에서 실행해야 하는 경우 수정해야 합니다. 이 스크립트를 테스트한 결과 Ubuntu에서는 GRUB를, Slackware에서는 LILO를 올바르게 인식했습니다.