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.
[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 -scanbus scsibus6: 6,0,0 600) 'ATAPI ' 'DVD A DH20A4H ' 'QP53' Removable CD-ROM [root ~]# cdrecord dev=6,0,0 -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 an example.
[root@sysresccd /root]% mount /dev/sda3 /mnt/custom [root@sysresccd /root]% /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 /root]% cd /mnt/custom/customcd [root@sysresccd ../customcd]% ls files isoroot [root@sysresccd ../customcd]% cd isoroot [root@sysresccd ../isoroot]% ls bootdisk isolinux syslinux version [root@sysresccd ../isoroot]% cd isolinux [root@sysresccd ../isolinux]% 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 ../isolinux]% gunzip -c initram.igz > initram.img [root@sysresccd ../isolinux]% mkdir work [root@sysresccd ../isolinux]% cd work [root@sysresccd ../work]% cpio -id < ../initram.img 36176 blocks [root@sysresccd ../work]% ls bin dev etc init lib lib64 linuxrc proc sbin sys temp usr var
Create Additional Mount points
root@sysresccd /mnt/custom/customcd % cd files root@sysresccd /mnt/custom/customcd/files % ls bin dev home lib64 mnt proc sbin tftpboot usr boot etc lib media opt root sys tmp var root@sysresccd /mnt/custom/customcd/files % cd mnt root@sysresccd /mnt/custom/customcd/files/mnt % ls cdrom floppy root@sysresccd /mnt/custom/customcd/files/mnt % mkdir boot fed deb usbkey scratch new old root@sysresccd /mnt/custom/customcd/files/mnt % ls boot cdrom deb fed floppy new old scratch usbkey
Define Name Server
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.
[root@sysresccd /root]% cd /mnt/custom/customcd/files/etc [root@sysresccd /mnt/../etc]% echo "nameserver 205.171.3.65" >> resolv.conf
Make the MAC address values persistent
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. This can be fixed by copying the "persistent rules" file from memory into the appropriate subdirectory of our extracted set. In my case, the "xx:ed" will be eth0, "xx:df" will be "eth1" and the "xx:ee" will be eth2.
[root@sysresccd /etc/udev/rules.d] % cat 70-persistent-net.rules # This file was automatically generated by the /lib/udev/write_net_rules # program run by the persistent-net-generator.rules rules file. # # You can modify it, as long as you keep each rule on a single line. # PCI device 0x10ec:0x8168 (r8169) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1g:fc:1q:4f:ed", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2" # PCI device 0x10ec:0x8139 (8139too) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:14:n1:19:76:df", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" # PCI device 0x10ec:0x8139 (8139too) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:14:s1:14:1e:ee", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1" root@sysresccd /mnt/custom/customcd/files % cd etc/udev/rules.d root@sysresccd /mnt/custom/customcd/files/etc/udev/rules.d % cp /etc/udev/rules.d/70-persistent-net.rules . root@sysresccd /mnt/custom/customcd/files/etc/udev/rules.d % ls 05-udev-early.rules 64-device-mapper.rules 30-kernel-compat.rules 64-md-raid.rules 40-alsa.rules 65-permissions.rules 40-gentoo.rules 70-persistent-net.rules 40-video.rules 75-cd-aliases-generator.rules 50-udev-default.rules 75-persistent-net-generator.rules 60-cdrom_id.rules 80-drivers.rules 60-persistent-input.rules 90-hal.rules 60-persistent-storage.rules 90-network.rules 60-persistent-storage-tape.rules 95-udev-late.rules 61-persistent-storage-edd.rules 99-fuse.rules root@sysresccd /mnt/custom/customcd/files/etc/udev/rules.d % vi 70-persistent-net.rules root@sysresccd /mnt/custom/customcd/files/etc/udev/rules.d %
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] swapon /dev/sda5 [root] /usr/sbin/sysresccd-custom squashfs