.\" Copyright (c) 1987, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" Symmetric Computer Systems. .\" .\" 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. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgment: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. .\" .\" @(#) disklabel. 5.5 8.1 (Berkeley) 6/5/93 .\" %FreeBSD: src/sbin/disklabel/disklabel. 5, v 1.7. 2.4 2002/08/21 18:58:16 trhodes Exp % .\" .\" $FreeBSD: doc/ja_JP.eucJP/man/man5/disklabel. 5, v 1.13 2002/08/26 02:34:11 horikawa Exp $ .\" .\" WORD: initial bootstrap Ãʱâ bootstrap .\" WORD: initial label Ãʱâ label .\" WORD: primary bootstrap ÀÏÂ÷ bootstrap .\" WORD: secondary bootstrap 2Â÷ bootstrap .\" WORD: ratio of physical sectors traversed per logical sector ³í¸® ¼½ÅÍ ±ÙóÀÇ ¹°¸® ¼½ÅÍ Åë°úÀ² .\" .Dd June 5, 1993 .Dt DISKLABEL 5 .Os .Sh ¸íĪ .Nm disklabel .Nd µð½ºÅ© ÆÑ label .Sh ¼­½Ä .In sys/disklabel.h .Sh ÇØ¼³ ½Ã½ºÅÛ»óÀÇ °¢°¢ÀÇ µð½ºÅ©³ª µð½ºÅ© ÆÑÀº, µð½ºÅ©ÀÇ Áö¿À¸ÞÆ®¸® (ÀÌ)³ª µð½ºÅ©¸¦ ºÐÇÒÇϰí ÀÖ´Â ÆÄƼ¼Ç¿¡ ´ëÇÑ »ó¼¼ÇÑ Á¤º¸¸¦ Á¦°øÇÑ´Ù µð½ºÅ© label¸¦ °¡Áö°í ÀÖ½À´Ï´Ù. µð½ºÅ© label´Â µð½ºÅ©°¡ Æ÷¸Ë µÇ¾úÀ» ¶§¿¡ ÃʱâÈ­µÇÁö ¾ÊÀ¸¸é ¾ÈµÇ¾î, ³ªÁß¿¡ .Xr disklabel 8 ÇÁ·Î±×·¥¿¡ ÀÇÇØ º¯°æÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ½Ã½ºÅÛµðÅ©½ºµå¶óÀ̹ٳª bootstrap ÇÁ·Î±×·¥ÀÌ ÀÌ Á¤º¸¸¦ »ç¿ëÇØ, µå¶óÀ̺êÀÇ ÇÁ·Î±×·¥ ¹æ¹ýÀ̳ª, µð½ºÅ© ÆÐƼ¼Ç»óÀÇ ÆÄÀÏ ½Ã½ºÅÛÀÇ Ã£¾Æ³»´Â ¹æ¹ýÀ» °áÁ¤ÇÕ´Ï´Ù. ÆÄÀÏ ½Ã½ºÅÛÀº, ºÎ°¡ÀûÀÎ Á¤º¸¸¦ »ç¿ëÇØ µð½ºÅ©¸¦ °¡Àå È¿°úÀûÀ¸·Î »ç¿ëÇØ, Áß¿äÇÑ ÆÄÀÏ ½Ã½ºÅÛ Á¤º¸ÀÇ À§Ä¡¸¦ ƯÁ¤ÇÕ´Ï´Ù. °¢ ÆÄƼ¼ÇÀÇ ±â¼úÀº, ÆÄƼ¼Ç ŸÀÔ(Ç¥ÁØ ÆÄÀÏ, ½º¿Ò areaµî )ÀÇ ½Äº°ÀÚ¸¦ Æ÷ÇÔÇÕ´Ï´Ù. labelÀÇ ¸Þ¸ð¸®³» Ä«ÇÇ¿¡ ÀÖ´Â ÆÄÀÏ ½Ã½ºÅÛ Á¤º¸°¡ ºÒ¿ÏÀüÇÑ °æ¿ì¿¡´Â, ÆÄÀÏ ½Ã½ºÅÛÀº ±×°ÍÀ» °»½ÅÇÕ´Ï´Ù. .Pp label´Â, µå¶óÀ̺êÀÇ ¼½ÅÍ ¹øÈ£ .Dv LABELSECTOR ¿¡ ÀÖ½À´Ï´Ù. Åë»óÀº, µð½ºÅ©Áö¿À¸ÞÆ®¸®¿¡ ´ëÇÑ Á¤º¸°¡ ¾ø¾îµµ ã¾Æ³¾ ¼ö ÀÖ´Â, ¼½ÅÍ 0 ¿¡ ÀÖ½À´Ï´Ù. label´Â, Ãʱâ bootstrapÀÇ Àå¼Ò¸¦ È®º¸Çϱâ À§Çؼ­, ¼½ÅÍÀÇ ¼±µÎ·ÎºÎÅÍ ¿ÀÇÁ¼Â(offset) .Dv LABELOFFSET ¿¡ ÀÖ½À´Ï´Ù. label¸¦ Æ÷ÇÔÇÑ µð½ºÅ© ¼½ÅÍ´Â, Åë»ó Àбâ Àü¿ëÀÌ µÇ¾î ÀÖ½À´Ï´Ù. À̰ÍÀº, ÆÑÀ¸·ÎºÎÅÍ ÆÑ¿¡ÀÇ º¹»ç³ª ½º¿Ò Á¶À۽ÿ¡ .Xr disklabel 8 ÇÁ·Î±×·¥¿¡ ÀÇÇØ Çʿ信 µû¶ó¼­ ÇàÇØÁø´Ù .Dv DIOCWLABEL .Xr ioctl 2 ¿¡ ÀÇÇØ Á¶½É¼º¾ø°Ô µ¡¾²±âµÇÁö ¾Ê°Ô Çϱâ (À§ÇØ)¶§¹®ÀÔ´Ï´Ù. .Pp µð½ºÅ©ÀÇ ¸Þ¸ð¸®³» label Ä«ÇÇ´Â .Dv DIOCGDINFO .Xr ioctl 2 ±×¸®°í ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. ÀÌ Á¶ÀÛÀº, µð½ºÅ©ÀÇ ÀÓÀÇÀÇ ÆÄƼ¼Ç¿¡ ´ëÇÑ ºí·Ï µð¹ÙÀ̽º³ª ij¸¯ÅÍ (``raw'') µð¹ÙÀ̽º¿¡ÀÇ ÆÄÀÏ ±â¼úÀÚ¿¡ ´ëÇØ¼­ ½Ç½ÃÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ¶Ç, µð½ºÅ©ÀÇ ¸Þ¸ð¸®³» label Ä«ÇÇ´Â .Dv DIOCSDINFO .Xr ioctl 2 ¿¡ ÀÇÇØ ¼¼Æ® µË´Ï´Ù. ÆÄƼ¼ÇÀÇ ¿ÀÇÁ¼Â(offset)´Â, ÀϹÝÀûÀ¸·Î ÆÄƼ¼ÇÀÌ ¿Àǵǰí ÀÖ´Ù ¶§·Î´Â º¯°æÇϰųª ÀÛ°Ô Çϰųª´Â ÇÒ ¼ö ¾ø½À´Ï´Ù. ´Ù¸¸ ¿¹¿Ü·Î¼­ µð½ºÅ©¿¡ label°¡ ¹ß°ßµÇÁö ¾Ê°í, µå¶óÀ̹ö°¡ ÆÄƼ¼Ç Á¤º¸¸¦ Æ÷ÇÔÇÏÁö ¾Ê´Â »À´ëÀÇ label¸¸À» ±¸ÃàÇÒ ¼ö ÀÖÀ» ¶§´Â, ¾î¶² º¯°æµµ ¿ë¼­µË´Ï´Ù. ¸¶Áö¸·À¸·Î, .Dv DIOCWDINFO .Xr ioctl 2 Á¶ÀÛÀÌ ¸Þ¸ð¸®³»ÀÇ label¸¦ ¼¼Æ® ÇØ, µð½ºÅ©»óÀÇ label¸¦ °»½ÅÇÕ´Ï´Ù. ÀÌ Á¶ÀÛÀÌ ¼º°øÇϱâ À§Çؼ­(¶§¹®¿¡)´Â µð½ºÅ©»ó¿¡ label°¡ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. Áï, µð½ºÅ©³ª µð½ºÅ© ÆÑÀÇ Ãʱâ label´Â »ýÀÇ (raw) µð½ºÅ©¿¡ ´ëÇØ ±âÀÔÇÏ´Â °ÍÀ¸·Î ÀνºÅç µÇÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ÀÌ·¯ÇÑ Á¶ÀÛÀº ¸ðµÎ, º¸Åë .Xr disklabel 8 ¸í·ÉÀ» »ç¿ëÇØ ÇàÇØÁý´Ï´Ù. .Pp .Pa ±×¸®°í ÁöÁ¤µÇµµ·Ï(µíÀÌ) µð½ºÅ© labelÀÇ Æ÷¸ËÀº ÀÌÇÏ¿Í °°ÀÌ µË´Ï´Ù. .Bd -literal #ifndef _SYS_DISKLABEL_H_ #define _SYS_DISKLABEL_H_ #ifndef _KERNEL #include #endif #include /* * µð½ºÅ© ±â¼ú Å×À̺í, disktab(5)¸¦ ÂüÁ¶ */ #define _PATH_DISKTAB "/etc/disktab" #define DISKTAB "/etc/disktab" /* ºñÃßõ */ /* * °¢ µð½ºÅ©´Â Çϵå¿þ¾Æµð½ºÅ©Áö¿À¸ÞÆ®¸®, ÆÄÀÏ ½Ã½ºÅÛ ÆÄƼ¼Ç, * µå¶óÀÌºê °íÀ¯ÀÇ Á¤º¸¿¡ ´ëÇÑ Á¤º¸¸¦ Æ÷ÇÔÇÑ label¸¦ °¡Áö°í ÀÖ½À´Ï´Ù. * label´Â ºí·Ï 0 À̳ª 1, Áï bootstrapµîÀ» À§ÇÑ Àå¼Ò¸¦ ºñ¿ö * °¡´ÉÇÑ ÇÑ ¼±µÎÀÇ ¿ÀÇÁ¼Â(offset)¿¡ ÀÖ½À´Ï´Ù. */ /* * XXX ÀÌ·¯ÇÑ Á¤º¸´Â ÄÜÆ®·Ñ·¯¸¶´Ù (¶Ç´Â µå¶óÀ̺긶´Ù)¿¡ ¾îµò°¡ ´Ù¸¥ °÷¿¡¼­ * XXX Á¤ÀÇ µÇ´Â °ÍÀÌ ´ç¿¬ÇØ, ¿©±â¼­ Á¤ÀÇÇØ¾ß ÇÏÁö´Â ¾Ê½À´Ï´Ù! */ #ifdef __i386__ #define LABELSECTOR 1 /* sector containing label */ #define LABELOFFSET 0 /* offset of label in sector */ #endif #ifdef __alpha__ #define LABELSECTOR 0 #define LABELOFFSET 64 #endif #ifndef LABELSECTOR #define LABELSECTOR 0 /* label¸¦ Æ÷ÇÔÇÑ ¼½ÅÍ */ #endif #ifndef LABELOFFSET #define LABELOFFSET 64 /* ¼½Åͳ»ÀÇ labelÀÇ ¿ÀÇÁ¼Â(offset) */ #endif #define DISKMAGIC ((u_long32_t) 0x82564557) /* µð½ºÅ©ÀÇ magic number */ #ifndef MAXPARTITIONS #define MAXPARTITIONS 8 #endif #define LABEL_PART 2 /* ÆÄƼ¼ÇÀº label¸¦ Æ÷ÇÔÇÑ´Ù */ #define RAW_PART 2 /* ÆÄƼ¼ÇÀº µð½ºÅ© Àüü¸¦ Æ÷ÇÔÇÑ´Ù */ #define SWAP_PART 1 /* ÆÄƼ¼ÇÀº Åë»óÀº ½º¿ÒÀ» Æ÷ÇÔÇÑ´Ù */ #ifndef LOCORE struct disklabel { u_int32_t d_magic; /* magic number */ u_int16_t d_type; /* µå¶óÀ̺ê ŸÀÔ */ u_int16_t d_subtype; /* ÄÜÆ®·Ñ·¯ /d_type ¿¡ °íÀ¯ */ char d_typename[16]; /* ŸÀÔ¸í, ¿¹¸¦ µé¾î "eagle" */ /* * d_packname ´Â, ÆÑ ½Äº°ÀÚ¸¦ Æ÷ÇÔÇØ, µð½ºÅ©»óÀ̳ª ¸Þ¸ð¸®³» Ä«ÇÇÀÇ * µð½ºÅ© label¸¦ ÀоúÀ» ¶§¿¡ µ¹·ÁÁÖ¾îÁý´Ï´Ù. * d_boot0 ¿Í d_boot1 ´Â, /boot ¿¡ ÀÖ´Â ÀÏÂ÷ (block 0) ¶Ç´Â * 2Â÷ (block 1-15) bootstrapÀÇ (»ý·« °¡´ÉÇÑ) À̸§ÀÔ´Ï´Ù. * ÀÌ À̸§Àº, /etc/disktab ·ÎºÎÅÍ °ªÀ» ²¨³»±â À§Çؼ­(¶§¹®¿¡) getdiskbyname(3) * (À»)¸¦ »ç¿ëÇÏ´Â °æ¿ì¿¡ µ¹·ÁÁÖ¾îÁý´Ï´Ù. */ union { char un_d_packname[16]; /* ÆÑ ½Äº°ÀÚ */ struct { char *un_d_boot0; /* ÀÏÂ÷ bootstrap¸í */ char *un_d_boot1; /* 2Â÷ bootstrap¸í */ } un_b; } d_un; #define d_packname d_un.un_d_packname #define d_boot0 d_un.un_b.un_d_boot0 #define d_boot1 d_un.un_b.un_d_boot1 /* µð½ºÅ©Áö¿À¸ÞÆ®¸® */ u_int32_t d_secsize; /* ¼½ÅÍ ±ÙóÀÇ ¹ÙÀÌÆ®¼ö */ u_int32_t d_nsectors; /* Æ®·° ±ÙóÀÇ µ¥ÀÌÅÍ ¼½Åͼö */ u_int32_t d_ntracks; /* ½Ç¸°´õ ±ÙóÀÇ Æ®·°¼ö */ u_int32_t d_ncylinders; /* À¯´ÏÆ® ±ÙóÀÇ µ¥ÀÌÅÍ ½Ç¸°´õ¼ö */ u_int32_t d_secpercyl; /* ½Ç¸°´õ ±ÙóÀÇ µ¥ÀÌÅÍ ¼½Åͼö */ u_int32_t d_secperunit; /* À¯´ÏÆ® ±ÙóÀÇ µ¥ÀÌÅÍ ¼½Åͼö */ /* * ÀÌÇÏÀÇ ¿¹ºñ (¹èµå ¼½ÅÍ Ä¡È¯)´Â in d_nsectors ³ª d_secpercyl * ¿¡´Â ¼¿ ¼ö ¾ø½À´Ï´Ù. * ¿¹ºñ ¼½ÅÍ´Â, °¢ Æ®·° ¶Ç´Â ½Ç¸°´õÀÇ ¸»¹ÌÀÇ Àå¼Ò¸¦ Â÷ÁöÇÑ´Ù * ¹°¸® ¼½ÅÍ¿¡ ÀÖ±â·Î ÇϰڽÀ´Ï´Ù. */ u_int16_t d_sparespertrack; /* Æ®·° ±ÙóÀÇ ¿¹ºñ ¼½ÅÍ */ u_int16_t d_sparespercyl; /* ½Ç¸°´õ ±ÙóÀÇ ¿¹ºñ ¼½ÅÍ */ /* * ¸ÞÀÎÆ®³Í½º, ġȯ, ¹èÄ¡ ±â¼ú areaµîÀ» * Æ÷ÇÔÇÑ ±³Ã¼ ½Ç¸°´õ */ u_int32_t d_acylinders; /* À¯´ÏÆ® ±ÙóÀÇ ±³Ã¼ ½Ç¸°´õ */ /* Çϵå¿þ¾î Ư¼º */ /* * d_interleave, d_trackskew, d_cylskew ´Â, ´ÊÀº ÄÜÆ®·Ñ·¯ÀÇ * ¹úÃæ¿¡ »ç¿ëÇϱâ À§ÇÑ, ¹Ìµð¾î Æ÷¸ËÁßÀÇ * Ä¡¿ìħÀ» ±â¼úÇÕ´Ï´Ù. * interleave ´Â, Æ÷¸Ë½Ã¿¡ Æ÷¸ÅÅͳª ÄÜÆ®·Ñ·¯¿¡ * µû¶ó¼­ ¼³Á¤µÇ´Â ¹°¸® ¼¼Å©Å¸ÀΟ¸®ºêÀÔ´Ï´Ù. * ÀΟ¸®ºê°¡ »ç¿ëµÇ°í ÀÖÀ» ¶§, ³í¸®ÀûÀ¸·Î ¼­·Î ÀÌ¿ôÀÌ µÈ ¼½ÅÍ´Â * ¹°¸®ÀûÀ¸·Î´Â ¿¬¼ÓÀÌ ¾Æ´Ï°í, ¸î°³ÀÇ ¼½ÅÍ¿¡ ºÐ´Ü µÇ°í ÀÖ½À´Ï´Ù. * À̰ÍÀº ³í¸® ¼½ÅÍ ±ÙóÀÇ ¹°¸® ¼½ÅÍ Åë°úÀ²·Î¼­ ÁöÁ¤µË´Ï´Ù. * Áï,1:1 ÀÇ ÀΟ¸®ºê´Â ¿¬¼ÓÇÑ ·¹À̾ƿôÀ» ÀǹÌÇØ, * 2:1 (Àº)´Â ³í¸® ¼½ÅÍ 0 ÀÌ ³í¸® ¼½ÅÍ 1 ¿¡¼­ 1 ¼½ÅÍ ¶³¾îÁ® ÀÖ´Â °Í * (À»)¸¦ ÀǹÌÇÕ´Ï´Ù. * d_trackskew ´Â, µ¿ÀÏ ½Ç¸°´õ»ó¿¡¼­ Æ®·° N-1 »óÀÇ ¼½ÅÍ 0 À¸·ÎºÎÅÍ * Æ®·° N ÀÇ ¼½ÅÍ 0 ÀÇ »ó´ëÀûÀÎ ¿ÀÇÁ¼Â(offset)ÀÔ´Ï´Ù. * ¸¶Áö¸· d_cylskew ´Â, ½Ç¸°´õ N-1 »óÀÇ ¼½ÅÍ 0 À¸·ÎºÎÅÍ ½Ç¸°´õ N * À§ÀÇ ¼½ÅÍ 0 ÀÇ »ó´ëÀûÀÎ ¿ÀÇÁ¼Â(offset)ÀÔ´Ï´Ù. */ u_int16_t d_rpm; /* ȸÀü ½ºÇǵå */ u_int16_t d_interleave; /* Çϵå¿þ¾Æ¼¼Å©Å¸ÀΟ¸®ºê */ u_int16_t d_trackskew; /* Æ®·° ±ÙóÀÇ ¼½ÅÍ 0 skew */ u_int16_t d_cylskew; /* ½Ç¸°´õ ±ÙóÀÇ ¼½ÅÍ 0 skew */ u_int32_t d_headswitch; /* ÇÏµå ½ºÀ­Ä¡ ½Ã°£ usec */ u_int32_t d_trkseek; /* Æ®·°°£ ½ÃÅ© usec */ u_int32_t d_flags; /* ÀÏ¹Ý Ç÷¡±× */ #define NDDATA 5 u_int32_t d_drivedata[NDDATA]; /* µå¶óÀ̺êÀÇ ÇüÅ °íÀ¯ÀÇ Á¤º¸ */ #define NSPARE 5 u_int32_t d_spare[NSPARE]; /* Àå·¡ »ç¿ëÇϱâ À§ÇÑ ¿¹ºñ */ u_int32_t d_magic2; /* magic number (ÀçÂ÷) */ u_int16_t d_checksum; /* µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÑ ÆÄƼ¼ÇÀÇ xor */ /* ÆÄÀÏ ½Ã½ºÅÛ°ú ÆÄƼ¼Ç Á¤º¸ */ u_int16_t d_npartitions; /* ÈÄ¿¡ °è¼ÓµÇ´Â ÆÄƼ¼Ç¼ö */ u_int32_t d_bbsize; /* sn0 ÀÇ ºÎÆ® areaÀÇ Å©±â(¹ÙÀÌÆ® ´ÜÀ§) */ u_int32_t d_sbsize; /* fs ½´ÆÛ ºí·ÏÀÇ ÃÖ´ë »çÀÌÁî(¹ÙÀÌÆ® ´ÜÀ§) */ struct partition { /* ÆÄƼ¼Ç Å×À̺í */ u_int32_t p_size; /* ÆÄƼ¼Ç³»ÀÇ ¼½Åͼö */ u_int32_t p_offset; /* °³½Ã ¼½ÅÍ */ u_int32_t p_fsize; /* ÆÄÀÏ ½Ã½ºÅÛ ±ÔÁ¤ fragment »çÀÌÁî */ u_int8_t p_fstype; /* ÆÄÀÏ ½Ã½ºÅÛ Å¸ÀÔ, ¾Æ·¡¿Í °°ÀÌ ÂüÁ¶ */ u_int8_t p_frag; /* ºí·Ï ±ÙóÀÇ ÆÄÀÏ ½Ã½ºÅÛ fragment */ union { u_int16_t cpg; /* UFS: FS ±×·ì ±ÙóÀÇ ½Ç¸°´õ¼ö */ u_int16_t sgs; /* LFS: FS ¼¼±×¸ÕÆ®(segment) ½¬ÇÁÆ® */ } __partition_u1; #define p_cpg __partition_u1.cpg #define p_sgs __partition_u1.sgs } d_partitions[MAXPARTITIONS]; /* ½ÇÁ¦·Î´Â Á» ´õ ÀÖ´Ù */ }; #else /* LOCORE */ /* * asm ºÎÆ® ÆÄÀÏ¿ëÀÇ ¿ÀÇÁ¼Â(offset) */ .set d_secsize, 40 .set d_nsectors, 44 .set d_ntracks, 48 .set d_ncylinders, 52 .set d_secpercyl, 56 .set d_secperunit, 60 .set d_end_, 276 /* µð½ºÅ© labelÀÇ Å©±â */ #endif /* LOCORE */ /* d_type values: */ #define DTYPE_SMD 1 /* SMD, XSMD; VAX hp/up */ #define DTYPE_MSCP 2 /* MSCP */ #define DTYPE_DEC 3 /* ±× ¿ÜÀÇ DEC (rk, rl) */ #define DTYPE_SCSI 4 /* SCSI */ #define DTYPE_ESDI 5 /* ESDI ÀÎÅÍÆäÀ̽º */ #define DTYPE_ST506 6 /* ST506 ¿Ü */ #define DTYPE_HPIB 7 /* HP-IB »óÀÇ CS/80 */ #define DTYPE_HPFL 8 /* HP ÆÄÀ̹ö ¸µÅ© */ #define DTYPE_FLOPPY 10 /* Ç÷ÎÇÇ */ #define DTYPE_CCD 11 /* ÄÜīġ³×ÀÌÆ®È­ µð½ºÅ© */ #define DTYPE_VINUM 12 /* vinum º¼·ý */ #define DTYPE_DOC2K 13 /* Msys DiskOnChip */ #if defined(PC98) && ! defined(PC98_ATCOMPAT) #define DSTYPE_SEC256 0x80 /* ¹°¸® ¼½ÅÍ »çÀÌÁî´Â 256 */ #endif #ifdef DKTYPENAMES static char *dktypenames[] = { "unknown", "SMD", "MSCP", "old DEC", "SCSI", "ESDI", "ST506", "HP-IB", "HP-FL", "type 9", "floppy", "CCD", "Vinum", "DOC2K", NULL }; #define DKMAXTYPES (sizeof(dktypenames) / sizeof(dktypenames[0]) - 1) #endif /* * ÆÄÀÏ ½Ã½ºÅÛ Å¸ÀÔ°ú ¹öÁ¯ * ÆÄƼ¼Ç ±ÙóÀÇ ´Ù¸¥ ÆÄÀÏ ½Ã½ºÅÛ °íÀ¯ Á¤º¸¿¡ »ç¿ëµË´Ï´Ù. */ #define FS_UNUSED 0 /* ¹Ì»ç¿ë */ #define FS_SWAP 1 /* ½º¿Ò */ #define FS_V6 2 /* Á¦ 6 ÆÇ */ #define FS_V7 3 /* Á¦ 7 ÆÇ */ #define FS_SYSV 4 /* System V */ #define FS_V71K 5 /* 7 ÆÇ 1K ºí·Ï (4.1, 2.9) */ #define FS_V8 6 /* 8 ÆÇ 4K ºí·Ï */ #define FS_BSDFFS 7 /* 4.2BSD °í¼Ó ÆÄÀÏ ½Ã½ºÅÛ */ #define FS_MSDOS 8 /* MSDOS ÆÄÀÏ ½Ã½ºÅÛ */ #define FS_BSDLFS 9 /* 4.4BSD ·Î±× ±¸Á¶ ÆÄÀÏ ½Ã½ºÅÛ */ #define FS_OTHER 10 /* »ç¿ëÁßÀÌÁö¸¸ ¹ÌÁö/¹Ì¼­Æ÷Æ® */ #define FS_HPFS 11 /* OS/2 °í¼º´É ÆÄÀÏ ½Ã½ºÅÛ */ #define FS_ISO9660 12 /* ISO 9660, Åë»óÀº CD-ROM */ #define FS_BOOT 13 /* bootstrap¸¦ Æ÷ÇÔÇÑ ÆÄƼ¼Ç */ #define FS_VINUM 14 /* Vinum µå¶óÀ̺ê */ #ifdef DKTYPENAMES static char *fstypenames[] = { "unused", "swap", "Version 6", "Version 7", "System V", "4.1BSD", "Eighth Edition", "4.2BSD", "MSDOS", "4.4LFS", "unknown", "HPFS", "ISO9660", "boot", "vinum", NULL }; #define FSMAXTYPES (sizeof(fstypenames) / sizeof(fstypenames[0]) - 1) #endif /* * ´Ù¾çÇÑ µå¶óÀ̺갡 °øÀ¯ÇÏ´Â Ç÷¡±× */ #define D_REMOVABLE 0x01 /* ¸®¸ðÆ® ¹Ìµð¾î */ #define D_ECC 0x02 /* ECC ¼­Æ÷Æ® */ #define D_BADSECT 0x04 /* À߸øµÈ ¼½ÅÍ Æ÷¿öµåÀÇ ¼­Æ÷Æ® */ #define D_RAMDISK 0x08 /* µð½ºÅ© ¿¡¹Ä·¹ÀÌÅÍ */ #define D_CHAIN 0x10 /* ¿¬¼Ó Àü¼Û °¡´É */ /* * SMD ÀÇ µå¶óÀÌºê µ¥ÀÌÅÍ */ #define d_smdflags d_drivedata[0] #define D_SSE 0x1 /* ¼½ÅÍ ½ºÅµÀÇ ¼­Æ÷Æ® */ #define d_mindist d_drivedata[1] #define d_maxdist d_drivedata[2] #define d_sdist d_drivedata[3] /* * ST506 ÀÇ µå¶óÀÌºê µ¥ÀÌÅÍ */ #define d_precompcyl d_drivedata[0] #define d_gap3 d_drivedata[1] /* Æ÷¸Ë½Ã¿¡°Ô¸¸ »ç¿ë */ /* * SCSI ÀÇ µå¶óÀÌºê µ¥ÀÌÅÍ */ #define d_blind d_drivedata[0] #ifndef LOCORE /* * Æ÷¸ËÀ̳ª »ýÀÇ Á¶ÀÛÀ» ÇÒ ¶§¿¡ »ç¿ëµÈ´Ù * ±¸Á¶Ã¼·Î, µ¥ÀÌÅͳª ·¹Áö½ºÅÍÄ¡¸¦ µ¹·ÁÁÝ´Ï´Ù. * ·¹Áö½ºÅÍÀÇ ½Äº°°ú Æ÷¸ËÀº, * µð¹ÙÀ̽º ÀÇÁ¸, µå¶óÀ̹ö ÀÇÁ¸ÀÔ´Ï´Ù. */ struct format_op { char *df_buf; int df_count; /* Ä¡-°á°ú */ daddr_t df_startblk; int df_reg[8]; /* °á°ú */ }; /* * µð½ºÅ©»óÀÇ ÆÄƼ¼Ç¿¡ °üÇÑ Á¤º¸¸¦ * ²¨³»±â À§Çؼ­(¶§¹®¿¡) ³»ºÎ¿¡¼­ »ç¿ëµÇ´Â ±¸Á¶Ã¼ */ struct partinfo { struct disklabel *disklab; struct partition *part; }; /* DOS ÆÄƼ¼Ç Å×À̺í -- ºÎÆ® ºí·Ï¿¡ ÀÖ½À´Ï´Ù */ #if defined(PC98) && ! defined(PC98_ATCOMPAT) #define DOSBBSECTOR 0 /* DOS ºÎÆ® ºí·ÏÀÇ »ó´ë ¼½ÅÍ ¹øÈ£ */ #define DOSLABELSECTOR 1 /* 0: 256b/s, 1: 512b/s */ #define DOSPARTOFF 0 #define NDOSPART 16 #define DOSPTYP_386BSD 0x94 /* 386BSD ÆÄƼ¼Ç ŸÀÔ */ #define MBR_PTYPE_FreeBSD 0x94 /* FreeBSD ÆÄƼ¼Ç ŸÀÔ */ struct dos_partition { unsigned char dp_mid; #define DOSMID_386BSD (0x14|0x80) /* 386bsd|bootable */ unsigned char dp_sid; #define DOSSID_386BSD (0x44|0x80) /* 386bsd|active */ unsigned char dp_dum1; unsigned char dp_dum2; unsigned char dp_ipl_sct; unsigned char dp_ipl_head; unsigned short dp_ipl_cyl; unsigned char dp_ssect; /* ¼±µÎ ¼½ÅÍ */ unsigned char dp_shd; /* ¼±µÎ Çìµå */ unsigned short dp_scyl; /* ¼±µÎ ½Ç¸°´õ */ unsigned char dp_esect; /* Á¾´Ü ¼½ÅÍ */ unsigned char dp_ehd; /* Á¾´Ü Çìµå */ unsigned short dp_ecyl; /* Á¾´Ü ½Ç¸°´õ */ unsigned char dp_name[16]; }; #else /* IBMPC */ #define DOSBBSECTOR 0 /* DOS ºÎÆ® ºí·ÏÀÇ »ó´ë ¼½ÅÍ ¹øÈ£ */ #define DOSPARTOFF 446 #define NDOSPART 4 #define DOSPTYP_386BSD 0xa5 /* 386BSD ÆÄƼ¼Ç ŸÀÔ */ struct dos_partition { unsigned char dp_flag; /* bootstrap Ç÷¡±× */ unsigned char dp_shd; /* ¼±µÎ Çìµå */ unsigned char dp_ssect; /* ¼±µÎ ¼½ÅÍ */ unsigned char dp_scyl; /* ¼±µÎ ½Ç¸°´õ */ unsigned char dp_typ; /* ÆÄƼ¼Ç ŸÀÔ */ unsigned char dp_ehd; /* Á¾´Ü Çìµå */ unsigned char dp_esect; /* Á¾´Ü ¼½ÅÍ */ unsigned char dp_ecyl; /* Á¾´Ü ½Ç¸°´õ */ u_int32_t dp_start; /* Àý´ëÀûÀÎ ¼±µÎ ¼½ÅÍ ¹øÈ£ */ u_int32_t dp_size; /* ¼½Åͼö¿¡¼­ÀÇ ÆÄƼ¼Ç »çÀÌÁî */ }; #endif #define DPSECT(s) ((s) & 0x3f) /* ¼½ÅÍ¿ëÀÇ ºñÆ®ÀÇ ºÐ¸® */ #define DPCYL(c, s) ((c) + (((s) & 0xc0)<<2)) /* ÀÌÂÊÀº ½Ç¸°´õ¿ë */ /* * µð½ºÅ© °íÀ¯ÀÇ ioctl */ /* µð½ºÅ© labelÀÇ Ãëµæ°ú ¼³Á¤; ³»ºÎ¿¡¼­´Â DIOCGPART °¡ »ç¿ëµÈ´Ù */ #define DIOCGDINFO _IOR('d', 101, struct disklabel)/* Ãëµæ */ #define DIOCSDINFO _IOW('d', 102, struct disklabel)/* ¼³Á¤ */ #define DIOCWDINFO _IOW('d', 103, struct disklabel)/* ¼³Á¤, µð½ºÅ© °»½Å */ #define DIOCGPART _IOW('d', 104, struct partinfo) /* ÆÄƼ¼Ç Ãëµæ */ #define DIOCWLABEL _IOW('d', 109, int) /* labelÀÇ ±âÀÔ°¡´É/ºÒ°¡ */ #ifdef _KERNEL /* * XXX µð½ºÅ©¸¶À̳ª ¹øÈ£ÀÇ ÀÎÄÚµùÀº ´Ù¸¥ °÷¿¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù. * * º¸´Ù ÁÁÀ» °¡´É¼ºÀÇ ÀÎÄÚµù¿¡ ´ëÇØ¼­´Â À» ÂüÁ¶ÇØ ÁֽʽÿÀ. * * "cpio -H newc" ·Î Å« ¸¶À̳ª ¹øÈ£ÀÇ µð¹ÙÀ̽º ÆÄÀÏ (±×·¯³ª 2^31 ¹Ì¸¸) * (À»)¸¦ ¹é¾÷ °¡´ÉÇÕ´Ï´Ù. ³°Àº cpio Æ÷¸Ë°ú Àü tar Æ÷¸Ë¿¡¼­´Â * ºñÆ®¼ö°¡ ºÒÃæºÐÇϰí, ¶Ç cpio tar ´Â ºñÆ® »ó½ÇÀ» º¸°íÇÏÁö ¾Ê½À´Ï´Ù. * ¶Ç, ºÎÈ£ È®Àå¿¡ ¹ö±×°¡ ÀÖ½À´Ï´Ù. */ /* 3 2 1 0 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 _________________________________________________________________ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ----------------------------------------------------------------- | TYPE |UNIT_2 | SLICE | MAJOR? | UNIT |PART | ----------------------------------------------------------------- */ #define dkmakeminor(unit, slice, part) \e (((slice) << 16) | (((unit) & 0x1e0) << 16) | \e (((unit) & 0x1f) << 3) | (part)) static __inline dev_t dkmodpart(dev_t dev, int part) { return (makedev(major(dev), (minor(dev) & ~7) | part)); } static __inline dev_t dkmodslice(dev_t dev, int slice) { return (makedev(major(dev), (minor(dev) & ~0x1f0000) | (slice << 16))); } #define dkpart(dev) (minor(dev) & 7) #define dkslice(dev) ((minor(dev) >> 16) & 0x1f) #define dktype(dev) ((minor(dev) >> 25) & 0x7f) static __inline u_int dkunit(dev_t dev) { return (((minor(dev) >> 16) & 0x1e0) | ((minor(dev) >> 3) & 0x1f)); } struct buf; struct buf_queue_head; int bounds_check_with_label __P((struct buf *bp, struct disklabel *lp, int wlabel)); void diskerr __P((struct buf *bp, char *what, int pri, int blkdone, struct disklabel *lp)); void disksort __P((struct buf *ap, struct buf *bp)); u_int dkcksum __P((struct disklabel *lp)); char *readdisklabel __P((dev_t dev, struct disklabel *lp)); void bufqdisksort __P((struct buf_queue_head *ap, struct buf *bp)); int setdisklabel __P((struct disklabel *olp, struct disklabel *nlp, u_long openmask)); int writedisklabel __P((dev_t dev, struct disklabel *lp)); #ifdef __alpha__ void alpha_fix_srm_checksum __P((struct buf *bp)); #endif #endif /* _KERNEL */ #endif /* LOCORE */ #ifndef _KERNEL __BEGIN_DECLS struct disklabel *getdiskbyname __P((const char *)); __END_DECLS #endif #endif /* ! _SYS_DISKLABEL_H_ */ .Ed .Sh °ü·Ã Ç׸ñ .Xr disktab 5 , .Xr disklabel 8