LIBDISK(3)

명칭
Open_Disk, Clone_Disk, Free_Disk, Debug_Disk, Set_Bios_Geom, Delete_Chunk, Collapse_Disk, Collapse_Chunk, Create_Chunk, All_FreeBSD, CheckRules, Disk_Names, Set_Boot_Mgr, Set_Boot_Blocks, Write_Disk, Cyl_Aligned, Next_Cyl_Aligned, Prev_Cyl_Aligned, Track_Aligned, Next_Track_Aligned, Prev_Track_Aligned, Create_Chunk_DWIM, MakeDev, MakeDevDisk, ShowChunkFlags, ChunkCanBeRoot, chunk_n, slice_type_name - 슬라이스 및 파티션 label에 대한 인터페이스 프로그램 라이브러리

프로그램 라이브러리
libdisk

서식
<sys/types.h> <libdisk.h>

extern const char *chunk_n[]; const char * slice_type_name(int type, int subtype) struct disk * Open_Disk(const char *devname) struct disk * Clone_Disk(struct disk *disk) void Free_Disk(struct disk *disk) void Debug_Disk(struct disk *disk) void Set_Bios_Geom(struct disk *disk, u_long cyl, u_long heads, u_long sects) int Delete_Chunk(struct disk *disk, struct chunk *) void Collapse_Disk(struct disk *disk) int Collapse_Chunk(struct disk *disk, struct chunk *chunk) int Create_Chunk(struct disk *disk, u_long offset, u_long size, chunk_e type, int subtype, u_long flags) void All_FreeBSD(struct disk *d, int force_all) char * CheckRules(struct disk *) char ** Disk_Names(void) void Set_Boot_Mgr(struct disk *d, const u_char *bootmgr, const size_t bootmgr_size) int Set_Boot_Blocks(struct disk *d, const u_char *boot1, const u_char *boot2) int Write_Disk(struct disk *d) int Cyl_Aligned(struct disk *d, u_long offset) u_long Next_Cyl_Aligned(struct disk *d, u_long offset) u_long Prev_Cyl_Aligned(struct disk *d, u_long offset) int Track_Aligned(struct disk *d, u_long offset) u_long Next_Track_Aligned(struct disk *d, u_long offset) u_long Prev_Track_Aligned(struct disk *d, u_long offset) struct chunk * Create_Chunk_DWIM(struct disk *d, struct chunk *parent, u_long size, chunk_e type, int subtype, u_long flags) int MakeDev(struct chunk *c, const char *path) int MakeDevDisk(struct disk *d, const char *path) char * ShowChunkFlags(struct chunk *c) char * ChunkCanBeRoot(struct chunk *c)

해설
libdisk (은)는, 저레벨의 디스크 슬라이스 및 파티션 label에 대한 인터페이스를 제공합니다. 대부분의 함수는, ‘struct disk’ 또는 ‘struct chunk’ 그렇다고 하는 형태의 인수를 취해 동작합니다.

어느 쪽의 형태도 프로그래머에게는 이해하기 어렵기 때문에, 완전을 기하기 위해서 이하에 내부 구조를 나타냅니다.

    struct disk {
    	char		*name;
    	u_long		flags;
    	u_long		bios_cyl;
    	u_long		bios_hd;
    	u_long		bios_sect;
    	u_char		*bootmgr;
    	u_char		*boot1;
    	u_char		*boot2;
    	struct chunk	*chunks;
    	u_long		sector_size;
    };

함수에 의한 플래그치는 ‘DISK_ON_TRACK’ 만으로, 디스크가 On-Track 디스크 매니저에 의해 조작되고 있는 것을 의미합니다.

    struct chunk {
    	struct chunk	*next;
    	struct chunk	*part;
    	struct disk	*disk;
    	long		offset;
    	u_long		size;
    	u_long		end;
    	char		*name;
    	char		*oname;
    	chunk_e		type;
    	int		subtype;
    	u_long		flags;
    	void		(*private_free)(void*);
    	void		*(*private_clone)(void*);
    	void		*private_data;
    };

‘type’ 필드는 ‘whole, unknown, fat, freebsd, extended, part, unused’ 가운데, 어떤 것인가 하나의 값을 받습니다.

이하는 ‘struct chunk’ 에 두어 ‘flags’ 하지만 취할 수 있는 값입니다.

CHUNK_PAST_1024
    실린더 1024 를 넘고 있기 (위해)때문에, 이 area로부터는 부트 할 수 없습니다.

CHUNK_BSD_COMPAT
    이 area는, BSD 호환이며, ‘wd0s4f -> wd0f’ (와)과 같은 단축형도 사용할 수 있습니다.

CHUNK_ALIGN
    이 area는 정합(align)하고 있지 않으면 안됩니다.

CHUNK_IS_ROOT
    이 ‘part’ 하 rootfs (이어)여, 파티션을 ‘a’ 에 할당합니다.

CHUNK_ACTIVE
    MBR 내의 액티브 슬라이스입니다.

