tail head cat sleep
QR code linking to this page

Man page  — DISKLABEL

명칭

disklabel – 디스크 label의 읽고 쓰기를 실시한다

내용

서식


disklabel [-r] disk
disklabel -w [-r] [-n] disk disktype/auto [packid ]
disklabel -e [-r] [-n] disk
disklabel -R [-r] [-n] disk protofile
disklabel [-NW] disk


disklabel -B [ -b boot1 -s boot2 ] disk [disktype/auto ]
disklabel -w -B [-n] [ -b boot1 -s boot2 ] disk disktype/auto [packid ]
disklabel -R -B [-n] [ -b boot1 -s boot2 ] disk protofile [disktype/auto ]

해설

disklabel 유틸리티는, 디스크 드라이버나 디스크 팩에 label를 기입하거나 확인하거나 수정하거나 하기 위해서 사용됩니다. label를 기입하려면 , 드라이브의 식별자를 변경하거나 디스크의 파티션을 변경하거나 이상이 있는 label를 옮겨놓거나 할 수가 있습니다. 명령에는, 디스크상의 label를 읽거나 (표시하거나), 기입하거나 편집하거나 하는 몇개의 서식이 있습니다. 또 disklabel (은)는 동시에 bootstrap 코드를 인스톨 할 수도 있습니다.

메모리내의 label와 디스크상의 label

디스크 label는 각 디스크 패티션의 선두, 혹은 선두 부근에 존재합니다. 보다 빠르고 액세스 하기 위해서, 커널은 항상 메모리내에 카피를 보관 유지합니다. 디폴트에서는, disklabel 에 의한 조작의 대부분은 메모리내에 있는 label의 카피에 대해서 액세스 합니다. (디스크상에 존재한다) label에 액세스 하기 위해서는 -r 옵션을 사용합니다. 이 옵션에 의해, 커널의 서포트 없음으로 label를 디스크에 인스톨 하는 것이 가능하게 됩니다. 예를 들면 label가 처음 시스템에 인스톨 될 때 등, 디스크에 처음 label를 기입할 때로 지정되지 않으면 안됩니다. -r 옵션에 의한 고유의 효과는 이하의 각 명령의 설명으로 가리킵니다.

디스크 디바이스명

모든 disklabel 의 서식에서, 디스크의 디바이스명이 필요합니다. 디스크의 디바이스명은, 디스크 또는 슬라이스를 나타내는 로 디바이스명이 아니면 안됩니다. 예를 들면 da0 (은)는 DOS 파티션에 무관계해 디스크 전체를 나타내, da0s1 (은)는 슬라이스를 나타냅니다. 디바이스에 따라서는, 특히 ccd 그럼, "디스크 전체를 나타낸다" (또는 "c") 파티션을 필요로 합니다. 예를 들면 ccd0c 입니다. 디바이스 지정시에는, /dev/ 의 파스프레픽스를 붙일 필요는 없습니다. disklabel 유틸리티는 자동적으로 이것을 앞에 두고 붙입니다.

디스크 label의 읽기

디스크 드라이버상의 label를 확인하기 위해서는 옵션을 지정하지 않고 disklabel (을)를 사용합니다.

disklabel [-r] disk

disk (은)는 대상으로 하는 로 디스크를 나타냅니다. 또 da0 (이)나 /dev/da0c (와)과 같은 서식에서도 지정할 수가 있습니다. 이것에 의해 드라이브에 관한 모든 파라미터와 파티션의 레이아웃을 표시합니다. -r 플래그를 지정하지 않는 경우에는, 커널의 메모리내에 있는 label의 카피가 표시됩니다. 만약 디스크에 label가 기입해지지 않기도 하고, 디스크의 파티션 형식이 올바르지 않은 경우에는, 커널이 다시 만들거나 수정할지도 모릅니다. -r 플래그가 주어지면(자), 디스크상의 실제의 label가 표시됩니다. 통상은, 어디라도 같은 결과가 됩니다만, label가 미초기화의 경우와 또는 망가져 있는 경우에는, 다른 결과가 됩니다.

