How to Make a Puppy Flash Drive using Another Linux
Posted: Sat 17 Apr 2010, 15:34
This article will try to resolve the following chicken-versus-egg situation: My computer doesn't have a CD writer. So I can't make a Puppy Live CD. So I can't run Puppy. So I can't run the Universal Installer. So I can't install Puppy onto a flash drive. So I can't run Puppy.
Windows users can solve this problem with Unetbootin. But Linux-only users need an alternative.
In order to proceed, the following things must be true.
1. Your flash drive has the standard DOS/Win boot code on its MBR. It should, but see the note at the end.
2. The flash drive partition is flagged as bootable. Check this with Gparted.
3. Your Linux has the syslinux bootloader package. It probably does.
Here are the steps.
1. Determine the device name of your flash drive partition. It should be something like sdb1. But making a mistake with the device name can cause bad things to happen. Buyer beware.
2. Plug in the flash drive but don't mount it. Type:
where sdxy is the flash drive partition. This installs the syslinux bootloader.
3. Mount the flash drive and make a file named syslinux.cfg containing the following line:
4. Download the Puppy ISO file and mount it.
5. Copy three files from the mounted ISO to the flash drive - vmlinuz, initrd.gz and pupxxx.sfs.
6. Unmount everything and boot off the flash drive.
If it won't boot, here are some trouble-shooting questions.
Do you know for sure that your machine supports USB bootability? Many older machines (and some newer ones) don't. The best scenario is where the BIOS detects the flash drive as a secondary hard drive.
Have you modified your BIOS boot priority list to enable USB booting?
How is the flash drive formatted? Some users report better results with fat16 than fat32.
Does the MBR of your flash drive contain the standard boot code? If not, you can manually update the code as follows:
1. Locate a file named "mbr.bin" in the syslinux package. Look for it in a folder like /usr/lib/syslinux.
2. Write this file onto the MBR of your flash drive using a command like:
Note that this command uses "sdb" and not "sdb1"
Windows users can solve this problem with Unetbootin. But Linux-only users need an alternative.
In order to proceed, the following things must be true.
1. Your flash drive has the standard DOS/Win boot code on its MBR. It should, but see the note at the end.
2. The flash drive partition is flagged as bootable. Check this with Gparted.
3. Your Linux has the syslinux bootloader package. It probably does.
Here are the steps.
1. Determine the device name of your flash drive partition. It should be something like sdb1. But making a mistake with the device name can cause bad things to happen. Buyer beware.
2. Plug in the flash drive but don't mount it. Type:
Code: Select all
syslinux /dev/sdxy
3. Mount the flash drive and make a file named syslinux.cfg containing the following line:
Code: Select all
default vmlinuz initrd=initrd.gz pmedia=usbflash
Code: Select all
mkdir mnt
mount -o loop pupxxx.iso mnt
6. Unmount everything and boot off the flash drive.
If it won't boot, here are some trouble-shooting questions.
Do you know for sure that your machine supports USB bootability? Many older machines (and some newer ones) don't. The best scenario is where the BIOS detects the flash drive as a secondary hard drive.
Have you modified your BIOS boot priority list to enable USB booting?
How is the flash drive formatted? Some users report better results with fat16 than fat32.
Does the MBR of your flash drive contain the standard boot code? If not, you can manually update the code as follows:
1. Locate a file named "mbr.bin" in the syslinux package. Look for it in a folder like /usr/lib/syslinux.
2. Write this file onto the MBR of your flash drive using a command like:
Code: Select all
dd if=mbr.bin of=/dev/sdb