Fragen zu fdisk und bsdlabel

dagnu

Well-Known Member
Ich versuche gerade aus der Ferne einen Server
neu zu partitionieren, dabei ist es mir leider
nicht möglich den Single-User-Modus oder Sysinstall
zu verwenden, da die Root-Partition von der Festplatte
gemountet ist. Auf dem System befand sich vor der
FreeBSD-Installation ein SuSE-Linux, dessen Partition
nun für ein Slice genutzt werden soll.

Derzeitig sieht die Festplatte so aus:
Code:
# fdisk -s da0
/dev/da0: 2213 cyl 255 hd 63 sec
Part        Start              Size Type Flags
   1:            63      2056257 0xa5 0x00
   2:  2056320    33495525 0x83 0x80

Handelt sich also um zwei Slices mit jeweils 1 und 16GB.
Um das zweite auf den Typ 165 zu ändern habe ich folgendes versucht:
Code:
# fdisk -iu2 da0
******* Working on device /dev/da0 *******
parameters extracted from in-core disklabel are:
cylinders=2213 heads=255 sectors/track=63 (16065 blks/cyl)

Figures below won't work with BIOS for partitions not in cyl 1
parameters to be used for BIOS calculations are:
cylinders=2213 heads=255 sectors/track=63 (16065 blks/cyl)

Do you want to change our idea of what BIOS thinks ? [n] 
Media sector size is 512
Warning: BIOS sector numbering starts with sector 1
Information from DOS bootblock is:
The data for partition 2 is:
sysid 131 (0x83),(Linux native)
    start 2056320, size 33495525 (16355 Meg), flag 80 (active)
        beg: cyl 128/ head 0/ sector 1;
        end: cyl 1023/ head 254/ sector 63
Do you want to change it? [n] y
Supply a decimal value for "sysid (165=FreeBSD)" [0] 165
Supply a decimal value for "start" [0] 2056320
Supply a decimal value for "size" [0] 33495525
Explicitly specify beg/end address ? [n] 
sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD)
    start 2056320, size 33495525 (16355 Meg), flag 0
        beg: cyl 128/ head 0/ sector 1;
        end: cyl 164/ head 254/ sector 63
Are we happy with this entry? [n] y
Do you want to change the active partition? [n]

We haven't changed the partition table yet.  This is your last chance.
parameters extracted from in-core disklabel are:
cylinders=2213 heads=255 sectors/track=63 (16065 blks/cyl)

Figures below won't work with BIOS for partitions not in cyl 1
parameters to be used for BIOS calculations are:
cylinders=2213 heads=255 sectors/track=63 (16065 blks/cyl)

Information from DOS bootblock is:
1: sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD)
    start 63, size 2056257 (1004 Meg), flag 0
        beg: cyl 0/ head 1/ sector 1;
        end: cyl 127/ head 254/ sector 63
2: sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD)
    start 2056320, size 33495525 (16355 Meg), flag 0
        beg: cyl 128/ head 0/ sector 1;
        end: cyl 164/ head 254/ sector 63
3: <UNUSED>
4: <UNUSED>
Should we write new partition table? [n]

Dabei habe ich (wie zu sehen) die "sysid=165" gesetzt und die Werte
für "start" und "size" von den bestehenden Einstellungen übernommen.
Zwei Dinge sind mir dabei (trotz gleichbleibender Größe) aufgefallen:
* die bisherige Linux-Partition endet bei cylinder=1023 obwohl
fdisk zu Beginn cylinders=2213 ermittelt.
* das Slice endet sogar schon bei cylinder=164 ist aber genauso groß

Kann mir das jemand erklären?

Meine zweite Frage bezieht sich auf bsdlabel, in dem Fall für das erste Slice:

Code:
# bsdlabel da0s1
# /dev/da0s1:
8 partitions:
#             size       offset      fstype   [fsize bsize bps/cpg]
  a:    409185              0     4.2BSD          0     0     0 
  c:  2056257              0    unused           0     0         # "raw" part, don't edit
  d:  1647072   409185     4.2BSD     2048 16384 28552