표준적인 label의 기입

표준적인 label를 기입하려면 , 이하의 서식을 사용합니다.

disklabel -w [-r] [-n] disk disktype/auto [packid ]

disklabel -w [-r] [-n] disk auto

명령에는 인수로서 label를 기입하는 드라이브 네임 및 disktab(5) 에 쓰여져 있는 드라이브 타입이 필요합니다. 드라이브의 파라미터와 파티션 정보는, 이 파일로부터 얻을 수 있던 것 하지만 사용됩니다. 만약, 같은 형태의 디스크에 다른 파티션 정보를 갖게하고 싶은 경우에는, disktab 에 각각 다른 엔트리를 써 두는지, label를 기입한 후에 후술 하는 방법으로 그것을 편집할 필요가 있습니다. 옵션의 인수로서 16 캐릭터까지의 팩 식별용 캐릭터 라인을 지정합니다. 팩명에 공백을 포함하는 경우에는 그것을 쿼트 할 필요가 있습니다.

-n 플래그가 주어지면(자), 데이터는 디바이스에 기입해지지 않습니다. 대신에, 기입해질 것이었던 디스크 label가, 표준 출력에 표시됩니다.

-r 플래그가 주어지면(자), 디스크의 label와 bootstrap가 직접 고쳐 쓸 수 있습니다. 이 부작용으로서 벌써 있는 bootstrap용 코드가 덧쓰기되어 버리기 (위해)때문에, 디스크가 부트 불능으로 되어 버립니다. label와 bootstrap를 동시에 기입하는 방법은 후술의 부트 옵션을 참조해 주세요. -r 하지만 지정되지 않는 경우에는, label는 메모리내의 카피를 통해 고쳐 쓸 수 있다 모아 두어 bootstrap 코드는 영향을 받지 않습니다. 만약 아직 디스크가 label 붙이고되어 있지 않으면, -r 플래그를 붙이지 않으면 안됩니다. 어느 쪽의 방법에서도, 커널의 메모리내 카피는 변경됩니다.

disktab(5) 에 기재되지 않은 미사용의 디스크에 대해서는, disktype (으)로서 "auto" (을)를 지정할 수 있습니다. 이 경우, 디스크의 최초의 label를 생성하도록(듯이) 드라이버에 요구합니다. 이것은 성공할지도 모르고 성공하지 않을지도 모릅니다. 이것은 디스크 드라이버가 디스크를 전혀 읽는 일 없고 필요한 데이터를 취득할 수 있는지 아닌지에 의존합니다. 모든 SCSI 디스크와 대부분의 IDE 디스크와 vnode 디바이스에 대해 성공하겠지요. 디스크에 대한 label의 기입은 유일 서포트된 조작이며, disk 자신은 표준의 이름 (풀 패스명이어 되지 않습니다)으로 제공될 필요가 있습니다.

대부분의 하드 디스크에서는, 퍼센트 베이스의 label ( 및 크기에 ‘*’ (을)를 지정하는 단일의 파티션)으로, 타당한 설정을 출력하겠지요.

PC 베이스의 시스템에서는, BIOS 에 올바르고 FreeBSD 디스크 label를 인식시키기 위해서(때문에), 특별한 요건이 있습니다. 낡은 시스템에서는, "위험한 방법으로 전용화 되었다" 디스크 label가 필요할지도 모릅니다. 이것은, 가짜의 DOS 파티션을 작성하는 것으로써, 최근의 디스크의 지오메트리에 대해서 낡은 BIOS 가 일으키는 문제를 회피한다고 하는 것입니다. 새로운 시스템에서는, 통상의 DOS 파티션을 fdisk 그리고 작성해, 이 슬라이스중에 FreeBSD 디스크 label를 작성하면 좋을 것입니다. 본건에 대해서는 이 메뉴얼로 후술 합니다.

