Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

Older PCs BIOS don't have the ability to boot from USB and there is no upgrade from the motherboard manufacturer that makes that possible.

Usually I load UNetbootin to make the USB bootable.

Since this fails here, I want to ask for a fast linux which starts from a 32mb hard drive and then enables the USB to boot from.

I already tried Grub but as far as I know you have to predeclare the systems used. Since I frequently switch from Tiny Core, Arch and other lean distros, I want to be flexible.

share|improve this question
    
It should be possible to chainload from one Grub the other Grub on the USB. But I have no experience with that. –  Baarn Feb 4 '12 at 19:13
    
Before posting your question, could you take the time to read over what you have written. There was a significant amount of spelling and grammar mistakes (capitalization, missing words, etc). People can generally give better help when the question is properly formatted. –  maxmackie Feb 4 '12 at 21:13

2 Answers 2

up vote 2 down vote accepted

You should not need 32 mb, you really just need to boot up linux (the kernel) and make sure it has support for USB drives built-in.

It may be tricky to make it find the right root partition if the computer has several SATA/USB disks, but other than that, you just need to load the kernel and tell it to mount the pendrive as root.

I guess this won't make it fit nicely in a floppy (unless you master the art of shrinking kernels or own a 2.88 floppy drive and compatible floppies), but it should make the space requirement simpler.

If that fails, well, you can try finding (or coding) a small program that's able to handle USB drives and put it in a floppy. I wonder if bootloaders like Smart Boot Manager are able to chainload USB disks.

Edit: on compiling your own kernel: the procedure is not hard, it's easy. The hard part is finding what exactly do you need and what can you rule out. The Gentoo Handbook chapter on kernel configuration shows you the steps — for short, you

  1. Get the kernel source and make sure the system has the tools to compile it (this last part is not covered by the Gentoo Handbook because, well, Gentoo always has these tools)

  2. Configuring the kernel: if you're not used to UNIX development, many times development steps are coded in a single file with recipes, the Makefile, which is used by make. Linux uses it, and it offers several ways (interfaces) to configure Linux: make xconfig opens a graphical tool, make config does it with plain text, and I usually go for make menuconfig, that provides a nice (text) menu.

  3. Compiling the kernel: Oh, just make, so it compiles the code and builds the image

  4. Copying the compiled kernel to wherever it should live at

  5. Tell the bootloader about that kernel

Now the problem is how to make something useful out of this, you want to make your kernel very small, so a possibility is to enable support for modules and just compile in-kernel whatever modular features you need during boot (includes support for the USB controller and whatever filesystem the USB drive is in), and the rest you will need should go as modules into the USB drive (they can be loaded later).

The kernel itself has targets to build a floppy disk image, make fdimage, make fdimage144 and make fdimage288, but I wonder how does this behave if it cannot build a so small image...

I also wonder if one could build a really minimalistic kernel with kexec support and no modules, that just reads the USB drive and as a binary runs something that kexecs another kernel (kexec, by analogy with the POSIX exec, replaces the running kernel)

share|improve this answer
    
but tinycore is 12mb, slitaz 30mb and linux kernel > 70mb. maybe i understood u wrong but i don't know how to compile the kernel or create a distro. maybe u could give me a short tip where to start. –  Email Feb 5 '12 at 0:48
    
@Email A Linux kernel is nowhere near 70MB. Debian's is ~2.5MB plus ~11MB of initrd, but that's with a lot of drivers; if you're going to run on such old hardware, which presumably also has little RAM, you'll need to trim that down by compiling your own kernel with only the drivers you need. –  Gilles Feb 5 '12 at 0:56
    
@Gilles ty for your comment. lol, yeah the full package is 70mb compressed. but i don't know how to build my distro or chose what to include or not. i am more a linux user than a developer. is there a kernel to download which will work out of the box for my intention and is less than 32mb? –  Email Feb 5 '12 at 1:08
    
You are not building a distro, but a kernel. It's about reading menus and ticking in what you want, ticking out what you don't. I think a non-bloated 2.6 kernel was always around 2.something MiB. There are also some space-saving options in the kernel itself. Are you sure the 70 MiB ain't kernel + modules + some initrd stuff? And even then, you will always get a smaller kernel if you hand-craft it for a specific computer or set of computers, rather than using a generic distro-provided kernel. I will update the answer with some insight on kernel compilation. –  njsg Feb 5 '12 at 7:34

You could tell Grub to chain-load whatever is on the USB disk; you don't need to provide any particular knowledge of what's on the USB disk. But as far as I know, Grub only supports USB through the BIOS.

What you might be able to do is boot into FreeDOS, then use Loadlin to load and boot a Linux kernel. You'll need to put the kernel, and the initrd if there is one, on a partition that FreeDOS can access. There are FreeDOS USB drivers for some systems.

Another possible bootloader would be Plop, which supports some USB devices.

If you're willing to copy the kernel (and initrd/initramfs if applicable) of all the distributions you want to boot to the internal hard disk, it's a lot easier: just install any bootloader you like, make it load the kernel from the internal hard disk, and specify a root device that happens to be over USB.

share|improve this answer
    
thx i want to avoid freedos. atm i use tinycore linux but thought about a more slick version. unfortunately i am more a user and not capable to build a kernel or distro. though, i am sure your recommendations would succeed if an advanced user would try. –  Email Feb 5 '12 at 1:20

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.