
                         Large Disk mini-HOWTO Ķ
                                       
@: Andries Brouwer, [1]jaeb@cwi.nl
Ķ: Asd L. Chen, [2]asdchen@ms1.hinet.net

   v1.0, 26 June 1996 ½Ķ: 10-13 November 1997
     _________________________________________________________________
   
   Ҧ disk geometry  1024 cylinder D
     _________________________________________________________________
   
1. DҦb

2. Ұ

3. Ϻ geometry HΤΰ

4. ഫPϺк޲z{

5. ֤ߪ IDE Ϻഫ

     * 5.1 EZD
     * 5.2 DM6:DDO
     * 5.3 DM6:AUX
     * 5.4 DM6:MBR
     * 5.5 PTBL
       
6. 

     * 6.1 IDE Ӹ`
     * 6.2 SCSI Ӹ`
     _________________________________________________________________
   
1. DҦb

   pAϺжWL 1024 ӺL(cylinders)D ٦, pA@~tΨϥΰ
   XJt(BIOS)DA|J@ӰD, ]@ϺпXJJҨ
   Ϊ INT13 BIOS H@ 10 줸(bit) Ӿާ@L, ҥHLks
    1024 Τ᪺LD
   
   BO, Linux ϥ BIOS, ҥHSDD
   
   ܬOo, ƨҥ~:
   
   (1) AbҰʨtή, Linux ٨S}lҥHLkAקKoӰDDo
   LILO HҰʸJ{(boot loaders)ǼvTD
   
   (2) ϥκϺЪҦ@~tΥPNΰϪmDyܻ, pGAb@
   ϺФWϥ Linux H, Ҧp DOS, ̥HۦP覡ŪΪ
   ơDo Linux ֤ߥH fdisk ǼvT.
   
   UOҦӸ`ԲӪyzD`N, ڨϥ 2.0.8 ֤߭l{
   ѦҡD䥦i঳@IIXJD
   
2. Ұ

   tαҰʮ, BIOS qĤ@ӺϺ(αqn)Ūϰ 0 (@q٪ MBR -
   Master Boot Record, DҰʺϰ)øܦbӳB{X - q`O@ǱҰʸ
   J{(bootstrap loader)D oǤppҰʵ{@뤣|ۤvϺXʵ{
   ӷ|ϥ BIOS ҴѪAȡDoN׵ۥu Linux ֤߳}Y
   1024 ӺLɤ~QҰʡD
   
   oӰDܮeѨM: Tw֤(]\٥]A䥦ҰʮɥΨ쪺ɮ, O LILO
   map ) Ob@ BIOS iHs, b}Y 1024 ӺL
   ϸ - oiH(i)OĤ@өβĤGӺϺСD
   
   t@IOҰʸJ{P BIOS PNϺ޿(geometry)WݪkD
    LILO `linear' oӿﶵѼƥi|UDӸ`zD
   
3. Ϻ geometry HΤΰ

   pGAϺФWnXا@~t, C@بϥΤ@өΦhӤΰϡD
   ΰϦBPݪkiɭPaʪGD
   
   MBR ]t@ӤΪyzΰ(Dΰ: primary) b̡D|Ӫ浹
   |ӥDnΰϨϥ, ̬ݰ_ӹ
   
struct partition {
        char active;    /* 0x80: bootable, 0: not bootable */
        char begin[3];  /* CHS for first sector */
        char type;
        char end[3];    /* CHS for last sector */
        int start;      /* 32 bit sector number (counting from 0) */
        int length;     /* 32 bit number of sectors */
};

   (䤤 CHS OLYϰ: Cylinder/Head/Sector Yg)
   
   ], TOЪ: ΰϪmiH 24 줸 begin H end 
   , M 32 줸 start H length 쵹wD
   
   Linux uϥ start H length , G̦hiHBz]t 2^32 ӺϰϪ
   ΰ, ]NO, ̤j 2 TB ΰϡDoO{Ϻоʭ, ҥH]\
   Q~ݨDD
   
   O, BIOS INT13 IsϥΤTӦ줸ժ CHS sX, 10 Ӧ줸@L
   X, 8 Ӧ줸@YX,  6 Ӧ줸@ϭyWϰϸXD i઺L
   XO 0-1023, i઺YXO 0-255, ӺϭyWi઺ϰϸX 1-63(O
   , ϭyWϰϬO 1 _, O 0)D Ho 24 줸̦hiHw}
   8455716864 Ӧ줸(7.875 GB), oO 1983 ~ϺоʭD
   
   󤣩O, зǪ IDE e\ 256 Ӻϰϡϭy, 65536 ӺLH 16
   ӺYDۤviHs 2^37 = 137438953472 Ӧ줸(128 GB), O[
   W BIOS 譱 63 ӺϰϻP 1024 ӺLu 528482304 Ӧ줸
   (504 MB)iHw}D
   
   oHI{Ϻ, H̨ϥΦUصwγnWkӧJAD
   
4. ഫPϺк޲z{

   SHϺЪ'u' geometry DϭyϰϼƳq`Oܰʪ - 
   Х~򪺺ϭyhϰ - ҥHS'u'CϭyϰϼơD ϥΪ
   Ө̦nOϺз@s 0,1,..., ϰϲզXuʰ}C, h
   XϰϨsϺЪ̡D
   
   uʽs@q٬ LBAD geometry  (C,H,S) ϺЦӨ(c,h,s)
   uʦ} c*H*S+h*S+(s-1)DҦ SCSI ϥ LBA, Y IDE 
   ]OD
   
   pG BIOS o 24 Ӧ줸(c,h,s) ഫ LBA o LBA , 
   SiHw} 7.875 GB DäHIҦϺ, MOӧiD`N
   B BIOS ϥΪ CHS, AP''YD
   
    LBA O BIOS DpഫɦkiD(b
   BIOS ]wq`٬ 'Large'D){b BIOS Ne{ geometry (C',H',S')
   @~t, ӦbPϺбqɫhϥ(C,H,S)D q` S=S', C'=C/N 
   H'=H*N, 䤤 N OTO C'<=1024  2 ̤p(ҥH C'=C/N ɱ˥hƮ
   Oֳ\eq)DA@, o\șhF 7.875 GBD
   
   pG BIOS D 'Large' άO 'LBA', ٬On骺ѨMסDO
   OnTracker  EZ-Drive oǭӺϺк޲z{|H̦ۤv禡(routines)
    BIOS D q`oOǥѱNϺк޲z{b MBR ΨXӺ
   (OnTrack ٳoǵ{X DDO: Dynamic Drive Overlay )ӹF, ҥH
   |b䥦@~tΤeQҰʡD o]NObw˺Ϻк޲z{qn
   бҰʥi|XDD
   
   ovTihΤ֩ BIOS ഫ - SOObۦPϺФW]ƺؤP@~
   tή, Ϻк޲z{iް_\hDD
   
   Linux q 1.3.14 }l䴩 OnTrack Ϻк޲z{, q 1.3.29 }l 䴩
   EZ-Drive DUǧi@BTD
   
5. ֤ߪ IDE Ϻഫ

   pG Linux  IDE ϺФWYǺϺк޲z{sb, N|յۨϥλP
   Ϻк޲z{ۦP覡ӭsϺ, ҥH Linux ݨP, Ҧp DOS tX
   OnTrack άO EZ-Drive ۦPϺФΡD M, AbOCWw
   geometry , N|󪺭s - ҥH@ `hd=cyls,heads,secs' 
   OCﶵiPϺк޲z{ۮeD
   
   s覡O 4,8,16,32,64,128,255 Y(H*C O) C
   <= 1024 άO H = 255D
   
   Ӹ`pU - p`YOX{b۹ҰʰT̪rDbHΦbo
   䥦a褤ΪAHQiƦrܡD
   
5.1 EZD

    EZ-Drive , ]Ĥ@ӥDnΰϫA 55 DpWzs
   geometry, Bq 0 ϰŪJΪ - H 1 ϰϪΪNDϺ
   ϶X(block numbers) S, ϰ 0 gJ|Vϰ 1D
   @iHǥѭקb ide.c 
   
     #define FAKE_FDISK_FOR_EZDRIVE 0
     
   íssĶ֤ߨӧܡD
   
5.2 DM6:DDO

    OnTrack DiskManager(bĤ@ӺϺФW), ]Ĥ@ӥDnΰϫA
   54 DpWzs geometry ӥBӺϺХ 63 ӺϰϡD (ҥHªϰ
   63 ܦϰ 0)Mqs 0 ϰŪJs MBR (PΪ)DMO
    DDO dŶ - o]NO䥦ϺФD
   
5.3 DM6:AUX

    OnTrack DiskManager(b䥦ϺФW), ]Ĥ@ӥDnΰϫA
   51  53DpWzs geometry D
   
5.4 DM6:MBR

   Yª OnTrack DiskManager, ëDǥѤΰϫA, ӬOñ
   W(signature)D(զb MBR ̲ 2,3 줸ժȬO_j 430, ӥB
   b}쪺 short  0x55AA, ᭱øۤ@ө_ƪ줸) A@
   pWzs geometry D
   
