부팅 가능한 파티션과 부팅 불가능한 파티션의 차이점은 무엇입니까? 사용자는 부팅 불가능으로 표시된 파티션에서 시스템을 부팅할 수 없지만 부팅 가능으로 표시된 파티션에서는 시스템을 부팅할 수 있다는 것을 알고 있습니다.
이러한 파티션 플래그 간의 근본적인 차이점을 이해하고 싶습니다.
답변1
반대표를 받았지만... 아마도 누군가가 질문에 대한 답변이 아니라고 생각했기 때문일 것입니다... 제 생각에는@RONI의 답변깃발의 의미를 설명하는 좋은 시작입니다 boot
. (실제로 그가 제공한 것과 유사한 예를 들어 답변을 시작하겠습니다.)
나는 이 질문에 대해 장황하게 이야기할 준비가 되어 있습니다 boot
. 이 시점에서 플래그는 하드 드라이브가 더 작고 부트로더가 멀리 떨어져 있던 시대의 (@Rony의 예에서 보여주듯이) 자주 간과되는 역사적인 유물입니다. 그렇게 복잡한 시대는 아닙니다.
그런데 알고 보니 이미 그런 일이 있었다.이 답변이 질문에 관하여:배포판을 설치할 때 "부팅 가능한 플래그" 옵션은 무엇입니까?
더 중요한 것은 링크가 있다는 것입니다.스타트업 로고에 관한 짧은 기사그것은 말한다
- "주요 기능은 부팅할 파티션을 MS-DOS/MS Windows 유형 부트 로더에 알려주는 것입니다. 어떤 경우에는 Windows XP/2000에서 이를 사용하여 활성 파티션에 문자 "C:"를 할당합니다."
훌륭한,이것너무 어색해...
내가 이 boot
플래그가 " 라고 주장할 때유적지"분명히 GRUB는 이를 사용할 필요가 없기 때문에 이것이 사실이라고 가정합니다. 물론 Microsoft도 마찬가지입니다."계속 가".
오스카 와일드(Oscar Wilde)가 자주 인용한 이 인용문은 이번 경우에는 너무나 사실임이 입증되었습니다.
Windows 운영 체제에서 사용되는 MBR 및 PBR(파티션 부트 레코드) 로더는하다boot
플래그가 올바르게 설정될 것으로 예상합니다 .
이를 테스트하기 위해 Windows 8 가상 머신의 모든 파티션에서 부팅 플래그를 지웠습니다. (아래를 참고하세요. 궁금하신 분들은 Pastebin 링크를 참고해주세요.BootInfo 스크립트 결과 완료)
Drive: sda
Disk /dev/sda: 26.8 GB, 26843545600 bytes
255 heads, 63 sectors/track, 3263 cylinders, total 52428800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
Partition Boot Start Sector End Sector # of Sectors Id System
/dev/sda1 2,048 718,847 716,800 7 NTFS / exFAT / HPFS
/dev/sda2 718,848 52,426,751 51,707,904 7 NTFS / exFAT / HPFS
두 파티션 모두에 대한 플래그를 지우면 FATAL: INT18: BOOT FAILURE
부팅을 시도할 때 오류 메시지가 나타납니다. (이것이 Windows MBR 부트로더에서 나온 것인지 아니면 가상 머신의 BIOS에서 나온 것인지는 확실하지 않습니다.)
무슨 일이 일어나는지 확인하기 위해 대신 " boot
오류" 파티션에도 플래그를 설정했습니다 . 이렇게 하면 아래 그림과 같은 창이 나타납니다. /dev/sda2
/dev/sda1
<sigh/>
이 경험을 통해 Microsoft가 MS-DOS 및 Windows 3.0/3.1에 사용했던 것과 동일한 MBR 부트 섹터 로더를 여전히 사용하고 있는지 궁금합니다.
답변2
사용자는 부팅 불가능으로 표시된 파티션에서 시스템을 부팅할 수 없지만 부팅 가능으로 표시된 파티션에서는 시스템을 부팅할 수 있다는 것을 알고 있습니다.
노트북 하드 드라이브에서
# fdisk -l /dev/sda
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x47b94fbe
Device Boot Start End Blocks Id System
/dev/sda1 2048 1999999 998976 83 Linux
/dev/sda2 2000000 9999999 4000000 82 Linux swap / Solaris
/dev/sda3 10000000 89999999 40000000 83 Linux
/dev/sda4 90000000 976773167 443386584 83 Linux
부팅 가능한 USB 리눅스
# fdisk -l /dev/sdb
Disk /dev/sdb: 8004 MB, 8004304896 bytes
247 heads, 62 sectors/track, 1020 cylinders, total 15633408 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000a5395
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2097151 1047552 83 Linux
/dev/sdb2 2097152 15632383 6767616 83 Linux
부팅 가능한 파티션이 하나도 없지만 모두 부팅 가능합니다.
답변3
파티션 테이블의 플래그일 뿐입니다. MBR은 파티션에서 플래그를 검색하고 "부팅" 플래그가 있는 파티션에서 실행됩니다.
답변4
기존 Microsoft MBR을 사용할 때 MBR의 코드는 디스크 I/O를 수행하는 방법을 인식하고 파티션을 탐색하여 부팅 가능한 것으로 표시된 파티션을 확인합니다. 하나의 파티션만 표시되어야 합니다. 그런 다음 파티션의 첫 번째 섹터를 확인하고 표시가 올바른 경우 해당 섹터를 읽고 제어권을 해당 섹터로 전송합니다. 내가 정확하게 기억한다면 섹터가 0x55 0xaa로 끝난다는 것이 확인되었습니다.
부팅에 대한 나머지 책임은 해당 섹터의 코드와 로드되는 코드에 있습니다.
GRUB2는 종종 자체 MBR과 프로세스를 사용하고 이를 무시합니다.