신규 디스크 label를 인스톨 하는 것 만으로는, 이 label로 시스템을 부트 시킬 수 없습니다. 부트 블록도 또 인스톨 할 필요가 있습니다. 본건에 대해서는 이 메뉴얼로 후술 합니다.

기존의 디스크 label의 편집

기존의 디스크 label를 편집하려면 , 이하의 서식을 사용합니다.

disklabel -e [-r] [-n] disk

이 명령은 label를 커널의 메모리내 카피로부터, 또는 -r 플래그가 주어졌을 경우에는 직접 디스크로부터 읽어들입니다. label는 ASCII 로 파일에 쓰여되어 편집하기 위한 에디터에 건네받습니다. EDITOR 환경 변수에 의한 에디터의 지정이 없는 경우에는, 이 에디터에는 vi(1) 하지만 사용됩니다. 에디터를 종료하면(자), label 파일은 디스크 label를 재기입해 하기 위해서 사용됩니다. -r 플래그의 지정의 유무에 관계없이, 벌써 있는 bootstrap 코드는 변경되지 않습니다. -n 플래그가 주어지면(자), 데이터는 디바이스에 기입해지지 않습니다. 대신에, 기입해질 것이었던 디스크 label가, 표준 출력에 표시됩니다. 특정의 디스크에 대해서, 파티션 방식이 어떻게 동작할까를 보는데 유용합니다.

파일로부터의 디스크 label의 복원

파일로부터 디스크 label를 복원하려면 , 이하의 서식을 사용합니다.

disklabel -R [-r] [-n] disk protofile

disklabel (은)는 이전의 조작에 의해 ASCII 파일로서 보존되고 있는 디스크 label (을)를 디스크에 써 되돌립니다. label를 작성할 경우에 사용되는 prototype 파일은, label를 읽어들이거나 편집하거나 할 때의 것과 같은 포맷일 필요가 있습니다. 코멘트는 # (와)과 개행으로 단락지어집니다. 새로운 label를 기입할 때에 -r 하지만 지정되어 있으면(자) bootstrap 코드는 사용할 수 없게 되어 버립니다만, 지정되어 있지 않은 경우에는 영향 없습니다. label의 복원과 bootstrap의 기입을 동시에 실시하는 방법은 후술의 부트 옵션을 참조해 주세요. -n 플래그가 주어지면(자), 데이터는 디바이스에 기입해지지 않습니다. 대신에, 기입해질 것이었던 디스크 label가, 표준 출력에 표시됩니다. 특정의 디스크에 대해서, 파티션 방식이 어떻게 동작할까를 보는데 유용합니다.

디스크 label area에의 기입의 유효화 및 무효화

디폴트에서는, 디스크의 선두 area에 있는 디스크 label area에의 기입은 불가능합니다. 디스크 드라이버는, 이러한 시도에 대해, write(2) (이)나 이것에 비슷하는 시스템 콜이 EROFS 를 돌려주도록(듯이) 합니다. 만약 (예를 들면 label를 소거하는 등) 이 area에의 기입을 실시할 필요가 있다면, 이하의 서식을 사용합니다.

disklabel -W disk

label의 기입을 가능하게 한 후에 불가능하게 하려면 이하의 명령을 사용합니다.

disklabel -N disk

bootstrap의 인스톨

disklabel 의 마지막 3 개의 서식은, bootstrap 코드를 인스톨 하기 위해서 사용됩니다. 낡은 PC 시스템과의 호환성을 위해서(때문에) "위험한 방법으로 전용화 되었다" 슬라이스를 작성한 경우, 통상, da0 등의 생 디스크를 지정하고 싶을 것입니다. 기존의 DOS 슬라이스중에 label를 작성한 경우, 파티션명 da0s1a 등을 지정하겠지요. 슬라이스를 부트 가능하게 하는 것은 트리키입니다. 통상의 DOS 슬라이스를 사용하고 있는 경우, 전형적으로는, 베이스 디스크에 표준 MBR 를 인스톨 해 (또는 남겨), FreeBSD 부트 블록을 슬라이스중에 인스톨 합니다.

