CM diskless node filesystem
Basically this folder contains an almost complete OS image which has been adapted for CM. 'Almost' as to be complete an image has to contain also: kernel and initrd (which both go into /var/lib/tftpboot/PXEClient/) and the adequates boot image and boot mode in cmwebadmin.
ComputeMode provides a centralized distribution system for client nodes. As a result, deploying (adding or upgrading) an application on the nodes is easily achieved by modifying the ComputeMode Server's network boot system repository.
Altering these folders should only be performed by experienced Linux administrators.
The file system for client nodes is, currently, shared by means of the NFS protocol. For simplicity most images are located in /cm/ - this can be changed if you update the NFS exports list as well as the boot image configuration.
ComputeMode uses currently as default a Debian-based distribution, so the directory is logically: /cm/debian. In this folder, several subdirectories with specific names will be found. Let's review each one of these:
- orig/: contains some kind of golden system image, unaltered - it was built by copying all the files of a fresh Linux installation and has been unaltered for network boot. This folder should be managed by using the distribution preferred method (dpkg/apt-get for Debian-based distribution, rpm/urpmi/yum for RPM-based ones, ...)
- patch/: contains the data (configuration files, replacement and extra binaries) required to transform the standard base Linux system into a ComputeMode network boot system. As the 'patch' name may suggest it, a mechanism similar to the one for source files is used
- rules: is a configuration file describing how the 'patch' elements are to be used over the 'orig' at the startup of each client node. It describes the copy and link operations to be applied using a few keywords such as: copypatch, copyorig, linkpatch, linkorig and skip. This is an advanced functionality and will be discussed in a later revision - feel free to drop by the mailing list if needed.
- 'utils/: contains CM-specific scripts required to perform the network boot specific operations. The buildroot.sh script parses the 'rules' configuration file - other commands will perform specific operations for client nodes (start, registration, stop)
As a result, deploying an application to a given Boot Mode is achieved by adding necessary files to the 'orig' directory (possibly using the distribution's packaging facility) using a "chroot" command to have a consistent system view. Then, you have to check that the installed files are not overridden by the 'patch/' files. Such conflicts can be solved manually using the 'rules' file, but for most well-written applications (i.e. not needing a read/write access to the system installation when running), such do-it-yourself should not be necessary.
upgrading some system parts (especially libraries) while they are used by client nodes may cause problems (crashes)
According to the rules files, and how your directories are exported, client nodes will be able to use the newly installed software at their next boot.