User:Az990tony/Customizing-SysRescCD-for-XS

From OLPC
Jump to navigation Jump to search

Customizing SysRescCD for use with XS School Server

There are several things you can do to customize [| SysRescCD] for use with an XS School Server.

  • Configure the static IP addresses
  • Configure the ethernet ports to specific MAC addresses
  • Define userids to be used with SSHD
  • Have ssh public keys to allow remote administration
  • Include backup or rescue files

Download and Burn original SysRescCD

The easiest way to do this is to perform "wget" for the iso file. I had to update my resolv.conf to a DNS nameserver I could access, and then do a wget for the URL involved. The file is about 200MB and took me about 11 minutes to download on my system. The nameserver is provided by your ISP, and the URL for the SysRescCD could change on sourceforge as new levels are made available, so this is just an example.

[root ~]#  echo "nameserver 205.171.3.65" >> /etc/resolv.conf
[root ~]#  wget -c http://downloads.sourceforge.net/systemrescuecd/systemerscuecd-x86-1.0.3.iso
   ... systemrescuecd-x86-1.0.3.iso saved...
[root ~]#  cdrecord dev=/dev/cdrom -v systemerscuecd-x86-1.0.3.iso

Unpack the files

Boot from the SysRescueCD you just made, and hit enter at the "boot: " command prompt. We are basically going to open up the CD, and put all the files on our hard-drive. I will use /dev/sda3 as the disk partition where all the files will be but, for example.

[root@sysresccd]%  cd /root
[root@sysresccd]%  mount /dev/sda3 /mnt/custom
[root@sysresccd]%  /usr/sbin/sysresccd-custom extract
/mnt/custom is mounted -> ok
there is enough estimated free space here (25548 MB) -> ok
docache not used -> ok
[root@sysresccd]%  cd /mnt/custom/customcd
[root@sysresccd]%  ls
files  isoroot
[root@sysresccd]% cd isoroot
[root@sysresccd]% ls
bootdisk  isolinux  syslinux  version
[root@sysresccd]% cd isolinux
[root@sysresccd]% ls
altker32  f1boot.msg    f4arun.msg    f7net.msg     isolinux.cfg  memtest86
altker64  f2images.msg  f5troubl.msg  initram.igz   maps          rescue64
boot.cat  f3params.msg  f6pxe.msg     isolinux.bin  memdisk       rescuecd

If you will updating the "initram.igz", you will have to further unpack that as follows:

[root@sysresccd]% cd /mnt/custom/customcd/isoroot/isolinux
[root@sysresccd]% gunzip -c initram.igz > initram.img
[root@sysresccd]% mkdir work
[root@sysresccd]% cd work
[root@sysresccd]% cpio -id < ../initram.img
36176 blocks
 [root@sysresccd ../work]% ls
bin  dev  etc  init  lib  lib64  linuxrc  proc  sbin  sys  temp  usr  var

Once everything is unpacked, you could remove the SysRescCD, reboot, and work on the files from the XS School Server or any other flavor of Linux. We will need the SysRescCD later to pack all the files back into an ISO image.

Create Additional Mount points

SysRescCD comes with a few standard mount points, but I would like a few more.

[root@sysresccd ..customcd]% cd files
[root@sysresccd ..files]% ls
bin   dev  home  lib64  mnt  proc  sbin  tftpboot  usr
boot  etc  lib   media  opt  root  sys   tmp       var
[root@sysresccd ..files]]% cd mnt
[root@sysresccd ..mnt]% % ls
cdrom  floppy
[root@sysresccd ..mnt]% % mkdir boot fed deb usbkey scratch new old
[root@sysresccd ..mnt]% % ls
boot  cdrom  deb  fed  floppy  new  old  scratch  usbkey


Static IP networking configuration

Every Linux system seems to have its own way of assigning ethernet devices to physical ports. The XS School Server has an eth0 for WAN connection to the outside world, and eth1/eth2 for LAN connection to other computers and the mesh antennae. However, the SysRescCD chose a different scheme.

On your XS School Server, look at /etc/sysconfig/network-scripts directory, you will find ifcfg-eth0, ifcfg-eth1 and ifcfg-eth2 with the appropriate hardware addresses, which are six sets of two characters each, such as "00:01:f3:d3:c2:ed" which is called the MAC address of the specific hardware.

[root@sysresccd /root]% cd /mnt/custom/customcd/isoroot
[root@sysresccd /root]% vi autorun0
[root@sysresccd /root]% cat autorun0
#!/bin/sh
ifconfig eth0 hw ether 00:AA:AA:AA:AA:ED up
ifconfig eth1 hw ether 00:BB:BB:BB:BB:DF up
ifconfig eth2 hw ether 00:CC:CC:CC:CC:EE up
ip address add eth0 192.168.0.77/24 
ip route default via 192.168.0.1

Normally, the nameserver is not pre-defined in the SysRescCD, so if you want to download RPM packages, you will either need to do a "net-config eth0" or update your /etc/resolv.conf file. The nameserver will be provided by your ISP provider, for me it is 205.171.3.65, but it might be different for each country.

[root@sysresccd /root]% cd /mnt/custom/customcd/files/etc
[root@sysresccd /root]% vi resolv.conf
[root@sysresccd /root]% cat resolv.conf
# /etc/resolv.conf
domain random.xs.laptop.org
nameserver 205.171.3.65

Re-packing the sysrcd.dat file

Re-compressing the files into a single "sysrcd.dat" image is resource-intensive, so I turn on my swap space on /dev/sda5.

[root] swapon /dev/sda5

If you updated the "initram.igz", you will have to re-package that first. follows:

[root@sysresccd]% cd /mnt/custom/customcd/isoroot/isolinux
[root@sysresccd]% gunzip -c initram.igz > initram.img
[root@sysresccd]% mkdir work
[root@sysresccd]% cd work
[root@sysresccd]% cpio -id < ../initram.img
36176 blocks
 [root@sysresccd ../work]% ls
bin  dev  etc  init  lib  lib64  linuxrc  proc  sbin  sys  temp  usr  var

[root] /usr/sbin/sysresccd-custom squashfs


Building the ISO image file

We are now ready to burn the ISO image file. This can be memory intensive, re-compressing the data back into a single file, so I will turn on the swap partition.

[root] /usr/sbin/sysresccd-custom isogen XS-SysRescCD

Burning the new XS-SysRescCD

We are now ready to burn the new ISO file to a CD. This can be done with any program you like, I will show how to do it with cdrecord. Don't forget to unmount and sync before shutting down.

[root ~]#  cd /mnt/custom/customcd/files/isofile
[root ~]#  cdrecord dev=/dev/cdrom -v systemerscuecd-new.iso
[root ~]#  cd /root
[root ~]#  umount /mnt/custom
[root ~]#  sync