disklabel -B [ -b boot1 -s boot2 ] disk [disktype ]

이 서식에서는 bootstrap만 인스톨 합니다. 디스크 label는 변경하지 않습니다. "위험한 방법으로 전용화 되었다" 디스크를 작성하려고 하고 있는 것은 아닌 한, da0 (와)과 같은 베이스 디스크에 이 명령을 사용해서는 안됩니다. 이 명령은 전형적으로는 da0s1 (와)과 같은 슬라이스에 대해서 실행합니다.

disklabel -w -B [-n] [ -b boot1 -s boot2 ] disk disktype [packid ]

이 서식은 전술의 "label의 기입" 명령와 일치합니다. 새로운 볼륨 레벨을 기입하는 것과 동시에 bootstrap의 인스톨도 행합니다. 베이스 디스크에 대해서 본명령을 실행하면(자), "위험한 방법으로 전용화 되었다" label를 작성합니다. 본명령은, 통상, 베이스 디스크는 아니고 슬라이스에 대해서 실행합니다. -n 플래그가 주어지면(자), 데이터는 디바이스에 기입해지지 않습니다. 대신에, 기입해질 것이었던 디스크 label가, 표준 출력에 표시됩니다.

disklabel -R -B [-n] [ -b boot1 -s boot2 ] disk protofile [disktype ]

이 서식은 전술의 "label의 복원" 명령와 일치합니다. 볼륨 레벨을 복원하는 것과 동시에 bootstrap의 인스톨도 행합니다. 베이스 디스크에 대해서 본명령을 실행하면(자), "위험한 방법으로 전용화 되었다" label를 작성합니다. 본명령은, 통상, 베이스 디스크는 아니고 슬라이스에 대해서 실행합니다.

bootstrap 명령은 항상 디스크에 직접 액세스 하기 위한(해), -r 플래그를 지정할 필요는 없습니다. -n 플래그가 주어지면(자), 데이터는 디바이스에 기입해지지 않습니다. 대신에, 기입해질 것이었던 디스크 label가, 표준 출력에 표시됩니다.

bootstrap 코드는 2 살의 부트 프로그램보다 구성됩니다. 인스톨 되는 부트 프로그램의 이름은 이하의 3 개의 방법안의 1 개부터 지정합니다.

  1. -b 플래그와 -s 플래그를 이용해 명시적으로 이름을 지정합니다. -b 플래그로 지정하는 것이 최초의 부트 프로그램으로, -s 플래그로 지정하는 것이 2 단계눈의 부트 프로그램이 됩니다. 부트 프로그램은, /boot 에 놓여집니다.
  2. -b 플래그와 -s 플래그가 지정되지 않고 disktype 하지만 지정되었을 경우, disktab 의 엔트리가 존재 응어리질 수 있는들의 파라미터가 포함된다면 프로그램의 이름은 이 디스크에 대한다 disktab(5) 엔트리의 "b0" 및 "b1" 파라미터보다 얻을 수 있습니다.
  3. 그렇지 않은 경우, 디폴트의 부트 이미지명은 표준의 스테이지 1 및 스테이지 2 의 부트 이미지로서 /boot/boot1 (와)과 /boot/boot2 (이)가 됩니다 (자세한 것은 아키텍쳐에 따라서 달라, Alpha 에 대해 단일 스테이지의 부트가 사용됩니다).

스크래치로부터의, 부트 가능 디스크의 초기화/포맷

