The "make" process provides the build environment. The GNU software normally gets a large tar file of the sources. Then these sources have to be adapted to the architecture being usedusing a process called "patch“. The normal way of applying a patch is to step into the first level directory and apply a patch file. The first level directory is omitted so that the changes can be applied cleanly into the system starting from the first level. A "diff", is used to compare two source trees from one directory backwards. An old original directory is compared with a new directory and then a list of changes is built into a patch file which can easily be transported between systems. This is an easy way of encapsulating work or changes that have been done for a system, so the original files are kept separate from the patches. The combination allows the project to be tracked. There is also an archive tool called "tar“. tar program extracts source files from a GNU archive into the source tree and also recompresses the tree into a tar archive. Replace the X with a C to use the compression instead of the extraction mechanism. Another tool used to take an image and a compressed file system image and the kernel is "gzip,“. The Linux kernel can unpack these.

