96 lines · 1.9 KB · Text
RawDownload
#!/bin/rc# change your current root and stay attached to window system and devices# rerootwin targetsrv [ authagent ] if(test -e /lib/namespace.saveterm)	nsfile=/lib/namespace.savetermif(test -e /boot/namespace.saveterm)	nsfile=/boot/namespace.savetermif(~ $nsfile ''){	echo no namespace.saveterm found	exit no.nssaveterm} pivot=/net.altwhile (~ $1 -*){	switch($1){	case -f		nsfile=/boot/namespace.save9front		if(test -e /lib/namespace.save9front)			nsfile=/lib/namespace.save9front	case -u		pivot=/u	case -n		pivot=/n	case -t		nsfile=$2		if(! test -e $2){			echo nsfile $2 not found			exit no.namespacefile		}		shift	}	shift}if(! ~ $1 ?*){	echo need a target srv	exit no.srv} # depending on the kind of namespace we are being run from we might need# to get our devices in the expected place to begin if(! test -e /mnt/wsys/wctl){	if(! test -e /mnt/term/mnt/wsys/wctl){		echo no wctl at mnt wsys		exit no.wctl	}	echo binding /mnt/term/mnt/wsys to /mnt/wsys	bind /mnt/term/mnt/wsys /mnt/wsys}if(! test -e /mnt/term/dev/cons){	if(! test -e /mnt/wsys/cons){		echo no cons at mnt term		exit no.cons	}	if(! test -e /mnt/term/dev)		mntgen /mnt/term	echo binding /mnt/wsys /mnt/term/dev	bind /mnt/wsys /mnt/term/dev	if(! test -e /mnt/term/dev/draw)		bind -a /dev /mnt/term/dev} if(! test -e /srv/$1){	srv tcp!$1!564 $1	if(! test -e /srv/$1){		echo srv $1 couldnt be acquired		exit no.srv	}}nsroot=$1if(~ $2 ?*){	authagent=$2}if not if(! ~ $authagent ?*){	authagent=factotum}if(! test -e /srv/$authagent){	factotum -s $authagent}mount -b /srv/$authagent /mnt # use srvfs to save our old devices so the namespace.saveterm can mount them later oldterm=oldterm.$pidoldwsys=oldwsys.$pidsrvfs -p 0600 oldterm.$pid /mnt/termsrvfs -p 0600 oldwsys.$pid /mnt/wsys if(test -e /bin/newns){	newns -n $nsfile	exit ''} auth/newns -n $nsfileexit ''