디스크를 스크래치로부터 초기화하려면 , 다음의 순서를 추천합니다. 이 순서는, FreeBSD 이외의 슬라이스를 포함한, 디스크상의 모든 것을 삭제해 버리는 것에 주의해 주세요.

  1. fdisk(8) (을)를 사용해 하드 디스크를 초기화해, DOS 로부터는 파티션 테이블로서 참조되는 슬라이스 테이블을 작성합니다. 당신의 시스템용의 디스크 슬라이스를 여기서 정의합니다.
  2. disklabel(8) (을)를 사용해, 파티션 및 마운트 포인트의 정의와 기입을 실시합니다. 여기서 마운트 포인트를 결정할 필요는 없고, 다음에 mount(8) (을)를 사용해 정의 가능합니다.
  3. 마지막으로, newfs(8) (을)를 사용해, 신파티션중에 파일 시스템을 작성합니다. 전형적인 디스크 label의 파티쇼닝 방식으로는, "a" 파티션은 약 128MB 로 루트 파일 시스템을, "b" 파티션은 스왑을, "d" 파티션은 /var 를 (통상 128MB), "e" 파티션은 /var/tmp 를 (통상 128MB), "f" 파티션은 /usr 를 (통상 2G 정도), "g" 파티션은 /home 를 (통상, 나머지), 각각 할당합니다. 이것은, 시스템에 따라서 다릅니다.

fdisk

disklabel -w -B da0s1 auto

disklabel -e da0s1

관련 파일

/etc/disktab
/boot/
/boot/boot<n>
 

보존된 파일의 서식

disklabel 유틸리티는, 디스크 label를 확인, 편집, 또는 복원할 때에 ASCII 형식의 label를 사용합니다. 포맷은 이하대로입니다.
# /dev/da1c:
type: SCSI
disk: da0s1
label:
flags:
bytes/sector: 512
sectors/track: 51
tracks/cylinder: 19
sectors/cylinder: 969
cylinders: 1211
sectors/unit: 1173930
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0           # milliseconds
track-to-track seek: 0  # milliseconds
drivedata: 0

8 partitions: # size offset fstype [fsize bsize bps/cpg] a: 81920 0 4.2BSD 1024 8192 16 # (Cyl. 0 - 84*) b: 160000 81920 swap # (Cyl. 84* - 218*) c: 1173930 0 unused 0 0 # (Cyl. 0 - 1211*) h: 962010 211920 vinum # (Cyl. 218*- 1211*)

# 그리고 시작되는 행은 코멘트입니다. 다른 항목의 거의도 이미 사용되고 있지 않습니다. 올바르게 설정되지 않으면 안 되는 항목은 이하대로입니다:

label 옵션의 label입니다. label를 기입할 때에 packid 옵션에 의해 설정됩니다.
flags flags 는 removable, ecc 혹은 badsect 하지만 지정 가능합니다. removable (은)는 리모트 미디어 드라이브에 대해서 설정됩니다만, 현재의 FreeBSD 의 드라이버는 이 플래그를 평가하지 않습니다. ecc (은)는 서포트되고 있지 않습니다. badsect (은)는 드라이브가 배드 섹터의 대체를 실시할 수 있는 경우에 지정합니다.
sectors/unit
  디스크의 전체의 크기를 나타냅니다. 이 값은 올바르지 않으면 안됩니다.
파티션 이것은 Unix 의 파티션 테이블이며, fdisk(8) 그리고 진술되고 있는 Microsoft 의 파티션 테이블이 아닙니다.

파티션 테이블은 8 개까지 엔트리를 가질 수가 있어 이하의 정보를 포함합니다:
identifier
  파티션의 식별자는 "a" (으)로부터 "h" 의 1 캐릭터입니다. 관례적인 이유에 의해, "c" 파티션은 디스크 전체를 나타내기 위해서(때문에) 예약되고 있습니다.
