Page 1 of 1

Bootable USB Installation-Fatdog64-811

Posted: Thu Oct 22, 2020 10:04 am
by baldronicus

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. ]


Re: Bootable USB Installation-Fatdog64-811

Posted: Fri Oct 23, 2020 7:08 am
by step
Thank you, Baldronicus, on behalf of the Fatdog team, for your informative and detailed report.

Re: Bootable USB Installation-Fatdog64-811

Posted: Sat Oct 24, 2020 1:16 am
by baldronicus
Hi @step . Thank you for your kind and diplomatic words. I don't know that the waffling of an uninformed user is really informative. Whilst it is verbose, the judgement may not be out with respect to it being detailed. I honestly don't know what should be culled (maybe all of it), what might potentially be misleading, or worse, dangerous.

Anyway, again, thank you for your kind response, and, again, thank you to yourself and the rest of the Fatdog Team for making such a neat option available to us (and, yes, I do also use it for booting Fatdog64-811 alone :)).

Thanks.

Re: Bootable USB Installation-Fatdog64-811

Posted: Sat Oct 24, 2020 8:12 am
by user1111
baldronicus wrote: Thu Oct 22, 2020 10:04 am When preparing another USB drive I had tried adding "; sync" to the 'dd' command. This would, for example, change the example given
in the "Installation" section of "Fatdog" "Bootable USB Installation" page from:
dd if=usb-boot-mbr.img of=/dev/sdd bs=4k
to
dd if=usb-boot-mbr.img of=/dev/sdd bs=4k; sync . I only tried this as there had been a bit of discussion going on regarding the
use of sync. It seemed to work, but it is just as likely that I used it incorrectly and it was ignored. I don't know whether it would
be recommended, or whether it might cause problems.
Hi baldronicus

The sync command waits until the 'writes' have been flushed to disk. The semicolon before the sync signifies another command - for instance
ls /bin;ls /etc
is the same as entering
ls /bin
ls /etc
sequentially

A problem with usb's is that they might still be writing even after the system thinks the writes have been flushed, so sync is more appropriate when using faster storage devices such as removable hard disk drives. i.e. sync might finish suggesting the writes to usb had completed and you pulled out the usb - but where the usb hadn't actually completed writing, such that the data became corrupted. A safer way is to, in Fatdog, right click the usb drive on the desktop, such as sdb1 (or whatever drive had the usb drive icon), and first select the unmount sdb1 choice (assuming its already mounted) and then repeating a right click on the unmounted drive and select the 'safely remove sdb1' menu choice. Thats' a more certain way to not remove the drive before it had actually finished writing. The drive icon will completely disappear from the desktop after than, even though it might still be plugged in, to re-show it again you have to physically pull it out and then plug it back in again.

usb's are relatively slow to read from, and can be 10 times slower to write to, such is their nature. usb 3 types (blue coloured tips) are quicker, but personally I find they run quite hot. The USB tip can be very warm/hot to the touch after use. Unless I specifically need the speed, I tend to just use them in 'normal' (white) usb slots so they're slower, but less hot as I suspect otherwise the heat could damage either the usb or usb port.

Fatdog has a plethora of boot options :) If you open Fatdog help and search for boot options ... there are pages and pages of useful options. The range looks daunting but is very comprehensive and a useful (great) reference. Such is the flexibility of Fatdog :thumbup2:

Re: Bootable USB Installation-Fatdog64-811

Posted: Sat Oct 24, 2020 9:31 pm
by baldronicus
Hi @rufwoof . Thanks for the information. I have modified the original post to remove the misleading dd/sync stuff.

I have sometimes noticed USB drives getting hot. Thanks for the idea of using a slower port to lower the "pressure" on the drive.

Yes, even though I am not very knowledgeable with this, I would agree with you on both counts regarding the Fatdog Help and Fatdog's flexibility.

I recall that when I first read the "Savefile" document it was very daunting, and I got lost with the options. With a second read (along with referencing the examples), I started to "get" the logic and then it seemed to flow. The documentation is very helpful.

Thanks again.