2012-12-01 4 views
1

저는 LILO bootsect.s와 GRUB stage1.s을보고있었습니다.부트 로더 (LILO, GRUB, 사용자 정의)의 고정 섹터 로딩

LILO는 하드 코딩 된 특정 섹터에서 물건 (또는 무언가)을로드합니다. 설치시 패치 할 수있는 예약 된 바이트는 사용하지 않습니다. 드라이브에 홀로있는 것이 아니라 파티션에 있다면 어떻게 작동합니까? LILO는 bootsec.s에게 디스크에있는 위치를 어떻게 알려주므로로드해야 할 파일이있는 곳을 적절하게 조정합니까?

LILO에는 BPB를위한 공간이 없으므로 대부분 ext 부트 로더입니다. ext는 부트 섹터 바로 다음에 512 개의 다른 장치가 있습니다. LILO의 무대 2가 그 작은 공간에 정말로 들어 맞을 수 있습니까? 아니면 예약 된 블록에 배치합니까?

한편, GRUB에는 stage2가 상주하는 예약 된 dword가 있습니다. 설치시 패치 할 수 있습니다. 그러나 그것의 크기에 대해서는 아무 것도 말하지 않습니다. 그것을 보면, 단지 하나의 섹터 (mov ax, 0x0201)를 읽은 다음 그 섹터로 점프하는 것으로 보입니다. stage2 디렉토리를 보면 단일 섹터에만 적합하다고는 생각하지 않습니다.

LILO 및 GRUB 구성 파일은 모두 해당 파일 시스템에 관한 정보가 없습니다. 부팅 프로세스를 어떻게 계속합니까? 파일에 대한 경로가 포함되어 있음을 의미하지만 많은 도움이된다고 생각하지 않습니다. 그들은 알아 내려고합니까? 어떻게 그렇게? 이미 존재하는 OS가 있다면, 현재 OS가 파일 시스템 설정과 부트 로더 파일을 어떻게 좋아하는지와 충돌하지 않을 것입니까? 스테이지 1은 파일 시스템이 멍청하다는 점을 감안할 때.

LILO와 GRUB이 파티션 부팅 섹터 (미리 파티션 된 디스크)를 설정하면 MBR의 파티션 테이블을 읽으므로 나머지 부분이 디스크에 있으므로 '고정 주소 지정' 패치를 적용한 이후로 작동합니까? 아니면 실제로 고정 하드 디스크 섹터에 물건을로드합니까? 나는 갈등에 관한 질문으로 돌아 간다.

부트 로더를 작성하려고하는데 정적 디스크 주소를 읽는 것만으로는 파일 시스템 구조와 충돌 할 수 있다고 생각합니다. 그리고 내가 어디에 있는지 '알지 못하는'방법을 잃어 버렸습니다. 왜냐하면 나는 DS : SI가 실제 파티션 테이블을 가리키고 있는지 (LBA 0에 있다면?) MBR 파티션 테이블을 읽고 내 스테이지 1에서 일부 dword를 패치한다고 믿을 수 있는지 모르겠다. 나는 아주 잘 앉아있다. 그래서 저는 LILO와 GRUB에서 영감을 얻고 자합니다. NASM에 쓰여지지 않는 것이 도움이되지 않습니다. :(

+0

bump. 어떤 도움? – lightburst

답변

1

은 'DOS 호환성 지역'이라는 것이 분명히있다 인사이트 기본적으로 here

, CHS 0 : 0 : 2-0 : 0 : 63 '무료'이며, 파티션은 1에서 시작합니다. 0 : 1.

+0

그렇기 때문에 내가 FAT로 포맷 된 플로피에 GRUB을 설치할 수 없었습니다 : 파일 시스템에'stage1.5'를위한 장소가 없습니다. –