size 섹터 단위에서의 파티션의 크기입니다. K (킬로바이트 - 1024), M (메가바이트 - 1024*1024), G (기가바이트 - 1024*1024*1024), % ( "c" 이외의 고정장의 파티션을 없앤 후의 공간에 대한 퍼센트)인가, * (고정장의 파티션과 퍼센트 지정의 파티션을 없앤 후 의 공간 모두). "c" 에 대해서 * (을)를 지정하면(자), 디스크 전체를 의미합니다 소문자의 K, M, G 도 용서됩니다. 크기와 형태의 사이에는 공백을 들어갈 수 있어 되지 않습니다.

예: 2097152, 1g, 1024m, 1048576k 는 모두 같은 크기입니다 (512 바이트 섹터를 가정).

offset
  드라이브의 선두로부터의 오프셋(offset)에 의한 파티션의 개시 위치를, 섹터 단위로 지정합니다. * (은)는, 사용해야 할 올바른 오프셋(offset) (직전의 파티션의 종단에 1 을 더한 것)(을)를, disklabel 에 계산시킵니다. 다만 파티션 "c" (은)는 무시합니다. 파티션 "c" 에 대해서는, * (은)는 오프셋(offset) 0 으로 해석됩니다.
fstype
  파티션의 사용 목적을 나타냅니다. 예에서는 현재 사용되고 있는 파티션형을 나타냅니다. UFS 파일 시스템 및 ccd 에서는 4.2BSD 하지만 사용됩니다. Vinum 드라이브에서는 vinum 하지만 사용됩니다. 다른 일반적인 형태는 unused (와)과 swap 입니다. 결정에서는, 파티션 "c" (은)는 슬라이스 전체를 나타내, 형태 unused (이어)여야 합니다가, disklabel (은)는 이 결정을 강제하지 않습니다. disklabel 유틸리티는 많은 다른 파티션형을 알고 있습니다만, 그것들은 현재 사용되고 있지 않습니다. 자세한 것은, /usr/include/sys/disklabel.h 그리고 FS_UNUSED 그리고 개시하는 정의를 참조해 주세요.
fsize 4.2BSD (와)과 LFS 의 파일 시스템 에 대해서만 유효합니다. fragment의 크기를 의미합니다. 1 GB 미만의 파티션에 대한 디폴트는 1024 로, 1 GB 이상에 대한 디폴트는 4096 입니다.
bsize 4.2BSD (와)과 LFS 의 파일 시스템 에 대해서만 유효합니다. 블록의 크기를 의미합니다. 1 GB 미만의 파티션에 대한 디폴트는 8192 로, 1 GB 이상에 대한 디폴트는 16384 입니다.
bps/cpg
  4.2BSD 파일 시스템에 대해서는, 실린더 그룹중의 리신다수를 의미합니다. LFS 파일 시스템에 대해서는, 세그먼트(segment) 쉬프트치를 의미합니다. 1 GB 미만의 파티션에 대한 디폴트는 16 으로, 1 GB 이상에 대한 디폴트는 64 입니다.

행의 나머지의 부분은 코멘트로, 드라이브의 일반적으로는 사용되지 않은 (그러나 아마 정확한) 지오메트리 정보에 기초를 둔 실린더의 할당 정보를 나타내고 있습니다. asterisk (*)는 파티션이 실린더 경계에서 엄밀하게는 글자 기다리지 않은, 혹은 끝나지 않은 것을 의미합니다.

사용예

    disklabel da0

da0s1 의 label로서 커널내의 카피를 /dev/da0s1 (으)로부터 얻을 수 있던 것으로서 표시합니다. label를 읽어들여 때로는, label가 슬라이스상에 존재하는 경우에서도, FreeBSD 는 베이스 디스크명을 지정하는 것을 허락하고 있습니다. 그렇지만, 엄밀하게는, 베이스 디스크명을 지정하는 것은 "위험한 방법으로 전용화 되었다" label를 사용하는 경우로 한정해 주세요. 통상은, 슬라이스를 지정해 주세요.

    disklabel da0s1 > savedlabel

