fdisk, boot sequence et tout le toutim..
Par eau le mardi 1 janvier 2008, 12:18 - geeking - Lien permanent
Hmm qqes heures, jours que je me bat avec un cobalt MIPS, avec une intention toute bete, celle de changer le partionnement, rien de tres special ou tres complique, je prends le restorecd NetBSD cobalt, blabla je bidouille les scripts, blablabl, je recree l'ISO et je boot joyeusement...
Et la ? c'est le drame je me mange des Trace/BPT trap des beaux segfaults dans la tete avec comme trace :
[...] Program received signal SIGTRAP, Trace/breakpoint trap. 0x00402cc4 in intuit_translated_geometry () (gdb) bt #0 0x00402cc4 in intuit_translated_geometry () #1 0x00407580 in main () #2 0x00401628 in _start () [...]
apres encore un peu de bidouille, je me rends compte que j'ai :
(gdb) disass intuit_translated_geometry
Dump of assembler code for function intuit_translated_geometry:
[...]
0x402cbc <intuit_translated_geometry+1208>:
bnez v0,0x402cc8 <intuit_translated_geometry+1220>
0x402cc0 <intuit_translated_geometry+1212>: divu zero,s7,v0
0x402cc4 <intuit_translated_geometry+1216>: break 0x7
0x402cc8 <intuit_translated_geometry+1220>: mflo v1
[...]
(gdb) p $v0
$2 = 0
[...]
un magnifique divide by 0...
Il se passe quoi ?! un truc tout con, nous ne sommes pas sur i386, donc pour choper la geometry du disque il fait un truc que je connais pas (d'ailleurs j y connais pas grand chose en "boot") il scanne la MBR.
Misere ma MBR est toute niquee alors fdisk il se chie sur la main$@!#$!@. Apres un peu de patience et de fprintf powered debugging, le probleme est fixed, un sanity check place..
J'en viens a essayer de comprendre comment tout ce biniou fonctionne pour booter et je tombe sur ce petit post tout simple, qui explique pour x86 le comment ca boot, le post date de 1995 (oui c'est vieux!!!!!! et alors? moi aussi je suis vieux).
Un autre gentil monsieur a fait une petite page a ce sujet... D'ailleurs il fait encore d'autres bidouilles et il explique pleins de choses....
Bon moi je retourne boire et feter :)
BONNE ANNEEE TOUSSA TOUSSA (TOUSSA is (c) gourdin labs)
++
Update #1: je viens d'apprendre que mon fix est un peu gruik et que ca risquait de casser des trucs, mais que le bug etait bien reel :)
Update #2: finally hahahaha! SUCK IT!
NetBSD/cobalt (goodvibes) (tty00)
login: root
Jan 1 16:49:05 goodvibes login: ROOT LOGIN (root) ON tty00
Last login: Tue Jan 1 16:42:44 2008 on tty00
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
2004, 2005, 2006, 2007
The NetBSD Foundation, Inc. All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California. All rights re
served.
NetBSD 4.0_STABLE (GENERIC) #0: Fri Dec 28 13:23:05 CET 2007
Welcome to NetBSD!
[...]
goodvibes# uname -a
NetBSD goodvibes 4.0_STABLE NetBSD 4.0_STABLE (GENERIC) #0:
Fri Dec 28 13:23:05 CET 2007 root@bearcave.no.phear.org:/u
sr/obj/sys/arch/cobalt/compile/GENERIC cobalt
goodvibes# mount
/dev/wd0a on / type ffs (soft dependencies, local)
/dev/wd0g on /var type ffs (soft dependencies, local)
/dev/wd0f on /usr type ffs (soft dependencies, local)
/dev/wd0h on /tmp type ffs (soft dependencies, local)
/dev/wd0e on /altroot type ext2fs (local)
goodvibes#
