Mount root error / New device numbering?

Fred Souza fred at
Fri May 14 02:29:26 UTC 2010


I recently reinstalled FreeBSD 8.0 on my computer, after a long hiatus
(last version before that was 7-CURRENT before 7.0-RELEASE, on an old
computer). I read a lot of documentation to try and make sure I caught
up with any important changes before messing too much with the system.
I did a similar procedure as I used to on the old system, grabbed a
fresh ports.tar.gz, uncompressed it under /usr, installed cvsup and
proceeded to updating /usr/src to -STABLE (using the RELENG_8 tag). So
far, so good.
I made a custom kernel config file based off of GENERIC, added only a
few options (like sound and console customization options), and
followed the steps listed on /usr/src/UPDATING:

# cd /usr/src
# make buildworld
<reboot into single>

.. Or so I wish. During boot, I got a MOUNT ROOT ERROR (nothing after
that). By pressing '?' I could see that it was recognizing my hard
drives and slices all differently than the -RELEASE (GENERIC) kernel
did. The old one saw my first disk as ad8 (2 NTFS partitions, ad8s1
and ad8s2), then the second disk as ad14 (with a NTFS partition as
ad14s1 and then the FreeBSD slices as ad14s[a-f]). The -STABLE kernel
sees them as ad10 and ad16 respectively.

I then tried to finish the boot process by entering "ufs:/dev/ad16s2a"
at the prompt, but it threw me at a single mode shell. I do believe it
had shown some error there, but it got pushed off screen by the stream
of "interrupt storm (irq21)" messages that have plagued me on this
computer (that usually magically stops if I mount a cdrom, but in this
case that didn't do it).

Trying to fix the issue, I manually mount /usr (now being seen as
ad16s2f instead of ad14s2f) and proceed to replacing /etc/fstab's
entries with their "new" device numbers. A couple of commands later,
the file looks correctly updated with this new scheme. I do an exit on
that shell just to get to a kernel panic message and a quick reboot. I
tried to unload the -STABLE kernel and boot from the -RELEASE one, but
now the system hangs right after it tries to find my disks.

I give up and reinstall (that first install had given me quite a
headache with incorrect drive geometry [that I had to fix with a lot
of research to get to TestDisk and GAG], so I thought it was best to
just start fresh). I do the same procedure this time, but paying extra
attention to any details I could have overlooked before. One of them
was to make a kernel (-STABLE) out of a renamed copy of GENERIC (no
options added or removed). I also decided on doing the remaining steps
listed on /usr/src/UPDATING before rebooting; I thought the drive
numbering difference could be related to something in userland that
was missing when booting the -STABLE kernel with -RELEASE userland.

And I got the same mount root error message, and again it shows the
drives as ad10 and ad16 instead of ad8 and ad14. The difference is
that this time I did not try to update /etc/fstab before resorting to
this list (I had been browsing it for the past 3 days trying to find
any hints on this, as well as reading /usr/src/UPDATING in full
again). I can get the system to boot normally if I unload the -STABLE
kernel and load the -RELEASE one. But I can't figure out for the life
of me why does -STABLE shift my drive numbers around. I also
understand how I'm supposed to provide logs and more information, but
I'm unsure what to give for this. Just tell me what kind of info/log
you need and I'll try to get them.

Could anyone please enlighten me?

Thank you very much in advance,

More information about the freebsd-stable mailing list