FDISK(8)

명칭
fdisk - PC 슬라이스 테이블의 메인트넌스 유틸리티

서식
fdisk [-BIaistu] [-b bootcode] [-1234] [disk] fdisk -f configfile [-itv] [disk]

서론
BIOS 가 커널을 부트 하기 위해서, 일정한 약속을 분명하게 지키지 않으면 되지 않습니다. 디스크의 섹터 0 은 부트 코드, 슬라이스 테이블, magic number를 포함하지 않으면 안 됩니다. BIOS 슬라이스는 디스크를 몇개의 부분으로 나누는데도 사용됩니다. BIOS 는 섹터 0 을 읽어들여, magic number를 확인합니다 그리고, 섹터 0 의 부트 코드는 슬라이스 테이블을 찾아, 어느 슬라이스가 “액티브” (와)과 표시해지고 있는지 판정합니다. 그리고, 이 부트 코드는 bootstrap를 “액티브” 슬라이스로부터 읽어들여, 부트 가능의 표가 붙어 있으면 이것을 실행합니다. DOS 그럼, 1 개 이상의 슬라이스와 1 개의 “액티브” (을)를 가질 수 있습니다. DOS 의 fdisk 유틸리티는, 디스크 공간을 1 개 이상의 슬라이스에 분할해, 1 개의 “액티브” (을)를 설정할 수가 있습니다.

해설
FreeBSD 의 프로그램 fdisk (은)는, DOS 의 그것과 닮은 목적에 도움이 됩니다. 제 1 의 형태는, 슬라이스 정보의 표시나, 슬라이스 테이블의 대화적인 편집에 사용됩니다. 제 2 의 형태는, configfile (을)를 사용해 슬라이스 테이블을 기입한다고 하는 사용법이며, 다른 스크립트/프로그램으로부터 이용하도록(듯이) 설계되고 있습니다.

옵션:

-a  액티브 슬라이스의 변경만을 행합니다. -f (이)가 있을 때는 무시됩니다.

-b bootcode
    부트 코드를 파일 bootcode (으)로부터 취득합니다. 디폴트는 /boot/mbr 입니다.

-B  디스크의 섹터 0 에 포함되는 부트 코드를 재초기화합니다. 만약 -f (이)가 있으면(자), 무시됩니다.

-f configfile
    슬라이스의 값을 파일 configfile (을)를 사용해 설정합니다. -i 도 있을 때는, configfile 하지만 읽히는에 앞서, 존재하는 슬라이스는 전부 지워지고(즉 “미사용” 의 표를 붙여진다) 가, 이 경우를 제외해, configfile (은)는 언제나 존재하는 슬라이스의 변경을 행합니다. configfile 하 ‘-’ 에서 만나도 자주(잘), 이 경우 표준 입력 하지만 읽혀집니다. 파일의 구문은, 이후의 설정 파일 시에를 봐 주세요.

    경고: -f 하지만 사용되었을 때에는, (대화 모드로 묻도록(듯이)) 정말로 슬라이스 테이블을 기입하는지 어떤지를 묻지 않습니다. 조심해 사용하는 것!

-i  디스크의 섹터 0 을 초기화합니다. 만약 -f 하지만 없으면, -u 의 의미도 포함합니다.

-I  단일의 FreeBSD 슬라이스가 디스크 전체가 되도록(듯이), 섹터 0 의 내용을 초기화합니다.

-s  요약 정보를 표시해, 종료합니다.

-t  테스트 모드; 슬라이스 테이블치를 기입하지 않습니다. 일반적으로 -f 옵션을 붙여, 슬라이스 테이블에 기입해져야할 것을 보는데 사용됩니다. -v 의 의미를 포함합니다.

-u  디스크의 섹터 0 을 갱신 (편집)하는데 사용됩니다. -f (이)가 있을 때는 무시됩니다.

-v  장황하게 됩니다. -f 하지만 사용되었을 때에는, fdisk (은)는 디스크에 기입해지는 슬라이스 테이블을 표시합니다.

-1234
    1 개의 슬라이스의 조작만을 행합니다. -f (이)가 있을 때는 무시됩니다.

마지막 디스크명 disk (은)는, “알몸의” 디스크명만, 즉 ‘da0’ 인가, 혹은 완전한 패스명입니다. 만약 생략 되었을 경우, fdisk (은)는, mount 된 루트 디스크로부터 디폴트 디스크 디바이스를 산출하려고 합니다.

