To save others countless hours of research, I'm distilling what I learned here.
The guide was written implicitly for use with desktops with normal IDE floppies. If you are trying to learn more about GNU/Linux using this guide, and you are using a laptop with a USB floppy then the instructions as written will not work. I'll explain why as I write.
First, you can identify the presence of a USB floppy by any number of means. The easiest is to list the contents of the /dev directory. If the fd0 device is absent, but you have an sd? entry then this is the clue you are looking for. I don't know about other manufacturers, but I can state definitively that most Dell laptops (if you have the internal bay drive) are USB floppies.
With the Dell floppy drives (same as any other USB floppy) you can boot from them, because the BIOS magically identifies the drive.
The first problem you will encounter with a USB drives is installing grub, you most likely won't be able to. Here's how I did it:
After you enter /usr/src/grub-<version>/grub/grub to start grub, first enter the following command, where ? is the correct drive letter found in the /dev directory.
device (fd0) /dev/sd?
Then just enter the remaining commands, using (fd0) and it should just install as you would expect.
So then you'll happily experiment away and then you'll hit a wall at the first test or at "System startup."
You'll get an error similar to this:
VFS : Cannot open root device "fd0" or unknown-block(0,0)
Please append a correct "root=" boot option
Kernel panic - not syncing : VFS : Unable to mount root fs or unknown-block (0,0)
This is caused because the init part of the kernel, only recognizes normal IDE floppies, not USB floppies. After much research, I found a simple solution at this web page:
I should have reviewed the content closer before posting. I missed a few things that may not be obvious to others.
When typing in the "kernel" line at the grub prompt, the root entry should look like this, where ? is the letter of the device created in the /dev directory:
root=/dev/sd?
Also, you will most likely have to add a rootdelay option after this, because it usually takes the USB floppy a few seconds to initialize, my entry looks like this:
rootdelay=15
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Harvey: I am currently trying to install grub and believe I have run into the exact same problem you describe. I'm not entirely certain, as two variants from your description exist, though the symptoms of my "distress" appear to be the same. (1) My /dev dirctory shows BOTH fd0 AND sd files. (2) I'm strangely not able to access the mke2fs command(!) and had to format my floppy in the ext2 mode through other means (Fedora). Anyway, initial procedures seem to have proceeded all right until, as with you, I encountered a failure to execute the grub> setup (fd0) command. (/grub/stage1 couldn't be found, although it certainly exists in the /boot/grub directory.) However, in trying to instead execute your recommended commands involving a sd? designation, I don't understand your instruction that the "?" refers to "the correct drive letter found in the /dev directory." With so many sd-letters to choose from, how do I know which is the "correct" one?
I'm beginning to suspect that all this is more trouble than it's worth. I should maybe try to set up my own distribution using some other learning source or mechanism. Whatever advice you may care to give would be appreciated. Jim
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Harvey: You can pretty much now ignore the above message. I've worked around the problem by ultimately executing the mke2fs command by appending/sbin/ to it and by downloading an earlier version of grub (0.95). I can now boot from the floppy, and am in the process of installing a version of linux on it. Slow going, with much need to improvise.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
To save others countless hours of research, I'm distilling what I learned here.
The guide was written implicitly for use with desktops with normal IDE floppies. If you are trying to learn more about GNU/Linux using this guide, and you are using a laptop with a USB floppy then the instructions as written will not work. I'll explain why as I write.
First, you can identify the presence of a USB floppy by any number of means. The easiest is to list the contents of the /dev directory. If the fd0 device is absent, but you have an sd? entry then this is the clue you are looking for. I don't know about other manufacturers, but I can state definitively that most Dell laptops (if you have the internal bay drive) are USB floppies.
With the Dell floppy drives (same as any other USB floppy) you can boot from them, because the BIOS magically identifies the drive.
The first problem you will encounter with a USB drives is installing grub, you most likely won't be able to. Here's how I did it:
After you enter /usr/src/grub-<version>/grub/grub to start grub, first enter the following command, where ? is the correct drive letter found in the /dev directory.
device (fd0) /dev/sd?
Then just enter the remaining commands, using (fd0) and it should just install as you would expect.
So then you'll happily experiment away and then you'll hit a wall at the first test or at "System startup."
You'll get an error similar to this:
VFS : Cannot open root device "fd0" or unknown-block(0,0)
Please append a correct "root=" boot option
Kernel panic - not syncing : VFS : Unable to mount root fs or unknown-block (0,0)
This is caused because the init part of the kernel, only recognizes normal IDE floppies, not USB floppies. After much research, I found a simple solution at this web page:
http://inexo.com.br/~ethy/USB-Floppy-Boot.html
Either manually modify the init/do_mounts.c source as indicated, or create a patch.
After I decompressed the kernel sources, made the modification, configured the kernel, made the image then copied to the boot disk ....
Success.
You just have to remember that you are not using the fd0 device but a sd? device throughout the rest of the guide.
Happy learning
I should have reviewed the content closer before posting. I missed a few things that may not be obvious to others.
When typing in the "kernel" line at the grub prompt, the root entry should look like this, where ? is the letter of the device created in the /dev directory:
root=/dev/sd?
Also, you will most likely have to add a rootdelay option after this, because it usually takes the USB floppy a few seconds to initialize, my entry looks like this:
rootdelay=15
Harvey: I am currently trying to install grub and believe I have run into the exact same problem you describe. I'm not entirely certain, as two variants from your description exist, though the symptoms of my "distress" appear to be the same. (1) My /dev dirctory shows BOTH fd0 AND sd files. (2) I'm strangely not able to access the mke2fs command(!) and had to format my floppy in the ext2 mode through other means (Fedora). Anyway, initial procedures seem to have proceeded all right until, as with you, I encountered a failure to execute the grub> setup (fd0) command. (/grub/stage1 couldn't be found, although it certainly exists in the /boot/grub directory.) However, in trying to instead execute your recommended commands involving a sd? designation, I don't understand your instruction that the "?" refers to "the correct drive letter found in the /dev directory." With so many sd-letters to choose from, how do I know which is the "correct" one?
I'm beginning to suspect that all this is more trouble than it's worth. I should maybe try to set up my own distribution using some other learning source or mechanism. Whatever advice you may care to give would be appreciated. Jim
Harvey: You can pretty much now ignore the above message. I've worked around the problem by ultimately executing the mke2fs command by appending/sbin/ to it and by downloading an earlier version of grub (0.95). I can now boot from the floppy, and am in the process of installing a version of linux on it. Slow going, with much need to improvise.