Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > c271e9e583b3924e0de744696831c936 > files > 20

howto-text-pl-2006-5mdv2010.0.noarch.rpm

  Du¿e dyski
  Andries Brouwer, aeb@cwi.nl <mailto:aeb@cwi.nl>
  v1.0, 960626
  wweerrssjjaa ppoollsskkaa ppiioottrr..ppooggoorrzzeellsskkii@@iipppptt..ggoovv..ppll
  <<mailto:piotr.pogorzelski@ippt.gov.pl>
  wersja 1.0, 5 marca 1997


  Wszystko na temat geometrii dysków i granicy 1024 cylindrów.
  ______________________________________________________________________

  Spis tre¶ci


  1. Postawienie problemu

  2. £adowanie systemu (Booting)

  3. Geometria dysku i partycje

  4. Translacja i Disk Managery

  5. Translacja wykonywana przez j±dro dla dysków IDE

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

  6. Konsekwencje

     6.1 Szczególy IDE
     6.2 Szczegó³y SCSI

  7. Od t³umacza



  ______________________________________________________________________

  11..  PPoossttaawwiieenniiee pprroobblleemmuu

  Za³ó¿my, ¿e posiadasz dysk z wiêcej ni¿ 1024 cylindrami. Co wiêcej
  za³ó¿my, ¿e posiadasz system który korzysta z BIOSu. Wtedy masz
  problem. Masz problem poniewa¿ zwyk³y interfejs We/Wy twojego dysku
  realizowany przez przerwanie BIOSu INT13, które do przekazywania
  numeru cylindra, na którym ma zostaæ wykonana operacja We/Wy korzysta
  z 10-cio bitowego pola, przez co cylindry o numerze 1024 i wiekszym s±
  niedostêpne.

  Na szczê¶cie Linux nie korzysta z BIOSu, wiêc nie ma tego problemu.

  No prawie, poza dwoma przypadkami:

  (1) Kiedy uruchamiasz swój system, Linux jeszcze nie dzia³a i nie
  potrafi uchroniæ ciê przed k³opotami z BIOSem. Ma to wp³yw na pracê
  LILO i innych ³adowaczy systemów (boot loaders).

  (2) Wszystkie systemy operacyjne korzystaj±ce z tego samego dysku
  musz± zgadzaæ siê co do po³o¿enia poszczególnych partycji. Innymi
  s³owy, je¶li korzystasz na jednym dysku z Linuxa i powiedzmy DOSu,
  wtedy oba musz± interpretowaæ tabelê partycji w ten sam sposób. Ma to
  wp³yw na sposób zachownia j±dra i programu fdisk.


  Poni¿ej znajdziesz sczegó³owy opis wszelkich istotnych szczegó³ów.
  Zauwa¿, ¿e wszelkie informacje odnosz± siê do j±dra w wersji 2.0.8.
  Inne wersje j±dra mog± zachowywaæ siê troszkê inaczej.



  22..  ££aaddoowwaanniiee ssyysstteemmuu ((BBoooottiinngg))

  Podczas ³adowania systemu, BIOS odczytuje z pierwszego dysku twardego
  (lub z dyskietki) sektor 0 (znany jako g³ówny sektor startowy (Master
  Boto Record, MBR)) i wykonuje skok do znalezionego tam kodu - zwykle
  do programu ³adowania pocz±tkowego. Te ma³e programy ³aduj±ce
  (³adowacze) jakie siê tam znajduj±, nie posiadaj± wlasnych drajwerów
  dyskowych i korzystaj± z funkcji BIOSu. To znaczy, ¿e j±dro Linuxa
  mo¿e zostaæ za³adowane, tylko wtedy gdy w ca³o¶ci znajduje siê poni¿ej
  1024 cylindra.

  Ten problem mo¿na bardzo ³atwo rozwi±zaæ. Upewnij siê, ¿e j±dro (i byæ
  mo¿e inne pliki wykorzystywane do startu systemu, np. pliki odzworowañ
  programu LILO) znajduj± siê na partycji, która w ca³o¶ci zawiera siê w
  obszrze ponizej 1024 cylindra dysku, do którego BIOS ma dostêp -
  zwykle pierwszy lub drugi dysk twojego komputera.

  Poza tym ³adowacz i BIOS musz± siê zgadzaæ w sprawie geometrii dysku.
  Tutaj mo¿e okazaæ siê pomocne skorzystanie w konfiguracji LILO z opcji
  _l_i_n_e_a_r. Wiêcej szczegó³ów pó¼niej.



  33..  GGeeoommeettrriiaa ddyysskkuu ii ppaarrttyyccjjee

  Je¶li posiadasz na jednym dysku kilka systemów operacyjnych, wtedy
  ka¿dy z nich u¿ywa jednej lub wiêcej partycji. Niezgodno¶æ w ocenie,
  gdzie te partycje siê dok³adnie znajduj± mo¿e mieæ katastrofalne
  konsekwencje.

  Rekord MBR zawiera _t_a_b_e_l_ê _p_a_r_t_y_c_j_i okre¶laj±c±, gdzie znajduj± siê
  partycje (podstawowe). Tabela zawiera 4 pozycje (dla 4 partycji) i
  wygl±da mniej wiêcej tak:


       struct partition {
               char active;    /* 0x80: startowa, 0: nie strtowa */
               char begin[3];  /* CHS pierwszego sektora partycji */
               char type;
               char end[3];    /* CHS ostatniego sektora partycji */
               int start;      /* 32 bitowy numer sektora (licz±c od 0) */
               int length;     /* 32 bitowa liczba sektorów */
       };




  (gdzie CHS oznacza numer cylindra/g³owicy/sektora).

  Jak widaæ informacja jest nadmiarowa: lokalizacja partycji jest podana
  zarówno w 24-ro bitowych polach begin i end, oraz w 32-dwu bitowych
  polach start i length.

  Linux korzysta jedynie z pól start i length, dlatego potrafi obs³u¿yæ
  partycje o liczbie sektorów nie przekraczaj±cej 2^32 tzn. partycje o
  rozmiarze nie wiêkszym ni¿ 2 TB. Czyli dwie¶cie razy wiêksz± od dysków
  obecnie dostêpnych na rynku. Mo¿emy mieæ nadzieje, ¿e bêdzie to
  wystarczaj±ce na najbli¿sze 10 lat, a mo¿e wiêcej.


  Niestety, funkcja BIOSu INT13 korzysta z inforamacij CHS zakodowanych
  w polach 3bajtowych, przy czym na numer cylindra przeznaczonych jest
  10 bitów, 8 bitów na numer g³owicy i 6 bitów na numer sektora na
  ¶cie¿ce. Dozwolone numery cylindrów to 0-1023, g³owic 0-255 i
  dozwolona liczba sektorów na ¶cie¿ce wynosi 1-63 (tak, sektory na
  ¶cie¿ce s± liczone od 1, a nie od 0). Na tych 24 bitach mo¿na
  zaadresowaæ nie wiêcej ni¿ 8455716864 bajtów (7.875 GB), dwie¶cie razy
  wiêcej ni¿ rozmiar dysków dostêpnych w roku 1983.

  Kolejne, wa¿niejsze (gro¼niejsze) ograniczenie polega na tym, ¿e
  standard interfejsu IDE pozwala jedynie na: 256 sektorów na ¶cie¿ce,
  65536 cylindrów i 16 g³owic. Sam w sobie pozwala na dostêp do 2^37 =
  137438953472 bajtów (128 GB), lecz w po³±czeniu z ograniczeniami
  na³o¿onymi przez BIOS, faktycznie umo¿liwia na dostêp tylko do
  528482304 bajtów (504 MB).

  Nie jest to wystarczaj±ce dla dostêpnych obecnie dysków i ludzie s±
  zmuszeni do stosowania ró¿nego rodzaju sztuczek, zarówno sprzêtowych,
  jak i programowych.



  44..  TTrraannssllaaccjjaa ii DDiisskk MMaannaaggeerryy

  Nikogo nie interesuje jaka jest `rzeczywista' geometria dysku.  Tak na
  prawdê, liczba sektorów na ¶cie¿ce czêsto jest zmienna - wiêcej na
  ¶cie¿kach zewnêtrznych i mniej na ¶cie¿kach wewnêtrznych - nie ma tak
  na prawdê `rzeczywstej' liczby sektorów na ¶cie¿ce. Dla u¿ytkownika
  najwygodniej jest traktowaæ dysk jako liniow± tablicê sektorów,
  ponumerowanych 0,1 ... i pozostawiæ sterownikowi zadanie odnalezienia
  po³o¿enia danego sektora na dysku.

  To numerownie liniwe znane jest pod skrótem LBA. Adres liniowy
  nale¿acy do sektora (c,h,s) dla dysku o geometrii (C,H,S) jest równy
  c*H*S+h*S+(s-1). Wszystkie sterowniki SCSI porozumiewaj± siê wed³ug
  standardu LBA, niektóre sterowniki IDE równie¿.

  BIOS zamienia 24-bitowe pole (c,h,s) na adres LBA i przekazuje to
  sterownikowi, który rozumie co to jest LBA. Dziêki temu ponownie mamy
  dostêp do 7.785 GB. Nie jest to wystarczaj±ce dla wszystkich dysków,
  lecz jest to lepsze ni¿ to co by³o. Zauwa¿, ¿e CHS wykorzystywane
  przez BIOS nie ma ¿adnego zwi±zku z rzeczywisto¶ci±.

  Co¶ poddobnego dzieje siê w sytuacji, gdy sterownik nie rozumie
  adresów LBA, lecz BIOS wie o translacji (w Setupie BIOSu jest to
  zwykle oznaczane jako `Large'). Teraz BIOS prezentuje systemowi
  operacyjnemu geometriê (C',H',S') i u¿ywa geometrii (C,H,S) do
  komunikacji ze sterownikiem. Zwykle S=S' C'=C/N i H'=H*N, gdzie N jest
  najmniejsz± potêg± 2, zapewniaj±c± spe³nienie warunku ' <= 1024 (w
  celu zminimalizowania marnuj±cej siê przestrzeni przez zaokr±glenie w
  dó³ C'=C/N). Ta metoda równie¿ pozwala uzyskaæ dostêp do 7.875 GB.

  Je¶li BIOS nic nie wie na tema `Large' lub LBA, wtedy pozostaj±
  rozwi±zania oparte na odpowiednich drajwerach. Takie programy, jak
  OnTrack lub Ez-Drive zamieniaj± programy obs³ugi dysku nale¿±ce do
  BIOSu na w³asne. Czêsto jest to realizowane, przez umieszenie kodu
  nale¿acego do Disk Managera w rekordzie MBR i kolejnych sektorach
  dysku (OnTrack nazywa to DDO: Dynamic Drive Overlay) aby by³ on
  uruchamiany przed za³adowniem jakiegokolwiek systemu operacyjnego. To
  wyja¶nia k³opoty zwi±zane ze startowniem systemu z dyskietki, dla
  dysków z zainstalowanym programem Disk Manager.

  Efekt ca³ego tego zamieszania jest mniej wiêcej taki sam, jak w
  przypadku translacji przez BIOS - lecz w sytuacjach, gdy na jednym
  dysku znajduje siê wiele systemów operacyjnych programy typu Disk
  Manager mog± sprawiaæ wiele k³opotów.
  Linux od wersji 1.3.14 rozpoznaje istnienie programu Boot Manager
  firmy OnTrack i od wersji 1.3.29 firmy EZ-Drive. Wiêcej szczegó³ów
  znajdziesz dalej.



  55..  TTrraannssllaaccjjaa wwyykkoonnyywwaannaa pprrzzeezz jj±±ddrroo ddllaa ddyysskkóóww IIDDEE

  Je¶li j±dro Linuxa rozpozna istnienie na dysku IDE programu typu disk
  manager, spróbuje przeprowadziæ identyczn± translacjê jak± robi ten
  w³a¶nie program, tak aby widzieæ te same partycje co np. MS-DOS z
  programe OnTrack lub EZ-Drive. Je¶li jednak w parametrach startowych
  zostanie przekazana geometria dysku, nie jest wykonywana ¿adna
  translacja. Tak wiêc opcja startowa `hd=_c_y_l_s,_h_e_a_d_s,_s_e_c_s' mo¿e
  zniszczyæ zgodno¶æ z programem typu disk manager.

  Translacja wykonywana przez j±dro polega na wypróbowaniu kolejno
  liczby g³owic równej 4, 8 ,16, 32, 128, 255 (utrzymuj±c sta³± warto¶æ
  H*C) a¿ do spe³nienia warunku C <= 1024 lub H = 255.

  Trochê uwag na temat tekstu poni¿ej - nag³ówki podrozdzia³ów s±
  identyczne z pojawiaj±cymu siê w komunikatach startowych. Tutaj i w
  ca³ym tekscie typy partycji podane s± szesnastkowo.


  55..11..  EEZZDD


  Rozpoznano drajwer EZ-Drive poniwa¿ pierwsza partycja podstawowa jest
  typu 55. Geometria dysku podlega opisanej powy¿ej translacji i tabela
  partycji z sektora 0 zostaje pominiêta - zmiast tego korzystamy z
  tabeli partycji znajduj±cej siê w sektorze 1. Numery bloków dyskowych
  pozostaj± niezmienione, lecz zapis sektora 0 zostaje przekierowany do
  sektora 1. To zachownie mo¿e zostaæ zmienione przez ponowne
  skompilowanie j±dra przy zdefiniowaniu w pliku _i_d_e_._c #define
  FAKE_FDISK_FOR_EZDRIVE 0 .


  55..22..  DDMM66::DDDDOO

  Rozpoznano drajwer OnTrack Manager (na pierwszym dysku) poniewa¿
  pierwsza partycja podstawowa jest typu 54. Geometria dysku podlega
  opisanej powy¿ej translacji i ca³y dysk zostaje przesuniêty o 63
  sektory (tak wiêc stary sektor 63 staje siê sektorem 0). Nastêpnie
  nowy rekord MBR (z tabel± partycji) zostaje odczytany z nowego sektora
  0. To przesuniêcie oczywi¶cie ma na celu zrobienie miejsca dla DDO -
  dlatego nie jest wykonywane dla innych dysków.


  55..33..  DDMM66::AAUUXX

  Rozpoznano drajwer OnTrack Manager (na innych dyskach)  poniewa¿
  pierwsza partycja podstawowa jest typu 51 lub 53. Geometria dysku
  podlega opisanej powy¿ej translacji.


  55..44..  DDMM66::MMBBRR


  Rozpoznano starsz± wersjê drajwera OnTrack Manager poniwa¿ znaleziono
  podpis drajwera (sprawdzono, ¿e przesuniêcie znalezione w 2-gim i
  3-cim bajcie rekordu MBR nie jest wiêksze od 430, i zmienna typu short
  znaleziona pod tym adresem jest równa 0x55AA, po której wystêpuje bajt
  nieparzysty). Geometria dysku podlega opisanej powu¿ej translacji.


  55..55..  PPTTBBLL

  Na koñcu wykonywany jest test próbuj±cy wydedukowaæ istnienie
  translacji na podstawie warto¶ci pól start i end  partycji
  podstawowej: Je¶li cylinder pocz±tkowy i koñcowy jednej z partycji
  jest mniejszy od 256, a sektory pocz±tkowy i koñcowy maj± numery
  odpowiednio 1, i 63, a koñcowe numery g³owic s± równe 31, 63 lub 127,
  wtedy wnioskujemy, ¿e translacja dysku jest aktywna, i wykorzystujemy
  liczbê g³owic równ± odpowiednio 32, 64 i 127 (poniewa¿ zwykle partycja
  koñczy siê na granicy cylindra i interfejs IDE nie pozawala na wiêcej
  ni¿ 16 g³owic). Byæ mo¿e jest tu b³±d i _g_e_n_h_d_._c nie powinien sprawdzaæ
  dwóch najwy¿szych bitów zmiennej przechowuj±cej numer cylindra?
  Jednak¿e nie wykonuje siê ¿adej translacji, jesli aktualny pogl±d na
  istniej±c± geometriê ju¿ zak³ada 63 sektory na ¶cie¿ce i co najmniej
  tyle samo g³owic (poniewa¿ to prawdopodownie oznacza, ze translacja
  ju¿ zosta³a dokonana).


  66..  KKoonnsseekkwweennccjjee

  Jakie to wszystko ma znaczenie? Dla u¿ytkowników Linuxa tylko jedno:
  musz± siê upewniæ, ¿e LILO i fdisk u¿ywaj± `poprawnej' geometrii,
  gdzie `poprawna' w przypadku fdiska jest rozumiana jako geometria
  u¿ywana przez inne systemy operacyjne znajduj±ce sie na tym samym
  dysku, a w przypadku LILO, ¿e jest to geometria pozwalaj±ca na
  poprawn± wspó³pracê z BIOSem podczas ³adowania systemu.

  Jak fdisk dowiaduje siê o geometrii?  Pyta siê j±dra przy pomocy
  funkcji ioctl HDIO_GETGEO.  Lecz u¿ytkownik mo¿e podaæ dowoln±
  geometriê dysku przez parametry w wierszu poleceñ lub pó¼niej w samym
  programie.

  Jak LILO dowiaduje siê o geometrii dysku?  Pyta siê j±dra przy pomocy
  funkcji ioctl HDIO_GETGEO.  Lecz u¿ytkownik mo¿e podaæ ³asne
  inforamacje z pomoc± opcji `disk='.  Mo¿na równie¿ skorzystac z opcji
  linear, co spowoduje, ¿e LILO zachowa w pliku odwzorwania (map file)
  adres LBA, zamiast CHS i podczas ³adowania sytemu odczyta geometriê
  dysku (wykorzystujêc funkcjê nr 8 przerwania INT 13).

  Sk±d j±dro wie co odpowiedzieæ?  Ha!, po pierwsze u¿ytkownik mo¿e
  przekazæ mu odpowiednie informacje jako parametr wiersza zachêty
  startowej: `hd=_c_y_l_s,_h_e_a_d_s,_s_e_c_s'.  W innym przypadku j±dro przepyta na
  ten temat sprzêt.


  66..11..  SSzzcczzeeggóóllyy IIDDEE

  Trochê szczegó³ów.  Drajwer IDE posiada cztery ¼ród³a informacji o
  geometrii dysku. Pierwsze (G_user) to dane podane przez u¿ytkwonika w
  wierszu zachety. Drugie (G_bios) to inforamcje BIOSu (tylko dla
  pierwszego i drugiego dysku), które s± odczytywana podczas
  uruchamiania systemu, przed prze³±czeniem siê w tryb 32-bitowy.
  Trzecie (G_phys) i czwarte (G_log) s± przekazywane przez sterownik IDE
  jako odpowied¼ na polecenie IDENTIFY - s± to `fizyczna' i aktualna
  `logiczna' geometria dysku.

  Z drugiej strony, sterownik potrzebuje dwóch informacji o geometrii
  dysku: lecz posiada z jednej strony G_fdisk, przekazywane przez
  funkcjê ioctl HDIO_GETGEO, a z drugiej strony  G_used, które jest
  naprawdê wykorzystywane do wykonywania operacji We/Wy. Zarówno
  G_fdisk, jak i G_used s± inicjowane: warto¶ciami G_user je¶li s±
  podane, G_bios je¶li ta inforamcja jest dostepna wg. CMOS, lub G_phys
  w przeciwnym wypadku.  Jesli G_log wygl±da rozs±dnie to G_used
  przybiera tê w³asnie warto¶æ. W przeciwnym wypadku, je¶li G_used nie
  ma wiêkszego sensu i G_phys wygl±da OK, wtedy G_used przyjmuje warto¶æ
  G_phys. W tym przypadku `rozs±dnie' oznacza, ¿e liczba g³owic jest w
  zakresie 1-16.

  Innymi s³owy parametry wiersza zachêty s± wa¿niejsze od informacji
  pobranych z BIOSu i okre¶laj± jak± geometriê widzi fdisk, lecz je¶li
  podane informacje odpowiadaj± geometri poddanej translacji (wiecej ni¿
  16 g³owic), wtedy operacje We/wy j±dra zostan± zast±pione odpowiedzi±
  sterownika na polecenie IDENTIFY.


  66..22..  SSzzcczzeeggóó³³yy SSCCSSII

  Sytuacja w przypadku SCSI jest trochê inna, poniewa¿ polecenia SCSI
  u¿ywaj± logicznych numerów bloków, tak wiêc geometria dysku nie ma
  absolutnie ¿adnego znaczenia dla operacjami We/Wy.  Jednak¿e format
  tabeli partycji jest ci±gle ten sam, wiêc fdisk musi wymy¶leæ jak±¶
  geometriê i równie¿ w tym przypadku korzysta z funkcji HDIO_GETGEO - w
  rzeczywisto¶ci fdisk nie rozró¿nia dysków IDE i SCSI. Jak ka¿dy mo¿e
  siê sam przekonaæ (na podstawie szczegó³owego omówienia poni¿ej)
  poszcególne drajwery wymy¶laj± ró¿ne geometriê. Rzeczywi¶cie jeden
  wielki balagan.

  Je¶li nie korzystasz DOSu, to unikaj wszelkich ustawieñ rozszerzonych
  translacji i je¶li to mo¿liwe, u¿ywaj ustawieñ 64 g³owice, 32 sektory
  na ¶cie¿ce (wtedy jeden cylinder ma ³adny rozmiar 1MB).  Unikniesz
  problemów, gdy przeniesiesz dysk z jednego sterownika do innego.
  Niektóre dyski SCSI (aha152x, pas16, ppa, qlogicfas, qlogicisp) s± tak
  nerwowe w sprawach zgodno¶ci z MS-DOSem, ¿e nie pozwol± systemowi z
  zainstalowanym wy³±cznie systemem Linux na wykorzystanie wiêcej ni¿
  8GB. To jest b³±d.

  Jaka jest rzeczywista geometria?  Najprostsza odpowied¼ mówi, ¿e nie
  ma czego¶ takiego.  I gdyby by³a, to nie chcia³by¶ wiedzieæ, i na
  pewno NIGDY, ale to PRZENIGDY nie mów o tym fdiskowi, LILO lub j±dru.
  To jest po prostu sprawa pomiêdzy dyskiem i sterownikiem SCSI.
  Pozwolisz, ¿e powtórzê: tylko g³upcy mówi± fdiskowi/LILO/j±dru o
  rzeczywistej geometrii dysków SCSI.

  Lecz je¶li jeste¶ ciekaw i nalegasz, mo¿esz spytaæ o to sam dysk.
  Istnieje bardzo wa¿ne polecenie READ CAPACITY, które przekazuje
  ca³kowi± objêto¶æ dysku, a drugie polecenie MODE SENSE (patrz Rigid
  Disk Drive Geometry Page (strona 04)) pozwala odczytaæ liczbê
  cylindrów i g³owic (ta informacje nie mo¿e byæ zmieniona), natomiast w
  Format Page (strona 03) podaje liczbê bajów w sektorze i liczbê
  sektorów w ¶cie¿ce. Ta ostania liczba jest zwykle zale¿na od wyciêcia
  (notch) i liczba sektorów na ¶cie¿ce jest zmienna - ¶cie¿ki zewnêtrzne
  posiadaj± wiêcej sektorów, wewnêtrzne mniej. Program pracuj±cy pod
  Linuxem o nazwie scsiinfo poda ci te wszystkie informacje.

  Jest wiele szcegó³ów i komplikacji, i jest jasne, ¿e nikt
  (prawdopodobnie nawet sam system operacyjny) nie chce wykorzystywaæ
  tej informacji. Co wiêcej, tak d³ugo jak martwimy siê tylko o fdisk i
  LILO, zwykle otrzymuje siê odpowiedz typu C/H.S=4476/27/171 -
  warto¶ci, które nie mog± byæ wykorzystane przez fdisk, poniewa¿ tabela
  partycji rezerwuje jedynie dla C/H/S odpowiednio 10/8/6 bitów.

  To sk±d na ten temat bierze informacjê funkcja HDIO_GETGEO ?  Cóz,
  albo ze sterownika SCSI lub zgaduje. Wygl±da, ¿e niektóre dyski mysl±,
  ¿e interesuje nas `rzeczywisto¶æ', lecz nas oczywi¶cie interesuje
  jedynie jakie parametry bêd± u¿ywane przez FDISK pod DOSem czy OS/2
  (lub AFDISK Adapteca).

  Pamiêtaj, ¿e fdisk Linuxa potrzebuje znaæ liczbê g³owic H i sektorów
  na ¶cie¿ce S, aby móc zamieniæ numer sektora w foramcjie LBA na adres
  c/h/s, lecz liczba cylindrów C nie ma znaczenia w tej konwersji.
  Niektóre dyski u¿ywaj± (C,H,S)=(1032,255,63) w celu zasygnalizowania,
  ¿e dysk ma co najmniej 1023*255*63 sektorów. Niestety to nie ujawnia
  aktualnego rozmiaru dysku i bêdzie ogranicza³o u¿ytkowników wiêkszo¶ci
  wersji programu fdisk do wykorzstania tylko oko³o 8GB ich dysków - w
  dzisiejszych czasach jest to powa¿ne ograniczenie.

  W opisie przedstawionym poni¿ej, M oznacza ca³kowit± pojemno¶æ dysku,
  a C,H i S liczbê cylindrów, g³owic i sektorów na ¶cie¿ce.  Je¶li
  traktujemy C jako wynik dzia³ania C = M / (H*S), wtedy wystarczy podaæ
  H i S.

  Domy¶lnie H=63,S=32.


     aahhaa11774400,, ddttcc,, gg__NNCCRR55338800,, tt112288,, wwdd77000000::
        H=64, S=32.


     aahhaa115522xx,, ppaass1166,, ppppaa,, qqllooggiiccffaass,, qqllooggiicciisspp::
        H=64, S=32 unless C > 1024, W takim przypadku H=255, S=63, C =
        min(1023, M/(H*S)).  (Tak wiêc C jest obciête i h*s*C  nie jest
        aproksymacj± rozmiaru dysku M. Taka sytuacja potrafi og³upiæ
        wiêkszo¶æ wersji programu fdsik.) Kod w pliku _p_p_a_._c wykorzystuje
        M+1 zamiast M i twierdzi, ¿e to z poowdu b³êdu w  _s_d_._c M jest
        przesuniête o 1.


     aaddvvaannssyyss::
        H=64, S=32 chyba, ¿e C > 1024 i co wiêcej przy w³±czonej opcji
        BIOSu `> 1 GB', co w takim przypadku daje H=255, S=63.


     aahhaa11554422::
        Spytaj sterownika, który z mo¿liwych dwóch schematów translacji
        jest w u¿yciu, i u¿yj albo H=255, S=63 lub H=64, S=32. W ostanim
        przypadku wy¶wietlany jest komunikat startowy "aha1542.c: Using
        extended bios translation".


     aaiicc77xxxxxx::

        H=64, S=32 chyba, ¿e C > 1024, i co wiêcej je¶li przekazano
        parametr startowy (boot) "extended", lub je¶li w pamiêci
        SEEPROM, lub BIOSie by³ ustawiony bit `extended', to w takim
        przypadku przyjmuje siê H=255, S=63.


     bbuussllooggiicc::
        H=64, S=32 chyba, ¿e C >= 1024, i co wiêcej na sterwoniku
        zosta³a w³±czona translacja rozszerzona, co w takim pryzpadku
        powoduje przyjêceie  parametrów H=128, S=32 je¶li  M < 2^22  lub
        H=255, S=63 w przeciwnym wypadku. Jednak¿e po dokonaniu wyboru
        (C,H,S) odczytywana jest tabela partycji i je¶li dla jednej z
        trzech mo¿liwo¶ci (H,S) = (64,32), (128,32), (255,63)
        gdziekolwiek zgadza siê równo¶æ endH=H-1, wtedy stosowana jest
        dana para (H,S) i wy¶wietlany jest komunikat "Adopting Geometry
        from Partition Table".


     ffddoommaaiinn::

        Znajduje parametry w tabeli parametrów dysku BIOSu, lub
        odczytuje tabelê partycji i u¿ywa translacji H=endH+1, S=endS w
        przypadku pierwszej partycji (pod warunkiem, ¿e nie jest pusta),
        lub u¿ywa H=64, S=32 w przypadku gdy M < 2^21 (1 GB), lub H=128,
        S=63 je¶li M < 63*2^17 (3.9 GB) w przeciwnym wypadku.  H=255,
        S=63.

     iinn22000000::
        U¿yj pierwszej pary (H,S) = (64,32), (64,63), (128,63),
        (255,63), dla której zajdzie nierówno¶æ C <= 1024. W przeciwnym
        wypadku skróæ C do 1023.


     sseeaaggaattee::
        Odczytuje C,H,S z dysku.  (Horror!)  Je¶li C lub S jest zbyt
        du¿e wtedy przyjmuje S=17,H=2 i podwaja H a¿ V <<;= 1024. To
        znaczy, ¿e H bêdzie mia³o warto¶æ 0, je¶liM > 128*1024*17 (1.1
        GB). To jest b³±d.


     uullttrraassttoorr aanndd uu1144__3344ff::
        W zale¿no¶ci o trybu sterownika wykorzystywane jest jedno z
        nastêpuj±cych odwzoroañ:((H,S) = (16,63), (64,32), (64,63))


  Je¶li drajwer nie poda geometrii dysku, powracamy do metody pole­
  gaj±cej na zgadywaniu na podstawie zawarto¶ci  tabeli partycji, lub
  ca³kowitej pojemno¶ci dysku.

  Zobacz tabelê partycji. Poniewa¿ powszechnie partycja koñczy siê na
  granicy cylindra, znaj±c dla ka¿dej partycji end = (endC,endH,endS)
  mo¿emy po prostu przyj±æ H = endH+1 and S = endS. (Przypomnij sobie,
  ¿e sektory liczy siê od 1.) A dok³adniej wykonywana jest nastêpuj±ca
  operacja.  Je¶li istnieje niepusta partycja, odczytaj tê o najwiêkszej
  warto¶ci beginC. Dla tej partycji sprawd¼ end+1, obliczone przez
  dodanie start i length przy za³o¿eniu, ¿e ta partycja koñczy siê na
  granicy sektorów. Je¶li obie warto¶ci siê zgadzaj± lub je¶li endC =
  1023  i start+length jest ca³kowit± wielokrotno¶ci± (endH+1)*endS,
  wtedy mo¿emy za³o¿yæ, ¿e ta partycj± rzeczywi¶cie by³a wyrównana do
  granicy cylindra i przyj±æ H = endH+1 i S = endS.  Je¶li jednak tak
  nie jest, a to dlatego, ¿e nie ma ¿adnej partycji, lub dlatego, ¿e
  partycje maj± dziwne rozmiary wtedy spróbuj wykorzystaæ pojemno¶æ
  dysku M. Algorytm: przyjmij H=M/(62*1024) (zaokr±glone w górê), S =
  M/(1024*H) (zaokr±glone w gorê), C = M/(H*S) (zaokr±glone w dó³).  W
  ten sposób otrzymamy geometriê (C,H,S), prz czym C nie przekroczy
  1024, a S 62.


  77..  OOdd tt³³uummaacczzaa

  Wszelkie uwagi na temat t³umaczenia mile widziane. Uwagi merytoryczne
  prosze kierowaæ do autora tekstu angielskiego, chyba ¿e podej¿ewasz,
  ¿e s± one wynikiem b³êdnego t³umaczenia.

  Inne dokumenty HOWTO przet³umaczone na jêzyk polski znajdziesz tutaj:
  http://www.ippt.gov.pl/~ppogorze/Linux/JTZ/.

  Wersje txt i html lepiej nadajace sie do druku sa tutaj:
  ftp://www.ippt.gov.pl/pub/Linux/JTZ/.