Recently, I found that Puppy Linux has a higher (visits of page) ranking than KNOPPIX in DistroWatch. Furthermore, Puppy Linux is also well-known for its old computer support. This is interesting.
Previously, I tried KNOPPIX, which I liked most is that it is able to save the user session. That means, if you installed any package or save the files in $HOME, reboot the KNOPPIX in the USB, those settings are still preserved. This is a feature which I didn’t found in other Live Media. I tried KNOPPIX because it is a distro targets on Live Media.
Yet, there is something I don’t like. That is the Debian repository. That is why, KNOPPIX is using Iceweasel instead of Firefox. And some of the packages are not cutting edge.
So, I tried Puppy Linux. It has the exact feature like KNOPPIX, i.e. saves the session. The next thing I found about Puppy Linux something interesting is the term “Slackware-compatible” and “Ubuntu-compatible” from the community site. A Linux distro which has different built with different compatibility. As a result, I discovered ArchPup which is based on Arch Linux.
Previously, I tried to built my dream LiveCD or LiveUSB based on Arch Linux and ArchBang but failed. Several reasons. One of the reasons is the difficulty to load the packages I want. Even I successfully built the LiveCD, the startup in the X Windows is not satisfying. Furthermore, difficult to test the LiveCD and waste a lot of time to build the LiveCD. The building script provided was not working well.
Now, this ArchPup, it is using pacman (package manager), which I am familiar with. After creating the archsave.4fs (save session), reboot it, then I can install any packages I like. However, the repository used is not the official Arch Linux repository. Thus, one may not get the latest package. Furthermore, Linux kernel and some libraries are ignored. As a result, there is no upgrade of these libraries. (I think the archsave.4fs is compatible with the newer version when it is released, thus I don’t mind there is no upgrade of the kernel.)
So, I installed all the important packages as much as possible, especially utilities for rescuing, such as ddrescue, gparted, chntpw, etc.
Now, the only problem I face is the size of the archsave.4fs. The size can be changed by replacing it with another file. I did it manually using some commands.
ArchPup (Puppy Linux) is really awesome.
(Skip the following for those who are not interested.)
Technical part
I was very interested on how the save session works on Puppy Linux. I knew the SquashFS. It is read-only. And I know that is is possible to save the files in $HOME. This can be done by mounting a file or partition on /home with read-write. That is why archsave.*fs can be ext2, ext3, or ext4. But when I use the pacman to install the packages, the packages are not saved in /home but in root and other directories.
After some studies, then I only know that, there is something called union mount, which can be done by unionfs or aufs. This is the component that used by both Puppy Linux and KNOPPIX.
By doing this, both the ext2/3/4 and squashfs can be mounted in union. As a result, whatever changes to the “/” (root), this will affect the read-write mount. And this effect is happened directly to the archsave.*fs. So, we need not to do some thing like “save on exit”.
Resize save session manually
Actually it is not resizing. The following is what I did. Firstly, create a filesystem using “dd”,
dd if=/dev/zero of=archsave.4fs bs=1024 count=1M #1 mega of for block size 1024 will produce 1 gigabyte file #1000 x 1024
Then, format the file.
mkfs.ext4 archsave.4fs
Now, mount the archsave.4fs in a directory, eg, ~/new/. And we also need to mount the current archsave in the USB in another directory, eg, ~/old/.
Then, we copy from old to new,
cp -a ~/old/* ~/new/
Replace the file in pendrive. Boot and you will get extra space.