Information necessary for keeping boss and ops node up-to-date. This file contains updates that must be made outside of the database and the intall tree (ie. /usr/testbed). This file is in the same format at the FreeBSD UPDATING file, whis is to say, in reverse chronological order, with the date of the change in YYYYMMDD format. After each date, you will find one of the following, which tells you when the action needs to be performed. Before build - before doing a 'gmake' in your testbed object tree on boss and/or ops After install - after doing a 'gmake boss-install' on boss or 'gmake ops-install' on ops Note that some instructions may have steps that need to occur at a few different points in the install process - these are marked with the earliest time one of the steps needs to occur. 20041108: Anytime * Update sql/database-fill-suplement.sql stuff. cat sql/database-fill-suplement.sql | mysql tbdb 20041108: Before build We've fixed a bug in the elvin libraries that underlie our event system. You'll want to install the new one from the port. You need to do this on both boss and ops. Copy the contents of install/ports/libelvin to /usr/ports/misc/libelvin. Then, change to that directory and run 'make deinstall reinstall' to get the new version of the port installed. Now, you'll need to do a clean rebuild of everything in the testbed source tree, by doing a 'gmake clean' before the usual 'gmake ops-install' and 'gmake boss-install'. 20041104: Before build A new directory, pxe/freebsd, contains the diffs necessary to build your own pxeboot program more easily. The entry for 20040112 below instructs you to "Rebuild pxeboot kernel from source". Now you can actually do that! See the README file in pxe/freebsd. You should rebuild your pxeboot program to take advantage of a couple of new features: the ability to specify an explicit machine from which to TFTP load a file, and the ability to specify command lines to Linux (actually, to LILO). You will need to update your frisbee/freebsd MFSes to take full advantage of recent changes. A new file, doc/update-mfs.txt, describes the process. Read it. Believe it. Live by it. 20041029: Before build The ulsshxmlrpcpp package was updated to version 0.1.1: http://boss.emulab.net/downloads/ulsshxmlrpcpp-0.1.1.tar.gz cd /someplace tar zxf ulsshxmlrpcpp-0.1.1.tar.gz cd ulsshxmlrpcpp-0.1.1 configure gmake sudo gmake install 20041027: After install (be sure to update sitevars): A new sitevariable was added to hold root's ssh public key. When nodes boot using the latest image, the public key is handed across via tmcd and statshed in /root/.ssh. This localizes the image (wrt the root pub key) to the local testbed. Using the web interface in red dot mode, go to the Edit Site Variables link and store boss:/root/.ssh/identity.pub into the "node/ssh_pubkey" site variable. Make sure there are no newlines when you paste it in. 20041025: After install Run sql/fixstats_swapmod.pl to fix up stats records. sql/fixstats_swapmod.pl | mysql tbdb Run "/usr/testbed/etc/rc.d/and start" as root on ops to start up the auto nice daemon. This daemon is not required, however, it can save you from greedy users that consume too much CPU and cause experiment swapin to fail. 20040930: Before build You need to update your defs-* file to include some new configure time variables. These are: SSLCERT_COUNTRY SSLCERT_STATE SSLCERT_LOCALITY SSLCERT_ORGNAME TESTBED_NETWORK TESTBED_NETMASK BOSSNODE_IP USERNODE_IP CONTROL_ROUTER_IP CONTROL_NETWORK CONTROL_NETMASK PRIVATE_NETWORK PRIVATE_ROUTER PRIVATE_NETMASK PUBLIC_NETWORK PUBLIC_ROUTER PUBLIC_NETMASK DHCPD_DYNRANGE See defs-example for details. YOU MUST RERUN configure AFTER SETTING THESE! 20040901: Before build New SSL version of the XMLRPC server. * Make sure python is installed on both boss and ops. If not, the port is located in: /usr/ports/lang/python * Install this port on both boss and ops: /usr/ports/security/py-m2crypto then patch a silly bug on both boss and ops: patch -f -p0 -l -i patches/m2crypto.patch * Reconfig, rebuild, and reinstall the testbed software on your boss node. Be sure to pick up changes in sql/database-migrate. * Install some ssl files on boss: cd /usr/object/tree/ssl gmake usercert-install * Install new version of testbed startup script on boss cd /usr/object/tree/rc.d sudo gmake install * Generate SSL certificates for existing emulab users cd /usr/src/tree/sql ./initcerts.pl * Add the following lines to /etc/syslog.conf on boss !sslxmlrpc *.* /usr/testbed/log/sslxmlrpc.log * Add the following line to /etc/newsyslog.conf on boss /usr/testbed/log/sslxmlrpc.log 640 7 1000 * Z * Create the log file and restart syslog on boss sudo touch /usr/testbed/log/sslxmlrpc.log sudo kill -HUP `cat /var/run/syslog.pid` * Fire up the SSL XMLRPC server sudo /usr/testbed/sbin/sslxmlrpc_server.py 20040816: Before build The event system has moved to users.emulab.net. * Install the elvin libraries and daemon on users.emulab.net. * Pick up this package: http://boss.emulab.net/downloads/ulsshxmlrpcpp-0.1.0.tar.gz cd /someplace tar zxf ulsshxmlrpcpp-0.1.0.tar.gz cd ulsshxmlrpcpp-0.1.0 configure gmake sudo gmake install * Install this port (might already be install). /usr/ports/databases/py-MySQLdb * Reconfig, rebuild, and reinstall the testbed software on your boss node. * Reconfig, rebuild, and reinstall the testbed software on your users node. ssh users cd /your/object/tree/obj/ gmake ops-install * Install the new elvind config file on boss and restart elvind Note that this is not done as part of toplevel install. cd /your/object/tree/obj/event/etc sudo gmake install sudo /usr/local/etc/rc.d/2.elvind.sh stop sudo /usr/local/etc/rc.d/2.elvind.sh start * Restart tmcd and stated on boss (note that if you plan to just reboot boss, a lot of these steps can be skipped). sudo /usr/testbed/sbin/tmcd.restart sudo kill -USR1 `cat /var/run/stated.pid` * Install the elvind config file on users. Note that this is not done as part of toplevel install. ssh users cd /your/object/tree/obj/event/etc sudo gmake control-install * Install new rc.d file on boss. Note that this is not done as part of toplevel install. cd /your/object/tree/obj/rc.d sudo gmake install * Install the rc.d file that starts elvind on users. Note that this is not done as part of toplevel install. ssh users cd /your/object/tree/obj/rc.d sudo gmake control-install * Start the elvin server on users.emulab.net: ssh users sudo /usr/local/etc/rc.d/2.elvind.sh start * Create the ops certificate (on boss) and copy it to your users node. cd /your/object/tree/obj/ssl gmake ctrlnode.pem sudo scp ctrlnode.pem users:/etc/emulab/client.pem sudo ssh users chmod 600 /etc/emulab/client.pem sudo scp emulab.pem users:/etc/emulab * Install the tmcd client stuff on users.emulab.net. ssh users.emulab.net cd /your/object/tree/obj/tmcd/freebsd sudo gmake control-install * Update sql/database-fill-suplement.sql stuff. cat sql/database-fill-suplement.sql | mysql tbdb * Create the emulab-ops/opsnode experiment. Do this the same way that hwdown is created in setup-db.txt. Then go to the experiment information page (in red dot mode) for the emulab-ops/opsnode experiment, and then click on the "Edit Experiment MetaData". In the "Swapping" Section, make sure Idle Ignore is checked, and the other three entries (Swappable, Idle-Swap, Max Duration) are unchecked. * Make sure your source tree on ops is updated. Then, from that source tree, run 'install/newclient -o'. (Note: You will probably have to turn on the 'executable bit' for this script before running it, with 'chmod a+x install/newclient'.) This will allow ops to check into the testbed. * On boss, run: 'wap /usr/testbed/libexec/newnode ops' to actually add ops to the database. * Place the ops node into the above experiment: wap nalloc emulab-ops opsnode ops * Make sure that netcat is installed. cd /usr/ports/net/netcat sudo make sudo make install * Add entry to /etc/services for elvin: elvin 2917/tcp * Change the CNAME event-server to your zone file from boss to ops. event-server IN CNAME ops * Start the alternate inetd service so that old images trying to connect to the event server are redirected to users.emulab.net. Be sure to replace boss.foo.bar with the right name. sudo inetd -a boss.foo.bar -p /var/run/testbed-inetd.pid \ /usr/testbed/etc/inetd.conf * Stick boss's host keys onto ops so that users do not get those silly questions about adding know hosts. sudo cat /etc/ssh/*.pub | ssh ops '(cat > /etc/ssh/ssh_known_hosts)' 20040815: After install After some changes to ptopgen, you'll need to run the following SQL command to keep vnodes working properly: update os_info set nextosid='FBSD-STD' \ where osid='emulab-ops-FBSD-JAIL'; 20040809: After install New syslog file for logging requests to the XMLRPC server. sudo touch /usr/testbed/log/xmlrpcbag.log Add these two lines to /etc/syslog.conf and then HUP syslogd: !xmlrpcbag *.* /usr/testbed/log/xmlrpcbag.log Add this line to /etc/newsyslog.conf: /usr/testbed/log/xmlrpcbag.log 640 7 1000 * Z 20040805: After install Add a new CNAME for boss to /etc/namedb/.db.head - event-server . Re-run named_setup on boss to make this change take place. In the future, we may move this CNAME to ops. 20040713: After install For new distributed routing support, must first run this script as root to generate a data file for each existing experiment. sudo sql/gentopmaps.pl 20040625: After install After updating to revision 1.257 of sql/database-migrate.txt, run sql/devlnodes.pl to clear out all of the non reserved pcvm nodes. Be sure to do a current install of the software, and then: update node_types set isdynamic=1 where type='pcvm'; 20040615: Before build If you update the ports on your boss node, you'll need to take into accout that FreeBSD is in the process of changing how its rc.d scripts work - add the following two lines to the bottom of your /etc/rc.conf on boss: dhcpd_enable="YES" apache_enable="YES" 20040601: Before build The p5-Time-HiRes port is now required on both boss and ops - install it from /usr/ports/devel/p5-Time-HiRes . 20040420: Before build Switched web search button backend from webglimpse to swish-e. Just need to go to /usr/ports/www/swish-e and install the port. 20040315: Before build XMLRPC Server. Install this port: /usr/ports/databases/py-MySQLdb 20040303: Before build Fixed the way we handle the certificate for capture with tiptunnel. We no longer hard-code the certificate digest in nodetipacl.php3 . However, as a result, we must place this fingerprint in a publically- readable file on boss. So, if you have serial lines that you're running with capture: 1) Copy your /usr/testbed/etc/capture.pem file from your tipserver to boss, if it isn't there already. 2) In /usr/testbed/etc/ on boss, run: 'openssl x509 -sha -noout -fingerprint -in capture.pem > capture.fingerprint', and make this file world-readable. 20040302: Before build Changed the length of the node_id columns from 10 to 32. Make sure you re-compile and restart all daemons written in C (such as tmcd, tevd, and the event schedulers) before putting any nodes in the database with names longer than 10 characters. 20040226: After install Re-worked the way named_setup handles virtual nodes and unroutable IP addresses - no point in handling the two differently. Thus, the 'vnodes..db' DNS zone file is no longer generated. Instead, if you have a mix of routable and unroutable IP addresses, you'll need to switch to using the '.internal.db' zone file - see Step 6 of doc/setup.txt for instructions on setting up this file. 20040121: After install Changed the 3.testbed.sh rc.d script to handle 'start' and 'stop' arguments properly. Install a fresh copy of rc.d/3.testbed.sh into /usr/local/etc/rc.d . 20040120: After install Bumped up the sizes on some buffers to help network performance. Add the following two lines to /etc/sysctl.conf: net.local.dgram.maxdgram=65536 net.local.dgram.recvspace=65536 20040112: After install Big change to bootinfo sequence. * Update DB with new contents of sql/database-fill.sql *and sql/database-fill-suplement.sql. * Rebuild pxeboot kernel from source (src/sys/boot/i386/emuboot). Install emuboot to /tftpboot/pxeboot.emu * Install new version of dhcpd.conf file that has all the PXE crap removed and includes the single line: filename "/tftpboot/pxeboot.emu"; * Restart dhcpd. * Kill proxydhcp. Be sure to install new 3.testbed.sh from the rc.d directory to /usr/local/etc/rc.d, or just edit in place * Restart bootinfo. * Restart stated. * Reboot all non allocated nodes so that they go into pxewait mode. 20031215: Before build The mod_php4 port on boss should be recompiled with the 'xmlrpc' option, in addition to the 'mhash' option already used. Apache on boss will need to be restarted after the new port is installed.