Wednesday, July 9, 2014

Full Installation of FatDog64 (64-bit Puppy Linux) into Hard Disk

You might like to read this introduction first, on FatDog64.

FatDog64 Linux does not support a full HDD installation officially. But we can make it work with some tweaks. The full HDD installed version have the highest performance and boot speed (less than 6 Seconds!).

Ok here we go. This blog assumes that you’ve a good grip on Linux environment. This is definitely not for the faint hearted!  Please always backup all your relevant data before proceeding. We strongly recommend to create and use a Virtual environment (like  VirtualBox) to try this out first, before you actually proceeding with your physical machine. Try create a simulated environment in Virtualbox that represents your physical system and then try the below. Once you’re confident, you can try this out in your physical machine. Also the partition numbers (Sda5, Sda6, e.t.c) that we are referring here, are  related to our current test environment. You should replace it with yours accordingly, as per your configurations.

Note: One question here is , how to create a simulated environment that represents the physical machine in a virtual machine environment! That’s beyond the scope of this writing. You can read that article here. But the basic idea is, you will clone your physical hard disk partitions using CloneZilla software included in the PartedMagic Live CD. Then you will create and restore the cloned Physical Hard Disk partitions to a VirtualBox guest’s virtual hard disk. That’s it!

1. Create and Prepare a new Partition for FatDog64

Ok. We’ve a dual boot system. Lubuntu14.04 is my major OS. Its installed on ‘Sda5’.  The below is the setup.

image

Sda6 was not in the scene. But what I’ve did was, shrinked ‘Sda5’ partition from 20GB to 15GB, using GParted (Included in PartedMagic Live CD). Then from the freed 5GB, I’ve created a new Partition and formatted it with ext4 filesystem. In fact the new Partition will get the name like ‘Sda9’. But I’ve reordered the partition numbers in the chronological order! Tip: I’ve used the ‘fdisk’ command to perform the reordering.

Ok now we’ve a new free partition here ‘Sda6’ for the FatDog64.

2. Download the latest FatDog64 ISO file and burn it to a CD

You can check and download from here. I’ve downloaded FatDog64-631.iso, that is the latest version for the time being. If you’re trying this inside virtualbox, you don’t need anything extra. You can directly load this ISO to your VirtualBox’s CD drive.

But if you’re trying with the physical machine, burn the ISO to a CD/DVD. Or you can make a bootable USB from this ISO using utilities like UNetBootin.

3. Boot into FatDog64 Live CD

Boot into FatDog64 Live CD. In virtualbox, simply load the downloaded ISO to the virtual CD drive and power on the Virtual Machine. Select the default selected option from the boot menu. Wait for some time till FatDog64 boots into the desktop.

4. Frugal install FatDog64 to the newly created partition

Click on the FatDog64 installer. See the below screenshot.

image

Choose your previously created partition for FatDog64. See below.

image

Opt not to install ‘boot loader’. We will manually update the boot loader of Lubuntu later. Also updating boot loader from FatDog64 installer is rather buggy and can result in boot issues.

image

Take the source from the current ‘CD/DVD’

image

That’s it now ‘install’ it by clicking the button.

image

Now after installation, the partition will be mounted. In my case it is ‘Sda6’. Click on it, it will open as ‘/mnt/sda6’.

image

Note (NB): for Step5 and 6, I’ve used this reference. But it didn’t worked for the latest version of FatDog64. Also that solution, once done with previous versions, remained with broken and removed packages. For eg. ‘brctl’ didn’t worked as that package was removed or damaged. Ethernet (eth0) was not properly detected as ‘/etc/network’ folder was removed or not properly created.

So I’ve done some R&D based on the above given link and arrived at my own way of fixing it for FatDog64-631. It also preserves the integrity of the packages as well. But if you find any discrepancies, don’t forget to share suggestions and solutions as comments.

5. Perform a Layred Full Install

Now click on the ‘intrid’ archive in the above figure. This will extract the content to a temporary location and will automatically opened. Now open a command prompt in that temporary location (Simply by right click and opt ‘Switch To Terminal’ menu option)

