[ LinuxFreeBSD ] in KIDS 글 쓴 이(By): Starless (Starless) 날 짜 (Date): 1999년 3월 23일 화요일 오후 03시 29분 38초 제 목(Title): Re: [Q] 프라이머리 파티션과 익스텐션 � > 한하드에는 4개의 프라이머리 파티션을 갖을 수 있다. > (4개의 파티션,1개의 MBR) 그렇습니다. 한가지 덧붙이자면, M$에서 나온 것들은 primary partition을 하나밖에 쓸줄 모릅니다. 그래서 하드를 파티션 한뒤에 나중에 가만히 보면, 예컨대, 하나를 C:, D:, E: 세개로 나누었을때에 D와 E는 extended partition 에 들어가 있음을 볼 수 있읍니다. (이건 DOS fdisk프로그램 메세지만 가만히 살펴봐도 알 수 있는 것이죠. 괜히 다 아는걸 덧붙였나?) > 5개의 파티션을 갖으려면 3개의 프라이머리와 1개의 익스텐디드 > 파티션으로 나눠야 한다. > (5개 파티션, MBR 과 extended partition table) > > 6개의 파티션을 갖으려면 3개의 프라이머리와 2개의 > 익스텐디드 파티션으로 나눠야 한다. (6개 파티션, MBR 과 2개의 e. p. t.) 설명이 제대로 되지 않았던 모양이군요. 좀더 얘기하면, extended partition 의 partition entry는 두개중 처음것은 자기 파티션의 시작 주소 포인터고 다음 것은 extended partition이 더 있으면 그 다음 것의 포인터를 넣고 아니면 비워 놓습니다. Linked list의 마지막 포인터를 NULL로 대입하는 것과 같은 얘기입니다. 또 한가지, MBR에 들어가있는 extended partition pointer는 실제의 extended partition의 시작주소라기보담도 extended partition table의 주소입니다. 고로, 하드에 4개의 파티션만 만들 것이라면 (M$ junk같은 것을 쓰지 않고) 굳이 extended partition을 만들 필요가 없겠죠. 요즘이야 하드가 커서 512byte가 뭐 문제겠냐 하시겠지만, 보통 새로운 파티션은 새로운 cylinder 에서 시작 합니다. 대용량 하드일수록 한 cylinder에 들어가는 head와 sector의 수가 꽤 커지죠. 물론 그 한계는 있읍니다만... (hd<255, sec<64) 결국, 쓸데없이 (windog같이) extended partition을 만들면 하드가 충분히 클때, 254*63*512byte를 낭비하게 되는거죠. 다음으로 '5개의 파티션'이라는 것이 실제로 mount point를 지정할 수 있는 partition을 말한다면, MBR에 primary 3개와 2개의 extended partition이 필요 합니다. 반복하자면, MBR에 있는 extended partition pointer는 데이타를 저 장하는 physical location을 가리키는 것이 아닙니다. 그 포인터를 따라가면 한개의 cylinder의 크기에 512바이트자리 테이블 하나만 달랑 들어있읍니다. 그 테이블이 linked list의 첫번째 요소입니다. (움... 그림을 그리면 쉬울텐데...) > 추가 질문 : lilo는 MBR에만 있으니(?) e. p. t.은 구조가 다를 것같은데 > 맞나요? 다른 거라고는 bootstrap code가 있냐없냐밖에 없읍니다. 실제로 보고 싶으시 면 언제든지 dd(1) 명령을 이용해 working directory에 복사하고 emacs의 hexl mode나 기타 hex editor로 보십시요. 예컨대, dd if=/dev/hda of=mbr ibs=512 count=1 이러면 MBR이 mbr이라는 파일로 저장될겁니다. 잘 아시겠지만, dd(1)의 if와 of옵션은 주의해서 다루지 않으면, 설치를 처음부터 해야하는 불상사가 일어납니다. 통상 extended partition의 시작점음 /dev/hda4이니, 거기도 처음 512바이트만 잘라와서 보면 아실겁니다. 마지막으로 하드디스크 자체를 분할하고 정리하는 것 자체에 관심이 많으시다면 fdisk소스를 분석해보심이 좋을 듯합니다. 저도 그거보고 많이 배웠고, 그걸 근거로 지금까지 떠들었읍니다. 하드웨어를 직접제어하니까 되게 길고 복잡할 거라고 생각되지만, 실제로 보면 소스가 전부다 해봐야 대략 15000줄 정도 밖에 안됩니다. 이건 blank line과 한줄을 차지하는 block 시작/끝 문자도 포함한거니까 실제 분석하고 고민할 파트는 훨씬 적겠죠. (물론 메뉴구성 파트도 안봐도 되니까 더 팍팍 줄어들겠군요.) Starless ... and Bible Black |