Date: Sun, 20 Nov 2011 18:10:59 +0000 From: Alexander Best <arundel@freebsd.org> To: freebsd-toolchain@freebsd.org Subject: Re: 'make installkernel' succeeding on read-only fs? Message-ID: <20111120181059.GA13718@freebsd.org> In-Reply-To: <20111120122801.GA51958@freebsd.org> References: <20111119112418.GA42980@freebsd.org> <8739djf77y.fsf@pluton.xbsd.name> <20111120122801.GA51958@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sun Nov 20 11, Alexander Best wrote: > On Sun Nov 20 11, Denise H. G. wrote: > > > > On 2011/11/19 at 19:24, Alexander Best <arundel@freebsd.org> wrote: > > > > > > hi there, > > > just stumbled upon this little detail: > > > > > > 1) have "/" mounted read-only > > > 2) 'make buildkernel' > > > 3) 'make installkernel && echo "success"' > > > -> this will fail > > > 4) 'mount -uw /' > > > 5) 'make installkernel && echo "success"' > > > -> this will succeed > > > 6) 'mount -ur /' > > > 7) 'make installkernel && echo "success"' > > > -> this will succeed. why? > > > > According to mount(8), 'mount -ur /' will fail if / is already mounted > > read-write with any files currently opened by some processes. I think > > this might be your case. > > i'd don't think so: > > otaku% sudo mount -uw / > otaku% echo $? > 0 > otaku% sudo mount -ur / > otaku% echo $? > 0 > > ...also 'mount -p' reports "/" to be read-only again. > > ...also during 7), mkdir(1) returns an error that "/" isn't writable. it's > install(1) that claims the kernel was successfully installed into /boot/kernel, > although installation of the kernel didn't succeed. > > i don't think this is an install(1) issue, since in 3), install(1) returns an > error. i think in 7), install(1)'s output gets somehow redirected to /dev/null, > and its return value isn't being preserved. > > i'll try to use 'mount -ufr /' in 6) and see, if that has any impact. also > after 6) i'll try to run install(1) manually to see, whether it actually > reports an error (then the build(7) facility is to blame) or not (in which case > there's a problem with install(1) itself). MYSTERY SOLVED! ;) install gets executed with the -p option, which implies the -C option. this means that install will do a comparison of the installed kernel in /boot/kernel and the one in /usr/obj, before actually executing. during the first installkernel invocation, the files differ, so install complains. during the second invocation the files don't differ. that's why install succeeds, although "/" is mounted read-only. ;) cheers. alex > > cheers. > alex > > > > > > > > > cheers. > > > alex > > > ................ > > > > > > > > -- > > If you've got them by the balls, > > their hearts and minds will follow.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20111120181059.GA13718>