image

Now use the below command, to merge ‘fd64-630.sfs’ to the root file system.

“unsquashfs –f –d /mnt/sdb6/ fd64-630.sfs”

Do replace sdb6, with your partition, created for FatDog

image

Now update your boot loader configuration, to have FatDog64 listed in the boot menu. I’ve Lubuntu14.04 as my primary OS and Grub Loader is installed in ‘/mnt/sda5’. You might have a similar configuration, if you’re using Ubuntu or its derivatives, but don’t forgot to change the partition name as per your setup.

image

Note: If you’re using windows, you should refer this. Personally I’ve not tried it from my side. You may need some experimenting to work this out.

Now in the ‘grub.cfg’ file add a new ‘menuentry’ section for FatDog64. Please see the below figure. You should replace your environment settings where ever required.

eg. ‘hd0,msdos6’ tells, First Hard Disk attached, and partition number 6 (i.e Sda6). If you’re using your second hard disk and 2nd partition you should change it to ‘hd1,msdos2’ and ‘direct:device:sdb2’.

image

Reboot the system, for perform a True Full Install (Described in the next step)

6. Perform a True Full Install

As you’ve done with Step5. Open the partition that having the FatDog64 installation (In our case click on the ‘Sda6’ drive icon in the bottom). Click on the ‘intrid’ archive to extract and open the contents in a temporary folder. Open a terminal in the temporary location. See below fig.

image

Now use the below command, to merge ‘kernel-modules.sfs’ to the root file system.

“unsquashfs –f –d / kernel-modules.sfs”

image

Open ‘/aufs/pup_save’ folder, and create ‘etc’ and ‘tmp’ folder in it.

image

Create a file named ‘BOOTSTATE’ inside ‘/aufs/pup_save/etc’ folder. Open the ‘BOOTSTATE’ file and type “SAVEFILE_MOUNT=/” as the only content inside this file.

image

image

Copy ‘network’ and ‘rc.d’ folders from ‘/aufs/pup_init/etc’ to ‘/aufs/pup_save/etc’ by simply dragging the folders to destination.

image

Now copy ‘network’, ‘rc.d’, ‘BOOTSTATE’ items (Just created above) from ‘/aufs/pup_save/etc’ to ‘/aufs/devsave/etc’, by simply dragging the items to the destination as in the below fig. ‘Overwrite’ existing items on prompt.

image

Now we need to update fstab for the full installation.

Open ‘/etc/fstab’ and uncomment ‘proc’ and ‘sysfs’ lines as below.

image

Copy ‘/etc/fstab’ (Just edited) to ‘/aufs/devsave/etc’ by dragging it. Overwrite on prompt.

image

Now update your ‘grub.cfg’ by editing the existing ‘FatDog64’ entry, (in our case this is /mnt/sda5/grub/grub.cfg, replace with your own) to point that, we are now with a ‘Full Install’ and no need of ‘intrid’ to be loaded. See the below.

Remove ‘intrid’ line and update linux command line as below

“linux /vmlinuz root=/dev/sda6 rw rootwait pkeys=us”

image

Now Reboot, This will now boot into to your Full Installation! 

7. Fix True Full Install – Restore broken and removed packages in the True Full Install

But by this time, we might have broken, deleted or overwritten some of the existing packages from the system, due the the ‘unsquashfs’ command lines we’ve used before. So to fix this we might need the below additional steps.

Open the FatDot64 installed partition. Click on the ‘intrid’ to extract the contents to a temporary folder.

Now in the temporary folder, click on the ‘kernel-modules.sfs’, to extract it to a secondary temporary folder. Then open a command prompt in the 2nd temporary folder and type in the below commands.

Now type in the below command.

