Date: Fri, 28 Mar 2003 15:51:06 -0800 From: Sean Chittenden <seanc@FreeBSD.org> To: Robert Watson <rwatson@FreeBSD.org> Cc: current@FreeBSD.org Subject: Re: init not loading? why? Message-ID: <20030328235106.GA10799@perrin.int.nxad.com> In-Reply-To: <Pine.NEB.3.96L.1030328174335.10348D-100000@fledge.watson.org> References: <20030328215316.GA8340@perrin.int.nxad.com> <Pine.NEB.3.96L.1030328174335.10348D-100000@fledge.watson.org>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
> > Ah! Figured it out after reading through init's src: /dev didn't
> > exist therefore the machine wouldn't start. No good. I may find
> > a place to stick this got'cha in the docs or add an mkdir() call
> > to init.
>
> mkdir(2) on / is not going to work if / is readonly. The kernel
> actually tries to do a vop_mkdir() already, I think. The eventual
> solution is probably a rootfs (blaim mux).
Well, I haven't tested this, but I think you're right that it's
nmount() that's failing and the lack of a check on it's return value.
I haven't tested this beyond compiling it, but I suspect it'll work
and fix this corner case. -sc
--
Sean Chittenden
[-- Attachment #2 --]
Index: init.c
===================================================================
RCS file: /home/ncvs/src/sbin/init/init.c,v
retrieving revision 1.55
diff -u -r1.55 init.c
--- init.c 17 Dec 2002 21:23:36 -0000 1.55
+++ init.c 28 Mar 2003 23:48:07 -0000
@@ -304,7 +304,10 @@
iov[3].iov_base = _PATH_DEV;
iov[3].iov_len = sizeof(_PATH_DEV);
}
- nmount(iov, 4, 0);
+ if (nmount(iov, 4, 0) < 0) {
+ perror("nmount failed (" _PATH_DEV ")");
+ _exit(1);
+ }
if (s != NULL)
free(s);
}
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030328235106.GA10799>
