








			 Large Disk mini-HOWTO 

		      : Andries Brouwer, jaeb@cwi.nl

		   : Asd L. Chen, asdchen@ms1.hinet.net

	       v1.0, 26 June 1996 : 10-13 November 1997



				   Abstract

     й disk geometry  1024 cylinder ƣ



1.  

Ĵŵ 1024 Ŵ(cylinders) ,
ҵϵͳʹûϵͳ(BIOS)һ,
Ϊһŵ룯ʹõ INT13 BIOS һ 10 λԪ(bit)
λŴ, ޷ȡ 1024 ֮ĴŴأ

˵, Linux ʹ BIOS,  û⣮

˵, :

(1) ϵͳʱ, Linux ûʼִ޷⣮ LILO
ԼƵʽ(boot loaders)ЩӰ죮

(2) ʹôŵҵϵͳָͬλã仰˵,
һŴŵʹ Linux  Լ,  DOS,
߱ͬķʽָϣ Linux  Լ fdisk  ЩӰ.

Ƕϸڸϸע, ʹ 2.0.8
ԭʼʽΪοİ汾һ룮


2.  

ϵͳʱ,  BIOS ӵһŵ()ȡ 0 (һͨƵ MBR - Master
Boot Record, )ڸôĳʽ - ͨһЩʽ(bootstrap
loader) ЩССʽһ㲻ԼĴŵʽʹ BIOS
ṩķνֻ Linux Ķλ춿ͷ 1024
Ŵʱܹ

׽: ȷ(Ҳʱõĵ,   LILO map )
Ƿһ BIOS Դȡĵ, ȫڿͷ  1024 Ŵڵķָ -
()ǵһڶŵ

һʽ BIOS ͬ˴˶Դŵ߼(geometry)ϵĿ  LILO
`linear' ѡܻЩϸ


Large Disk mini-HOWTO 						      1





Large Disk mini-HOWTO 						      2



3.  ŵ geometry Լָ

Ĵŵкüҵϵͳ,
ÿһʹһָ춷ָλ춺δͬĿܵԵ

MBR аһָָ(ָ: primary)
ĸĸҪָʹ, ǿ

     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 ǴŴأͷ: Cylinder/Head/Sector д)

, Ѷظ: ָλÿ 24 λԪ begin Լ end λ,  32
λԪ start Լ length λ

Linux ֻʹ start Լ length λ, Դ 2^32 ķָ,
Ҳ,  2 TB ķָֽŵٱ,
Ҳ㹻ʮ

ҵ, BIOS INT13  ʹλԪ CHS	,  10 λԪΪŴغ, 8
λԪΪͷ,  6  λԪΪŹϵĴ룮 ܵĴŴغ 0-1023,
ܵĴͷ 0-255, ŹϿܵĴΪ 1-63(ǵ, ŹϵĴ 1
,  0)  24 λԪԶַ 8455716864 λԪ(7.875 GB), 
1983 ŵٱ

ҵ, ׼ IDE	 256  Ź, 65536 ŴԼ 16
ͷԼԴȡ 2^37 = 137438953472	λԪ(128 GB), Ǽ BIOS
 63  1024 Ŵصֻʣ 528482304 λԪ(504
MB)Զַĵ

ⲻӦֽĴŵ, ʹøӲϵķ˷


4.  תŵʽ

û˶Դŵ'ʵ' geometry ȤŹĴͨǱ䶯 -
ӽŵΧĴŹбȽ϶Ĵ -  û'ʵ'ÿŹ
ʹ߶ǰѴŵ 0,1,..., Ĵϳɵ,
ÿȥҳλ춴ŵ

ԱһͨΪ LBA geometry Ϊ (C,H,S)  Ĵŵ(c,h,s)
λַΪ c*H*S+h*S+(s-1) SCSI ʹ LBA, ĳЩ IDE
Ҳǣ

 BIOS  24 λԪ(c,h,s) ת LBA   LBA  Ŀ,
ֿԶַ 7.875 GB ӦеĴŵ, ȻǸĽע˴








Large Disk mini-HOWTO 						      3



BIOS ʹõ CHS, 'ʵ'κιϵ

Ϊ LBA   BIOS ֪תʱЩƵķУ( BIOS
趨ͨΪ 'Large') BIOS  geometry Ϊ(C',H',S')ҵϵͳ,
ŵͨʱʹ(C,H,S) ͨ S=S', C'=C/N   H'=H*N,   N
ȷ C'<=1024 ֮ 2  Сη( C'=C/N ʱȥ˷)һ,
ȡ 7.875 GB

 BIOS ֪ 'Large'   'LBA', ỹĽ OnTracker
 EZ-Drive ЩŵʽԼĺʽ(routines)滻 BIOS ģ
ͨǽɽŵʽ MBR  Ἰ(OnTrack ЩʽΪ DDO:
Dynamic Drive Overlay )ɵ, κҵϵͳ֮ǰ
ҲΪʲڰװŵʽܻ⣮

Ӱܶ춻 BIOS ת -  رͬĴŵֲͬҵϵͳʱ,
ŵʽ⣮

Linux  1.3.14 濪ʼ֧Ԯ OnTrack  ŵʽ,  1.3.29 ʼ ֧Ԯ EZ-Drive
ЩһѶ


5.  ĵ IDE ŵת

 Linux  ⵽ IDE	ŵĳЩŵʽ,
ʹôŵʽͬķʽ¶Ӧŵ,  Linux  ,
 DOS   OnTrack	 EZ-Drive ͬĴŵָ Ȼ, ָָ
geometry ʱ, Ͳκε¶Ӧ -  һ `hd=cyls,heads,secs'
ָѡȡŵʽݣ

