From owner-freebsd-toolchain@FreeBSD.ORG Sun Nov 20 18:10:59 2011 Return-Path: Delivered-To: freebsd-toolchain@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 1233) id D240D1065670; Sun, 20 Nov 2011 18:10:59 +0000 (UTC) Date: Sun, 20 Nov 2011 18:10:59 +0000 From: Alexander Best To: freebsd-toolchain@freebsd.org Message-ID: <20111120181059.GA13718@freebsd.org> References: <20111119112418.GA42980@freebsd.org> <8739djf77y.fsf@pluton.xbsd.name> <20111120122801.GA51958@freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111120122801.GA51958@freebsd.org> Subject: Re: 'make installkernel' succeeding on read-only fs? X-BeenThere: freebsd-toolchain@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Maintenance of FreeBSD's integrated toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Nov 2011 18:10:59 -0000 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 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.