Sorry this is so long, but I thought I&#39;d post this in case someone else needed something similar.  Also, any suggestions to make this more efficient are more than welcome.<br><br>How I set up an &quot;emergency use&quot; XS on an XO-1<br>
<br>Since I run a public XS on a big old Dell in my house, I needed a solid contingency plan should the power go out.  While I have my XS on a UPS, it&#39;s small and cheap and only keeps it up about half an hour.  I do have a power inverter that we hook up to a car battery, which keeps the DSL modem, and thus our internet, up for many hours so we can use our netbooks.  Charging an XO shouldn&#39;t add that much more drain.  So to keep my users happy and chatting while I surf the web in the dark, I set up the XS on an XO-1.  This will also be useful in the summer should my A/C unit go out when it&#39;s 100 degrees and I don&#39;t want my regular equipment to overheat.<br>
<br>I followed the instructions here to set up an 8 GB SD card:  <a href="http://wiki.laptop.org/go/XS-on-XO">http://wiki.laptop.org/go/XS-on-XO</a><br><br>It takes forever for the first boot, of course, while moodle initializes.  Log in as root, and set the root password.  Add a user for ssh.  It doesn&#39;t have to be olpc.<br>
<br>adduser olpc<br>passwd olpc<br><br>Plug in a USB ethernet adapter.  The one I got at OLPC-SF works very well.  Run updates.<br><br>yum -y update<br><br>When that finishes, reboot.<br><br>I know you&#39;re supposed to do this right away after first boot and login, but that gave me problems for some reason.  Anyway, now after I have the first boot and updates over with, I set the domain.  Since I&#39;m using the XSXO as a backup for the XS, I set the domain to the XS&#39;s.<br>
<br>/etc/sysconfig/olpc-scripts/domain_config <a href="http://example.org">example.org</a><br><br>Enable password authentication in /etc/ssh/sshd_config and /etc/ssh/<a href="http://sshd_config.in">sshd_config.in</a>  You should be able to edit only sshd_config and then run &quot;make -f /etc/xs-config.make sshd_config&quot; to do up <a href="http://sshd_config.in">sshd_config.in</a> properly, but never cooperates for me so I simply edit both files.<br>
<br># To disable tunneled clear text passwords, change to no here!<br>PasswordAuthentication yes<br>#PermitEmptyPasswords no<br>#PasswordAuthentication no<br><br>Go ahead and reboot.  ssh in with your user and password.<br>
<br>****************<br>* Apache setup *<br>****************<br><br>Since this is an &quot;emergency&quot; XSXO, I&#39;m not going to run Moodle.  I also need a simple index page to let my users know what&#39;s going on.<br>
<br>Change the listen directives in /etc/httpd/conf/httpd-xs.conf to just this:<br><br>Listen 80<br><br>Stop Moodle from being the default homepage<br><br>mv /etc/httpd/conf.d/010-make-moodle-default.conf /etc/httpd/conf.d/010-make-moodle-default.conf.bak<br>
<br>Set up an informative page in /var/www/html as index.html<br><br>&lt;html&gt;<br>&lt;head&gt;&lt;title&gt;Emergency XSXO&lt;/title&gt;&lt;/head&gt;<br>&lt;body&gt;<br>&lt;br&gt;<br>If you can see this, I&#39;m running the XS on an XO&lt;/br&gt;<br>
&lt;br&gt;<br>It might be a power outage or I might be doing maintenance on the &quot;big&quot; XS&lt;/br&gt;<br>&lt;br&gt;<br>If you already have an ejabberd account on the usual XS, it&#39;s been migrated over.&lt;/br&gt;<br>
&lt;br&gt;<br>&lt;FONT COLOR=&quot;red&quot;&gt;If you&#39;re just getting here and don&#39;t have an account, here&#39;s the server info:&lt;/br&gt;<br>&lt;b&gt;&lt;/br&gt;<br>&lt;b&gt;Server:  <a href="http://schoolserver.example.org">schoolserver.example.org</a>&lt;/b&gt;&lt;/br&gt;<br>
&lt;b&gt;Port:  5223&lt;/b&gt;&lt;/FONT&gt;<br>&lt;br&gt;<br>&lt;a href=&quot;../cgi-bin/sysinfo.sh&quot;&gt;&lt;h3&gt;Monitor System Stats&lt;/h3&gt;&lt;/a&gt;<br>&lt;br&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;<br><br>A cgi script is nice to see some XSXO system information, particularly how the battery is doing.  Put this in /var/www/cgi-bin as sysinfo.sh and chmod a+x sysinfo.sh<br>
<br>#!/bin/bash<br>echo &quot;Content-type: text/html&quot;<br>echo &quot;&quot;<br>echo &quot;&lt;html&gt;&lt;head&gt;&lt;title&gt;XSXO System Information&quot;<br>echo &quot;&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&quot;<br>
<br>echo &quot;&lt;h1&gt;General system information for XSXO on  $(hostname)&lt;/h1&gt;&quot;<br>echo &quot;&quot;<br><br>echo &quot;&lt;h1&gt; Battery Status&lt;/h1&gt;&quot;<br>echo &quot;&lt;pre&gt; $(cat /sys/class/power_supply/olpc-battery/capacity)%  $(cat /sys/class/power_supply/olpc-battery/status)&lt;/pre&gt;&quot;<br>
<br>echo &quot;&lt;h1&gt;Memory Info&lt;/h1&gt;&quot;<br>echo &quot;&lt;pre&gt; $(free -m) &lt;/pre&gt;&quot;<br><br>echo &quot;&lt;h1&gt;Disk Info:&lt;/h1&gt;&quot;<br>echo &quot;&lt;pre&gt; $(df -h) &lt;/pre&gt;&quot;<br>
<br>echo &quot;&lt;br&gt;&lt;/br&gt;&quot;<br><br>echo &quot;&lt;h2&gt;Information generated on $(date)&lt;/h2&gt;&quot;<br>echo &quot;&lt;/body&gt;&lt;/html&gt;&quot;<br><br>echo &quot;&lt;br&gt;&quot;<br>echo &quot;&lt;a href=&quot;../index.html&quot;&gt;&lt;h3&gt;Home Page&lt;h3&gt;&lt;/a&gt;&quot;<br>
<br>Since the XSXO will be exposed to the internet, I create robots.txt in /var/www/html to try and keep the spiders away.<br><br>User-agent: *<br>Disallow: /<br><br>Restart httpd and test the changes.<br><br>******************<br>
* Ejabberd Setup *<br>******************<br><br>Sometimes my users use XOs, but most of the time they like other clients, like finch, pidgin, adium, etc.  It&#39;s useful to be able to reset passwords or delete accounts via the web interface.  It&#39;s also useful for the admin user to be able to create a persistent chat room.  To do that, I login as the admin user with psi, create a room named &quot;chat&quot; and then configure it to be persistent.<br>
<br>As I did with ssh, I go ahead and edit both /etc/ejabberd/ejabberd-xs.cfg and /etc/ejabberd/<a href="http://ejabberd-xs.cfg.in">ejabberd-xs.cfg.in</a> as I&#39;ve never quite gotten &#39;make -f /etc/xs-config.make&#39; to behave. <br>
<br>To allow admin login, uncomment this line.<br><br>{acl, admin, {user, &quot;admin&quot;, &quot;<a href="http://schoolserver.example.org">schoolserver.example.org</a>&quot;}}.<br><br>To allow web access, uncomment these lines.<br>
<br>  {5280, ejabberd_http, [<br>                         inet6,<br>             http_poll, <br>             web_admin<br>            ]}<br><br>To allow the admin user to configure persistent chat rooms, add  _admin to the the lines below like so.<br>
<br>  {mod_muc,      [<br>          {host, &quot;conference.@HOST@&quot;},<br>          {access, muc},<br>          {access_create, muc},<br>          {access_persistent, muc_admin},<br>          {access_admin, muc_admin}<br>
<br>Restart the ejabberd service.<br><br>I don&#39;t need to create the admin login on the XSXO as I&#39;ve already done that on the XS with these two commands:<br><br>ejabberdctl register admin <a href="http://schoolserver.example.org">schoolserver.example.org</a> &lt;password&gt;<br>
ejabberdctl set-password admin <a href="http://schoolserver.example.org">schoolserver.example.org</a> &lt;password&gt;<br><br>Migrate the ejabberd database from the XS to the XSXO.  This takes care of the admin login as well as any persistent chat rooms you&#39;ve already set up.  It should go without saying that you need to keep this up to date.  You can restore the ejabberd backup on the XSXO as many times as you want and it&#39;ll just overwrite the old database.<br>
<br>On the XS, create the backup file:<br><br>ejabberdctl backup /tmp/jabber.bak<br><br>Copy the backup file over to /tmp on the XSXO.  Change permissions:<br><br>chown ejabberd:ejabberd /tmp/jabber.bak<br><br>Restore the backup to the XSXO:<br>
<br>ejabberdctl restore /tmp/jabber.bak<br><br>Check to make sure it took.  Run this on both the XS and XSXO and the counts should match:<br><br>ejabberdctl stats registeredusers<br><br>The address for the web admin interface will be:  <a href="http://schoolserver.example.org:5280/admin">http://schoolserver.example.org:5280/admin</a><br>
<br>Login:  <a href="mailto:admin@schoolserver.example.org">admin@schoolserver.example.org</a><br>Password:  the previously set password<br><br>**********************<br>* Speed up boot time *<br>**********************<br>
<br>I got the XSXO to boot in about 53 seconds.  When you&#39;re scrambling around in the dark, you don&#39;t want to wait forever for a login prompt.<br><br>If you&#39;re not using these services, turn them off with chkconfig --level 345 &lt;service&gt; off<br>
<br>hddtemp<br>dhcpd<br>moodle<br>pgsql-xs<br>xsactivation<br>idmgr<br>xs-rysncd<br><br>Use chkconfig --list to see which services are set to run on which runlevel.<br><br>To further speed up boot, go into /etc/sysconfig/network-scripts and move the devices you&#39;re not going to use into a backup directory.  You can always put them back later.<br>
<br>cd /etc/sysconfig/network-scripts<br>mkdir bak<br>mv ifcfg-eth1 bak<br>mv ifcfg-lanbond* bak<br>mv ifcfg-msh* bak<br>mv ifcfg-wmesh* bak<br><br>*******************<br>* Save some power *<br>*******************<br><br>
Turning off the backlight will reduce power consumption a bit, especially important if you&#39;ve only got a car battery to charge it with.<br><br>Turn off the backlight:<br>echo 0 &gt; /sys/class/backlight/dcon-bl/brightness<br>
<br>Turn the backlight back on:<br>echo 15 &gt; /sys/class/backlight/dcon-bl/brightness<br><br>******************<br>* Switching over *<br>******************<br><br>So the power just went out.  I hook the inverter up to a car battery and plug my DSL modem into it.  While the connection comes back up, I safely shut down the regular XS and turn off the UPS to stop that infernal beeping.  Power on the XSXO and get an IP from the router.  Log into the router&#39;s web interface and put the XSXO into the DMZ.  Renew the IP on the XSXO.<br>
<br>ifdown eth0<br>ifup eth0<br><br>Everyone who was logged into jabber on the XS will automagically move over to the XSXO.<br><br><br>Anna Schoolfield<br>Birmingham<br>