Plan 9 from Bell Labs’s /usr/web/sources/wiki/d/253

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


Vmware playground for plan9
D1137699396
Aziphos (207.183.171.11)
#
#0 - WHAT WILL YOU GET
#
# *	a standalone fs/auth/fileserver
# *	a couple of cpu servers booted from network
# *	a couple of terminal booted from network or a drawterm :)
#
#With that i will practice distributed programming with plan9 using
#one computer connected to internet.
#
#It would be better if you try to install a terminal and play a bit
#with it, to get used to use the plan9 environment properly.
#
#And even better if you have a couple of supported machines to see
#the real thing :=)
#
#1 - INSTALL YOUR VMWARE_LIKE SOFTWARE
#
#The following considerations must be done prior to select a virtual
#machine software:
#
# *	Boot from PXE support
# *	Multiple concurrent instances
# *	Supportfor bridget network with the host
#
#I choosed vmware 4.5.2 as its support all of the above and it is
#supported by Plan9 graphics system.
#
#The vmware 5.0 machine can be used but the install process must be
#done using text only, so if you're not proficent with ed, you better
#choose 4.5.2.
#
#qemu can be used as well but i know nothing about it, so may be
#someone wants to make this brief more complete.
#
#2 - INSTALLING THE FIRST VIRTUAL MACHINE
#
# *	Task: configfs
#
#Here we select fossil+venti as we first will set up a standalone
#plan9 auth/cpu/file server.
#
#Later we split that in different machines
#
#I suggest you to use the default partition layout and default slices
#layout.
#
# *	Follow the in screen instructions and finish the installation.
#
#You should be able to do it without more indications as the
#installation program is intuitive enough.
#
#3 - BOOT AND INITIAL SET UP
#
# *	Log in as glenda
#
#At this moment fossil will start the first snapshot to venti so disk
#will be crazy for a little while.
#
#Take a coffe in the mean while, and later follow with the
#configuration instructions.
#
# *	Add glenda to sys and adm groups
#
#! 	% con /srv/fscons 
#! 	prompt: fsys main 
#! 	main: uname sys +glenda 
#! 	main: uname adm + glenda
#
# *	Configure minimal NDB
#
#! ipnet=devel.net ip=192.168.1.1 ipmask=255.255.255.0 
#! 	ipgw=192.168.1.1
#! 	dns=130.206.1.3 
#! 	fs=kenshin 
#! 	auth=kenshin 
#! 	authdom=lloth.net
#! 
#! sys=kenshin ip=192.168.1.200 ether=000c29a15062
#! 	dom=kenshin.devel.net 
#! 	bootf=/386/9pccpuf 
#! 	proto=il
#
# *	Set up the internet connection through your gateway
#
#! 	% ip/ipconfig -g 192.168.1.1 ether /net/ether0 192.168.1.200 255.255.255.0 
#! 	% echo refresh > /net/cs 
#! 	% echo refresh > /net/dns 
#! 	% ip/ping www.google.com
#
#If you can't reach google look through the wiki and 9fans archives
#to configure your network.
#
# *	Update your plan9 installation from sources
#
#! 	% pull -v
#
# *	Compile the cpu/auth/fileserver standalone kernel and install it
#
#! 	% cd /sys/src/9/pc 
#! 	% mk 'CONF=pccpuf' install 
#! 	% 9fat: 
#! 	% cp 9pccpuf.gz /n/9fat/ 
#! 	% acme /n/9fat/plan9.ini set the bootfile to 9pccpuf.gz
#
# *	Set up boot process for a cpu
#
#! 	% acme /rc/bin/cpurc
#
#Put the ip/ipconfig line to boot with network configured before the
#ndb/cs line and uncomment the lines marked as needed for booting
#other systems and for auth servers
#
# *	Add bootes user and add it to the groups sys and adm and remove
#	user glenda
#
# *	Initialize nvram storage
#! 	% echo blah > /dev/sdC0/nvram
#
# *	Set up your timezone
#! 	% cp /adm/timezone/CET /adm/timezone/local
#
# *	Edit /lib/ndb/auth and uncomment the lines
#
#! 	% con /srv/fscons 
#! 	prompt: fsys main 
#! 	main: uname bootes bootes 
#! 	main: uname sys +bootes 
#! 	main: uname adm +bootes 
#! 	main: uname sys -glenda
#! 	main: uname adm -glenda
#
#4. FIRST BOOT
#
# *	Set up the nvram
#! 	authid: bootes 
#! 	authdom: devel.net 
#! 	secstore: 	invent_a_secstore_password 
#! 	password: invent_a_bootes_password
#
# *	Initialize user
#! 	% /sys/lib/newuser 
#This will not bring you to rio
#! 	% auth/changeuser bootes 
#Put the same password you invented in the last step, you can enter
#the other data as you want
#
# *	First Drawterm
#! 	c:\> drawterm-windows -a 192.168.1.200 -c 192.168.1.200 
#! 	user[none]: bootes 
#! 	password: you know what to put here :)
#
#This will give you a rio environment.
#
#5. Set up the multiboot environment
#
# *	Set up the /cfg directory
#! 	% con /srv/fscons 
#! 	prompt: fsys main
#! 	main: create /active/cfg sys sys d775 
#! 	main: % mkdir /cfg/pxe 
#! 	% mkdir /cfg/kenshin
#
# *	Set up multiboot cpurc as jmk posted on 9fans (save the old one):
#
#------------------------------------------------------ 
#! 	#!/bin/rc
#! 	boottime=`{date}
#! 	boottime=$"boottime
#! 	
#! 	# parallelism for mk
#! 	NPROC=`{wc -l /dev/sysstat}
#! 	NPROC=`{echo $NPROC|sed 's/ .*//'}
#! 	
#! 	# get rid of need for dirs in /n
#! 	mntgen -s slashn && chmod 666 /srv/slashn
#! 	
#! 	# cs sets /dev/sysname
#! 	ndb/cs
#! 	sysname=`{cat /dev/sysname}
#! 	prompt=($sysname^'# ' ' ')
#! 	
#! 	# site specific startup
#! 	if(test -e /rc/bin/cpurc.local)
#! 	       . /rc/bin/cpurc.local
#! 	
#! 	# cpu specific startup
#! 	if(test -e /cfg/$sysname/cpurc)
#! 	       . /cfg/$sysname/cpurc
#! 	
#! 	# if we're not a server, start a dns resolver
#! 	if(! test -e /srv/dns)
#! 	       ndb/dns -r
#! 	
#! 	# reboot if we lose the file server
#! 	aux/reboot
#! 	
#! 	# turn on dong's tcp port hog defense
#! 	if( test -e /net/tcp/clone)
#! 	       echo -n tcpporthogdefense on > /net/tcp/0/ctl
#! 	
#! 	# keep other bootes processes from creating capabilities
#! 	rm '#¤/caphash' > /dev/null >[2=1]
#! 	
#! 	# start up internet if we don't already have an address
#! 	if(! grep u /net/ipselftab | grep -sv 127.0.0.1)
#! 	       ip/ipconfig
#! 	if(! grep -s 127.0.0.1 /net/ipselftab)
#! 	       ip/ipconfig loopback /dev/null 127.1
#! 	
#! 	# start listeners if it hasn't already been done (dicey check)
#! 	if(! netstat -n | grep -s 'tcp.*Listen.* (7|9|21|22|23|25|110|113|565|993|17007|17009|17010) .*')
#! 	       aux/listen -q tcp
#! 	if(! netstat -n | grep -v 17008 | grep -s il.*Listen)
#! 	       aux/listen -q il
#! 	
#! 	if(! ps|grep -s timesync)
#! 	       aux/timesync -s /net -nl -d /sys/log/timesync.d oncore achille
#! 	
#! 	# cpu specific startup
#! 	if(test -e /cfg/$sysname/cpustart)
#! 	       . /cfg/$sysname/cpustart
#! 	
#! 	exit 0
#------------------------------------------------------ 
#
# *	Now use the old cpurc to generate what we need for the standalone
#	server /cfg/kenshin/cpurc
#
#------------------------------------------------------ 
#! 	#!/bin/rc
#! 
#! 	ip/ipconfig -g 192.168.1.1 ether /net/ether0 192.168.1.200 255.255.255.0
#! 
#! 	ndb/dns -r
#! 
#! 	prompt=($sysname^'# ' ' ')
#! 
#! 	aux/timesync hora.rediris.es
#! 
#! 	ip/dhcpd ip/tftpd
#! 
#! 	auth/keyfs -wp -m /mnt/keys /adm/keys >/dev/null >[2=1] 
#! 	auth/cron >>/sys/log/cron >[2=1] &
#! 
#! 	aux/listen -q -t /rc/bin/service.auth -d /rc/bin/service il
#! 	aux/listen -q -t /rc/bin/service.auth -d /rc/bin/service tcp
#
#------------------------------------------------------ 
# *	Make fossil listen for network connections. Generate a flproto
#	file like:
#
#! 	cpu% cat flproto 
#! 	fsys main config /dev/sdC0/fossil 
#! 	fsys main open -c 3000 
#! 	fsys main snaptime -s 60 -a 0500 -t 2880 
#! 	listen tcp!*!564 
#! 	cpu% cat flproto | fossil/conf -w /dev/sdC0/fossil
#
#6. Test the new cpurc files, so reboot the machine
#
#If something fails, i hope the error message would be enought to let
#you fix the problem :)
#
#7. Now create other virtual machine.
#
# *	This one will need only a very small disk to store nvram. Will be
#	enough with 1Kb but vmware will only let you choose 0.1GB, that is
#	100Mb.
#
#8. Add a new machine
#
# *	Set up the NDB
#
#------------------------------------------------------ 
#! sys=ant ip=192.168.1.201 ether=000c29a15062 
#! 	dom=ant.lloth.net
#! 	bootf=/386/9pxeload 
#! 	proto=il
#------------------------------------------------------ 
#
#You will need to put the mac of the virtual machine so check it on
#your virtual machine ( in vmware set up to boot from network and
#copy the mac address )
#
# *	Set up the /cfg entry
#
#Create a file ith the mac address as name
#! 	% acme /cfg/pxe/mac
#
#That file must contain a plan9.ini file
#------------------------------------------------------ 
#! 	bootfile=ether0!/386/9pccpu 
#! 	bootargs=tcp!192.168.1.200!564
#! 
#! 	*nomp=1
#! 	 *nodumpstack=1 
#! 	partition=new
#------------------------------------------------------ 
#
#- Create the cpurc for this machine under /cfg/ant/cpurc
#
#------------------------------------------------------ 
#! 	#!/bin/rc
#! 
#! 	prompt=($sysname^'# ' ' ')
#! 
#! 	aux/timesync hora.rediris.es
#! 
#! 	aux/listen -q -t /rc/bin/service.auth -d /rc/bin/service il
#! 	aux/listen -q -t /rc/bin/service.auth -d /rc/bin/service tcp
#------------------------------------------------------ 
#9. Boot the new cpu machine
#
# *	It will ask you for the nvram data, but this time you haven't
#	created the partition, so it will fail to store it.
#
# *	Create the nvram partition as follows:
#
#! 	% disk/mbr /dev/sdC0/data 
#! 	% disk/fdisk /dev/sdC0/data 
#! 	>>> a p0 start
#! 	cylinder: 0 
#! 	end [0..208] 208 
#! 	>>> w 
#! 	>>> q 
#! 	% disk/prep /dev/sdC0/plan9
#! 	>>> a 9fat 
#! 	start sector: 0 
#! 	end [0..209715] 200000 
#! 	>>> a nvram start
#! 	sector: 200000 
#! 	end [200000..209715] 209715 
#! 	>>> w
#! 	>>> q 
#! 	% disk/fdisk -p /dev/sdC0/data > /dev/sdC0/ctl
#
# *	Reboot the cpu server and put the hostid info again
#
#Now we got the first machine booted from network up and running
#
#10. Testing auth
#
#cpu% cpu -h ant -c rc
#! Adding key: dom=lloth.net proto=p9sk1
#! user[bootes]: bootes 
#! password:
#! 
#! 	cpu% cat /dev/sysname 
#! 	antcpu%
#
# *	We can log to the cpu server and run tasks there
#
#Now that we have two machines, we can configure our prompt to show
#us where we are. Put this on /usr/bootes/lib/profile
#
#! 	fn cd { builtin cd $1;awd; prompt=(`{cat /dev/sysname}^' '^`{pwd}^'%' ' ') }
#! 
#! 	cpu% fn cd { builtin cd $1;awd; prompt=(`{cat /dev/sysname}^' '^`{pwd}^'% ' ' ') } 
#! 	cpu% cd 
#! 	kenshin /usr/bootes% acme lib/profile
#! 	kenshin /usr/bootes% cpu -h ant -c rc 
#! 	ant /usr/bootes% 
#! 	ant /usr/bootes% 
#! 	ant /usr/bootes%
#
#Usually the path is too fancy.
#
#11. Clone a machine and start up a new cpu server
#
#vmware 5 will let you clone machines, so i upgraded to it. I will
#not explain how to clone vmware machines as may be you just used
#other virtualization software (or even the real hardware)
#
#To start up a new server, when we have the machine ready, and its
#MAC address written somewhere is:
#
# *	Set up the NDB file with the new machine
# *	Set up the /cfg environment for that machine
#! 		/cfg/pxe/mac file
#! 		/cfg/system_name/cpurc
# *	and boot it from the network
#
#I created 5 machines with 64MB of ram each one.
#
#As terminal i will use drawterm, as i upgraded to vmware 5, and vga
#is not supported and there are problems with cut&paste. . .
#
#12. Adding users to the playground
#
#In the console of kenshin our main file server/auth/cpu we can add
#users as described in the wiki.
#
#! 	% auth/changeuser gdiaz 
#! 	% con/srv/fscons 
#! 	prompt: fsys main 
#! 	main: uname gdiaz gdiaz 
#! 	%
#
#Now i can drawterm with the new user
#
#And make my first distributed application with plan9 :)
#
#------------------------------------------------------ 
#! 	#!/bin/rc
#! 	
#! 	servers=(kenshin ant shrek niki connor kirk)
#! 	timezones=(CET EDT Canada_Pacific Japan US_Hawaii Singapore)
#! 	
#! 	minx=0
#! 	miny=0
#! 	maxx=100
#! 	maxy=100
#! 	i=1
#! 	for (s in $servers) {
#! 			echo  vars: $timezones($i), $i, $minx , $maxx
#! 			script=''''^'cat /adm/timezone/'^$timezones($i)^' > /env/timezone; clock'^''''
#! 			window -r $minx $miny $maxx $maxy cpu -h $s -c $script
#! 			i = `{ echo $i+1 | bc }
#! 			minx = `{echo $i^'*100'  | bc }
#! 			maxx = `{echo $minx^'+'^100 | bc }		
#! 	}
#------------------------------------------------------ 
#

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to webmaster@9p.io.