====== Kyle's diskless boinc cluster - SpaceHeaters@home ====== Note: This is a design in progress ===== Design Summary ===== * Minimize use of painful technologies where and if possible (tftp, nfs) * Uses samba for network file access * Boyscout level of security - program credentials into gpxe boot rom * Controlled via ssh ===== Get libraries for certain binaries ===== ldd `which cifs.upcall` > /tmp/libs ldd `which ssh` >> /tmp/libs ldd `which sshd` >> /tmp/libs ldd `which bash` >> /tmp/libs ldd `which mount.cifs` >> /tmp/libs ldd `which watch` >> /tmp/libs ldd `which screen` >> /tmp/libs # The Name Service Switch related libs aren't found with ldd echo /lib/libnss_dns.so.2 >> /tmp/libs echo /lib/libnss_files.so.2 >> /tmp/libs cat /tmp/libs | cut -f 2 -d '>' | cut -f 1 -d '(' | xargs -n 1 -I {} sh -c "readlink -f {} || echo {}" | sort | uniq | xargs -I {} cp {} . ===== embedding keys onto the rom image ===== Nothing needs to get changed. Files in the initrd provided via dhcp overwrite identically named files from the embedded initrd archive. It's still a good idea to segregate the embedded files for example /embed/* #!gpxe kernel vmlinuz-2.6.31-14-generic initrd smith.ilz boot 00:50 < Docteh> i attached a gzipped tar to a gpxe image, and its automatically used along with the initrd specified via a script via dhcp, is that a known behavior? 00:51 < Docteh> gzipped cpio, my bad 00:52 < Docteh> I like that this is happening, I'm just wondering if I can expect it to work like that in the future Formats: cpio archive compressed with gzip is the classic default, but I've seen support recently for bzip2 lzma In make menuconfig under General Settings [*] Support initial ramdisks compressed using gzip [*] Support initial ramdisks compressed using bzip2 [*] Support initial ramdisks compressed using LZMA Note: My assumption of the default gpxe script might be incorrect. echo \#\!gpxe > default.gpxe echo autoboot >> default.gpxe Build the desired image (cwd = gpxe/src) mkdir embed put files in embed directory # Check permissions, ssh private keys wont get used if they're not set to be -rw-r--r-- find embed -xdev |sort| cpio --quiet -H newc -o |TIME gzip > embed.img make EMBEDDED_IMAGE=./default.gpxe,./embed.img bin/pcnet32.pxe make EMBEDDED_IMAGE=./default.gpxe,./embed.img bin/10ec8139.rom ===== Burning an eeprom ===== Burning an eeprom is two steps, enabling bootrom with rset8139 and programming it I fired up RSET8139 in freedos with the bootrom socket empty and set the bootrom size to 128kb. RSET8139 has options for 8kb 16kb 32kb 64kb and 128kb. This appears to work if multiple cards are plugged in. Note: running rset8139 with a 1mbit eeprom in the socket while the 8139 was set to not have a boot rom caused rset8139 to hang. http://ctflasher.sourceforge.net/ can write to an eeprom on a rtl8139b/c board via a /proc interface. I compiled a 2.6.17 kernel and used that with ctflasher ===== Issues so far ===== cifs client doesn't appear to watch connections as well as it should there is not much documentation on [[/ProxyDHCP]] concept