Bootable USB Installation-Fatdog64-811
Hi. Some of the new things the Fatdog developers have made available to us in Fatdog64-811 are the usb-boot image files that we can use to create a "Bootable USB Installation".
The Fatdog64 Help/Fatdog64 Frequently Asked Questions link "How to install Fatdog64 to a flash drive that works for both BIOS and UEFI machines" (which is just under the links regarding installation of Fatdog64 to UEFI machines) will take you to the "Fatdog" "Bootable USB Installation" page. This page describes the installation process, risks, etc.. It would be prudent to read this carefully as the USB drive that you might choose to use for this will be overwritten, and the use of the 'dd' command is involved.
There are several warnings regarding 'dd'.
[Edit- The information in the Fatdog Help on this topic and in the README that is in the relevant directory on the iso, should be read, as they are the definitive and informed sources to use with respect to this. What follows was written by someone who has enthusiasm, but little underlying understanding or knowledge. It doesn't do it justice, and I hope I haven't caused any problems in having posted it. I would also like to point out that I was not ignoring the information given in the help, although there were a number of decisions that I had made that were not "optimal". I have come from a background of using a GRUB4DOS multi-boot USB drive and had been used to just copying the entries from the USB to hard drives for frugal installs. Hence I was, sort of, still thinking in a directory way with respect to the Fatdog64 initrd and vmlinuz, and placed them in a folder. As is indicated in the Help it is easier and simpler to just place these files in the top level in the "OS" partition. Everything is already available to you if you do this. You don't have to remember to add paths to all the entries in the grub.cfg file (which I had initially forgotten to do) and it actually makes it easier when copying files across to other devices, as all the Fatdog64 related files that you might want to access are in the one place. The folder approach is still, of course, appropriate for the Puppy entries. I also made things more complicated by trying to keep the ext4 "OS" partition for use with Fatdog64 and some pups, whilst putting other pups on other partitions. Although I haven't run into any issues using the USB drive that resulted from this, and I still think the pups placed on the partition can support things, some applications in Puppy may not support the 64 bit extensions, which might cause problems in other use cases (Apologies, I can't remember where I saw the post that might reference this). The simpler approach is to just use ext3, which is editable using GParted in either Fatdog64 or Puppy, and then, as suggested in the Help, just put all the Fatdog64 and Puppy files in this partition. There were other things, but this is a long edit in a post that was already way too long. Thanks.]
The following should only be treated as an example/sample of use put forward by someone who doesn't really understand things. Some of the comments and observations could very easily be incorrect. So yes, treat the following with caution.
I should point out that I have only tried the "mbr" variant, using the "usb-boot-mbr.img" file.
If you do proceed, then, as indicated in the above document, the USB drive will have a 16MB FAT partition, labelled "ESP" (which, as
I understand things, shouldn't be touched) and a 512MB ext4 partition labelled "OS", which is the "active" partition, if you like.
As per the FAQ section at the bottom of the above noted page I have modified some of the stuff.
The following relates to a USB drive that is intended to boot Fatdog64-811 and a range of Puppies in a "base" configuration. I have
not attempted to set up any save files/folders/multi session files, etc..
The "OS" ext4 partition was extended, but left in the same format (it would be safest to back up the files in the partition before
making any changes).
Although the recommendation is that all OS files should go into the "OS" partition, I am not sure if the ext4 partition uses
the 64 bit extensions, or not. Hence I decided to set up another partition (labelled "ET3OS") formatted as ext3, so I could put the
more recent Pups etc.. on the "OS" partition and older ones on the "ET3OS" one. Following a post by JASpup, I also added a Fat32
partition (labelled "FT32T"), just as a test.
Hence the configuration file below relates to a USB drive that has the following set up:
"ESP" FAT partition
"OS" ext4 partition containing the files: fatdog.png, grub.cfg, terminus24.pf2, an "fd64-811" directory (for the Fatdog64-811 files),
and the directories containing the Puppy files, one for each Puppy.
"ET3OS" ext3 partition containing directories, each holding the related Puppy files.
"FT32T" FAT32 partition with one directory holding related Puppy files.
[EDIT- Added the "pdrv=" parameter to the Puppy entries in the grub.cfg below. [A very belated EDIT, should have been made much earlier-] Following a comment by Gyrog in this post viewtopic.php?p=8202#p8202.
2 There is a "pdrv=" parameter, this enables the 'init' script to go straight to the partition that contains the Puppy frugal install directory, without resorting to any "searching". I would strongly recommend this practice.
(When you install Puppy and create the boot entry, you must know exactly where you wrote the Puppy files, so why keep this informatiion a secret from the 'init' script and force it to guess?)
].
The butchered grub.cfg file that is in use follows:
insmod png
background_image /fatdog.png
set timeout=10
menuentry "Fatdog64-811 without savefile" {
echo Loading ...
linux /fd64-811/vmlinuz rootfstype=ramfs savefile=none
initrd /fd64-811/initrd
echo Booting ...
}
menuentry "EasyPup64 2.3.3" {
linux /easypup64-2-3-3/vmlinuz pdrv=OS psubdir=easypup64-2-3-3 pmedia=usbflash pfix=ram
initrd /easypup64-2-3-3/initrd.gz
}
menuentry "Fossapup64-9.5" {
linux /fossapup64-9.5/vmlinuz pdrv=OS psubdir=fossapup64-9.5 pmedia=usbflash pfix=ram
initrd /fossapup64-9.5/initrd.gz
}
menuentry "BionicPup64-8.0" {
linux /bionicpup64-8/vmlinuz pdrv=OS psubdir=bionicpup64-8 pmedia=usbflash pfix=ram
initrd /bionicpup64-8/initrd.gz
}
menuentry "Slacko64 6.3.2" {
linux /slacko64-632/vmlinuz pdrv=OS psubdir=slacko64-632 pmedia=usbflash pfix=ram
initrd /slacko64-632/initrd.gz
}
menuentry "------" { true; }
menuentry "--32--" { true; }
menuentry "Slacko32-6.9.9.9pmab" {
linux /slacko32-6999pa/vmlinuz pdrv=OS psubdir=slacko32-6999pa pmedia=usbflash pfix=ram
initrd /slacko32-6999pa/initrd.gz
}
menuentry "Tahr32 6.0.5 pae" {
linux /tahr32-605pae/vmlinuz pdrv=OS psubdir=tahr32-605pae pmedia=usbflash pfix=ram
initrd /tahr32-605pae/initrd.gz
}
menuentry "---------" { true; }
menuentry "-32-ext3-" { true; }
menuentry "Slacko-5.7.0-pae" {
search --no-floppy --label --set root ET3OS
linux /slacko-5.7.0-pae/vmlinuz pdrv=ET3OS psubdir=slacko-5.7.0-pae pmedia=usbflash pfix=ram
initrd /slacko-5.7.0-pae/initrd.gz
}
menuentry "Slacko-5.7-no-pae" {
search --no-floppy --label --set root ET3OS
linux /slacko-5.7-no-pae/vmlinuz pdrv=ET3OS psubdir=slacko-5.7-no-pae pmedia=usbflash pfix=ram
initrd /slacko-5.7-no-pae/initrd.gz
}
menuentry "Puppy 4.3.1" {
search --no-floppy --label --set root ET3OS
linux /pup-4.3.1/vmlinuz pdrv=ET3OS psubdir=pup-4.3.1 pmedia=usbflash pfix=ram
initrd /pup-4.3.1/initrd.gz
}
menuentry "---------" { true; }
menuentry "-32-fat32-" { true; }
menuentry "Puppy 4.3.1-fat32" {
search --no-floppy --label --set root FT32T
linux /pup-4.3.1-fat/vmlinuz pdrv=ET3OS psubdir=pup-4.3.1-fat pmedia=usbflash pfix=ram
initrd /pup-4.3.1-fat/initrd.gz
}
menuentry "---------" {true; }
menuentry "Start Fatdog64" {
echo Loading ...
linux /fd64-811/vmlinuz rootfstype=ramfs
initrd /fd64-811/initrd
echo Booting ...
}
menuentry "Fatdog64 with savefile in USB device" {
echo Loading ...
linux /fd64-811/vmlinuz rootfstype=ramfs waitdev=5
initrd /fd64-811/initrd
echo Booting ...
}
menuentry "Fatdog64 with multisession support" {
echo Loading ...
linux /fd64-811/vmlinuz rootfstype=ramfs savefile=direct:multi:sr0
initrd /fd64-811/initrd
echo Booting ...
}
menuentry "Fatdog64 with LVM and mdadm support" {
echo Loading ...
linux /fd64-811/vmlinuz rootfstype=ramfs withlvm withmdadm
initrd /fd64-811/initrd
echo Booting ...
}
menuentry "Fatdog64 without savefile" {
echo Loading ...
linux /fd64-811/vmlinuz rootfstype=ramfs savefile=none
initrd /fd64-811/initrd
echo Booting ...
}
menuentry "Fatdog64 without graphical desktop" {
echo Loading ...
linux /fd64-811/vmlinuz rootfstype=ramfs pfix=nox
initrd /fd64-811/initrd
echo Booting ...
}
menuentry "---" { true; }
menuentry "Use larger font" {
loadfont /terminus24.pf2
terminal_output console
terminal_output gfxterm
}
menuentry "---" { true; }
menuentry "For problematic Radeon cards - disable radeon driver" {
echo Loading ...
linux /fd64-811/vmlinuz rootfstype=ramfs blacklist=radeon
initrd /fd64-811/initrd
echo Booting ...
}
menuentry "For problematic Nvidia cards - disable nouveau driver" {
echo Loading ...
linux /fd64-811/vmlinuz rootfstype=ramfs blacklist=nouveau
initrd /fd64-811/initrd
echo Booting ...
}
submenu "More options for machines with severe video problems" {
menuentry "Set video resolution to 640x480" {
terminal_output console
set gfxmode=640x480
set gfxpayload=keep
terminal_output gfxterm
}
menuentry "Set video resolution to 800x600" {
terminal_output console
set gfxmode=800x600
set gfxpayload=keep
terminal_output gfxterm
}
menuentry "Set video resolution to 1024x768" {
terminal_output console
set gfxmode=1024x768
set gfxpayload=keep
terminal_output gfxterm
}
menuentry "List all supported video resolution" {
videoinfo
echo "Press Enter to continue ..."
read
}
menuentry "Use video resolution not listed in this menu" {
echo "Enter video resolution (WxH e.g. 800x600), press Enter to abort."
read gfxmode
terminal_output console
set gfxpayload=keep
terminal_output gfxterm
}
menuentry "Start Fatdog64 with the chosen resolution" {
echo Loading ...
linux /fd64-811/vmlinuz rootfstype=ramfs nomodeset pfix=xorgwizard savefile=none
initrd /fd64-811/initrd
echo Booting ...
}
}
menuentry "---" { true; }
menuentry "Firmware configuration" {
fwsetup
}
menuentry "Shutdown" {
halt
}
menuentry "Reboot" {
reboot
}
menuentry "Fatdog64 for slow BIOS and bootloaders" {
echo Loading ...
linux /fd64-811/vmlinuz rootfstype=ramfs mergeinitrd1=local:/initrd waitdev=3
initrd /fd64-811/initrd-nano
echo Booting ...
}
The newer entries have just been placed above the original Fatdog64 boot options. Initially I had butchered things further and had
removed a lot of the Fatdog64 options. Then it was realised that the intention is to be able to boot on various machines and having
the options could be beneficial.
In the file above I have also separated the 32 bit Puppies on the "OS" partition from the 64 bit ones.
Note that the top entries (down to the "32-ext3" grouping- i.e. the ones relating to files on the "OS" partition) do not to have a
"root", or similar parameter set. Just having the the files in the "OS" partition seems to be sufficient in this regard. It is not
too hard to suspect that this might be part of the reason that the "OS" partition is the preferred location for the files.
I don't know if the (Boolean?????) entries after the separating lines ({true;}) are needed on each line, or not. "Monkey see, monkey
do" applies here .
Although I had continued labeling the partitions using capitals, I don't think this is really necessary.
It is my understanding that USB drives (and/or BIOS's booting USB drives) may not like/accept extended partitions. This would imply
that the USB drive derived from the mbr image could have a maximum of four (4) partitions. This is only mentioned as a consideration
when you are setting up the drive. (I didn't really expect to be adding the fourth partition in this instance. It was just a "quick
and dirty" way to check things).
EDIT- Removed reference to attempted use of 'dd' with 'sync'. Not appropriate for use in this case. Please see the post by Rufwoof below. Thanks.
Booting: There appear to be two (2) Grub2 instances (or configurations) involved in the boot process. Initially a white on black (at
least that has been the case on the machines I have tried) menu will come up. The top, default, entry will load (chainload?) the main
Fatdog64 menu. If you are quick and in a hurry you could just hit enter when this appears. Alternatively you could wait a very short
time and it will bring up the main menu with the Fatdog64 image.
Hopefully there are no dangerous errors above.
EDIT-[This doesn't directly relate to the USB drive operation etc., it is more of an observation if you intend to use the USB drive in a similar way to that above (i.e. to boot Fatdog and multiple Puppies). While it is nice and generally seems to work (at least it seems to for me) you have to bear in mind that, unless you add entries that correlate with the those in the menu.lst, grub.cfg, etc. associated with each Puppy, you will not have the full gamut of boot options that each Pup might have.]
Thanks to the Fatdog Team (and all involved) for making this available.
Thanks.
[Edit to finally include the path in the Fatdog options, and to add --no-floppy to the "search ...." lines. Hopefully that is the correct term. ]