User:Az990tony/Customizing-SysRescCD-for-XS
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