CHUNK_FORCE_ALL
    모든 BIOS 에 의한 지오메트리 해석을 무시해, 주어진 디스크 전체를 강제적으로 FreeBSD 용무로 합니다.

필드 ‘private_data, `private_free', private_clone’ (은)는, 어플리케이션 고유의 데이터, 및 그 관리를 위한 물건입니다. 이 기능이 없으면, 기억역의 관리는 하지 못하고, 클로닝에 의해 포인터가 복제되어도 해방할 수 없게 됩니다.

Open_Disk() (은)는, 이름부 디스크를 open 해, 한 무리 (populated)의 트리를 돌려줍니다.

Clone_Disk() (은)는, 트리의 복제를 작성합니다. “Undo” 기능에 편리합니다.

Free_Disk() (은)는, Open_Disk() 또는 Clone_Disk() 그리고 작성된 트리를 해방합니다.

Debug_Disk() (은)는, 표준 출력 (stdout) 의 트리의 내용을 출력합니다.

Set_Bios_Geom() (은)는, BIOS 가 사용하는 지오메트리를 설정합니다.

Delete_Chunk() (은)는, disk_space 의 area를 해방합니다.

Collapse_Disk() 및 Collapse_Chunk() (은)는, 아직 시험적인 물건이므로 사용해서는 안됩니다.

Create_Chunk() (은)는, 지정된 파라미터를 가지는 area를 생성합니다.

All_FreeBSD() (은)는, 디스크 전체를 하나의 FreeBSD 의 area를 작성합니다. ‘force_all’ 하지만 설정되어 있으면(자), BIOS 에 의한 지오메트리 해석을 모두 무시합니다.

CheckRules() (은)는, 이 디스크 레이아웃이 모순된 구획 규칙에 대한 경고를 캐릭터 라인 ‘char*’ (으)로서 돌려줍니다.

Disk_Names() (은)는, 모든 디스크명 (wd0, wd1 ...)(을)를 격납한 캐릭터 라인군 ‘char**’ (을)를 돌려줍니다. 배열과 같이, 각 포인터를 수동으로 해방하지 않으면 안됩니다.

Set_Boot_Mgr() (은)는, 이 부트 매니저를 디스크상에서 사용하도록(듯이) 설정합니다. Write_Disk() 하지만 불려 갈 때 기입해진 것을 취득합니다.

Set_Boot_Blocks() (은)는, 디스크상에서 사용되는 부트 블록을 설정합니다. Write_Disk() 하지만 불려 갈 때 기입해진 것을 취득합니다.

Write_Disk() (은)는, MBR , 디스크 label, 부트 블록, 부트 매니저 모든 것을 기입합니다.

Cyl_Aligned() (은)는, BIOS 지오메트리에 따라 ‘offset’ 하지만 실린더상에 정합하고 있는지 어떤지를 조사합니다.

Next_Cyl_Aligned() (은)는, BIOS 지오메트리에 따라 ‘offset’ (을)를 다음의 실린더에 끝맺어 배치합니다.

Prev_Cyl_Aligned() (은)는, BIOS 지오메트리에 따라 ‘offset’ (을)를 전의 실린더에 인하해 배치합니다.

Track_Aligned() (은)는, BIOS 지오메트리에 따라 ‘offset’ 하지만 트럭상에 배치되고 있는지 어떤지를 조사합니다.

Next_Track_Aligned() (은)는, BIOS 지오메트리에 따라 ‘offset’ (을)를 다음의 트럭에 끝맺어 배치합니다.

Prev_Track_Aligned() (은)는, BIOS 지오메트리에 따라 ‘offset’ 하지만 트럭상에 배치되고 있는지 어떤지를 조사합니다.

Create_Chunk_DWIM() (은)는, 지정된 친영역내로 지정 사이즈의 파티션을 생성해, 그 포인터를 돌려줍니다. 최초로 발견된 충분한 크기의 미사용 area가 사용됩니다.

MakeDev() (은)는, 이 area의 디바이스 노드를 작성합니다.

MakeDevDisk() (은)는, 디스크상에 있는 모든 area의 디바이스 노드를 작성합니다.

ShowChunkFlags() (은)는, 플래그를 표시하는 캐릭터 라인을 돌려줍니다.

ChunkCanBeRoot() (은)는, area가 ‘/’ (이)가 될 수 있다면 눌을 돌려줍니다.

area명을 나타내는 캐릭터 라인은, 외부 배열 변수 chunk_n (을)를 사용해 직접 액세스 할 수 있습니다.

slice_type_name() (은)는, 지정되었다 ‘type’. ‘subtype’ 에 관련 지을 수 있었던 이름 캐릭터 라인을 돌려줍니다. slice_type_name() 하지만 슬라이스에 대해서 "unknown" 를 돌려주는 것은, 미지의 경우, 즉 ‘/’ 입니다.

저자
-nosplit libdisk (은)는, Poul-Henning Kamp 하지만 작성했습니다.

이 메뉴얼 페이지의 집필자는 Jörg Wunsch 입니다.