HOWTO create easy multi-boot USB Puppy from Linux

How to do things, solutions, recipes, tutorials
Message
Author
User avatar
rcrsn51
Posts: 13096
Joined: Tue 05 Sep 2006, 13:50
Location: Stratford, Ontario

#31 Post by rcrsn51 »

greengeek wrote:So are you saying that the boot folder and menu.lst are on HDD, but this grub stanza tells the system that the puppy files are on a usb drive?
Are you asking this because of the UUID entry? Hard drive partitions can also be identified by a UUID.

Scooby
Posts: 599
Joined: Sat 03 Mar 2012, 09:04

#32 Post by Scooby »

kooliepup wrote:This is a bit of a diversion, which is not intended to demean the project at hand.
I also am keen to see a .pet to enable HDD ISO booting.
Since I wont myself do it this way I cannot test or develop.
Of course it is free for anyone else to take this up.
kooliepup wrote:My machine does not boot from USB.
You could try plop too boot from cd first and then USB.
but it doesnt work with the automated approach of Easy2Boot.

But I guess this wouldnt be so nice a solution. Harddrive install is better.
Last edited by Scooby on Thu 07 Feb 2013, 17:34, edited 1 time in total.

Scooby
Posts: 599
Joined: Sat 03 Mar 2012, 09:04

#33 Post by Scooby »

gcmartin wrote:

Questions
  1. Would it be favorable to make a PET to ONLY delete the files presented by GRUB4DOS versus trashing all information on the drive?
  2. Is there another system tool to merely prep the boot record of the drive without running GRUB4DOS, such that the drive will be prepared without the effort of GRUB4DOS and without destruction of the drive's current information?
The reason for the questions is that it seems to me that the drive can be setup without the need to destroy the existing data that the drive may already contain so that this thread's can guide appropriately.
Martin after re-reading your post a few times I believe you want to install grub4dos
on internal HD and want to preserve data.

However although the Easy2Boot solution is good to use on HDD I will not make an installer for it.
Since I wont myself do it this way I cannot test or develop.
I will do for USB only.

Of course it is free for anyone else to take this up.

I think its better you search the web for how to install Grub4Dos to hd
for your particular situation

There is information how its done for example on a windows installation
here

Then if you want you can have the system boot the menu.lst of Easy2Boot

trueriver
Posts: 30
Joined: Thu 07 Feb 2013, 15:29
Location: Manchester, England

#34 Post by trueriver »

hi Scooby,

Thanks for the work you have done here! Seems ideal for my case, as I want to run Puppy from a USB stick and do not have a CD drive nor a Windows system to start from. I will run the "second easiest" method from another Linux distro.

Question: Do I use the multi-boot Puppy as a "CD" and use that to do an "install to USB" onto a second USB stick?

Or can I miss out that step, and immediately start using the multi-boot Puppy as my long term Puppy? Would I need to tweak it at all? (I am wonderimg if it might need settings like noatime to avoid wearing out the flash drive, for example)?

Incidentally, any other users like me who are not starting from a working puppy may like to know that the bootlace program (used in the second easiest method) is in the grub4dos zip file downloadable from
grub4dos version 0.4.5c

or check the project's downloads page for an even newer version.

Regards
River~~

edit: updated link to download info for grub4dos (link originally given was to a much older version, sorry)
Last edited by trueriver on Sun 10 Feb 2013, 14:16, edited 2 times in total.

Scooby
Posts: 599
Joined: Sat 03 Mar 2012, 09:04

#35 Post by Scooby »

trueriver wrote:Thanks for the work you have done here
I am just the prophet, the god is steve at rmprepusb

trueriver wrote: Question: Do I use the multi-boot Puppy as a "CD" and use that to do an "install to USB" onto a second USB stick?