5.5 PTBL

   ̫, ֤߷|ձqDΰϪ start H end ȱ_ഫ覡: YYǤ
   Ϫ start H end Lp 256, ӥB start H end ϰϸXO 1
   M 63 , ӥB end Y 31, 63,  127, , ]̺DҤΰϷ|bL
   ɵ, ӥB] IDE ̦hϥ 16 ӺY, G} BIOS 
   , Oϥ 32, 64  128 Yƭs geometryD (]\o̦I
   , genhd.c ӴպLXeӦ줸?)Lצp, ثe
   geometry wgCϭy 63 ӺϰϥBܤֳohY, |s (]
   oiN׵ۭw)D
   
6. 

   o쩳N׵ۤ?  Linux ϥΪ̦Өu@: NOL̥oTO
   LILO H fdisk ϥΥT geometry , 䤤'T'wq fdisk ӨOP
   䥦bP@ӺϺФW@~tΩҨϥΪ geometry ۦP, ӹ LILO ӨO
   bҰʮɴ\aP BIOS ͪ geometryD(o̳q`۲šD)
   
   fdisk po geometry ? ߰ݮ֤, ϥ HDIO_GETGEO ioctlDϥ
   ̥iHͦaΦbOCWw geometryD
   
   LILO po geometry ? ߰ݮ֤, ϥ HDIO_GETGEO ioctlD ϥ
   ̥iH `disk=' ﶵwD]iH LILO @ linear ﶵ, pNb
   map ɤxs LBA }HN CHS }, åBbҰʮɴX geometry 
   ϥ(ǥ INT 13 \Is 8 Ӹ߰ݺϺЪ geometry)D
   
   ֤ߦp󪾹Dӫ^? , ϥΪ̥iH `hd=cyls,heads,secs' OC
   ﶵTaw geometry, _h֤߱N߰ݵwD
   
6.1 IDE Ӹ`

   ڸԲӻDIDE Xʵ{| geometry TӷDĤ@
   (G_user)OϥΪ̦bOCWҫwD ĤG(G_bios)O BIOS TwϺ
   Ѽƪ(uΩĤ@βĤGӺϺ), btαҰʮ,  32 줸ҦeŪ
   JD ĤT(G_phys)βĥ|(G_log) O IDE Ǧ^, @
   IDENTIFY O^ - ̬O '骺' H 'ثe޿W' geometriesD
   
   t@譱,  geometry Xʵ{ݭnӭ: 䤤@O G_fdisk, 
   HDIO_GETGEO ioctl Ǧ^, t@ӬO G_used , oOXJɹڨϥΪ
   D pGw G_user h G-fdisk H G_used ̳|] G_user, T
   Oھ CMOS ҴѮɫh] G_bios , 䥦γ] G_physDpG G_log 
   _ӦXzh G_used N] G_logD M, pG G_used Xz G_phys ݰ_
   ӦXz G_used N] G_physDB'Xz'NYƦb 1-16 d
   D
   
   Ӥ覡: OCﶵj BIOS , åBMw fdisk ݨ쪺ˤl, pG
   wഫ geometry(YƤj 16), h֤߷|ǥ IDENTIFY OXw
   D
   
