  Large Disk mini-HOWTO
  Andries Brouwer, aeb@cwi.nl 
  v1.0, 960626
  x] shorie@ibm.net 

  fBXÑWIg1024V_ׂ̂āB (|̌wE͖
  ɁAZpI͒҂Ɋ肢܂B҂)

  1.  

  Ⴆ 1024 V_𒴂fBXNĂƂ܂傤B̏゠
  Ȃ BIOS gOSĂƂ܂傤B͖łBȂ
  AfBXN I/O Ɏg INT13 BIOS ĂяóAI/O 쎞̃V_w
   10bit ̃tB[hg܂BłA1024 Ԉȍ~̃V_
  ́AǂݏłȂ̂łB

  KALinux  BIOS g܂̂Ŗ肠܂B

  ܂A̓_ĂłB

  (1) VXeNɂ́ALinux ͂܂ғĂ܂̂ŁABIOS 肩
  瓦܂B́ALILO ̏NvOɂƂĖɂ
  ܂B

  (2) OSň̃fBXNg܂킷ꍇAǂɃp[eBV
  ̂AꂼꂪmĂȂ΂Ȃ܂B
  ƁALinux  DOS ̃fBXN̏ŎgpꍇA҂͓@
  p[eBVe[u߂Ȃ΂Ȃ܂B́ALinux J[l
   fdisk ɂƂĖɂȂ܂B

  ȉɁA֘Ȁڍׂ܂BȂA̓J[lo[W
  2.0.8 QƂĂ܂B̔ł̏ꍇ́AႤ܂B

  2.  N

  BIOS ̓VXeNɍŏ̃fBXN(Atbs[)̃ZN^[0 ( MBR
  ƌĂ΂܂ )ǂŁAɂR[hs܂B̃R[h͕
  ̓u[gXgbv[_[łBȋNvO͕ʂ
  ÕfBXNhCo͎ABIOS T[rXgp܂B
  ALinux Nɂ̓J[lŏ1024V_ɊSɎ܂Ă
  Ȃ΂Ȃ܂B

  ́AȒPɉł܂Bŏ 1024 V_ɂۂ܂p[
  eBVāAɃJ[liƁALILO map ̂悤ɋNɎgp
  t@Cju܂BBIOS ǂݏł͕̂ʂ͍ŏ2h
  Cuł̂ŁÃp[eBV̓̂ǂ炩ɒu
  B

  ̏dvȓ_́ANvO BIOS AfBXÑWIg
  [𓯂悤ɔcȂ΂ȂȂ_łB́A LILO 
  "Linear" IvV邱Ƃŉł܂BȉɁAڍׂ
  B

  3.  fBXNWIgƃp[eBV

  Rs[^̃fBXNɕOSꍇAꂼꂪȏ̃p[
  eBVgƂɂȂ܂Bp[eBVǂɂ邩
  Aꂼꂪ悤ɔcłĂȂƁAߎSɂ܂ȂʂɂȂ
  B

  MBR ɂ́Ap[eBVe[u܂Bp[eBVe[u͂
  ɃvC}p[eBV邩Lq܂Be[u͎l̗vf
  ĂAl̃vC}p[eBVLqł܂Bvf͈ȉ
  ̂悤ȍ\ɂȂĂ܂B
       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 */
       };

  (ŁA CHS  Cylinder/Head/Sector ̗ł).

  ̏́A璷łBƂ̂́Ap[eBV̈ʒúA24bit ̊Jn
  ʒuAIʒȗɁA32bit ̊JnʒuA񂪗^Ă̂
  B

  Linux ́AstartƁAlengthtB[h܂BłA232
  ZN^[܂ł̃p[eBVgƂł܂B 2 TB (eo
  Cg:1000GB)ɂÃ݂n[hfBXN̗eʂ100{ɂ܂B
  łA10N炢͑vł傤B

  cOȂƂɁAINT13 BIOS ĂяóA3oCgȂ CHS g
  B CHS ́A 10bit V_ԍwɁA8bit wbhԍw
  ɁA6bit gbNZN^ԍwɂӂĂ܂BLȃV_
  ԍ́A0-1023 ŁAlɃwbhԍ 0-255AgbNZN^ԍ1-63
  ł(gbÑZN^ԍ 0 ł͂Ȃ 1 琔܂)B 24 rb
  ggpƁA 8455716884 oCg(7.875GB)ǂݏł܂B1983 N
  ̃fBXN 200 {łB

  ɂ܂ƂɁAW IDE C^[tF[X̓gbN 256ZN
  ^[A65536V_A16wbh܂ł܂Bꎩ̂́A
  2^37=137438953472oCg(128GB)܂ł̓ǂݏ܂BA BIOS
   łA63 ZN^[A1024 V_[Ƒgݍ킹ƁA
  528482304 oCg (504 MB) Aǂݏ\łȂȂ܂B

  ́ÃfBXNgł͏\ł͂܂BŁAn[h
  EFAƃ\tgEFAɂ邠ނ̎iɗ邱ƂɂȂ܂B

  4.  ϊƃfBXN}l[W[

  fBXŃu{́vWIgɋ̂l͂܂B̂ƂAg
  bÑZN^[́A̃fBXN̒łϓ邱Ƃ
  łBƁÂ̓fBXN̉ɋ߂ƂقǁAgbÑZN^
  [𑽂Ƃ邩łBłAu{́vgbÑZN^[
  ȂǂȂ̂łBp҂猩ƁAZN^[0,1,... Ƃ悤fBXN
  ZN^[̈ꎟzƂĂƂ炦̂ԕ֗łBāA^
  ZN^[fBXN̂ǂɂ邩T̂́ARg[ɔCĂ
  ̂łB

  ̐`IȔԍẤALBA ƂĒmĂ܂B̏ꍇA CHSWI
  g[ (c,h,s) `AhXvZɂc*H*S + h*S + (s-1) 
  gp܂BSCSI Rg[ׂ͂ LBA gp܂A IDE
  ̃Rg[ɂ LBA gp̂܂B

  BIOS  24bit  (c,h,s)  LBA ɕϊăn[hfBXNRg[
  ^ȂA7.875GB Ƃ BIOS ̐ςɎgƂł܂B
  łfBXNɑΉłƂ킯ɂ͍s܂񂪁A傫ȉ
  ǂƂ܂BtĂ܂ƁAł BIOS  CHS
  ́A͂⌻Ƃ͉̊ւȂłB

  Rg[ LBA ȂĂABIOS ɕϊ@\ꍇA LBA 
  ǂ@Ƃ邱Ƃł܂( BIOS ݒʂł́A "LARGE" ƕ\
  邱Ƃ܂ ) B̏ꍇABIOS  OS (C',H',S')WIg
  [ƂĒm点AfBXNRg[ƂƂ肷Ƃɂ́AfBXN
  ̃WIg[ł(C,H,S)gp܂Bʂ́A S = S', C' = C/N,
  H'= H*N Ƃ֌WɂȂĂA N ́AC' <= 1024 𖞂ŏ 2 
  ׂł( ƁA C' = C/N ̐؂̂Ăɂeʂ̖ʂŏɂ
  ܂)B̕@łAő 7.875GB ܂ł̓ǂݏ\ɂȂ܂B

  BIOS  "Large" Ƃ "LBA" gpłȂꍇłA\tgEFAɂ
  ĂȂƂ邱Ƃł܂BOnTrack  EZ-Drive ƂfBXN}l
  [W[́ABIOS ̃fBXN֘A[`ɑăfBXNs
  Bʂɂ́AfBXN}l[W[̃R[h MBR  MBR ɑZN^
  [(OnTrack  DDO : Disk Dynamic Overlay ƌĂł܂)ɖߍł
  Ƃł܂BMBR ɖߍ܂Ă܂̂ŁAR[
  h͑̃Iy[eBVXeN܂BāAꂪfB
  XN}l[W[gݍłVXetbs[NƖ
  闝RłB

  fBXN}l[WɂΐABIOS ɂꍇƎ悤Ȃ̂łB
  AɈَ OS 𓯂fBXNő点ꍇAfBXN}l[W
  [̖͑N܂B

  Linux  1.3.14  OnTrack ɁA1.3.29  EZ-Drive ɑΉĂ
  ܂Bڍׂȉɐ܂B

  5.  J[lɂ IDE ̂߂̃fBXN̕ϊ

  Linux J[l IDE fBXNɃfBXN}l[W[oꍇA
  fBXNfBXN}l[W[ŝƓ@ŕϊ悤Ƃ܂B
  ɂāALinux  DOS  OnTrack  EZ-Drive ʂĂ݂̂Ɠ
  悤Ƀp[eBV邱Ƃł܂BAR}hCWI
  gw肵ꍇAϊ͍s܂BłA hd=cyls,heads,secs 
  R}hCIvV́AfBXN}l[W[Ƃ̌݊E
  ܂܂B

  ΐA(H*C̒l萔ɕۂ܂) 4, 8, 16, 32, 64, 128, 255 wbh
  ̉ꂩōs܂B̂AC <= 1024 A H = 255 ̉ꂩ
  ̗̂p܂B

  ȉ̐߂ŁAefBXN}l[W[̐s܂Bȍ~Ap[eB
  V̌^ׂ͂16ił킵܂B

  5.1.  EZD

  ŏ̃vC}p[eBV̌^55łƂAEZ-Drive ݂
  Ɣf܂BWIg͏Ő悤ɕϊAZN^[0ɂ
  p[eBVe[u͖܂B̑ɁAp[eBVe
  [u̓ZN^[1ǂݏo܂BfBXÑubNԍ͕ύX
  ܂񂪁AZN^[ 0ւ݂̏́AZN^[1ւ݂̏ɋ
  B̐U镑́Aide.c ̒
   #define FAKE_FDISK_FOR_EZDRIVE  0 in ide.c.  ƂăJ[lč\z
  ΏCł܂B

  5.2.  DM6:DDO

  (ŏ̃hCu)ŏ̃vC}p[eBV̌^ 54 ł
  ƁAOnTrack fBXN}l[Wgݍ܂ĂƔf܂BWI
  g͂łɏqׂ@ŕϊAfBXNŜ63ZN^[炳
  (܂AX̃ZN^[63 ̓ZN^[0ƌĂ΂邱ƂɂȂ܂)B
  ʁAV(p[eBVe[u܂)MBŔAVZN^[0 
  ǂݍ܂܂BÂ炵DDÔ߂̋Ԃmۂ邽
  ŁAꂪAŏ̃fBXNȊOɂ͂炵ȂRłB

  5.3.  DM6:AUX

  (ŏ̃fBXNȊO)vC}[p[eBV5153̂Ƃ
  ́AOnTrack fBXN}l[W[ĂƔf܂BWIg
  ̕ϊ͏ɏqׂʂłB

  5.4.  DM6:MBR

  Â OnTrack fBXN}l[W[́Ap[eBV̌^ł͂ȂVOi
  `[Ōo܂(o@FMBR ̃oCg2,3 ɂ鐔ItZbg
  lÃItZbgl430ȉł邩mF܂Bɂ̃ItZbg
  ʒuɂ short int l 0x55AA ŁAȂA 1 oCg
  č܂B)Bϊ@́AɏqׂʂłB

  5.5.  PTBL

  ŌɁAvC}p[eBV̊JnʒuƏIʒuAϊs
  Ă邱Ƃm@邱ƂЉ܂傤BAvC}[
  p[eBVe[ustartend ̒l256ŁAȂJn
  яIZN^[ԍꂼ 1  63 łAɏIwbh
  31, 63, 127 ƂƂ܂BƁAp[eBV̏I̓V
  _EɂK킵ł邱ƁAIDE C^[tF[X͍ő 16 wb
  hł邱ƂABIOS ɂϊȂĂ邱ƂA
  A WIgƂẮA32, 64, 128 ƂwbhgpĂ
  Ƃ܂ (Aɂׂ͌܂Bgenhd.c ́AV_
  ̏2rbgȂ̂ł͂Ȃł傤)BA
  ̃WIgłɃgbN63ZN^[ŁÃwbh
  ƂȂAϊ͍s܂ (wbh񂠂Ƃ̂́Ałɕ
  sĂƂƂł)

  6.  _

  ǂǂƂ̂ł傤H Linux p҂ɂƂĂ͈_dv
  B́ALILO  fdisk WIggȂ΂ȂȂ_
  BŁuvƂ fdisk ɊւĂ͓fBXN̑ OS 
  ̃WIggpĂƂӖłA܂A LILO ɊւĂ
  ܂ BIOS Ƃ肵ċNłWIgłƂƂ
  B(ʂ͓WIg҂ɂƂĐWIgɂȂ܂)

  FdisḱAǂăWIg𒲂ׂ̂ł傤H HDIO_GETGE ioctl 
  gpăJ[lɕ̂łBAp҂͑ΘbIɁA邢̓R}
  hCWIgł܂B

  LILO ́AǂăWIg𒲂ׂ̂ł傤HHDIO_GETGE ioctlg
  păJ[lɕ̂łBAp҂ "disk=" IvVg
  āAWIgł܂BLinear IvVLILOɎw肷邱Ƃ
  ł܂B̏ꍇALILO CHSAhX̕ς LBA AhX}bv
  t@CɊi[AƂŋNƂɂgp܂B (INT 13̃t@
  NV8₢킹Ɏgp܂)

  J[l͓ǂĒׂ̂ł傤HƁAŏɗp
  "hd=cyls,heads,secs" R}hCIvVɂĖIɂw
  肷邩܂BłȂ΁AJ[l̓n[hEFAɖ₢킹
  B

  6.1.  IDE Ɋւڍ

  ƍlĂ݂܂傤BIDE hCo[̓WIgɊւ
  4Ă܂Bڂ̓R}hC̗p҂ɂw
  (G_user)Bڂ 32 rbg[hɑJڂOɓǂݍ܂ BIOS
  Fixed Disk Parameter Table ł (G_bios) (͍̏ŏ 2hCu
  ɊւĂł)BOڂƎlڂ IDE Rg[ IDENTIFYR}h
  ɑ΂ēŁAꂼAuvu̘_vWIg
  (ꂼ G_physAG_log)B

  ̈ŁAhCo̓WIgƂ 2 ̒lKvƂ܂B
  HDIO_GETGEO ioctl Ԃlł(G_fdisk)B 1 ́Aۂ I/O s
  ƂɕԂlł(G_used)BG_user^Ă΁A G_fdisk 
  G_used ͂ɐݒ肳܂BG_user ^ꂸA CMOS RAM Ȃɏ
  񂪂΁Aɐݒ肳܂BȊÔƂɂ́AG_physɐݒ肳
  BG_log Ół悤ȂAG_used ͂ɐݒ肳܂B邢
  ́AG_used ̒lÓł͂ȂAG_phys Ół悤ȂAG_phys 
  lݒ肳܂BŁuÓvƂ́Awbh̒l 1-16 ͈̔͂ɓ
  邱ƂłB

  ƁAR}hCł̎ẃABIOS ̒l㏑
  fdisk ǂ̂悤ɃfBXNƂ炦邩߂܂BAA(wb
  h 16 𒴂)ϊ̃WIgw肷ƃJ[l I/O ͂̒l
  ͔jAIDENTIFY R}h̒lgp܂B

  6.2.  SCSI Ɋւڍ

  {̃WIg͂ǂȂĂ̂ł傤H͊ȒPŁAȂ
  ͂܂Bm肽Ȃł傤A܂AȂ̂
  Ă΂ɁAfdisk  LILO J[lɂȂ̂w肵Ȃŉ
  BWIg SCSI Rg[ƃfBXN̊Ԃłĝׂ
  Bǂ悤łA SCSI fBXÑWIg fdisk  LILO J
  [lɎw肷悤ȓz̓AzłB

  łDŜ܂ǂĂƌ̂ł΁AfBXNgɖ
  킹邱Ƃł܂BSCSI R}hɂ́Aeʂ𒲂ׂ READ
  CAPACITY R}h܂B܂AMODE SENSE R}h Rigid Disk
  Drive Geometry y[W(y[W04)̓V_ƃwbhĂ
  (ύX͂ł܂)B Format y[W(y[W03)̓ZN^[̃oCg
  ƃgbÑZN^[Ă܂B҂͕ʃmb`Ɉˑ
  ܂A܂AgbÑZN^[͉ςłāAÕgbN
  ɂ͓肽̃ZN^[Ă܂BLinux  scsiinfo vO
  ͂Ă܂B͏ڍׂɂ߂
  G̏ȂA܂ɖ炩ɒNi OS łjȏ͎g
  ܂B̏Afdisk  LILO ɊւAʂɕԂ C/H/S =
  4476/27/171 ȂǂƂl͎gɂȂ܂BƂ̂́Ap[eBV
  e[u C/H/S  10/8/6 rbgÂ蓖ĂĂȂłB
  (󒍁F҂ɖ₢킹ƂAmb`Ƃ́u̃fBXN̒ŁA
  gbÑZN^̈vƂ̂ƂłB)

  ł́AJ[l HDIO_GETGEO ̂߂̏ǂ玝ĂĂ̂
  傤B SCSI Rg[玝Ă邩A@ō
  ܂܂BhCo[ɂĂ͉Xu^v~Ăƍl
  悤łAǂA DOS  OS/2  FDISK (AAdaptec
   AFDISK Ȃ)gقłB

  ƂŁALinux  fdisk  H  S ܂AwbhƃgbN
  ZN^[g LBA  C/H/S AhXɕϊ܂BAV
  _ C ͎gp܂BhCoɂẮAhCo 1023*255*63 Z
  N^ɑΉł邱Ƃm点邽߂ɁA(C,H,S)=(1023,255,63) łƕ
  Ă܂BsKȂƂɁAꂩ͎ۂ̗eʂ͂킩܂񂵁A
  fdisk ̂قƂǂ̔łŁA舵eʂ 8GB Ɍ肵Ă܂܂B
  ́A̎ۂ̏ƂȂĂ܂B

  ȉ̋Lqł́AM 𑍗eʁAC,H,S V_AwbhAgbN
  ZN^̐Ƃ܂BC  M/(H*S) Œ`ƍlȂAH,S 𓾂
  ŏ\łB

  H=64, S=32 lƂ܂B

     aha1740, dtc, g_NCR5380, t128, wd7000:
        H=64, S=32.

     aha152x, pas16, ppa, qlogicfas, qlogicisp:
        C > 1024 ɂȂ܂ł́AH=64, S=32B > 1024 ɂȂꍇ́AH=255,
        S=63, C=min(1023,M/(H*S))B(̂߁AC ͊ۂ߂ĂAH*S*C
        ̓fBXN̑e M Ƃ͂Ȃ܂B́AĂ̔ł
        fdisk ŖƂȂ܂)Bppa.c ̃R[hł́AM ł͂ȂAM+1 
        gpĂAsd.c ̃oOɂA M  1 ̃ItZbgĂ
        ƏĂ܂B

     advansys:
        C > 1024 ɂȂ܂ł́AH=64, S=32Bȍ~ BIOS  "> 1GB' I
        vVĂ H=255, S=63 łB

     aha1542:
        Rg[ 2 ̓̂ǂ̕ϊ@pĂ邩₢
        A H=255, S=63 AH=64, S=32 ̉ꂩgp܂BO҂g
        Ăꍇ́ANbZ[WƂ "aha1542.c: Using extended
        bios translation" ƕ\܂B

     aic7xxx:
        C > 1024 ɂȂ܂ł H=64, S=32Bȍ~ A"extended"Np
        [^hCoɗ^Ă邩 SEEPROM  BIOS ́ugv
        rbgĂĂȂ΁A H=255, S=63łB

     buslogic:
        C >= 1024 ɂȂ܂ł H=64, S=32Bȍ~̓Rg[̊g
        ϊgpĂꍇAM < 2^22 Ȃ H=123, S=32 ŁAM >=
        2^22 Ȃ΁AH=255, S=63 łBA(C,H,S)ݒs
        Ap[eBVe[uǂݏo܂BāA\ȂR̑g
        ݍ킹A(H,S) = (64,32), (128,32), (255,63) ̂
        AendH=H-1 ɂȂ肻Ȃ̂܂BāÂ悤ȋN
        bZ[W\܂B "Adopting Geometry from Partition
        Table"

     fdomain:
        BIOS hCup[^e[ũWIgTAp[
        eBVe[uǂŁAp[eBVȂŏ̃p[
        eBV(endH+1,endS) (H,S)ƂĎgp܂Bp[eBV
        ȂȂ

     o  M < 2^21 (1 GB)         => H=64, S=32

     o  M < 63*2^17 (3.9 GB)    => H=128, S=63

     o  ȊO                => H=255, S=63

     in2000:
        (H,S) = (64,32), (64,63), (128,63), (255,63)̂A<=1024 Ƃ
        ŏ̂̂gp܂BŌ̂̂gƂɂ́AC=1023 Ɋ
        ߂܂B

     seagate:
        C,H,S fBXNǂ݂܂(ЂI)BC  S 傫
        ΁A S=17, H=2 ƂāAC<=1024 ƂȂ܂ H {ɂĂ
        B M < 128*1024*17 (1.1GB) ̂ƂAH  0 ɐݒ肳邱
        ƂӖ܂B̓oOłB

     ultrastor and u14_34f:
        Rg[̃}bsO[hɉ (H,S) = (16,63), (64,32),
        (64,63) ̂̈gp܂B

  hCo[WIg^ȂꍇAp[eBVe[u猫
  炩̕@ŃWIg𐄑邩AfBXN̑eʂ琄܂B

  p[eBVe[uĂ݂܂傤Bp[eBV̏IV
  _EɒuƂKAǂ̂悤ȃp[eBVłĂp[eB
  V̏I肪 end = (endC,endH,endS)łƂAP H = endH+1 and
  S = endS ƌvZ邱Ƃł܂(JԂ܂AZN^ 1 琔
  ܂)BɂƁAȉ̂悤ɂȂ܂BAp[eBV
  ݂Ȃ΁AbeginC Ƃ傫p[eBVIт܂B
  āAend+1 Astart  length 𑫂@ƁAp[eBV̏I
  肪V_EɂƉ肷@ŌvZ܂B̓v
  邩AendC = 1023  start+length  (endH+1)*endS ̐{Ȃ
  ΁Ãp[eBV͖{ɃV_Eɂ낦Ăƍl
  ܂BAꂪ߂Ȃ悤Ȃ΁A܂p[eBVSRA
  傫Ȃ񂩕ςȂ΁AfBXNe M ݂̂܂BASÝF

  o  H = M/(62*1024) ؂グ

  o  S = M/(1024*H)  ؂グ

  o  C = M/(H*S)     ؂̂

     łB̕@́AC ő 1024, S ő 62 ɉ悤Ȍʂ
     ܂B