옵션없이 불려 갔을 때에는, 섹터 0 슬라이스 테이블을 표시합니다. 예를 들면:

    	******* Working on device /dev/ad0 *******
    	parameters extracted from in-core disklabel are:
    	cylinders=769 heads=15 sectors/track=33 (495 blks/cyl)
    	parameters to be used for BIOS calculations are:
    	cylinders=769 heads=15 sectors/track=33 (495 blks/cyl)
    	Warning: BIOS sector numbering starts with sector 1
    	Information from DOS bootblock is:
    	The data for partition 1 is:
    	sysid 165, (FreeBSD/NetBSD/386BSD)
        	    start 495, size 380160 (185 Meg), flag 0
    		beg: cyl 1/ sector 1/ head 0;
    		end: cyl 768/ sector 33/ head 14
    	The data for partition 2 is:
    	sysid 164, (unknown)
        	    start 378180, size 2475 (1 Meg), flag 0
    		beg: cyl 764/ sector 1/ head 0;
    		end: cyl 768/ sector 33/ head 14
    	The data for partition 3 is:
    	<UNUSED>
    	The data for partition 4 is:
    	sysid 99, (ISC UNIX, other System V/386, GNU HURD or Mach)
        	    start 380656, size 224234 (109 Meg), flag 80
    		beg: cyl 769/ sector 2/ head 0;
    		end: cyl 197/ sector 33/ head 14

이 디스크는, 우연히 디스크 전체를 만 3 개의 슬라이스에 분할되고 있습니다. 2 번째의 슬라이스는 최초의 슬라이스의 마지막에 겹치고 있습니다. (디버그 목적으로 사용됩니다)

sysid
    슬라이스의 label부에 사용됩니다. FreeBSD 그럼 magic number 165 (10진) A5 (16진)를 예약하고 있습니다.

    start (와)과 size 슬라이스의 섹터 단위에서의 개시 주소와 사이즈입니다.

flag 80
    이것이 액티브 슬라이스인 것을 지정합니다.

    cyl, sector (와)과 head 슬라이스의 개시 주소와 종료 주소를 지정하는데 사용됩니다.

주: 이러한 숫자는, BIOS 의 이해하는 디스크지오메트리를 사용해 계산되어 부트 블록에 보존됩니다.

-i (와)과 -u 의 옵션은, 슬라이스 데이터를 갱신해야 하는 것을 지시합니다. 만약 -f 하지만 없으면, fdisk (은)는 대화 모드에 들어갑니다. 이 모드에서는, fdisk 에 명시적으로 지시하지 않는 한, 어떤 변경도 디스크에 기입하지 않습니다. fdisk (은)는 이러한 행동을 프로텍션하도록, 질문의 디폴트를 선택하고 있습니다.

fdisk 유틸리티는 각각의 슬라이스를 표시해, 그것을 편집하고 싶은지 어떤지를 묻습니다. yes 라고 대답하면(자), fdisk (은)는 낡은 값을 표시해, 새로운 값을 물어 각각의 필드로 나아갑니다. 1 개의 슬라이스가 종료하면(자), fdisk (은)는 그것을 표시해, 그래서 올바른지 어떤지를 묻습니다. 그리고 다음의 엔트리에 진행됩니다.

cyl, sector, head 의 필드를 올바르게 얻으려면 약간의 곡예가 필요합니다. 그 때문에 디폴트에서는, fdisk 하지만 대신해 계산합니다만, 선택해 그러한 값을 지정할 수도 있습니다.

모든 슬라이스가 진행한 후, “액티브” 슬라이스 변경을 할 수가 있습니다. 마지막으로, 섹터 0 의 신규 데이터가 전부 모아졌을 때에, 정말로 갱신이라고도 좋은가 묻습니다. yes 라고 대답했을 경우만, 데이터는 디스크에 기입해집니다.

-u 플래그와 -i 플래그의 사이의 차이는, -u 플래그는 디스크상에 있는 필드의 값을 편집 (갱신)할 뿐입니다만, 한편 -i 플래그는 섹터 0 을 “초기화” 하는데 사용됩니다; 디스크 전체를 FreeBSD 용으로 사용할 수 있도록(듯이), 마지막 BIOS 슬라이스를 셋업 해, 그것을 액티브하게 합니다.

주
개시 실린더등의 자동 계산은, BIOS 가 그 드라이브의 지오메트리이다고 생각하고 있는 숫자를 기초로 행해집니다. 이러한 숫자는 디폴트에서는, 메모리상의 디스크 라벨로부터 받습니다만, fdisk 의 기동시로 그것들을 변경할 기회가 주어집니다. 이 덕분에 유저는, BIOS 가 지오메트리 변환을 행하는 드라이브에서도 동작할 수 있는 부트 블록을 만들 수가 있습니다.

만약 디스크의 레이아웃을 수작업으로 변경한다면, 제발 FreeBSD 슬라이스가 실린더 경계로부터 개시하는 것을 확인해 주세요. 그 후의 많은 결정이 이것을 가정하고 있습니다. (이것은 필요하지 않았던 것일지도 모릅니다만)

벌써 있는 슬라이스를 편집하면(자), 아마 그 슬라이스의 데이터를 잃게 되겠지요.

fdisk 하지만 어떻게 일할까를 조사하기 위해서(때문에), 1 번이나 2 번은 대화적으로 실행해야 합니다. 이것은, 마지막 질문에 부정으로 대답하는 한 완전하게 안전합니다. 이 메뉴얼에서는 완전하게 설명되고 있지 않습니다만, fdisk 하지만 검출하는 미묘한 점이 있습니다.