¶Ӧķʽǳ 4,8,16,32,64,128,255 ͷ(H*C ֲ)ֱ C <= 1024
 H = 255

ϸ -
Сڵ̧ͷǳӦ֮ѶϢִڴԼļκطзָ̬ʮλֱʾ

5.1  EZD

⵽ EZ-Drive , ΪһҪָ̬Ϊ 55 ¶Ӧ geometry,
ҺԴӵ 0  ķָ -  Ե 1
ķָȡŵ(block numbers) ûиı, Դ 0
дת 1˶Խ޸ ide.c е

      #define FAKE_FDISK_FOR_EZDRIVE  0


±ı䣮

5.2  DM6:DDO

⵽ OnTrack DiskManager(ڵһŵ), ΪһҪָ̬Ϊ 54
¶Ӧ geometry ŵƽ 63  (ԾɵĴ 63
ɴ 0)Ȼµĵ 0  µ MBR (ָ)ƽƵȻΪ DDO
ռ -  ҲΪʲŵƽƣ









Large Disk mini-HOWTO 						      4



5.3  DM6:AUX

⵽ OnTrack DiskManager(ŵ), ΪһҪָ̬Ϊ 51 
53¶Ӧ geometry 

5.4  DM6:MBR

⵽ĳɰ OnTrack DiskManager, ǽɷָ̬, ǩ(signa
ture)( MBR   2,3  λԪƫֵǷ񲻴 430,
ڴƫλַҵ short  0x55AA, 沢һλԪ)
һ¶Ӧ geometry 

5.5  PTBL

, Ļ᳢Դָ start Լ end ֵƶתʽ: ĳЩָ
start Լ end ŴС 256,  start Լ end ֱΪ 1   63 , 
end  ͷΪ 31, 63,   127, , ΪָڴŴر߽, ҸΪ
IDE  ʹ 16  ͷ, Ʋп BIOS ת, ֱʹ 32, 64  128
ͷ¶Ӧ geometry (Ҳе覴,  genhd.c
ӦòԴŴغǰλԪ?), Ŀǰ geometry ѾΪÿŹ 63
ͷʱ, ¶Ӧ (ΪνضӦ)


6.  

⵽νʲ?  Linux  ʹ߶ֻһ: Ǳȷ LILO
Լ fdisk  ʹȷ geometry , 'ȷ'Ķ fdisk
ͬһŵϵҵϵͳʹõ geometry ͬ,  LILO
ܹʱڳɹ BIOS ̸ geometry(ͨ)

