tail head cat sleep
QR code linking to this page

Man page  — LIBDISK

명칭

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에 대한 인터페이스 프로그램 라이브러리

내용

프로그램 라이브러리

Interface to Slice and Partition Labels Library (libdisk, -ldisk)

서식

#include <sys/types.h>
#include <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" 를 돌려주는 것은, 미지의 경우, 즉 ‘/’ 입니다.

저자

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

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


LIBDISK (3) March 15, 1996

tail head cat sleep
QR code linking to this page


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

What is this horrible fascination with Unix? The operating system of the 1960s, still gaining in popularity in the 1990s.
— Donald A. Norman