설정 파일
-f 옵션이 주어졌을 때, configfile 의 값을 사용해 디스크의 슬라이스 테이블을 갱신일이 생깁니다. 이 파일의 구문은 매우 단순합니다. 각 행은 코멘트나 사양의 어느 쪽인지입니다.

# comment ...
    # 그리고 개시하고 있는 행은 코멘트로 무시됩니다.

g spec1 spec2 spec3
    슬라이스 계산으로 사용하는 BIOS 지오메트리를 설정합니다. 전에 캐릭터를 수반한 숫자로, 3 개의 값을 지정하는 것이 필요합니다.

    cnum
        실린더의 수를 num (으)로 설정합니다.

    hnum
        헤드의 수를 num (으)로 지정합니다.

    snum
        트럭 근처의 섹터의 수를 num (으)로 설정합니다.

    이러한 지정은 어떤 순서라도 자주(잘), 선두의 캐릭터가 어느 값인지를 결정합니다; 그러나, 3 개(살) 모두를 지정하는 것이 필요합니다.

    이 행은 슬라이스 정보를 지정하는 어떤 행보다 전에 나타나지 않으면 안됩니다.

    다음의 조건이 진이 아니면, 에러입니다:

        1 <= 실린더의 수
        1 <= 헤드의 수 <= 256
        1 <= 트럭 근처의 섹터의 수 < 64

    실린더의 수는 1024 이하가 아니면 안됩니다, 그러나 이것은 강제당하는 것이 아니고, 경고가 표시되겠지요. 부트 가능한 FreeBSD 슬라이스 “(/” 파일 시스템)은 최초의 1024 실린더 이내에 들어가도 좋은과 안됩니다; 만약 그렇지 않으면, 부트에 실패할지도 모릅니다. 부트 하지 않는 슬라이스에는, 이 제한은 없습니다.

    1019 실린더, 39 헤드, 63 섹터의 디스크의 예 (이러한 모두는 보고등가):

        g       c1019   h39     s63
        g       h39     c1019   s63
        g       s63     h39     c1019

p slice type start length
    partition (1-4)(으)로 주어진 슬라이스에, 타입 type , 개시 섹터 start , 길이 (섹터수) length (을)를 설정합니다.

    이러한 행으로 명시적으로 언급된 슬라이스만이 변경됩니다; p 행으로 참조되어 있지 않은 슬라이스는 변경되지 않습니다. 그러나, 무효인 슬라이스 테이블이 있는지, -i 옵션이 지정되어 있다면, 존재하는 슬라이스 엔트리는 모두 제거되고 (미사용의 표가 붙여지고), 슬라이스 정보를 명시적으로 설정하는데, p 행이 사용되지 않으면 안됩니다. 만약 복수의 슬라이스를 설정할 필요가 있다면, 복수의 p 행이 지정되지 않으면 안됩니다; 1 행으로 1 개의 슬라이스를 설정합니다.

    이러한 슬라이스행은, 만약 있으면 지오메트리 지정행의 뒤에 나타나지 않으면 되지 않습니다.

    FreeBSD 슬라이스의 type (은)는 165 입니다. 0 의 슬라이스 타입을 지정하면(자), 슬라이스를 없애 미사용의 표를 붙인 것이라고 같은 것이 됩니다; 그러나, “(0” (이)라든지의) 더미의 값이 start (와)과 length (으)로 지정되지 않으면 안됩니다.

    주: 슬라이스의 개시 오프셋(offset)는 헤드 경계까지 필요하면 앞당길 수 있어 종료 오프셋(offset)는 실린더 경계까지 필요하면 뒤로 돌릴 수 있습니다.

    예: 슬라이스 4 를 없애, 미사용의 표를 붙인다:

        p       4       0       0       0

    예: 슬라이스 1 을 FreeBSD 슬라이스이며, 섹터 1 으로부터 시작되어 2503871 섹터의 길이로 설정한다 (주: 이러한 값은, 대응하는 헤드와 실린더 경계에 앞당기기/뒤로 돌릴 수 있습니다):

        p       1       165     1       2503871

a slice
    slice 슬라이스를 액티브하게 합니다. 설정 파일의 어디에 나타나도 상관하지 않습니다만, 1 개만 존재하는 것이 필요합니다.

    예: 슬라이스 1 을 액티브 슬라이스로 합니다:

        a       1

관련 파일
/boot/mbr
    디폴트의 부트 코드

관련 항목
boot0cfg(8), disklabel(8), newfs(8)

버그
디폴트의 부트 코드는, 반드시 모든 슬라이스 타입을 올바르게 취급하지 않습니다. 특히 MS-DOS 6. x 이후에 도입된 것에 대해서는 그렇습니다.

유틸리티 전체를 보다 유저 프렌들리로 해야 합니다.

FreeBSD 의 신규 유저는, “슬라이스” (와)과 “파티션” 의 차이를 알 수 있지 못하고, 익숙해질 때까지 큰 일이겠지요.

디스크 전체를 FreeBSD 에 바치기 위해서(때문에)는, 이 명령은 사용할 수 없습니다. 이것에는 disklabel(8) 명령을 사용하고 되면 되지 않습니다.