Or can I miss out that step, and immediately start using the multi-boot Puppy as my long term Puppy?
You can miss out that step and immediately start using the multi-boot Puppy as your long term Puppy!
trueriver wrote: Would I need to tweak it at all? (I am wondering if it might need settings like noatime to avoid wearing out the flash drive, for example)?
I dont think you have to worry about that. Its the issue with savefile and the solution with
psavemark but Im working on a solution for that. In the interim there is a solution under
subtitle Save File
trueriver wrote: Incidentally, any other users like me who are not starting from a working puppy may like to know that the bootlace program (used in the second easiest method) is in the grub4dos zip file downloadable from the grub4dos project at http://sourceforge.net/projects/grub4dos/files/
~~
I must confess I only thought of windows and puppy linux users. I will take your suggestion and update for regular Linux users. I dont however know how to make
a solution for an automated install across other Linuxes. Bash-script?

I am originally a Windows user but now a puppy convert. Only limited experience
with other Linuxes and my favourite puppy is Archpuppy.

The update will take some time though
Last edited by Scooby on Thu 07 Feb 2013, 18:14, edited 1 time in total.

User avatar
greengeek
Posts: 5789
Joined: Tue 20 Jul 2010, 09:34
Location: Republic of Novo Zelande

#36 Post by greengeek »

rcrsn51 wrote:Are you asking this because of the UUID entry? Hard drive partitions can also be identified by a UUID.
Yes, I made the assumption that a UUID would only be relevant to USB devices (Doh! wrong again!)

trueriver
Posts: 30
Joined: Thu 07 Feb 2013, 15:29
Location: Manchester, England

#37 Post by trueriver »

Scooby wrote:...

I must confess I only thought of windows and puppy linux users. I will take your suggestion and update for regular Linux users. I dont however know how to make
a solution for an automated install across other Linuxes. Bash-script?
...
You could wrap a bash script together with bootlace.com as an add on for non-puppy users. The issue would be getting the right drive...

If you wanted to produce a GUI program, I'd suggest Python -- but that would be a *lot* more work.

I will post an even easier way in, later tonight, if I can get it working

River~~

Scooby
Posts: 599
Joined: Sat 03 Mar 2012, 09:04

#38 Post by Scooby »

I have a question about implementation.

Two solutions to choose between

1. edit boot option on ISO itself with script PSavemarkelyfy. The default use is
./PSaveMarkelyfy precise-5.4.3.iso

2. Have to folders on USB stick one called Linux for regular booting with chainloading.
for Linux Live CD and puppy linux without savefile. And one folder called puppy
with puppy linux isos which gets called with boot option psavemark that makes
savefiles work


I myself tend to go with option 1. Let users use my bash-script to edit a configfile on ISO
It is really easy to run.

trueriver
Posts: 30
Joined: Thu 07 Feb 2013, 15:29
Location: Manchester, England

Re: HOWTO create easy multi-boot USB Puppy from Linux

#39 Post by trueriver »

Scooby wrote:...
Alternative 2 - the second easiest way

This did not work for me with the instructions as given (at least if I understood them correctly). I did find a slightly different way to do things.

I was working from a terminal window running in Ubuntu 12.10, though the exact flavour of Linux should not matter, Puppy does tend to mount filesystems differently to most larger flavours of Linux (*)

2. ...

Code: Select all

mkdosfs - F 32 -I /dev/sdxx


where sdxx is exchanged for your label
and -I is i and not the L character.
Firstly: a typo: there must not be a space between the - and the F.

Here I was not quite sure what you meant by "label". To Linux users usually (*) means a human readable name for the disk whereas sdxx looks like a Linux disk identifier.

If sdxx is a label, the syntax on many Linux distros (*) is /dev/disk/by-label/sdxx

If sdxx is a partition (eg sdc1) then /dev/sdc1 is the more usual form (*), and /mnt/sdc1 is specific to Puppy's way of doing things.

So I used /dev/sdc1 here instead of /mnt/sdc1

Thinking of labels, you might actually want a label on this partition: this is how you do that:

Code: Select all

mkdosfs -F 32 -n easy2boot -I /dev/sdxx


Then when you look at the drive in Windows and in most (*) Linux versions it will show as easy2boot
3. Make USB drive bootable with Grub4Dos.

Code: Select all

