최근에 GRUB ntldr
모듈을 우연히 발견했습니다 .
분명히 사용할 수있는 것 중 하나는 chainloader
아래 예와 같이 NT> = 6.0 버전의 Windows를 부팅 하는 대안 입니다. (Windows 파티션의 볼륨 부팅 레코드가 손상된 경우 매우 편리합니다.)
menuentry "Windows 7 (bootmgr on /dev/sda1)" --class windows --class os {
insmod part_msdos
insmod ntfs
insmod ntldr
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 1EA0019AA0017A13
ntldr ($root)/bootmgr
}
이 부팅 지시문을 사용하는 방법에 대한 자세한 내용은 어디서 볼 수 있습니까? HTML 버전 의 GNU GRUB 매뉴얼을 보았을 때 목록에 표시되지 않았습니다 .
ckhan의 답변에 회신
대단히 감사합니다! GRUB ntldr
명령 / 모듈 에 대해 더 배우기 위해 소스 코드를 파헤쳐 봐야겠다고 결정했습니다 . 하지만 당신은 나보다 훨씬 더 나은 일을 했어요.
코드를 작성한 사람이 어떤 디자인 토론을했는지 확인하기 위해 이메일 아카이브를 살펴본 적이 없었습니다. 그 방법은 앞으로 매우 도움이 될 것 같습니다. 언급 해 주셔서 감사합니다.
GRUB ntldr
지원 에 대한 나의 생각
- 구별의 의미가 확실
ntldr
하지는 않지만 명령이 아닌 모듈입니다. 또는 원하는 경우 동적으로로드 된 명령 일 수 있습니다. 소스 코드 링크를
따라 152 ( ) 및 159 ( ) 행을 보면로드 할 코드를 볼 수 있습니다. ... GRUB은 분명히 " 명령 " 이라고 생각할 수있는 많은 기능을 모듈로 구현합니다. 내가 아는 사용법의 유일한 차이점은 모듈을 사용하기 전에 명령과 함께로드되었는지 확인해야한다는 것 입니다. 따로 : 나는 GRUB이 왜 지원하지 않는지 항상 궁금했다 . 명령이 존재하지만 모듈입니다. 를 반환 하면GRUB_MOD_INIT
GRUB_MOD_FINI
insmod ntldr
reboot
reboot
unknown command
insmod reboot
GRUB이reboot
명령 을 "기억"할 수 있도록합니다 . 따로
: 언제 그리고 왜 GRUB이 모듈을 " 언로드 " 할 수 있을지는 아직 모르겠습니다. " 쓰레기 수거 " 와 비슷한 결과 일 수 있습니다 . 모듈을로드 한 후에는 시스템 전원을 끄고 재부팅 한 후에도 지속되는 것으로 나타났습니다. 물론, 당신은 그것에 의존 할 수는 없지만 실제로 실제로 작동하는 방식 인 것처럼 보입니다. - 그들이 기반
ntldr
으로 하는 것이 흥미 롭습니다chainloader
.chainloader.c
코드를 보지 않았습니다 . 아마 인텔 16 비트 리얼 모드 에서 재배치로드를 수행한다고 생각 합니까?
나는 나는 그들이 구현하지 않았다 오히려 다행ntldr
의 옵션으로chainloader
. 나는 Vladimir에 동의합니다. 커버의 유사점에 관계없이 사용법 구문은 매우 다릅니다. 현재의 접근 방식은 덜 복잡합니다. - GRUB에이 명령을 추가하는 것에 대한 열정이 부족하다는 것을 보는 것도 흥미 롭습니다. GRUB 개발자는 PBR ( Windows Partition Boot Record) 의 손상이 거의 없을 것으로 생각했습니다. 그러나 일반적인 설치 과정에서 수행하는 방법을 설명 할 수 있습니다.
사용자에게 시스템에 Windows가 설치되어 있다고 가정합니다. 그들은 이제 Windows 와 함께 Ubuntu (12.04 LTS)를 설치 합니다. 우분투 설치 도중 어느 시점에서 GRUB을 설치할 위치를 분명히 결정할 수 있습니다. 내가 추측하기 시작할 수없는 이유로, 그들 중 일부는 GRUB을 Windows가 설치된 파티션에 설치하기로 결정합니다.
설치가 완료되고 Ubuntu를 성공적으로 시작할 수 있습니다. 그러나 GRUB 메뉴에서 항목을 선택하여 Windows를 시작하려고하면 Windows가 시작 되지 않습니다 . GRUB으로 Windows를 시작하려고하면 GRUB 메뉴가 다시 표시됩니까?
왜? 글쎄, 그들이 실제로 일어난 일의 Windows 파티션 부분에 GRUB을 설치하기로 결정했을 때 Windows 파티션의 PBR이 GRUB의 PBR로 덮어 쓰여졌습니다. 따라서chainloader +1
Windows 부트 로더를 체인로드하지 않고 GRUB을 다시로드합니다. 이러한 상황에서 사용자가 Windows를 부팅 할 수있는
가장 안전한 빠른 방법 인 IMO 는 GRUB의 new를 사용하는 것ntldr
입니다. 이것이 개발자에게 흥미가 있는지 궁금합니다. 나는 그들이이 시나리오를 예상하지 않았기를 기대합니다.
나는 윈도우 이외의 어떤 부트 로더, 궁금 ntldr
하고 bootmgr
는 GRUB, ntldr
명령을로드 할 수 있는가?