da0s1 에 대한다 커널내의 카피를 파일에 savedlabel 에 보존합니다. 이 파일은 다음에 -R 플래그를 이용해 label를 복원할 때에 사용할 수 있습니다.

    disklabel -w -r /dev/da0s1 da2212 foo

/etc/disktab 에 쓰여져 있다 "da2212" 의 정보를 da0s1 의 label로서 기입합니다. 존재한 bootstrap 코드는 사용할 수 없게 됩니다.

    disklabel -e -r da0s1

da0s1 의 디스크상의 label를 읽어들여, 편집해, 다시 기입합니다. 디스크상의 label와 함께 커널내 카피도 고쳐 쓸 수 있습니다. 존재한 bootstrap 코드는 영향을 받지 않습니다.

    disklabel -e -r -n da0s1

da0s1 의 디스크상의 label를 읽어, 편집해, 신규 label가 어떻게 될까를 (섹터 단위로) 표시합니다. 신규 label는, 메모리에도 디스크에도 인스톨 하지 않습니다.

    disklabel -r -w da0s1 auto

da0s1 (으)로부터 필요한 정보를 자동 검출해, 새로운 label를 디스크에 쓰려고 합니다. 파티션 및 파일 시스템 정보를 편집하기 위해서, 이 다음에 disklabel -e 명령을 사용해 주세요.

    disklabel -R da0s1 savedlabel

savedlabel 에 쓰여져 있는 정보를 da0s1 의 label로서 기입합니다. 디스크상의 label와 함께 커널내 카피도 고쳐 쓸 수 있습니다. 존재한 bootstrap 코드는 영향을 받지 않습니다.

    disklabel -R -n da0s1 label_layout

파티션 레이아웃 label_layout (을)를 사용하면(자), da0s1 의 label가 어떻게 되는지를 표시합니다. % (와)과 * 에 따르는 파티션의 크기 지정을 사용하는 label 방식을 사용했을 경우에, 각 파티션에 얼마나 할당할 수 있는지를 판정하는데 유용합니다.

    disklabel -B da0s1

da0s1 에 새롭게 bootstrap 코드를 기입합니다. bootstrap 코드는 /boot/boot1 , 및 만약 필요하면 /boot/boot2 입니다. 디스크상의 label 및 커널내 카피는 영향을 받지 않습니다.

    disklabel -w -B /dev/da0s1 -b newboot1 -s newboot2 da2212

새로운 label와 bootstrap 코드를 기입합니다. label는 disktab 의 "da2212" 의 정보를 사용해, 디스크상의 label와 함께 커널내 카피도 고쳐 쓸 수 있습니다. bootstrap 코드는 /boot/newboot1 (와)과 /boot/newboot2 입니다.

    dd if=/dev/zero of=/dev/da0 bs=512 count=32

    fdisk -BI da0

    dd if=/dev/zero of=/dev/da0s1 bs=512 count=32

    disklabel -w -B da0s1 auto

    disklabel -e da0s1

디스크상의 기존의 정보를 완전하게 삭제해, 단일의 "디스크 전체" 슬라이스를 포함한 DOS 파티션 테이블 첨부의, 부트 가능 디스크를 신규에 작성합니다. 다음에 슬라이스를 초기화해, 편집합니다. dd (은)는 옵션입니다만, BIOS 에 따라서는 올바르게 디스크를 인식하기 위해서 필요합니다.

이것은, %, M, G, * 그렇다고 하는 신규 파티션 사이즈형을 사용하는, 디스크 label의 예입니다. 다음의 명령행의 원시 파일로서 사용 가능합니다:

    disklabel -R ad0s1c new_label_file

# /dev/ad0s1c:
type: ESDI
disk: ad0s1
label:
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 16
sectors/cylinder: 1008
cylinders: 40633
sectors/unit: 40959009
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0           # milliseconds
track-to-track seek: 0  # milliseconds
drivedata: 0

