Re: Devices II

From: Joerg Wunsch <j(at)uriah.heep.sax.de>
Date: Sun, 17 Feb 2002 19:57:34 +0100

As User Oli Kuemmel wrote:

> Ja aber wie könnte ich das korrekt eintragen, selbst wenn ich
> wüsste wo meine erweiterte Partition liegt? Muss ich da
> DOS-fdisk nehmen? Oder disklabel?

disklabel ist nur für BSD gut, kann also nicht gehen.

Normales BSD-fdisk sollte alles können, was Du brauchst: es kann doch
alle diese Angaben eintragen. Was es nicht kann, ist erweiterte
Slices selbst behandeln. (Nur über große Umstände, indem man die
entsprechende fdisk-Tabellen mit dd in ein File extrahiert, das
mittels vnode- oder md-Device zu einem Gerät macht und dann fdisk
darauf ansetzt.)

> Ich gehe doch hoffentlich recht in der Annahme, dass wenn ich mit
> fdisk was schreibe es nicht schlimmer werden kann als es schon
> ist?

Nun, Du könntest Dir die fdisk-Tabelle der BSD-Platte auch noch
zerschießen, wenn Du den falschen Parameter angibst. ;-)

> [findfdisk]
>
> Wow - das ist Rasterfahndung pur! Leider DoSt es meinen syslogd
> und meinen X-server und macht jede Menge Last auf die Kiste:

> microuptime() went backwards (8371.554504 -> 8371.539057)

Hmm. Kann eigentlich nur am ATA-Interface bzw. -treiber liegen. Kann
ich nix sagen dazu, ich habe kein ATA und diese Meldung ist bei mir
schon sehr lange nicht mehr aufgetaucht (auch nicht bei meinem Test
für das Programm).

> Das ist wohl mein momentaner Eintrag:
>
> Possible fdisk table at sector 0:
> Entry 1: type 165, offset 63, size 17928477 (starting C/H/S 0/1/1, ending C/H/S 1023/254/63) [active]

Ja.

> Possible fdisk table at sector 1076035632:
> Entry 1: type 11, offset 63, size 10493217 (starting C/H/S 139/1/1, ending C/H/S 832/239/63)
> Entry 2: type 0, offset 0, size 0 (starting C/H/S 0/0/0, ending C/H/S 0/0/0)
> Entry 3: type 0, offset 0, size 0 (starting C/H/S 0/0/0, ending C/H/S 0/0/0)
> Entry 4: type 0, offset 0, size 0 (starting C/H/S 0/0/0, ending C/H/S 0/0/0)
>
> Possible fdisk table at sector 1069809744:
> Entry 1: type 6, offset 63, size 2116737 (starting C/H/S 693/1/1, ending C/H/S 832/239/63)

Ja, beide sehen irgendwie interessant aus. Wie Du ja schon
herausgefunden hast, wird es wohl der mit Typ 11 sein, der ja
offensichtlich eine VFAT-Slice beschreibt, während Typ 6 eine plain
old FAT wäre. Beide sind konsistent bezüglich ihrer Ende-Angaben,
damit könnte das zumindest der Wert sein, den das BIOS auch für das
Plattenende hält. Vermutlich ist der Typ 6 Eintrag ein Überbleibsel
einer früheren Partitionierung (kann das sein?).

Nehmen wir doch mal einen Taschenrechner und rechnen das durch.
Offenbar sind sich beide einig, daß es 15120 Blöcke pro fiktivem
Zylinder gibt (63 * 240). Der Typ 6 Eintrag hätte demnach 140
Zylinder (- 63 Blöcke), was zu 832 + 1 - 693 paßt. Der andere hat 694
Zylinder (- 63 Blöcke), paßt auch zu 10493217.

Hmm, die Sektorangaben meines Programms scheinen dubios. Da haut was
nicht hin.

> Ok, ich glaube jetzt habe ichs gerafft. Es sollte wohl so
> ähnlich wie dieses aussehen:

Nö, leider nicht ganz. Obigen fdisk-Tabellen kann man ja entnehmen,
daß Dein BIOS der Meinung ist, daß die Pladde 63 Sektoren und 240
Köpfe haben müßte. Das mußt Du dem BSD-fdisk erstmal sagen.

Weiterhin fängt die erweiterte fdisk-Tabelle offensichtlich auf
fiktivem Zylinder 139 an, das wäre offset 2101680. Die Länge sollte
10493217 + 63 = 10493280 Blöcke sein. Wenn Du die Geometrie richtig
eingetragen hast, müßte FreeBSD-fdisk Dir dann auch die richtigen
Werte für C/H/S Anfang und Ende sagen. Das ist der Typ 5 Eintrag
jetzt.

Wäre noch die Frage, was der Typ 11 Eintrag sein müßte (also das C:
Deines Windows). Man könnte spekulieren, daß die Slice bis an den
fiktiven Zylinder 139 herangereicht hat. Dann wäre der Offset 63
und die Länge 2101680 - 63 = 2101617. Kann das stimmen?
> Ja, das mit den Zahlen ist mir jetzt noch ein wenig unklar. Ich
> weiss auch nicht wie gross die Platte sein muss. Das was im BIOS
> steht (6449M) deckt sich nicht mit dem Wert aus dmesg (6149M).

Das stimmt schon. Das BIOS nimmt die plattenherstellerbevorzugte
Definition von MB = 10^6 Bytes. FreeBSD nimmt die computertypische
Definition von MB = 2^20 Bytes (= 1048576 Bytes). Die
Plattenhersteller mögen große Zahlen, deshalb haben sie hier die
normale Computerlogik lieber beiseite gelegt...

Obige Werte ergeben 833 * 15120 Blöcke =~ 6149.88 MB, das paßt
also schon.

Du siehst, man kann mit FreeBSD-Mitteln durchaus alles mögliche auf
einer Festplatte zurechtpopeln, wenn man nur weiß, was man wo suchen
muß. ;-) Mach das mal mit 'ner Windoof-Notstartfloppy...

Achso, nachdem Du das geändert hast, versuche lieber nicht gleich, ein
Windoof zu booten. Wenn das krumm war, zerschießt Du Dir
möglicherweise alles. Boote lieber ein BSD nochmal (falls das
überhaupt nötig ist, vielleicht kann es die Slices ja sogar schon nach
dem fdisk erkennen) und schau' nach, ob die Slices erkannt werden (vor
allem natürlich ad0s5) und ob die ein sinnvolles Filesystem enthalten.
Dazu mußt Du ja nur erstmal versuchen, das DOS-Filesystem read/only zu
mounten, damit kannst Du eigentlich nichts zerschießen. (Im
allerschlimmsten Fall bekommst Du eine Panic, weil der Kernel
irgendwelche Annahmen über das FAT-Filesystem macht, die aufgrund
ggf. falscher Partitionierung nicht stimmen, so daß da irgendwo was
schiefgeht. Eine Panic ist nicht tragisch außer daß nach dem Reboot
erstmal ein fsck abläuft.)

-- 
cheers, J"org               .-.-.   --... ...--   -.. .  DL8DTL
http://www.sax.de/~joerg/                        NIC: JW11-RIPE
Never trust an operating system you don't have sources for. ;-)
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sun 17 Feb 2002 - 20:00:09 CET

search this site