Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 5 Aug 1999 08:46:32 +1000
From:      Peter Jeremy <jeremyp@gsmx07.alcatel.com.au>
To:        FreeBSD-gnats-submit@FreeBSD.ORG
Subject:   bin/12976: No backup init(8) kept during installworld
Message-ID:  <99Aug5.082711est.40331@border.alcanet.com.au>

next in thread | raw e-mail | index | archive | help

>Number:         12976
>Category:       bin
>Synopsis:       No backup init(8) kept during installworld
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Wed Aug  4 15:50:01 PDT 1999
>Closed-Date:
>Last-Modified:
>Originator:     Peter Jeremy
>Release:        FreeBSD 4.0-CURRENT i386
>Organization:
Alcatel Australia Limited
>Environment:

	cvs-cur 5539

>Description:

	init(8) is a critical part of the system startup - if no
	suitable init can be found, the kernel will panic.  It's
	also the only critical file which is automatically updated
	during an installworld without any backup being kept.

	When a new kernel is installed, the current kernel is kept as
	/kernel.old.  Similarly, the old /boot/loader is kept as
	/boot/loader.old.  Whilst /bin/sh is not backed up, /bin/csh
	and /stand/sh (the latter is unaffected by installworld) are
	available as alternatives.  [If wanted, something very similar
	to the patch below should also apply to /src/bin/sh/Makefile].

	During startup, the kernel will scan a range of pathnames
	(/sbin/init, /sbin/oinit, /sbin/init.bak, /stand/sysinstall
	by default), and this can be over-ridden from /boot/loader
	with the init_path environment variable.

	It therefore seems reasonable to save the existing (working)
	init in case the new one is faulty in some way.

>How-To-Repeat:

	Code inspection.
	cd .../src/sbin/init; make install

>Fix:
	
Index: Makefile
===================================================================
RCS file: /home/CVSROOT/./src/sbin/init/Makefile,v
retrieving revision 1.17
diff -u -r1.17 Makefile
--- Makefile	1999/07/01 13:33:56	1.17
+++ Makefile	1999/08/04 22:22:54
@@ -33,3 +33,10 @@
 .endif
 
 .endif
+
+# Backup existing /sbin/init as /sbin/oinit in case the new one blows up
+.if exists(${DESTDIR}${BINDIR}/${PROG})
+beforeinstall:
+	-chflags noschg ${DESTDIR}${BINDIR}/${PROG}
+	mv ${DESTDIR}${BINDIR}/${PROG} ${DESTDIR}${BINDIR}/o${PROG}
+.endif

--
Peter Jeremy (VK2PJ)                    peter.jeremy@alcatel.com.au
Alcatel Australia Limited
41 Mandible St                          Phone: +61 2 9690 5019
ALEXANDRIA  NSW  2015                   Fax:   +61 2 9690 5982

>Release-Note:
>Audit-Trail:
>Unformatted:


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?99Aug5.082711est.40331>