fdisk ε֪ geometry ? ѯʺ, ʹ HDIO_GETGEO
ioctlʹ߿Խ̸ʽػָض geometry

LILO  ε֪ geometry ? ѯʺ, ʹ HDIO_GETGEO ioctl ʹ߿
`disk=' ѡضҲԸ LILO һ linear ѡ,  map  д
LBA  λַȡ CHS  λַ, ʱҳ geometry ʹ( INT 13
ܺ 8 ѯʴŵ geometry)

֪ش? , ʹ߿ `hd=cyls,heads,secs'
ָѡȷָ geometry, ĽѯӲ壮

6.1  IDE ϸ

ϸ˵IDE ʽĸ geometry
ѶԴһ(G_user)ʹָָģ ڶ(G_bios) BIOS
Ĺ̶ŵ(ֻ춵һڶŵ), ϵͳʱ, л 32
λԪģʽ֮ǰ룮 (G_phys)ĸ(G_log)  IDE  , Ϊ
IDENTIFY ָĻӦ -   'ʵ' Լ 'Ŀǰ߼ϵ' geometries

һ,  geometry ʽҪֵ: ֮һ G_fdisk,  HDIO_GETGEO
ioctl  , һ G_used , ִʱʵʹõģ  G_user
 G-fdisk  Լ G_used ߶Ϊ G_user, ѶǸ CMOS ṩʱΪ
G_bios , Ϊ G_phys G_log   G_used Ϊ G_log
Ȼ,  G_used   G_phys  G_used Ϊ








Large Disk mini-HOWTO 						      5



G_phys˴''ͷ 1-16 ġΧڣ

ʽ˵: ָѡ BIOS , Ҿ fdisk  ,
ָת geometry(ͷ 16),  Ļ IDENTIFY
ָض

6.2  SCSI ϸ

 SCSI һ㲻ͬ, Ϊ SCSI ָѾʹ߼,  'geome
try' ʵʵȫûϵ Ȼ, ָĸʽȻͬ,  fdisk
Щ geometry , Ҳڴʹ HDIO_GETGEO - , fdisk ֱ IDE
Լ SCSI ŵ ԴϸʽһЩͬ geome
try , һŻң

ûʹ DOS  ϵͳ, ʹжת趨, ܵĻ,
ʹ 64 ͷ, ÿŹ 32  (õ, ÿŴ 1 MB),
˵Ѵŵһһȥʱκ⣮ ĳЩ SCSI
ŵʽ (aha152x,pas16,ppa,qlogicfas,qlogicisp)ǳ DOS
Զֻ Linux  ϵͳʹó  8 GB , ֻ

ʵ geometry ʲ? 򵥵ĴûֶеĻ, 㲻֪,
ҵĵȷȷӲ,  fdisk   LILO й£ SCSI
ŵ֮£ ظ仰: ֻд fdisk/LILO/Kernel SCSI
ŵʵ geometry 

ѧҼ, ʴŵԼиҪָ READ CAPACITY
ᴫشŵ, и MODE SENSE ָ	Rigid Disk Drive Page(page 04)
ᴫشŴԼͷĿ(ǲܸıѶ),  Format Page(page
03)ÿλԪ, ԼÿŹĴ һ notch  й,
ÿŹĴǱ䶯 -  ΧĴŹӵбȦŹĴLinux ʽ
scsiinfo Ѷ ෱ϸ, Һ׵,
û(Ҳҵϵͳ)ҪʹѶ , Ϊֻ fdisk  Լ
LILO , һõĻش C/H/S=4476/27/171 - ֵ fdisk  ʹ,
Ϊָֻ 10resp. 8resp. 6 bits	 C/H/S

Ǻ֮ HDIO_GETGEO ӺδȡѶ? , Ǵ SCSI , ۲²⣮
ЩʽƺΪ֪ '' , ǵȻֻ֪ DOS	 OS/2 FDISK
( Adaptec AFDISK ȵ)õģ

