* Remove support for the Poor Man fstab * Remove checks for the missing ARCH kernel variable * Remove .ashrc which is anyway only read once per login * Cleanup PATH variable Change-Id: Ic32e5749fba502dfa38d4d538860e717580bad60
		
			
				
	
	
		
			116 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
#
 | 
						|
#	mkboot 2.0 - make root device bootable, etc.
 | 
						|
#							Author: Kees J. Bot
 | 
						|
 | 
						|
usage() {
 | 
						|
	echo "Usage: $0 [bootable | hdboot] [DESTDIR]" >&2
 | 
						|
	exit 1
 | 
						|
}
 | 
						|
 | 
						|
rotate_oldest() {
 | 
						|
	base_dir="$1"
 | 
						|
	set -- `ls -t "$base_dir"`
 | 
						|
 | 
						|
	case $# in
 | 
						|
	0|1|2|3)
 | 
						|
		# Not much there, do not remove a thing.
 | 
						|
		;;
 | 
						|
	*)
 | 
						|
		# Remove the third-newest image in /boot/$hdboot_t, but
 | 
						|
		# only if there's an older one (which is kept). 
 | 
						|
		echo "rm $root:$base_dir/$3"
 | 
						|
		rm -rf "$base_dir/$3"
 | 
						|
	esac
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
mdec=/usr/mdec	# bootstraps
 | 
						|
# If no DESTDIR specified, then act on / or on the current chroot
 | 
						|
DESTDIR=
 | 
						|
# Check arguments.
 | 
						|
case "$#:$1" in
 | 
						|
1:bootable | 1:hdboot )
 | 
						|
	# LSC Broken, if $# == 1, then $2,$3 are not set...
 | 
						|
	action=$1 
 | 
						|
	;;
 | 
						|
2:bootable | 2:hdboot )
 | 
						|
	action=$1 DESTDIR=$2
 | 
						|
	;;
 | 
						|
*)	usage
 | 
						|
esac
 | 
						|
 | 
						|
# Get the device table.
 | 
						|
FSTAB=/etc/fstab
 | 
						|
touch $FSTAB
 | 
						|
root="`awk <$FSTAB '{ if($2=="/") { print $1 } }'`"
 | 
						|
 | 
						|
# The real root device may be the RAM disk.
 | 
						|
realroot=`printroot -r`
 | 
						|
 | 
						|
# If it's an initial fstab, pretend root is real root
 | 
						|
if [ "$root" = "/dev/ROOT" -o -z "$root" ]
 | 
						|
then	root=$realroot
 | 
						|
fi
 | 
						|
 | 
						|
case $action in
 | 
						|
bootable | hdboot)
 | 
						|
	# We need the root device.
 | 
						|
 | 
						|
	if [ $realroot = $root ]
 | 
						|
	then
 | 
						|
		rootdir=
 | 
						|
	else
 | 
						|
		umount $root 2>/dev/null
 | 
						|
		mount $root /mnt || exit
 | 
						|
		rootdir=/mnt
 | 
						|
	fi
 | 
						|
esac
 | 
						|
 | 
						|
case $action in
 | 
						|
hdboot)
 | 
						|
	version=`sh ../sys/conf/osrelease.sh`
 | 
						|
 | 
						|
	# Retrieve the git revision; this only succeeds
 | 
						|
	# if git is available, it's a git checkout, *and*
 | 
						|
	# there are no uncommitted changes.
 | 
						|
	if git diff --quiet 2>/dev/null
 | 
						|
	then	gitrev="-`git describe --always`"
 | 
						|
	fi
 | 
						|
 | 
						|
	revision=`cat revision 2>/dev/null`
 | 
						|
 | 
						|
	oldrev=$revision
 | 
						|
 | 
						|
	if [ -z "$revision" ]
 | 
						|
	then
 | 
						|
		revision=0
 | 
						|
		rrevision=""
 | 
						|
		gitrev=""
 | 
						|
	else
 | 
						|
		revision=`expr $revision + 1`
 | 
						|
		rrevision=r$revision
 | 
						|
	fi
 | 
						|
 | 
						|
	target="${version}${rrevision}${gitrev}"
 | 
						|
 | 
						|
	rotate_oldest "$DESTDIR/boot/minix"
 | 
						|
 | 
						|
	# rotate system processes. We assume latest ones are in
 | 
						|
	# /boot/modules/.temp and we maintain /boot/modules/ by ourselves.
 | 
						|
	[ -d $DESTDIR/boot/minix/.temp ] || exit 1
 | 
						|
	rm -rf $DESTDIR/boot/minix/"$target"/
 | 
						|
	mv $DESTDIR/boot/minix/.temp $DESTDIR/boot/minix/"$target"
 | 
						|
	rm -f $DESTDIR/boot/minix_latest
 | 
						|
	ln -s minix/"$target" $DESTDIR/boot/minix_latest 
 | 
						|
 | 
						|
	# Save the revision number.
 | 
						|
	test "$revision" != "$oldrev" && echo $revision >revision
 | 
						|
 | 
						|
	test $realroot != $root && umount $root
 | 
						|
	echo "Done."
 | 
						|
	;;
 | 
						|
esac
 | 
						|
sync
 | 
						|
exit 0
 |