.\" .\" Copyright (c) 1996 Joerg Wunsch .\" .\" All rights reserved. .\" .\" This program is free software. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. .\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT, .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .\" %FreeBSD: src/lib/libdisk/libdisk. 3, v 1.11. 2.10 2001/12/17 10:08:29 ru Exp % .\" " .\" $FreeBSD: doc/ja_JP.eucJP/man/man3/libdisk. 3, v 1.4 2002/05/18 07:12:55 horikawa Exp $ .Dd March 15, 1996 .Dt LIBDISK 3 .Os .Sh ¸íĪ .Nm Open_Disk , .Nm Clone_Disk , .Nm Free_Disk , .Nm Debug_Disk , .Nm Set_Bios_Geom , .Nm Delete_Chunk , .Nm Collapse_Disk , .Nm Collapse_Chunk , .Nm Create_Chunk , .Nm All_FreeBSD , .Nm CheckRules , .Nm Disk_Names , .Nm Set_Boot_Mgr , .Nm Set_Boot_Blocks , .Nm Write_Disk , .Nm Cyl_Aligned , .Nm Next_Cyl_Aligned , .Nm Prev_Cyl_Aligned , .Nm Track_Aligned , .Nm Next_Track_Aligned , .Nm Prev_Track_Aligned , .Nm Create_Chunk_DWIM , .Nm MakeDev , .Nm MakeDevDisk , .Nm ShowChunkFlags , .Nm ChunkCanBeRoot , .Nm chunk_n , .Nm slice_type_name .Nd ½½¶óÀ̽º ¹× ÆÄƼ¼Ç label¿¡ ´ëÇÑ ÀÎÅÍÆäÀ̽º ÇÁ·Î±×·¥ ¶óÀ̺귯¸® .Sh ÇÁ·Î±×·¥ ¶óÀ̺귯¸® .Lb libdisk .Sh ¼­½Ä .In sys/types.h .In libdisk.h .Pp .Vt extern const char *chunk_n[] ; .Ft const char * .Fn slice_type_name "int type" "int subtype" .Ft struct disk * .Fn Open_Disk "const char *devname" .Ft struct disk * .Fn Clone_Disk "struct disk *disk" .Ft void .Fn Free_Disk "struct disk *disk" .Ft void .Fn Debug_Disk "struct disk *disk" .Ft void .Fn Set_Bios_Geom "struct disk *disk" "u_long cyl" "u_long heads" "u_long sects" .Ft int .Fn Delete_Chunk "struct disk *disk" "struct chunk *" .Ft void .Fn Collapse_Disk "struct disk *disk" .Ft int .Fn Collapse_Chunk "struct disk *disk" "struct chunk *chunk" .Ft int .Fn Create_Chunk "struct disk *disk" "u_long offset" "u_long size" "chunk_e type" "int subtype" "u_long flags" .Ft void .Fn All_FreeBSD "struct disk *d" "int force_all" .Ft char * .Fn CheckRules "struct disk *" .Ft char ** .Fn Disk_Names "void" .Ft void .Fn Set_Boot_Mgr "struct disk *d" "const u_char *bootmgr" "const size_t bootmgr_size" .Ft int .Fn Set_Boot_Blocks "struct disk *d" "const u_char *boot1" "const u_char *boot2" .Ft int .Fn Write_Disk "struct disk *d" .Ft int .Fn Cyl_Aligned "struct disk *d" "u_long offset" .Ft u_long .Fn Next_Cyl_Aligned "struct disk *d" "u_long offset" .Ft u_long .Fn Prev_Cyl_Aligned "struct disk *d" "u_long offset" .Ft int .Fn Track_Aligned "struct disk *d" "u_long offset" .Ft u_long .Fn Next_Track_Aligned "struct disk *d" "u_long offset" .Ft u_long .Fn Prev_Track_Aligned "struct disk *d" "u_long offset" .Ft struct chunk * .Fn Create_Chunk_DWIM "struct disk *d" "struct chunk *parent" "u_long size" "chunk_e type" "int subtype" "u_long flags" .Ft int .Fn MakeDev "struct chunk *c" "const char *path" .Ft int .Fn MakeDevDisk "struct disk *d" "const char *path" .Ft char * .Fn ShowChunkFlags "struct chunk *c" .Ft char * .Fn ChunkCanBeRoot "struct chunk *c" .Sh ÇØ¼³ .Nm libdisk (Àº)´Â, Àú·¹º§ÀÇ µð½ºÅ© ½½¶óÀ̽º ¹× ÆÄƼ¼Ç label¿¡ ´ëÇÑ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÕ´Ï´Ù. ´ëºÎºÐÀÇ ÇÔ¼ö´Â, .Ql struct disk ¶Ç´Â .Ql struct chunk ±×·¸´Ù°í ÇÏ´Â ÇüÅÂÀÇ Àμö¸¦ ÃëÇØ µ¿ÀÛÇÕ´Ï´Ù. .Pp ¾î´À ÂÊÀÇ Çüŵµ ÇÁ·Î±×·¡¸Ó¿¡°Ô´Â ÀÌÇØÇÏ±â ¾î·Æ±â ¶§¹®¿¡, ¿ÏÀüÀ» ±âÇϱâ À§Çؼ­ ÀÌÇÏ¿¡ ³»ºÎ ±¸Á¶¸¦ ³ªÅ¸³À´Ï´Ù. .Bd -literal -offset indent 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; }; .Ed ÇÔ¼ö¿¡ ÀÇÇÑ Ç÷¡±×Ä¡´Â .Ql DISK_ON_TRACK ¸¸À¸·Î, µð½ºÅ©°¡ On-Track µð½ºÅ© ¸Å´ÏÀú¿¡ ÀÇÇØ Á¶À۵ǰí ÀÖ´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. .Pp .Bd -literal -offset indent 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; }; .Ed .Ql type Çʵå´Â .Ql whole, unknown, fat, freebsd, extended, part, unused °¡¿îµ¥, ¾î¶² °ÍÀΰ¡ ÇϳªÀÇ °ªÀ» ¹Þ½À´Ï´Ù. .Pp ÀÌÇÏ´Â .Ql struct chunk ¿¡ µÎ¾î .Ql flags ÇÏÁö¸¸ ÃëÇÒ ¼ö ÀÖ´Â °ªÀÔ´Ï´Ù. .Bl -tag -offset indent -width CHUNK_BSD_COMPATXX .It CHUNK_PAST_1024 ½Ç¸°´õ 1024 ¸¦ ³Ñ°í ÀÖ±â (À§ÇØ)¶§¹®¿¡, ÀÌ area·ÎºÎÅÍ´Â ºÎÆ® ÇÒ ¼ö ¾ø½À´Ï´Ù. .It CHUNK_BSD_COMPAT ÀÌ area´Â, .Bx ȣȯÀ̸ç, .Ql wd0s4f -> wd0f (¿Í)°ú °°Àº ´ÜÃàÇüµµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. .It CHUNK_ALIGN ÀÌ area´Â Á¤ÇÕ(align)Çϰí ÀÖÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. .It CHUNK_IS_ROOT ÀÌ .Ql part ÇÏ rootfs (À̾î)¿©, ÆÄƼ¼ÇÀ» .Ql a ¿¡ ÇÒ´çÇÕ´Ï´Ù. .It CHUNK_ACTIVE MBR ³»ÀÇ ¾×Ƽºê ½½¶óÀ̽ºÀÔ´Ï´Ù. .It CHUNK_FORCE_ALL ¸ðµç BIOS ¿¡ ÀÇÇÑ Áö¿À¸ÞÆ®¸® ÇØ¼®À» ¹«½ÃÇØ, ÁÖ¾îÁø µð½ºÅ© Àüü¸¦ °­Á¦ÀûÀ¸·Î .Fx ¿ë¹«·Î ÇÕ´Ï´Ù. .El .Pp Çʵå .Ql private_data, `private_free', private_clone (Àº)´Â, ¾îÇø®ÄÉÀÌ¼Ç °íÀ¯ÀÇ µ¥ÀÌÅÍ, ¹× ±× °ü¸®¸¦ À§ÇÑ ¹°°ÇÀÔ´Ï´Ù. ÀÌ ±â´ÉÀÌ ¾øÀ¸¸é, ±â¾ï¿ªÀÇ °ü¸®´Â ÇÏÁö ¸øÇϰí, Ŭ·Î´×¿¡ ÀÇÇØ Æ÷ÀÎÅͰ¡ º¹Á¦µÇ¾îµµ ÇØ¹æÇÒ ¼ö ¾ø°Ô µË´Ï´Ù. .Pp .Fn Open_Disk (Àº)´Â, À̸§ºÎ µð½ºÅ©¸¦ open ÇØ, ÇÑ ¹«¸® (populated)ÀÇ Æ®¸®¸¦ µ¹·ÁÁÝ´Ï´Ù. .Pp .Fn Clone_Disk (Àº)´Â, Æ®¸®ÀÇ º¹Á¦¸¦ ÀÛ¼ºÇÕ´Ï´Ù. .Dq Undo ±â´É¿¡ Æí¸®ÇÕ´Ï´Ù. .Pp .Fn Free_Disk (Àº)´Â, .Fn Open_Disk ¶Ç´Â .Fn Clone_Disk ±×¸®°í ÀÛ¼ºµÈ Æ®¸®¸¦ ÇØ¹æÇÕ´Ï´Ù. .Pp .Fn Debug_Disk (Àº)´Â, Ç¥ÁØ Ãâ·Â (stdout) ÀÇ Æ®¸®ÀÇ ³»¿ëÀ» Ãâ·ÂÇÕ´Ï´Ù. .Pp .Fn Set_Bios_Geom (Àº)´Â, BIOS °¡ »ç¿ëÇÏ´Â Áö¿À¸ÞÆ®¸®¸¦ ¼³Á¤ÇÕ´Ï´Ù. .Pp .Fn Delete_Chunk (Àº)´Â, disk_space ÀÇ area¸¦ ÇØ¹æÇÕ´Ï´Ù. .Pp .Fn Collapse_Disk ¹× .Fn Collapse_Chunk (Àº)´Â, ¾ÆÁ÷ ½ÃÇèÀûÀÎ ¹°°ÇÀ̹ǷΠ»ç¿ëÇØ¼­´Â ¾ÈµË´Ï´Ù. .Pp .Fn Create_Chunk (Àº)´Â, ÁöÁ¤µÈ ÆÄ¶ó¹ÌÅ͸¦ °¡Áö´Â area¸¦ »ý¼ºÇÕ´Ï´Ù. .Pp .Fn All_FreeBSD (Àº)´Â, µð½ºÅ© Àüü¸¦ ÇϳªÀÇ .Fx ÀÇ area¸¦ ÀÛ¼ºÇÕ´Ï´Ù. .Ql force_all ÇÏÁö¸¸ ¼³Á¤µÇ¾î ÀÖÀ¸¸é(ÀÚ), BIOS ¿¡ ÀÇÇÑ Áö¿À¸ÞÆ®¸® ÇØ¼®À» ¸ðµÎ ¹«½ÃÇÕ´Ï´Ù. .Pp .Fn CheckRules (Àº)´Â, ÀÌ µð½ºÅ© ·¹À̾ƿôÀÌ ¸ð¼øµÈ ±¸È¹ ±ÔÄ¢¿¡ ´ëÇÑ °æ°í¸¦ ij¸¯ÅÍ ¶óÀÎ .Ql char* (À¸)·Î¼­ µ¹·ÁÁÝ´Ï´Ù. .Pp .Fn Disk_Names (Àº)´Â, ¸ðµç µð½ºÅ©¸í (wd0, wd1 ...)(À»)¸¦ °Ý³³ÇÑ Ä³¸¯ÅÍ ¶óÀαº .Ql char** (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù. ¹è¿­°ú °°ÀÌ, °¢ Æ÷ÀÎÅ͸¦ ¼öµ¿À¸·Î ÇØ¹æÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. .Pp .Fn Set_Boot_Mgr (Àº)´Â, ÀÌ ºÎÆ® ¸Å´ÏÀú¸¦ µð½ºÅ©»ó¿¡¼­ »ç¿ëÇϵµ·Ï(µíÀÌ) ¼³Á¤ÇÕ´Ï´Ù. .Fn Write_Disk ÇÏÁö¸¸ ºÒ·Á °¥ ¶§ ±âÀÔÇØÁø °ÍÀ» ÃëµæÇÕ´Ï´Ù. .Pp .Fn Set_Boot_Blocks (Àº)´Â, µð½ºÅ©»ó¿¡¼­ »ç¿ëµÇ´Â ºÎÆ® ºí·ÏÀ» ¼³Á¤ÇÕ´Ï´Ù. .Fn Write_Disk ÇÏÁö¸¸ ºÒ·Á °¥ ¶§ ±âÀÔÇØÁø °ÍÀ» ÃëµæÇÕ´Ï´Ù. .Pp .Fn Write_Disk (Àº)´Â, MBR , µð½ºÅ© label, ºÎÆ® ºí·Ï, ºÎÆ® ¸Å´ÏÀú ¸ðµç °ÍÀ» ±âÀÔÇÕ´Ï´Ù. .Pp .Fn Cyl_Aligned (Àº)´Â, BIOS Áö¿À¸ÞÆ®¸®¿¡ µû¶ó .Ql offset ÇÏÁö¸¸ ½Ç¸°´õ»ó¿¡ Á¤ÇÕÇϰí ÀÖ´ÂÁö ¾î¶²Áö¸¦ Á¶»çÇÕ´Ï´Ù. .Pp .Fn Next_Cyl_Aligned (Àº)´Â, BIOS Áö¿À¸ÞÆ®¸®¿¡ µû¶ó .Ql offset (À»)¸¦ ´ÙÀ½ÀÇ ½Ç¸°´õ¿¡ ³¡¸Î¾î ¹èÄ¡ÇÕ´Ï´Ù. .Pp .Fn Prev_Cyl_Aligned (Àº)´Â, BIOS Áö¿À¸ÞÆ®¸®¿¡ µû¶ó .Ql offset (À»)¸¦ ÀüÀÇ ½Ç¸°´õ¿¡ ÀÎÇÏÇØ ¹èÄ¡ÇÕ´Ï´Ù. .Pp .Fn Track_Aligned (Àº)´Â, BIOS Áö¿À¸ÞÆ®¸®¿¡ µû¶ó .Ql offset ÇÏÁö¸¸ Æ®·°»ó¿¡ ¹èÄ¡µÇ°í ÀÖ´ÂÁö ¾î¶²Áö¸¦ Á¶»çÇÕ´Ï´Ù. .Pp .Fn Next_Track_Aligned (Àº)´Â, BIOS Áö¿À¸ÞÆ®¸®¿¡ µû¶ó .Ql offset (À»)¸¦ ´ÙÀ½ÀÇ Æ®·°¿¡ ³¡¸Î¾î ¹èÄ¡ÇÕ´Ï´Ù. .Pp .Fn Prev_Track_Aligned (Àº)´Â, BIOS Áö¿À¸ÞÆ®¸®¿¡ µû¶ó .Ql offset ÇÏÁö¸¸ Æ®·°»ó¿¡ ¹èÄ¡µÇ°í ÀÖ´ÂÁö ¾î¶²Áö¸¦ Á¶»çÇÕ´Ï´Ù. .Pp .Fn Create_Chunk_DWIM (Àº)´Â, ÁöÁ¤µÈ Ä£¿µ¿ª³»·Î ÁöÁ¤ »çÀÌÁîÀÇ ÆÄƼ¼ÇÀ» »ý¼ºÇØ, ±× Æ÷ÀÎÅ͸¦ µ¹·ÁÁÝ´Ï´Ù. ÃÖÃÊ·Î ¹ß°ßµÈ ÃæºÐÇÑ Å©±âÀÇ ¹Ì»ç¿ë area°¡ »ç¿ëµË´Ï´Ù. .Pp .Fn MakeDev (Àº)´Â, ÀÌ areaÀÇ µð¹ÙÀ̽º ³ëµå¸¦ ÀÛ¼ºÇÕ´Ï´Ù. .Pp .Fn MakeDevDisk (Àº)´Â, µð½ºÅ©»ó¿¡ ÀÖ´Â ¸ðµç areaÀÇ µð¹ÙÀ̽º ³ëµå¸¦ ÀÛ¼ºÇÕ´Ï´Ù. .Pp .Fn ShowChunkFlags (Àº)´Â, Ç÷¡±×¸¦ Ç¥½ÃÇϴ ij¸¯ÅÍ ¶óÀÎÀ» µ¹·ÁÁÝ´Ï´Ù. .Pp .Fn ChunkCanBeRoot (Àº)´Â, area°¡ .Ql / (ÀÌ)°¡ µÉ ¼ö ÀÖ´Ù¸é ´­À» µ¹·ÁÁÝ´Ï´Ù. .Pp area¸íÀ» ³ªÅ¸³»´Â ij¸¯ÅÍ ¶óÀÎÀº, ¿ÜºÎ ¹è¿­ º¯¼ö .Va chunk_n (À»)¸¦ »ç¿ëÇØ Á÷Á¢ ¾×¼¼½º ÇÒ ¼ö ÀÖ½À´Ï´Ù. .Pp .Fn slice_type_name (Àº)´Â, ÁöÁ¤µÇ¾ú´Ù .Ql type . .Ql subtype ¿¡ °ü·Ã ÁöÀ» ¼ö ÀÖ¾ú´ø À̸§ ij¸¯ÅÍ ¶óÀÎÀ» µ¹·ÁÁÝ´Ï´Ù. .Fn slice_type_name ÇÏÁö¸¸ ½½¶óÀ̽º¿¡ ´ëÇØ¼­ "unknown" ¸¦ µ¹·ÁÁÖ´Â °ÍÀº, ¹ÌÁöÀÇ °æ¿ì, Áï .Ql / ÀÔ´Ï´Ù. .Pp .Sh ÀúÀÚ .An -nosplit .Nm libdisk (Àº)´Â, .An Poul-Henning Kamp ÇÏÁö¸¸ ÀÛ¼ºÇß½À´Ï´Ù. .Pp ÀÌ ¸Þ´º¾ó ÆäÀÌÁöÀÇ ÁýÇÊÀÚ´Â .An J\(:org Wunsch ÀÔ´Ï´Ù.