Unklar ist mir dabei die Bedeutung des bps/cpg-Wertes, diesen habe ich bisher
bei der Einrichtung mit "bsdlabel -R da0s1 labeldatei" nicht angegeben, er wird
also automatisch vom System gesetzt. Dem Manual ist zu entnehmen:
For 4.2BSD file systems, the number of cylinders in a cylinder group.
OK nur warum habe ich auf da0s1a dann überhaupt Zugriff bzw.
die Möglichkeit Daten zu speichern? Auf anderen Systemen sieht es teilweise noch
chaotischer aus:
Code:
# bsdlabel ar0s1
# /dev/ar0s1:
8 partitions:
#             size           offset    fstype      [fsize   bsize bps/cpg]
  a:     524288                 0    4.2BSD     2048 16384    32776 
  b:  4148560        524288      swap                    
  c: 234436482               0    unused           0         0         # "raw" part, don't edit
  d:  8388608      4672848    4.2BSD     2048 16384    28552 
  e:   524288     13061456    4.2BSD     2048 16384    32776 
  f: 220850738 13585744     4.2BSD          0         0            0

Wäre sehr erfreut wenn mir dies bzgl. noch jemand Nachhilfe geben könnte :confused:

mfg dagnu
 
Code:
Zwei Dinge sind mir dabei (trotz gleichbleibender Größe) aufgefallen:
* die bisherige Linux-Partition endet bei cylinder=1023 obwohl
fdisk zu Beginn cylinders=2213 ermittelt.
* das Slice endet sogar schon bei cylinder=164 ist aber genauso groß

Kann mir das jemand erklären?
Genau kann ich Dir das auch nicht erklären (schon zu lange her und gebraucht hab ich das auch lange nicht mehr, da die Tools das mittlerweile alles ganz prima alleine hin bekommen.
Aber die Zusammenhänge sind ungefähr so:

Der Speicherplatz einer HDD errechnet sich so:
512Byte * Cyl. * Sec. * Köpfe = Speicherplatz in Byte
Wobei hier früher (bis Anfang der 90-er) auch noch die "echten" Werte auf der Festplatte standen. Dann wurden die Platten aber so gross, das die Anzahl der cyl. den Wert von 1023 überschritten haben, der allerdings ein Grenzwert für DOS darstellte und so hat man die Festplattengeometrie einfach virtualisiert. Jetzt hat man die Möglichkeit die Festplattengeometrie DOS-Konform (mit vielen Köpfen und max. 1023 cyl.) zu verwenden oder die echte, mit wenig Köpfen und vielen cyl. wie sie unter Uni* üblich ist. Da Uni* recht flexibel ist und unter Windows im allgemeinen die DOS-Konforme Variante genutzt wird hat Linux diese auch als Standard gewählt. Ich denke das hier einfach nur die beiden Darstellungsweisen der Plattengeometrie kollidieren.

Weitere Infos könntest Du vielleicht hier im Handbuch finden:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/

Ich hatte mir das vor 9 Jahren aus dem Buch "Unix Versin V" (ganz am Anfang) und den ersten Linux-Dokumentationen angelesen. Im I-Net wirst Du da sicherlich einiges finden. :D




Zum Partitionieren findest Du hier alles nötige Wissen:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/disks-adding.html
 
es werden nicht mehr wie 1024 zylinder erkannt oder drüber gelesen werden, z.b bei alten linux mit partitionierung per hand mußte man immer drauf achten das die 1024 zylinder nicht überschritten würden /root z.b...ich habs auch nur noch so im kopf
 
Die Sache mit der Virtualisierung war mir so noch nicht bekannt - interessant, und
vorallem ein Anhaltspunkt für weitere Recherchen.

Sehr aufschlußreich fand ich dann noch die Partitionstabelle meines Laptops:
Code:
The data for partition 1 is:
sysid 7 (0x07),(OS/2 HPFS, NTFS, QNX-2 (16 bit) or Advanced UNIX)
    start 63, size 16771797 (8189 Meg), flag 80 (active)
        beg: cyl 0/ head 1/ sector 1;
        end: cyl 1023/ head 59/ sector 63
The data for partition 2 is:
sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD)
    start 16771860, size 139588785 (68158 Meg), flag 0
        beg: cyl 1023/ head 60/ sector 1;
        end: cyl 1023/ head 74/ sector 63

Danke, dagnu

PS: Die RTFM- und STFW-Hinweise NERVEN, darunter leidet die Qualität des Forums.
Wenn ich nicht das Handbuch und die Manuals gelesen und eine ausführliche Suche
im Forum, Wiki und über diverse Suchmaschinen hinter mir hätte, würde ich hier
wohl kaum ein neues Thema erstellen!!!
Werde mir demnächst wohl angewöhnen, alle vorher konsultierten Quellen aufzuführen.
 
Zurück
Oben