bootlace.com --floppy=y /dev/sdxx
where y is exchanged for the number of the partion you want to install the bootloader on(most commonly 1
and sdxx is exchanged for your label
Here I typed --floppy=1 /dev/sdc1. That appeared to work at the time, but at the end of the process the bios failed to find the bootsector.

Referring back to the grub4dos manual, this is because your form of the command installs to the *Partition* MBR, and the BIOS looks at the *disk* MBR. (+)



So I changed the command to refer to the disk, and bootlace then complained that the --floppy option is illegal

So I left that out, and the version of this that worked for me was as follows:

Code: Select all

bootlace.com /dev/sdx
where sdx is the disk not the partition (for example sdc not sdc1)

Having done that, I followed the remaining instructions as given and it booted nicely. After setting up the wifi, the first thing I did from my *new* *working* Puppy was to post this.

River~~

edit to add footnotes

(*) In this post, "Linux usually" and "most Linux" means the mainstream distros like Debian, SuSE, Fedora, Red Hat, Ubuntu; and in contrast to how Puppy does things.
Anyone swapping in either direction between "most Linux" and "Puppy" has some learning to do. Most of these differences arise from BarryK's efforts to reduce bloat.

(+) Looking back, I wonder if my mistake was simpler - did I check that the "boot" flag was set on that partition? I'm not going to go back and test that now I have got a bootable Puppy
Last edited by trueriver on Fri 08 Feb 2013, 10:42, edited 3 times in total.

User avatar
kooliepup
Posts: 292
Joined: Sat 14 Jan 2012, 03:40
Location: Victoria, Australia

#40 Post by kooliepup »

@greengeek,

You can replace the UUID line with the more common

find --set-root --ignore-floppies --ignore-cd /TESTRUN/initrd.gz

It is usually quicker booting using the UUID, but not always.

HTH.

gcmartin

#41 Post by gcmartin »

The following are 3 different ways to tell the boot process which USB/HDD device to boot go looking for the additional info needed for booting the system.
  • find --set-root /TESTRUN/initrd.gz
  • root (hd0,1)
  • uuid 65a8ce93-769e-425a-b02b-e32494af59ef
EITHER one of them, each, do about the same exact thing in identifying where to look.

Here to help

Adagio

#42 Post by Adagio »

The easiest way for a novice to get the UUIDs for this is to use the attached Grub4DOS .pet.
It is from Puppy Precise 5.42, and should work on all 5x series Pups.
I have used it on most of them.
Just install over the current one.

Don't know about earlier Pups. Should be ok.
Attachments
grub4dos-0.4.4.v1.8.0-1.pet
(180.42 KiB) Downloaded 515 times

trueriver
Posts: 30
Joined: Thu 07 Feb 2013, 15:29
Location: Manchester, England

#43 Post by trueriver »

Scooby wrote:
...
During boot press F2 key

and then write the following

Code: Select all

puppy psavemark=1
then savefile will work, This can be somewhat tedious so will see if it can be automated somehow?
This problem arises because easy2boot presents the puppy files on an iso, and isofs is defined to be a readonly filesystem. Effectively Puppy "thinks" it is running from a CD not a USB stick.

Ideas.

1. Extension of Puppy's repertoire to recognise when it is on iso-on-a-flash

This option is serious work for someone who really knows Puppy internals. (Puppy vetinarian?) and would be beyond me to implement

An isofs can be extended by writing another "session" to it (which is how Puppy works on a CDR when you save your work to the same CD). Incidentally, multi-session was invented by Kodak for their photo-CDs so you could burn extra pics to an existing Kodak photoCD.

This would be the best way of doing this, if you know enough about writing iso filesystems: write a into a "second session" iso and append that to the original iso. That is *exactly* what happens when you burn a second session onto the disk, but you'd have to do it using dd rather than a disk burner.

This would need extra functionality built into Puppy, so that it somehow recognises it is running from cd-on-flash mode. Once Puppy isos are released with the new capability the problem goes away

2. Workaround for existing Puppy iso

Extract the iso file to a folder on disk, alter the file isolinux.cfg changing cd to usbflash so the last line now reads

Code: Select all

append initrd=initrd.gz pmedia=usbflash
and then re-create the iso from that folder. This process of extract->replace->rebuild could easily be automated.

WARNING: this modified iso would no longer be suitable for burning to CD unless you changed it back. If you burnt this new file, Puppy would boot but would believe it was running on a flash stick ... goodness knows what issues this would cause. For this reason, I personally don't like this workaround.

3. Use easy2boot as an installation & testing platform.

BarryK has always said the best way to get Puppy on a USB stick is to burn a CD first, then use the CD to install to USB.

This workaround uses two usb sticks, one temporary and one permanent. First, you would get Puppy working under easy2boot, but only use that system for testing and (if happy with the test) installing to the permanent USB stick just as you would from the CD.

I have tested this, it works. And also the second-stage USB boots a lot faster than easy2boot (because it only has to do one thing, not scan for isos, work out what to do with them, and then offer you a lot of other options).

4. Make a "mongrel" easy2boot and permanent system.

Like 3 above, but you install onto the same usb stick that you are using for easy2boot, somewhere outside of the easy2boot directories. Don't let the installer alter the mbr in any way.

Then add an apprpriate grub stanza to menu.lst, so that the first option in the menu is the grub equivalent of the above syslinux line.

Once installed delete the iso.

Then you can use the installed Puppy for serious work, and get the efficiency savings of not working through an extra filesystem all the time. When you want to test a new Puppy, or another flavour of Linux, drop that iso into the \_ISO\Linux\AUTO folder and use the easy2boot intelligence to boot that system. But again: whether it is Puppy or some other Linux, use that platform to test or install, not as a permanent installation.

5. Separate partitions on a USB stick / USB drive

Like 4 above, but on separate partitions on the same USB stick. Though most people think of this only for internal drives, GParted will quite happily partition a usb stick for you.

Note that easy2boot creates a "virtual" primary partition no 4, so you are limited to two primiary partitions, plus an extended partition to hold any further partitions. Make sure GParted numbers these as 1,2,3 so that 4 remains free for easy2boot.

------

Number 3 is my current recommendation, I have done this and it works.

I will be testing number 4 and reporting back eventually, but not soon as I have other stuff that is becoming pressing. It would be great to be able to download onto a usbstick and then boot the new iso with no further ado. This is something I have wanted to do since around the time that Vista was released.

I am not doing any work on 1,2, or 5 at present, just offer then as ideas in case they inspire anyone else to continue / extend the good work.

River~~

rmprep
Posts: 17
Joined: Sun 06 Jan 2013, 15:08

#44 Post by rmprep »

You can boot from ISO but you need to extract the sfs file - so you might as well just extract all three files.

here are both menu entries for precise sku - use whichever one you like and you can change the folder name if you like to match your distro.

Code: Select all

# Extract files to /precise (only vmlinuz, initrd.gz and sfs needed)
# rename PUPPY_PR.SFS to lower case puppy_precise_5.4.3.sfs
title Precise
kernel /precise/vmlinuz pmedia=usbflash psubdir=precise fix=fsck  psavemark=1
initrd /precise/initrd.gz 

# Extract sfs to /precise
# rename PUPPY_PR.SFS to lower case puppy_precise_5.4.3.sfs and place in \precise folder
title puppy boot from ISO
map /_ISO/Linux/precise-5.4.3.iso (0xff)
map --hook
root (0xff)
kernel /vmlinuz pmedia=usbflash psavemark=1 fix=fsck  psubdir=precise
initrd /initrd.gz
I am not sure if the fix=fsck is required - seems to work OK without it.

Note: ONLY WORKS ON REAL SYSTEM and NOT in QEMU!

I used a FAT32 USB boot drive and settings were not saved on exit.
They may be saved if you use ext2 format.

Scooby
Posts: 599
Joined: Sat 03 Mar 2012, 09:04

Re: HOWTO create easy multi-boot USB Puppy from Linux

#45 Post by Scooby »

trueriver wrote:
Scooby wrote:...
Alternative 2 - the second easiest way

This did not work for me with the instructions as given (at least if I understood them correctly). I did find a slightly different way to do things.


Thank you for comments

I agree it needs some reworking and I will do it.

I'm sure you can help me test it then.

Scooby
Posts: 599
Joined: Sat 03 Mar 2012, 09:04

#46 Post by Scooby »

trueriver wrote: 2. Workaround for existing Puppy iso

Extract the iso file to a folder on disk, alter the file isolinux.cfg changing cd to usbflash so the last line now reads

Code: Select all

append initrd=initrd.gz pmedia=usbflash
and then re-create the iso from that folder. This process of extract->replace->rebuild could easily be automated.
I created a script for editing ISO's

it worked for me and can set whatever boot parameters you like for example
pmedia=cd

I'm thinking of incorporate a way of booting with psavemark boot option passed.
Look at discussion here

Scooby
Posts: 599
Joined: Sat 03 Mar 2012, 09:04

#47 Post by Scooby »

rmprep wrote:You can boot from ISO but you need to extract the sfs file - so you might as well just extract all three files.

here are both menu entries for precise sku - use whichever one you like and you can change the folder name if you like to match your distro.

Code: Select all

# Extract files to /precise (only vmlinuz, initrd.gz and sfs needed)
# rename PUPPY_PR.SFS to lower case puppy_precise_5.4.3.sfs
title Precise
kernel /precise/vmlinuz pmedia=usbflash psubdir=precise fix=fsck  psavemark=1
initrd /precise/initrd.gz 

# Extract sfs to /precise
# rename PUPPY_PR.SFS to lower case puppy_precise_5.4.3.sfs and place in \precise folder
title puppy boot from ISO
map /_ISO/Linux/precise-5.4.3.iso (0xff)
map --hook
root (0xff)
kernel /vmlinuz pmedia=usbflash psavemark=1 fix=fsck  psubdir=precise
initrd /initrd.gz
I am not sure if the fix=fsck is required - seems to work OK without it.

Note: ONLY WORKS ON REAL SYSTEM and NOT in QEMU!

I used a FAT32 USB boot drive and settings were not saved on exit.
They may be saved if you use ext2 format.

Code: Select all

title puppy boot from ISO
partnew (hd0,3) 0x00 (hd0,0)/_ISO/Linux/precise-5.4.3.iso
map  (hd0,0)/_ISO/Linux/precise-5.4.3.iso (0xff)
map --hook
root (0xff)
kernel /vmlinuz pmedia=usbflash psavemark=1 fix=fsck  psubdir=precise
initrd /initrd.gz
Steve I know this works as well and needs no extraction of files from ISO.

Is there any special reason you don't recommend using it this way?

And Steve I really love your work with Easy2Boot, thank you :!:

nooby
Posts: 10369
Joined: Sun 29 Jun 2008, 19:05
Location: SwedenEurope

#48 Post by nooby »

Wrong thread for my question sorry
Last edited by nooby on Sat 09 Feb 2013, 17:56, edited 1 time in total.
I use Google Search on Puppy Forum
not an ideal solution though

rmprep
Posts: 17
Joined: Sun 06 Jan 2013, 15:08

#49 Post by rmprep »

Code: Select all

title puppy boot from ISO
partnew (hd0,3) 0x00 (hd0,0)/_ISO/Linux/precise-5.4.3.iso
map  (hd0,0)/_ISO/Linux/precise-5.4.3.iso (0xff)
map --hook
root (0xff)
kernel /vmlinuz pmedia=usbflash psavemark=1 fix=fsck  psubdir=precise
initrd /initrd.gz
Steve I know this works as well and needs no extraction of files from ISO.
Is there any special reason you don't recommend using it this way?
Hi
I can't make that work? It needs to have the sfs file in the \precise folder??? If you just have the iso file it fails to boot???


If you make a file called Precise.mnu and place it in the \_ISO\Linux folder, it will be listed in the first menu in Easy2Boot. :D

rmprep
Posts: 17
Joined: Sun 06 Jan 2013, 15:08

#50 Post by rmprep »

OK
This works on a fresh, clean USB drive

Code: Select all

title puppy boot from ISO 
partnew (hd0,3) 0x00 (hd0,0)/_ISO/Linux/precise-5.4.3.iso 
map  (hd0,0)/_ISO/Linux/precise-5.4.3.iso (0xff) 
map --hook 
root (0xff) 
kernel /vmlinuz pmedia=usbflash psavemark=1 fix=fsck
initrd /initrd.gz
you must omit the subdir=precise parameter.

I have added the .mnu file to the Easy2Boot Tutorial on my site.

Post Reply