“cp –a –remove-destination ./* /”

image

Close the terminal and the secondary temporary folder (having kernel-modules.sfs contents). Now we will reside at the first temporary folder again, with extracted ‘intrid’ contents.

Now in the temporary folder, click on the ‘fd64-630.sfs’, to extract it to another secondary temporary folder. Then open a command prompt in the 2nd temporary folder and type in the below command as you’ve done before.

“cp –a –remove-destination ./* /”

image

Close the terminal and the secondary temporary folder (having fd64-630.sfs contents). Now we will reside at the first temporary folder again, with extracted ‘intrid’ contents.

Now open the ‘sbin’ folder inside temporary window that having the extracted ‘intrid’ contents. copy ‘lvm’ file  to ‘’/sbin'” (sbin in the root file system), by dragging it over. See the below fig.

image

You’re basically done. But you should again come to ‘/etc/fstab’ to modify it again, as it will be overwritten.

Open ‘/etc/fstab’ and uncomment ‘proc’ and ‘sysfs’ lines as below as you done before.

image

8. Reboot.

Now reboot. You might have the true fully installed FatDog64 installation with blazing fast boot speed and performance

Conclusion.

Though, I’ve been able to perform the True Full Install with all packaged retained, I am seeing some warnings during boot up and shutdown. I am working on this to figure this out.

But if some one having already fixed this or having suggestions or fixes, Please respond by adding comments.

Next: Read on how to install VirtualBox.4.3.12 (latest version) in FatDog64 HDD true full install here.

9 comments:

  1. Reduced the number of warnings on boot by the below steps.

    1. Create a simlink named 'run' in the root folder (i.e /run), and link it to '/tmp'.
    i.e Just right click on the '/tmp' and opt simlink from the menu. Give name as 'run'

    2. Click '/intrid' to extract it to a temporary window and open 'sbin'. Copy all files inside 'sbin' to '/sbin' (sbin in root folder).
    If any of the files already exists, does not overwrite. Just skip it.

    ReplyDelete
  2. I sure with they would add full hd install in fatdog64! Seems like there is plenty of interest judging by the fd64 full install pages and posts ...

    ReplyDelete
  3. Followed your how-to. So far I'm able to boot - still a few errors. No directory /dev/pts either /dev/shm. Funny thing: mounting the drive by clicking on the icon, there are both directories in /mnt/sda6/dev. But not in /dev. Creating manually the two directories is possible, mounting also, but during the next boot they are gone. Also run/udev not writeable - falling back to /dev/.udev. Any ideas?

    ReplyDelete
  4. for 'dev/pts' and 'shm', we can just create a simple bash script (that creates those folders) and place in the 'startup' folder, So that they will run and create those directories every time during system startup. Regarding run/udev issue, can we run 'chmod' command to make it writable for the 'world'? (Placing that script at the 'startup' folder itself?)

    ReplyDelete
    Replies
    1. Here's what I did: I created two scripts in /etc/init.d. One for creating an mounting pts and shm. The other to chown udev 0777. I linked also from TTF to /root/.fonts to get rid of another error-message during booting. Still a few issues: error-message during boot: HDIO_SET_DMA failed: Inappropriate ioctl for device, and: HDIO_GET_DMA failed: Inappropriate ioctl for device. Also two errors from /usr/bin/radeon-dpm-control.sh in line 36 and 37. As in the machine is no radeon card, I think I can ignore this. Would be nice to know, how to turn it down/off. When shutting/rebooting there's coming up an LVM2 error: Failed to create LVM2 system dir for metadata, system files, ... Al least (sure not last), clicking on a drive-icon is mounting the drive. Once mounted it cannot be unmounted.

      Delete
    2. We're exactly getting the same warning and that have mentioned in the 'conclusion' section. But it does not causing any issues for the smooth running of the system. Puppy Linux forum members have successfully installed latest virtualbox within the Full Install and it is working fine.

      But we are trying to figure out the warnings and how to avoid it. If you've any valuable findings please share the same

      Delete
  5. ...with the rox-filer it's possible to unmount from /dev/mnt. Hmm...

    ReplyDelete
  6. Hi, I've found that /aufs/devsave does not exist in my FD702, what can I use in place of that? Thanks!

    ReplyDelete
    Replies
    1. Hmm..Sorry I've not tried with 702. There might be similar folder as that of devsave, but renamed to a different name!

      Delete