HOWTO: Multi-Booting between Puppy, DSL and, Windows

How to do things, solutions, recipes, tutorials
Post Reply
Message
Author
mcewanw
Posts: 3169
Joined: Thu 16 Aug 2007, 10:48
Contact:

HOWTO: Multi-Booting between Puppy, DSL and, Windows

#1 Post by mcewanw »

HOWTO: Multi-Booting between Puppy, DSL and, Windows on FAT32 or NTFS using Grub for Dos
[EDIT mar 2009: see also this more recent thread post: http://www.murga-linux.com/puppy/viewto ... 485#288485]

NEW: Modified to include manual frugal install of puppy30x (refer to note 15 below, "If you want to multi-boot from different versions of puppy").

Author: William McEwan. Revised 30oct2007.

WARNING: the following method replaces your existing Master Boot Record (MBR) bootloader with the grub_for_dos provided one. USE AT YOUR OWN RISK.

Read EVERYTHING below carefully before trying any of it!

Note that you don't need any version of Microsoft Windows installed for dual-booting between puppy and DSL, but grub for dos can find W98/W2000/WinXP (with a suitably edited menu.lst file) if any of these are also installed (on the same or on different drives and partitions). On one computer this method has been tested on, the underlying filesystem was FAT32, and on a different test computer the underlying filesystem was NTFS. Note that NTFS support is considered experimental under Linux, however, so it is possible there might be problems in that case. (Indeed, ICPUG has since pointed out, in the following post, that a DSL frugal install to NTFS fails during bootup :-( A frugal puppy installation installed to the same NTFS partition as Microsoft Windows, on the other hand, appears to work fine. Alternatively, all three can boot happily from a shared FAT32 partition).

The following steps worked for me:

1. From Puppy livecd, Boot up Puppy to run wholly in ram (i.e. if not the first boot, use boot option: puppy pfix=ram).
2. mount partition /dev/hda1. i.e. do that from the "drives" icon, or enter in a console:
mount -t vfat /dev/hda1 /mnt/hda1
3. Make sure your puppy cd is mounted (or click on the downloaded puppy iso so that that is mounted) and copy the following files to /dev/hda1:
pup_217.sfs; zdrv_217.sfs; vmlinuz; initrd.gz
4. Now umount and eject the puppy cd, insert and mount the DSL install cd, and copy the following two DSL directories from the DSL cd to /dev/hda1: boot and KNOPPIX. Note that you can omit this step if you don't want to dual boot with DSL.
5. Now make a directory called grub4dos for the bootloader files.
i.e. mkdir /mnt/hda1/grub4dos
6. Download Grub for DOS from: http://sarovar.org/projects/grub4dos/
(I used version grub4dos-0.4.3pre2 but version http://downloads.sourceforge.net/grub4d ... -0.4.2.zip would
probably work too).
7. Extract the downloaded grub_for_dos archived files into the grub4dos directory you made (i.e. uncompress the archive there).
8. Having done the above, copy the program grldr to /mnt/hda1 (i.e. to the top directory of the filesystem where your operating systems are installed). Note that if any or all of the operating systems are installed on different partitions you must place a copy of grldr on the top directory of each of these partitions.
9. Copy the grub_for_dos boot menu text file menu.lst to /mnt/hda1 (i.e. the top directory of the partition)

NOW DO THE FOLLOWING AT YOUR OWN RISK

10. You are going to replace your existing Master Boot Record with the one provided by grub for dos... It would thus be a good idea to back up your old MBR. For example you can make a copy of your existing MBR when running Puppy Linux using the command: cd; dd if=/dev/hda of=existing.mbr bs=512 count=1
You can then restore the old MBR from that saved copy, if you need to, by using the command: cd; dd if=existing.mbr of=/dev/hda bs=512 count=1
11. Open a console in puppy and enter:
cd /mnt/hda1/grub4dos
./bootlace.com /dev/hda
The above command overwrites your existing /dev/hda drive MBR bootloader program with the grub4dos one (yes, bootlace.com can be run under linux!...:-). It doesn't, however, overwrite your existing partition tables! :-). YOUR RISK THOUGH!
12. Now edit menu.lst to tell the new MBR bootloader where the puppy kernel and initrd files are (and the DSL ones if using that, and the Microsoft windows ones if you insist on having that option too... I simply modified the grub4dos provided menu.lst file to include the following. Let me know if it can be improved or if I've missed anything:
-------------------
# This is a sample menu.lst file. You should make some changes to it.
# The old install method of booting via the stage-files has been removed.
# Please install GRLDR boot strap code to MBR with the bootlace.com
# utility under DOS/Win9x or Linux.

color black/cyan yellow/cyan
timeout 30
default /default

title Puppy
kernel (hd0,4)/vmlinuz root=/dev/ram0
initrd (hd0,4)/initrd.gz
boot

title DSL
kernel (hd0,4)/boot/isolinux/linux24 ramdisk_size=100000 toram nodhcp
initrd (hd0,4)/boot/isolinux/minirt24.gz exec
./boot/isolinux/isolinux.bin

title find and load NTLDR of Windows NT/2K/XP
fallback 1
find --set-root /ntldr
chainloader /ntldr
savedefault --wait=2

title find and load CMLDR of Windows NT/2K/XP
fallback 2
find --set-root /cmldr
chainloader /cmldr
savedefault --wait=2

title find and load IO.SYS of Windows 9x/Me
fallback 3
find --set-root /io.sys
chainloader /io.sys
savedefault --wait=2
---------------------------------
13. That's all! Reboot, and you should be presented with a grub4dos boot manager menu in which you can select Puppy, DSL, or various flavours of Microsoft Windows from your /dev/hda1 partition.

14. Want to use different partitions?

The above steps assumed that you want to do a frugal install of puppy onto a /dev/hda1 partition, which also contains (though it doesn't need to) a frugal install of Damn Small Linux and an existing installation of Microsoft Windows. You could use different partitions for any or all of these operating systems if you wish and the grub_for_dos bootloader can find them. To do that you simply need to edit your grub_for_dos menu.lst file to point to the appropriate partitions where each OS is installed, and place a copy of the program grldr in the top directory of each of these partitions. For example, you might have windows 2000 on a /dev/hda1 NTFS partition (which is referred to as hd0,1 in grub_for_dos notation, a puppy frugal install on /dev/hda2 (i.e. hd0,1), and a DSL frugal install on /dev/hdb4 (i.e. hd1,3 in grub_for_dos notation).

15. If you want to multi-boot from different versions of puppy, with frugal installs of each held in separate directories you might find the following two links useful:
a. http://murga-linux.com/puppy/viewtopic. ... 7&start=30
(especially the posts added to that thread by tazoc)
b. http://puppylinux.org/wikka/BootParms
(which lists extra parameters you can pass to grub for different versions of puppy, should you need them)

As an example, here is an extract from a grub_for_dos menu.lst file for multi-booting between four different versions of puppy installed on the same FAT32 partition. This example assumes the frugal installs are all stored on /dev/hda5 and with their kernels and initial ramdisk images placed in version-specific directories (e.g. puppy version 2.17 vmlinuz and initrd.gz have been placed in directory /puppy217 of partition /dev/hda5). [Note: If you are instead storing everything on the typical Window's C: drive, that is, /dev/hda1, simply replace all references to hd0,4 below to hd0,0].

Except for the case of Puppy 3.01, all the *.sfs files, such as pup_217.sfs and zdrv_217.sfs (as well as usr_cram.fs for puppy109CE) were placed in the top directory of /dev/hda5 (i.e. directory / of hd0,4). However, to get Puppy 3.01 working, vmlinuz, initrd.gz, pup_301.sfs, and zdr_301.sfs were all put in /puppy301.

The parameter psubdir, available with puppy versions 2.16 and above, allowed puppy217's pup_save.2fs to be placed in /puppy217 (though, as in the menu.lst extract below, you should miss out the leading slash when entering psubdir=puppy217). In a similar manner puppy301, using psubdir=puppy301 allowed its pup_save file to be placed in /puppy301. The other persistent save files (such as puppy109CE's pup001) were stored in the top directory of /dev/hda5:

title Puppy301
kernel (hd0,4)/puppy30x/vmlinuz PMEDIA=idehd psubdir=puppy301
initrd (hd0,4)/puppy301/initrd.gz
boot

title Puppy217
kernel (hd0,4)/puppy217/vmlinuz root=/dev/ram0 psubdir=puppy217
initrd (hd0,4)/puppy217/initrd.gz
boot

title puppy109CE
kernel (hd0,4)/puppy109CE/vmlinuz root=/dev/ram0 PMEDIA=idehd PHOME=hda5 PFILE=pup001-none-262144
initrd (hd0,4)/puppy109CE/image.gz
boot

title MurgasMeanPuppy
kernel (hd0,4)/MurgasMeanPuppy/vmlinuz root=/dev/ram0 PMEDIA=idehd
initrd (hd0,4)/MurgasMeanPuppy/initrd.gz
boot


Notes and additional links:

1. don't confuse grldr with grldr.mbr, they are different. You don't need to worry about the latter file, however, bootlace.com sorts all that out by itself.

2. If you want to dual-boot between puppy and Microsoft Windows, but don't want to overwrite your existing MBR boot loader program, check out ICPUG's Lin'N'WinNewB PROJECT pages at: http://www.icpug.org.uk/national/linnwin/contents.htm
Amongst other things ICPUG's pages show how you can boot puppy via Window's own boot loader program.
Last edited by mcewanw on Fri 27 Mar 2009, 00:31, edited 19 times in total.

ICPUG
Posts: 1308
Joined: Mon 25 Jul 2005, 00:09
Location: UK

#2 Post by ICPUG »

William,

Have you tested this when DSL is placed on an NTFS partition? (Not just Windows).

I tried to do that in using my technique of using grldr only (not messing with the MBR) and it failed. It worked quite happily on a FAT32 partition.

I know that Knoppix will not boot this way when located on an NTFS partition until a special version of the minirt.gz file (supplied by Rymbeke in the Knoppix forum) is used.

As DSL is based on Knoppix I took my failure with DSL on NTFS to be because I had not tweaked the minirt24.gz and I did not know how to.

If you tell me you have got DSL to boot when it is frugally installed to an NTFS partition then I must think again.

ICPUG

User avatar
alienjeff
Posts: 2265
Joined: Sat 08 Jul 2006, 20:19
Location: Winsted, CT - USA

#3 Post by alienjeff »

Are we dual or tri-booting here? ;)
[size=84][i]hangout:[/i] ##b0rked on irc.freenode.net
[i]diversion:[/i] [url]http://alienjeff.net[/url] - visit The Fringe
[i]quote:[/i] "The foundation of authority is based upon the consent of the people." - Thomas Hooker[/size]

mcewanw
Posts: 3169
Joined: Thu 16 Aug 2007, 10:48
Contact:

Tri-booting on FAT32, Dual-booting on NTFS

#4 Post by mcewanw »

Sorry ICPUG, I missed that.
It all works fine when Puppy frugal, DSL frugal, and Microsoft WIndows (XP) are all installed on the same FAT32 partition.
It seems to work fine with Puppy frugal and Microsoft Windows are both installed on the same NTFS partition :-) Haven't tested that for long though.
But... When Puppy frugal, DSL frugal and Microsoft Windows are all installed on the same NTFS partition, and I try to boot DSL, it gets as far as the DSL splash screen. Then, right after it says, "Scanning for USB devices . . . Done", it fails with message:
"Can't find KNOPPIX filesystem, sorry. Dropping you to a very limited shell. Press reset button to quit".

User avatar
HairyWill
Posts: 2928
Joined: Fri 26 May 2006, 23:29
Location: Southampton, UK

#5 Post by HairyWill »

This spurred me on to give DSL another go.

DSL booting off NTFS fails for me too. This isn't really very surprising as when booting off a different partition with DSL I am only able to mount NTFS read-only.

DSL automatically loaded the firewire modules and ACPI modules to show my laptops (thinkpad x30) battery status with torsmo.
It didn't cope with the ipw2200 wireless card though. I don't think that the module is in the iso.
Will
contribute: [url=http://www.puppylinux.org]community website[/url], [url=http://tinyurl.com/6c3nm6]screenshots[/url], [url=http://tinyurl.com/6j2gbz]puplets[/url], [url=http://tinyurl.com/57gykn]wiki[/url], [url=http://tinyurl.com/5dgr83]rss[/url]

ICPUG
Posts: 1308
Joined: Mon 25 Jul 2005, 00:09
Location: UK

#6 Post by ICPUG »

Thanks guys for confirming my experience of trying DSL from NTFS.

I did actually ask Ruymbeke about what he changed in the Knoppix minirt.gz so that I might consider doing something for DSL. He told me to open it up and compare some files with the original - which was not what I wanted to hear. I don't like re-inventing the wheel! I prefer Puppy to DSL (better choice of apps in particular) so could not justify spending the time on such an exercise.

ICPUG

mcewanw
Posts: 3169
Joined: Thu 16 Aug 2007, 10:48
Contact:

I tried to patch DSL minirt24.gz but failed...

#7 Post by mcewanw »

Hello ICPUG

Following your earlier message, I actually tried yesterday to duplicate ruymbeke's work, but for DSL. Alas, I couldn't get it to work. Maybe I missed something or maybe the DSL boot kernel doesn't have the right support built into it. I also wish ruymbeke would take this on if he can. It amazes me that his earlier patch for knoppix was done years ago (based, I believe, on a working patch provided with the japanese knoppix version of the time). If only ruymbeke could have documented the main things needed to get it to work. The knoppix linuxrc script is pretty complex, but I'm sure the bits needed to get it running on ntfs is actually relatively minimal. It isn't good to have to rely on someone's patches - and until someone else understands how it all works the DSL community is suffering I'd say. Thank goodness, Puppy can boot from ntfs anyway!

I'm hoping ruymbeke will check out what I did and get back to me.

>>>
My post to knoppix forum thread yesterday:
http://www.knoppix.net/forum/viewtopic. ... cfe638a83c

Hello ruymbeke

Great to be able to boot Knoppix from ntfs with your patched minirt.gz. However it is also frustrating that noone seems to have produced a similar thing for the very popular Knoppix-derived Damn Small Linux. I've spent hours today trying to do just that... unsuccessfully Sad
First I ungzipped your minirt52.gz, loop mounted the result, and looked at linuxrc.
Then I did the same with DSL's minirt24.gz and used diff to see the differences.
Based on the side by side diff window I tried copying and pasting what seemed like the relevant parts over from your patched linuxrc to the DSL one. In particular I copied over your versions of the functions: mount_it(); boot_from(); boot_from2(); copy_to(); and loadmodule(). I also copied the line: loadmodule fuse ... and appended ntfs to the BUILTIN_FS line. Finally I reassembled everything into a new minirt24.gz.
But, as I say, it didn't boot - still couldn't find KNOPPIX whatever...
I even tried making a second version by also copying over the modules directory out of your patched minirt...
I didn't manually include any ntfs.o anywhere, so no manual insmod. Fact is, there wasn't any ntfs.o in the modules directory. Is that why this method doesn't work with DSL - is ntfs support compiled into KNOPPIX's kernel but not into DSL's kernel do you think? Or is the lengthy procedure I outlined above simply no good!

I really think it would be great if you could possibly do the same job for DSL you did for Knoppix - perhaps it would be easy for you to do since the linuxrc is very similar inside DSL to the Knoppix one?!

mcewanw
Posts: 3169
Joined: Thu 16 Aug 2007, 10:48
Contact:

added some new information and some useful links

#8 Post by mcewanw »

added some new information and some useful links today Aug 24.
Hope that additional info makes the howto more useful to you!

ICPUG
Posts: 1308
Joined: Mon 25 Jul 2005, 00:09
Location: UK

#9 Post by ICPUG »

William

Thanks for the link back to the Lin'N'WinNewb project. I think you have covered most of the bases with the additions.

Just to comment on Ruymbeke's lack of documentation for his method. It is not only the DSL community that suffers. Should he become indisposed it would knock the Knoppix community as well.

As others have said on this forum, you cannot criticise people when they give their time for free. However, there comes a time when only doing what floats your own boat can sometimes be to the detriment of the community as a whole. It's a tricky problem.

ICPUG

mcewanw
Posts: 3169
Joined: Thu 16 Aug 2007, 10:48
Contact:

knoppix etc

#10 Post by mcewanw »

Yes, Ruymbeke has done a useful piece of work providing his patched minirt.gz's for knoppix (though I believe the japanese knoppix community did it first). It certainly is painful though, and almost unbelievable after all these years, that the patches haven't somehow been fed back into the main knoppix distribution (and thus, for example, into knoppix derived distributions such as DSL). Either the wheel will have to be reinvented, or hopefully Ruymbeke will find time someday to produce a more universal patch so that anyone can understand the process and apply it themselves. Or if he could document the critical parts of the process - I can't imagine it is actually all that complex - but having to try and extract the information from the whole convoluted patched knoppix script is quite daunting, for someone of my limited skills anyway. A simple list of the key critical steps would be great! Ruymbeke has clearly given alot of his free time very usefully already, so it is hard and/or awkward to ask for more; I'm sure he has his own busy life and priorities. In the meantime, I just hope someone with far more skill than I, in working with such configuration scripts, will stumble upon this ntfs-related problem and take it on board to ensure that the required patches feed into the official knoppix distribution scripts. It's great that Ruymbeke continues to make his patches available, and I thank him for that, but speaking for myself, I'm unlikely to adopt them in any permanent system as long as they are unofficial patches. Pity, but I'm sure someone will sort it all out one day?! :-)

mcewanw
Posts: 3169
Joined: Thu 16 Aug 2007, 10:48
Contact:

Now modified to include manual frugal install of puppy30x

#11 Post by mcewanw »

NEW: Now slightly modified to include manual frugal install of puppy30x (refer to note 15 "If you want to multi-boot from different versions of puppy" for the brief details).

If you are multibooting with Windows, however, I still recommend ICPUG's LinNwin instructions as a safer method since it doesn't alter your existing Master Boot Record.

(On the other hand, if your system doesn't include an installation of any Microsoft OS (and not even DOS) then the method in my howto is a good alternative; it's the only method I personally ever use, even for a couple of systems multibooting between Windows, DSL, and various versions of Puppy).

tlcstat
Posts: 87
Joined: Mon 29 Oct 2007, 00:56
Location: SW Virginia mountains

Hard drive ext3 partition won't completely boot.

#12 Post by tlcstat »

Greetings,
I have been booting from a Fat32 drive with Wakepup on a XP machine.
I wanted a full HD install so I created a EXT3 partition and a Linux Swap partition and did a full install using Puppy Universal Installer. I put the grub installer in my MBR.
Windows XP boots fine from Grub and I can still boot the Fat32 Puppy with my Wakepup CD so I have full access to the EXT3 installation if I need to edit the boot config.
Problem. When I try to boot the Full Install on EXT3 my boot stalls at "executing personal config script /etc/rc.d/rc.local" .

This is a copy of my menu.lst in /boot/grub
title Windows (on /dev/hda2)
rootnoverify (hd0,0)
makeactive
chainloader +1
boot
# Other bootable partition config ends
# Linux bootable partition config begins
title Linux (on /dev/hda3)
root (hd0,2)
kernel /boot/vmlinuz root=/dev/hda3
boot

The file /etc/rc.d/rc.local is called from the file /etc/rc.d/rc.local0
This is a copy of the rc.local file that is called up.from rc.local0.

#this file called from rc.local0
#you can edit this file
#When firewall is installed, will append lines to this file...
modprobe evdev
After this the boot stops at a bash prompt "#".

Any solution would be appreciated.
Thanks
tlcstat

tlcstat
Posts: 87
Joined: Mon 29 Oct 2007, 00:56
Location: SW Virginia mountains

Well I fixed it myself

#13 Post by tlcstat »

Greetings,
Well I fixed it myself already! When I got back to the bash prompt I typed XWIN and it set up the display drivers and the desktop came up. I had already copied over my pupsave file so when I rebooted it read my save file and my whole setup that I copied from the Fat32 partition came up. This is the just great.
Thanks anyway
tlcstat

mcewanw
Posts: 3169
Joined: Thu 16 Aug 2007, 10:48
Contact:

#14 Post by mcewanw »

Glad you got it all going. I was just logging in to check that. Since your system booted as far as rc.local, I didn't think there was any issue with grub. I'm only familiar with frugal installs to ntfs though, so I was going to suggest you try posting on a different thread since no one had come forwards to help you. Anyway, the matter is now satisfactorily closed. Good work!

Post Reply