Ok, I know, the easiest way to get DSL on a USB is to just boot from a live CD, frugal or usb-frugal and use the builtin script, see the
DSL FAQ. However, if you want to do it yourself from Windows you need the following:
The USB (or at least the partition used to boot, although I haven't tried using more than one partition on a stick) cannot be larger than 2GB since you will have to use the FAT file system. FAT32 does not work as syslinux only handles FAT, so make sure that when you format the stick you make it FAT. I first tried FAT32, which didn't work of course, but I failed to see why until I read the syslinux documentation.
Another small gotcha I encountered was that when I formatted the stick in Windows, the partition was not marked as active/bootable, so obviously it didn't boot. I was unable to do this from Windows, so my solution was to use Linux cfdisk to mark the partition bootable (I had Slackware 10.2 running in a VMWare setup). If anyone knows how to do this from Windows I'd be happy to know!
When the stick is formatted properly you'll just need to extract all files from the ISO onto the stick, and then move all files from the isolinux directory (DSL-N) or the boot/isolinux directory (DSL) to the root of the USB stick. The reason is so that we can use syslinux in a simple manner. Remember to take note of which drive letter the stick uses.
Syslinux works by looking at a configuration file on the partition it works on. There already exists one, but it is called isolinux.cfg. Isolinux is just a variant of syslinux intended for cd booting. Rename it to syslinux.cfg and if you feel adventurous you can change the contents. It will probably work without changes but if you're interested, check out the
syslinux homepage. Note that there's also a file called isolinux.bin. I ignored that one and everything seems to work fine. YMMV.
Now open a command line window and navigate to wherever you put the syslinux package. There's a win32 directory inside that contains a binary for windows (9x/ME/2K/XP) so go ahead and run
syslinux <usbdrive>:If you remember the contents of the USB there is a file called
linux, which is the kernel. Syslinux will boot that kernel automatically, but by changing syslinux.cfg you could make it boot other kernels too.
If you now look at the contents of the stick and have set windows to show hidden files you should now see a file named
ldlinux.sys, and that tells you everything is done. Reboot the computer and if you remembered to set up the BIOS properly you should within a few seconds be looking at the DSL/DSL-N boot screen.
I'll try to summarize in a later post, gotta go, have fun :D
(Oh yeah: this works for me, I make no guarantees, everything that goes wrong as a result of following these directions is entirely your own fault)