As such a minimal Linux environment, Tinycore provides a great starting point for a low-overhead server, but some applications will inevitably need to be added to the base install. They distribute packages as Tinycore Extensions in compressed .tcz files, and provide some great methods to dynamically load them on boot or as needed. This works great for a desktop or virtual machine appliance, but for a constantly-running server, this provides an unnecessary level of complication and overhead.
Initial Attempt
Initially, we started using the recommended Dynamic Root Filesystem Remastering method. This method decompresses the extensions into a second initial ramdisk, which is loaded by one of the Syslinux bootloaders alongside the tinycore ramdisk. This is how it worked in our environment:
- TFTP load and boot the tinycore ramdisk
- mount an nfs share inside the tinycore ramdisk
- load the secondary ramdisk from the NFS share
Final Config
We ended up using the method outlined in this guide to decompress the tinycore image and all relevant extensions, and rebuild it with the additional packages integrated. This way, everything is integrated into the root filesystem, just like it would be with a standard local install.
Download necessary extensions:
All tinycore extensions for the current release are listed here. I manually downloaded extensions for all necessary packages, including the dependencies listed in .dep files.
Unpack extensions:
After installing squashfs-tools, you can unzip each .tcz extension using the following command:
unsquashfs -f filename.tcz
The extensions will be unzipped into a filesystem tree in squashfs-root in the current directory, for example /tmp/squashfs-root
Unpack tinycore:
You will want to unpack tinycore into it's own directory, for example /tmp/tinycore. Unpack the tinycore ramdisk using this command:sudo zcat tinycore.gz | cpio -i -H newc -d
Merge everything:
To integrate all of the extensions into the base install, you simply copy the uncompressed files into the right place. This will give you one filesystem tree with tinycore files and extensions in the same places. Sudo is necessary to preserve permissions in some of the system files.sudo cp -Rp /tmp/squashfs-root/* /tmp/tinycore
Recompressing the Tinycore Image:
I use the following commands to update the dynamic linker and build the image. The advdef command is optional - it simply compresses the image a little more.sudo ldconfig -r /tmp/tinycore
sudo find | sudo cpio -o -H newc | gzip -2 > /tmp/tinycore.gz
cd /tmp && advdef -z4 tinycore.gz
Additional References:
Integrating Extensions into an ISO
You did a great job! But my friend knows easier way if he needs help in remastering or developing software. He found a team of specialists http://www.nixsolutions.com/services/custom-software-development/ . And this was the right way cuz, he saved his company from a lot of troubles associated with the implementation of projects. So in this case, my friend received a qualification support.
ReplyDeleteThe offshore Software development trend has been around for a while now and many IT as well as non-IT companies all over the world are engaged in outsourcing their software development needs to offshore software development centers due to the various benefits provided by the outsourcing process. click here This definition will match the methodology used by the Software Development team.
ReplyDelete