ע, Linux fdisk Ҫͷ H	ԼÿŹ S  Աת LBA Ϊ
c/h/s  λַ, Ŵ C  ڴתвδʲɫ Щʽʹ (C,H,S)
= (1023,255,63)  ʾŵΪ 1023*255*63 ǲҵ,
ΪⲻʾʵʵĴС, ҽƴ󲿷ݰ汾֮ fdisk	ʹŵ 8
GB - ֽʵʵƣ

, M ʾŵȫ,  C,H,S	ǴŴ,
ͷԼÿŹǰ C   M/(H*S) Ǹ H,S Ϳ㣮

Ԥ, H=64, S=32.

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










Large Disk mini-HOWTO 						      6



      aha152x, pas16, ppa, qlogicfas, qlogicisp:
	    H=64, S=32  C > 1024,  H=255, S=63, C = min(1023,
	    M/(H*S)).  ( C ض,  H*S*C ǴŵĽֵ.
	    ⽫ҡ󲿷ݰ汾 fdisk.)  ppa.c ʽʹ M+1 ȡ M
	    ΪΪ sd.c һֻʹ M ֵһ

      advansys:
	    H=64, S=32  C > 1024 һ BIOS е `> 1 GB' ѡ,
	     H=255, S=63.

      aha1542:
	    ѯʿʹֿܵ schemes еһ, ʹ H=255, S=63
	     H=64, S=32. ǰиѶϢ "aha1542.c: Using extended bios
	    translation".

      aic7xxx:
	    H=64, S=32  C > 1024, һ "extended" , 
	    SEEPROM  BIOS  `extended' λԪ,  H=255, S=63.

      buslogic:
	    H=64, S=32  C >= 1024, һת,  M
	    < 2^22  H=128, S=32;  H=255, S=63. Ȼ, ѡ (C,H,S) ֮,
	    ָ, ֿܵ (H,S) = (64,32), (128,32), (255,63) 
	    endH=H-1 ֵʹøö (H,S) , ӡѶϢ "Adopting
	    Geometry from Partition Table".

      fdomain:
	     BIOS Drive Parameter Table ҳ geometry Ѷ,
	    ӷָȡʹ H=endH+1, S=endS һָ, ǿ,
	    ʹ 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 .  ,  1023 ص C .

      seagate:
	    Ӵŵȡ C,H,S. (ʵ!)  C  S ̫,  S=17, H=2 
	    H ֱ C <= 1024. ʾ H Ϊ 0  M > 128*1024*17 (1.1 GB).
	    ֻ.

      ultrastor and u14_34f:
	    ֶӦ֮һ ((H,S) = (16,63), (64,32), (64,63))
	    ݿĶӦģʽ.

ʽûָ geometry , Ǿͻصʹ÷ָŵƶϲ²⣮

ϸָΪָڴŴر߽, ǿΪκηָ
end=(endC,endH,ednS) , ֻҪ H = endH+1  S = endS (ǵô 1
㣮)ȷص˵иǿյķָ,  beginC ƣ
춴˷ָ,  end+1,  start Լ length
Ҽ˷ָĳŴر߽ ֵ,  endC = 1023 
start+length  (endH+1)*endS  ı, ٶ˷ָڴŴر߽, 
H = endH+1 Լ S = endS , Ϊûзָ,








Large Disk mini-HOWTO 						      7



ΪǵĴС, ֻŵ M 㷨:  H =
M/(62*1024)(λ),S = M/(1024*H)(λ), C =
M/(H*S)(ȥ)ܲһ (C,H,S)  C  1024  S  62



























































Large Disk mini-HOWTO 						      8





































































				   CONTENTS



1.  ................................................................. 1

2.  ..................................................................... 1

3. ŵ geometry Լָ ................................................. 2

4. תŵʽ ....................................................... 2

5. ĵ IDE ŵת ...................................................... 3
   5.1 EZD .................................................................. 3
   5.2 DM6:DDO .............................................................. 3
   5.3 DM6:AUX .............................................................. 4
   5.4 DM6:MBR .............................................................. 4
   5.5 PTBL ................................................................. 4

6.  ..................................................................... 4
   6.1 IDE ϸ ............................................................. 4
   6.2 SCSI ϸ ............................................................ 5


































				       i


