
MBR 기본 파티션이 확장 파티션 앞에 와야 한다는 (Win NT) 규칙이 있습니까?
활성 파티션이 rdisk(0)에 있습니다.
4/5 파티션이 있는 보조 드라이브가 있습니다(계산 방법에 따라 다름). parted는 다음을 보여줍니다.
기본 1개 확장 2개, 논리 3개 포함 기본 4개 기본 5개
boot.ini를 사용하여 논리 파티션을 부팅하려면,
multi(0)disk(0)rdisk(1)partition(4)\WINDOWS="14" /noexecute=optin /fastdetect
parted는 5개의 파티션을 모두 나열합니다. NTLDR은 컨테이너 파티션을 계산하지 않고 기본 파티션을 열거한 후 논리 파티션을 열거하는 것으로 알려져 있으므로 논리 파티션은 (4)입니다.
지금까지 다음 두 개의 기본 파티션에서 HAL.DLL을 로드할 수 없었습니다.
multi(0)disk(0)rdisk(1)partition(2)\WINDOWS="12" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(1)partition(3)\WINDOWS="13" /noexecute=optin /fastdetect
이것이 NTLDR의 알려진 문제입니까? 기본 파티션은 확장 파티션보다 먼저 와야 합니까? (아니면 제가 다른 곳에서 뭔가 잘못한 것일 수도 있습니다.)
답변1
고려할 수 있는 몇 가지 문제/요인이 있습니다.
1. 1024 실린더 문제.
부트스트랩 프로세스 동안 Windows NT 4.0은 INT13 BIOS 기능을 사용하여 드라이브에 액세스합니다. INT13 기능의 최대 '범위'는 256개 헤드, 1024개 실린더, 63개 섹터입니다. 이는 약 7.8GB(섹터당 512바이트)입니다.
따라서 전체시스템 파티션1024개의 실린더 아래에 있어야 합니다.
시스템 파티션은 초기 시스템 시작에 필요한 파일이 포함된 파티션으로 정의됩니다. Windows NT의 경우 파일은 NtDetect.com, NTLDR, Boot.ini이며 경우에 따라 Ntbootdd.sys입니다.
2. Boot.ini 및 파티션 번호.
pri - 확장 - pri 파티션 순서가 문제인지 100% 확신할 수는 없습니다. 당시에는 이것이 흔치 않은 일이었고 문제가 되더라도 조금도 놀라지 않을 것이라는 점은 알고 있습니다. 그래서 나는 그것을 확실히 피할 것입니다. IOW, 문제를 방지하려면 확장하기 전에 기본 파티션을 배치하세요.
boot.ini가 파티션을 계산하는 방법을 이미 알고 계시겠지만, 어쨌든 읽고 읽지 않은 사람들을 위해:
- 파티션 번호는 0이 아닌 1부터 시작하여 할당됩니다.
- 기본 파티션에는 먼저 번호가 할당됩니다.
- 논리 파티션에는 다음 번호가 할당됩니다.
- 확장 파티션에는 번호가 전혀 할당되지 않습니다.
기본 파티션의 경우 파티션 테이블의 실제 파티션 순서를 고려해야 합니다. 파티션 레이아웃 순서는 기본 파티션 테이블의 파티션 순서와 다를 수 있습니다. 따라서 3개의 기본 파티션을 고려하십시오.
파티션 a - 파티션 b - 파티션 c
파티션 테이블은 다음과 같습니다.
Partition b
Partition c
Partition a
그리고 Partition a
'시스템 파티션'인 경우 boot.ini 항목은 드라이브의 파티션 위치에 따라 예상되는 파티션(1)이 아닌 파티션(3)을 가리켜야 할 수도 있습니다.
그 당시에는 파티션 테이블 항목을 드라이브에 나타나는 순서대로 정렬하는 도구가 있었습니다.