kernel panic
Matthew Dillon
dillon at apollo.backplane.com
Mon Jul 26 13:57:45 PDT 2004
This patch should fix the crashes, but it may still not be able to
mount root. I added additional bootverbose debugging so if you can
compile up a new kernel with this patch in place and boot -v we should
get better information.
You should be able to boot your existing kernel by booting -C
(e.g. menu option 6 to drop into a boot prompt, then type 'boot -C').
When it asks for the root mount point try to specify the scsi
device, either ufs:da0s1a or ufs:da0a being the most likely device.
-Matt
Matthew Dillon
<dillon at xxxxxxxxxxxxx>
:hi folks,
:
:situation: dragonfly iso image downloaded, installed on a scsi disk,
:everything went fine, then reboot and, well, see for yourself
:
:kernel is 2CSNAP-20040725-2330-GCC2.iso.gz' GENERIC
:
:[...]
:Waiting 15 seconds for SCSI devices to settle (<- last kernel msg)
:Kernel trap 12 with interrupts disabled
:
:...
:dev_dname(ffffffff,3,d,2,c0645d7c) at dev_dname+0x6
:dsname(ffffffff,2,3,0,c0645d7a) at dsname+0x14
:setroot(c0645d98,c0245a4,0,642c00,650000) at setroot+0x111
:cpu_rootconf(0,642000,6500000,0,c0137e4c) at cpu_root+0x29
:any help appreciated :-)
:
:PS: I had to write everything down by hand, I hope I've got all numbers
:right.
Index: i386/autoconf.c
===================================================================
RCS file: /cvs/src/sys/i386/i386/autoconf.c,v
retrieving revision 1.12
diff -u -r1.12 autoconf.c
--- i386/autoconf.c 19 May 2004 22:52:57 -0000 1.12
+++ i386/autoconf.c 26 Jul 2004 20:53:31 -0000
@@ -306,6 +306,12 @@
return;
}
majdev = boot_translate_majdev(B_TYPE(bootdev));
+ if (bootverbose) {
+ printf("bootdev: %08lx type=%ld unit=%ld "
+ "slice=%ld part=%ld major=%d\n",
+ bootdev, B_TYPE(bootdev), B_UNIT(bootdev),
+ B_SLICE(bootdev), B_PARTITION(bootdev), majdev);
+ }
dev = udev2dev(makeudev(majdev, 0), 0);
if (!dev_is_good(dev))
return;
@@ -331,6 +337,8 @@
mindev = dkmakeminor(unit, slice, part);
}
newrootdev = udev2dev(makeudev(majdev, mindev), 0);
+ if (!dev_is_good(newrootdev))
+ return;
sname = dsname(newrootdev, unit, slice, part, partname);
rootdevnames[0] = malloc(strlen(sname) + 6, M_DEVBUF, M_NOWAIT);
sprintf(rootdevnames[0], "ufs:%s%s", sname, partname);
More information about the Bugs
mailing list