6.2 SCSI Ӹ`

   b SCSI 譱p@IIP, ] SCSI Owgϥ޿϶X, ҥH
   'geometry' ڪXJSYD M, ΰϪ榡MOۦP
   , ҥH fdisk oy geometry , åB]bϥ HDIO_GETGEO - u
   , fdisk | IDE H SCSI ϺСD AiHqUԲӴyzU
   Xʵ{y@ǭӤP geometry DuO, @βVáD
   
   pGASϥ DOS γot, קKϥΩҦB~ഫ]w, i઺
   , ިϥ 64 Y, Cϭy 32 ϰ (}n, KCL 1 MB), p
   AϺбq@ӱt@ӥhɤ|JDD Y SCSI ϺX
   { (aha152x,pas16,ppa,qlogicfas,qlogicisp)D`bNP DOS ۮeʦӤ
   \u Linux tΨϥζWL 8 GB eq, oOΡD
   
   uꪺ geometry O? ²檺׬OSoتFDpGu, A
   |QD, ӥBTTq, äݧiD fdisk άO LILO ή֤ߦ
   DoO SCSI PϺФơD ڭгoy: uJ|iD
   fdisk/LILO/Kernel SCSI ϺЯuꪺ geometry D
   
   pGAnǥB, iHݺϺоۤvDӭnO READ CAPACITY N|
   ^ϺЪ`eq, ӥB MODE SENSE O Rigid Disk Drive Page(page
   04) |Ǧ^LHκYƥ(oOܪT), Ӧb Format
   Page(page 03)CϰϪ줸, HΨCϭyϰϼơD oƦr@P notch
   , ӥBCϭyϰϼƬOܰʪ - ~򪺺ϭy֦񤺰ϭyhϰ
   DLinux { scsiinfo |oTD 䤤\hcӸ`, ӥBܩ
   , SH(]\ƦܬO@~t)ݭnϥγoTD ٦, ]ڭ̥u
   fdisk H LILO , @o쪺^ C/H/S=4476/27/171 - o˪ fdisk
   ڥϥ, ]ΪuOd 10resp. 8resp. 6 bits  C/H/SD
   
   ֤ߤ HDIO_GETGEO qBoT? , Oq SCSI , NO
   qD Xʵ{G{ڭ̷QD 'u' , ڭ̷MuQD DOS
    OS/2 FDISK ( Adaptec AFDISK )ҥΪD
   
   `N, Linux fdisk ݭnY H HΨCϭyϰϼ S HKഫ LBA ϰϸX
    c/h/s }, L C bഫåt򨤦D Xʵ{
    (C,H,S) = (1023,255,63) ӪܺϺЮeqܤ֬ 1023*255*63 ӺϰϡDo
   O, ]oܹڪjp, ӥBNj fdisk ϥ
   ̨Ϻг̤j 8 GB - {ڪD
   
   bUyz, M ܺϺЪeq,  C,H,S OL, YHΨCϭy
   ϼơDpGڭ̧ C @ M/(H*S)  H,S NiHD
   
   ̹w], H=64, S=32.
   
   aha1740, dtc, g_NCR5380, t128, wd7000:
          H=64, S=32.
          
   aha152x, pas16, ppa, qlogicfas, qlogicisp:
          H=64, S=32 D C > 1024, pU H=255, S=63, C = min(1023,
          M/(H*S)). (G C QI_, B H*S*C OϺЮeq. oN|V
          ncj fdisk.) ppa.c {Xϥ M+1 N M û{oO
          ]b sd.c ̪@Ψ M Ȥ֤@D
          
   advansys:
          H=64, S=32 D C > 1024 ӥBٶ} BIOS  `> 1 GB' ﶵ, 
          pU H=255, S=63.
          
   aha1542:
          ߰ݱϥΨإi઺ schemes @, åBϥ H=255,
          S=63  H=64, S=32. e̦ӱҰʰT "aha1542.c: Using extended
          bios translation".
          
   aic7xxx:
          H=64, S=32 D C > 1024, ӥBٵF "extended" ҰʰѼ, Φb
          SEEPROM  BIOS ]F `extended' 줸, pU H=255, S=63.
          
   buslogic:
          H=64, S=32 D C >= 1024, ӥBٱҰʱXRഫ, pU
          Y M < 2^22 h H=128, S=32; _h H=255, S=63. M, 
          (C,H,S) , ŪJΪ, YTإi઺ (H,S) = (64,32),
          (128,32), (255,63)  endH=H-1 Ȭݨӥihϥθӹ (H,S) , 
          LXҰʰT "Adopting Geometry from Partition Table".
          
   fdomain:
          q BIOS Drive Parameter Table X geometry T, αqΪŪ
          èϥ H=endH+1, S=endS Ĥ@Ӥΰ, YD, Ψϥ H=64,
          S=32 for M < 2^21 (1 GB), H=128, S=63 for M < 63*2^17 (3.9 GB)
          and H=255, S=63 otherwise.
          
   in2000:
          ϥ (H,S) = (64,32), (64,63), (128,63), (255,63) Ĥ@ C
          <= 1024 . pU, b 1023 I C .
          
   seagate:
          qϺŪ C,H,S. (u۹!) pG C  S Ӥj, J S=17, H=2 
          W H  C <= 1024. o H N 0 pG M > 128*1024*17
          (1.1 GB). oO.
          
   ultrastor and u14_34f:
          Tع@ ((H,S) = (16,63), (64,32), (64,63)) ھڱ
          Ҧөw.
          
   pGXʵ{Sw geometry , ڭ̴N^ϥΤΪκϺ`eqӱ_
   qD
   
   JӬݬݤΪD]̺DҤΰϦbLɵ, ڭ̥iHΰϩw
   end=(endC,endH,ednS) , unJ H = endH+1  S = endSD (Ooϰϥ 1
   _D)TaDpGӤOŪΰ, hH̤j beginC pD 
   󦹤ΰ, ݬ end+1, p[W start H length åB]ΰϦbY
   LɵD pGӭȳ۲,  endC = 1023 B start+length O
   (endH+1)*endS , 򰲩wΰϯuObL, éJ H =
   endH+1 H S = endSD pG, O]Sΰ, NO]̪jp
   ܩ_, uݺϺЮeq MD tk: J H = M/(62*1024)(Li
   ),S = M/(1024*H)(Li), C = M/(H*S)(L˥h)Doಣͤ@
   (C,H,S) 䤤 C ̤j 1024  S ̤j 62D

References

   1. mailto:aeb@cwi.nl
   2. mailto:asdchen@ms1.hinet.net
