FreeBSD on a DockStar - doesn't mount root
Maciej Milewski
milu at dat.pl
Mon Feb 7 16:13:43 UTC 2011
Monday 07 of February 2011 16:38:35 Torfinn Ingolfsen napisał(a):
> Hello,
...
> So it seems like this isn't a "delay" type problem.
From these dmesg lines you posted in your first mail it looked that is too
short time for kernel to recognize the usb device. I had similar problems on
mips RS/RSPRO boards and had to use small patch to make the delay longer. I
admit that I didn't know of kern.cam.boot_delay that time and haven't tried it
on my boards.
I don't know the real author of that patch.
Additionally I'm booting my board using ufs label this way:
ufs:ufs/rootfs
diff --git a/sys/kern/vfs_mountroot.c b/sys/kern/vfs_mountroot.c
index 496ea70..1956419 100644
--- a/sys/kern/vfs_mountroot.c
+++ b/sys/kern/vfs_mountroot.c
@@ -87,6 +87,8 @@ __FBSDID("$FreeBSD$");
static int parse_mount(char **);
static struct mntarg *parse_mountroot_options(struct mntarg *, const char *);
+static int mount_root_delay = 4;
+TUNABLE_INT("mount_root_delay", &mount_root_delay);
/*
* The vnode of the system's root (/ in the filesystem, without chroot
@@ -917,13 +919,17 @@ vfs_mountroot_wait(void)
PICKUP_GIANT();
mtx_lock(&mountlist_mtx);
if (LIST_EMPTY(&root_holds)) {
- mtx_unlock(&mountlist_mtx);
- break;
+ if(0 == mount_root_delay--) {
+ mtx_unlock(&mountlist_mtx);
+ break;
+ }
}
if (ppsratecheck(&lastfail, &curfail, 1)) {
printf("Root mount waiting for:");
LIST_FOREACH(h, &root_holds, list)
printf(" %s", h->who);
+ if (LIST_EMPTY(&root_holds))
+ printf(" %d
secs...",mount_root_delay);
printf("\n");
}
msleep(&root_holds, &mountlist_mtx, PZERO | PDROP, "roothold",
Regards,
Maciej Milewski
More information about the freebsd-arm
mailing list