We will see how to generate a rootfs tarball for redhat based system. Since we are targetting redhat based system, I am going to use debian based system (Ubuntu 17.10 64-bit - latest at the time of writing this post) as my host. We will generate rootfs tarball for CentOS 7 64-bit.åThe below mentioned steps are validated on Ubuntu 17.10 desktop installation.
Lets get started
As usual the first step, install the required dependecy packages which in our case is
Second, will prepare the required directory structure. In our example
~/work will be our working directory and we will install the CentOS 7 roofs in inside of
work in a directory named
Now we need to generate the
repo metadata file for CentOS 7 installation. Below gist does the same.
Once we have our directory structure and the
repo file prepared as mentioned above, we can bootstrap the CentOS 7 root by executing the below mentioned command. This creates a base rootfs with networking utilities and sudo command.
yum installation is complete we need to prepare our rootfs for customization. We will start by mounting the required mount points to use
Now we can start using the rootfs using
chroot command. We will do the following customizations
basearchyum variables. Unfortunately this is required because of the
caveatmentioned in Appendix I.
- Remove unncessary files like yum cache, locale definitions, temporary files, etc.
- Generate proper yum.conf, locale definition, build timestamp file and machine-id file - these are pretty standard stuff required for storage optimization in case we decide to use this rootfs for docker images
After the rootfs configuration we need to umount all the mount points we mounted earlier. The unmount order is important here.
We do one last cleanup before we package the rootfs as a tarball.
And the final piece, run the below command to generate the CentOS 7 rootfs tarball.
yum command inside of the CentOS 7 chroot I ran into below error message. Strangely this happens on Ubuntu host but not on CentOS host. As a fix I have created
basearch inside the CentOS rootfs. Please check Reference section for the manual describing how to customize