8 partitions: # size offset fstype [fsize bsize bps/cpg] a: 400M 0 4.2BSD 4096 16384 75     # (Cyl. 0 - 812*) b: 1G * swap c: * * unused e: 204800 * 4.2BSD f: 5g * 4.2BSD g: * * 4.2BSD

관련 항목

ccd(4), disklabel(5), disktab(5), boot0cfg(8), fdisk(8), vinum(8)

진단

디바이스 드라이버는, 오픈되고 있는 파티션에 관해서, 사이즈가 작아지는 것 및 오프셋(offset)가 변화하는 것을 허락하지 않습니다. 디바이스 드라이버안에는, label를 가지지 않는 디스크에 대해서 1 파티션만으로부터 된다 label를 작성하는 것이 있습니다. 그 때문에, 오픈되고 있는 디스크의 label는 "a" 파티션에 쓸 필요가 있습니다. 이러한 이유로, 다음의 2 스텝에 의해, 소망한 label를 작성할 필요가 있는 경우가 있습니다. 제 1 스텝은 적어도 이제(벌써) 1 개의 파티션을 작성하는 것이어, 제 2 스텝은 "a" 파티션을 작게 하면서 새로운 파티션의 label를 설정하는 것입니다.

파일 시스템에 따라서는, 준비된 area에 bootstrap 코드가 들어가 자르지 않는 것 같은 머신이 있을지도 모릅니다. 그 결과적으로, "부트 가능한" 디스크의 파티션에 파일 시스템을 작성할 수 없는 경우가 있습니다. bootstrap 코드를 기입할 때에, disklabel (은)는 이러한 케이스를 체크합니다. FS_UNUSED 타입의 파티션과 겹쳐지도록(듯이) bootstrap 코드가 기입해지는 경우에는, 그 파티션은 FS_BOOT 와 마크 됩니다. newfs(8) 유틸리티는, FS_BOOT 파티션에 파일 시스템을 작성하는 것을 금지합니다. 또 반대로, 파티션의 타입이 FS_UNUSED 혹은 FS_BOOT 는 아닌 경우, disklabel (은)는 그 파티션과 겹쳐지는 것 같은 bootstrap 코드를 기입하지 않습니다.

버그

디스크명이 풀 패스로 지정되지 않는 경우에는, 디바이스명은 "c" 파티션이 됩니다.

i386 아키텍쳐에서는, 프라이머리 bootstrap 섹터에, 편입의 fdisk 테이블을 가집니다. disklabel 유틸리티는, bootstrap만을 인스톨 할 때 (-B) 혹은 label를 편집할 때 (-e) 에 이것을 부수지 않게 조심합니다. 그러나, -w (이)나 -R (을)를 지정했을 때에는, 무조건으로 프라이머리 bootstrap 프로그램을 디스크에 기입하기 때문에, fdisk 테이블을 bootstrap 프로그램내의 더미에 옮겨놓습니다. 이것은 디스크 전체를 전용에 사용하는 경우, 즉 BSD 디스크 label가 디스크의 절대 블록 0 으로부터 시작되는 경우 마셔 관계 있습니다.

disklabel 유틸리티는 모든 실시 가능한 에러 체크는 실시하지 않습니다. 다음의 경우, 경고가 표시됩니다: 파티션이 겹치는 경우, 절대적인 오프셋(offset)가 기대한 오프셋(offset)와 다른 경우, "c" 파티션이 0 으로부터 개시하지 않는가 디스크 전체를 가리지 않는 경우, 파티션이 디바이스의 종단을 넘는 경우, 그 외의 에러. 다만, 미사용 공간이 있어도 경고는 표시되지 않습니다.


DISKLABEL (8) July 30, 1999

tail head cat sleep
QR code linking to this page


Ben Bullock이 유닉스 매뉴얼 페이지에서 서비스에 대한 의견을 주시기 바랍니다. Privacy policy.

C isn't that hard: void (*(*f[])())() defines f as an array of unspecified size, of pointers to functions that return pointers to functions that return void