Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 10 Mar 2005 12:02:45 -0800 (PST)
From:      David Clear <davidclear@yahoo.com>
To:        freebsd-questions@freebsd.org
Subject:   FreeBSD-4.11 - Need help with booting with an MD_ROOT
Message-ID:  <20050310200245.78139.qmail@web52608.mail.yahoo.com>

next in thread | raw e-mail | index | archive | help
I have been trying, unsuccessfully, to boot a
kernel with an embedded root filesystem.  I've
searched the mailing lists and the web without finding
an answer.  I hope someone here can help.

Here's the procedure I have used:

1. My kernel is built with options: MFS, MD_ROOT and
MD_ROOT_SIZE=32768.

2. A disk image is produced using:

cd /
dd if=/dev/zero bs=1024 count=32768 of=mdimg
vnconfig -s labels -c vn0 mdimg
disklabel -rw vn0 auto
disklabel -e vn0
copy the c: to a: and change the FS type to 4.2BSD
newfs -b 8192 -f 1024 -U /dev/vn0a
mount /dev/vn0a /mnt
tar cf - bin etc sbin | ( cd /mnt && tar xpf - )
umount /mnt
vnconfig -u vn0

The filesystem contents aren't supposed to be useful
at this point - I just want to get it to mount

3. I install the filesystem image into the kernel
using:

/usr/src/release/write_mfs_in_kernel kernel mdimg

4. In /boot/loader.conf I add:

vfs.root.mountfrom="ufs:/dev/md0a"

Now I reboot with the kernel, and I get:

Mounting root from ufs:/dev/md0a
Root mount failed: 22
Mounting root from ufs:/dev/md0c
Root mount failed: 22

... and then it prompts for a root filesystem.


The EINVAL (error 22) is coming from
kern/subr_diskslice.c:806:

if (part != RAW_PART
    && (sp->ds_label == NULL || part >= sp->ds_label))
  return (EINVAL);        /* XXX needs translation */

Specifically, part = 0 (!= RAW_PART) and sp->ds_label
= NULL.


I hope it's a trivial step I am missing, but right now
I am stuck.

Sage advice is appreciated.

Regards,
David.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050310200245.78139.qmail>