I have been using the latest version of loadlin.exe (version 1.6e). It works on some machines but on others I get "no place after kernel for initrd". The kernel is about 5MB in size (non-modular) and my initrd image (decompressed) is about 8MB. One route that I could take is to enable module support and offload some of the weight of the kernel into the initrd image but I'm not confident this will rectify the issue. Are there any alternatives to loadlin.exe that are capable of loading Linux from a booted DOS session? I basically have a series of DOS tools that I'd like to run one after another and then boot into Linux, which loadlin.exe seems to be working very well for except on some machines.

  • 1
    I'm surprised if loadlin is even supported anymore. It's been more than a decade since Microsoft released anything that had DOS as a foundation. – Wyzard Jul 8 '12 at 22:37
  • @Wyzard: I work in notebook servicing where a large number of diagnostics and tools are written in DOS because it is much easier to interface with the BIOS and peripherals. – dreamlax Jul 8 '12 at 23:12
  • I wonder if anyone uses DOS+loadlin as their regular bootloader on a modern machine. Could be kind of fun having your main computer literally boot to DOS, using autoexec.bat to proceed to Linux! – flarn2006 Feb 13 at 0:43

If it is still of interest:

Try to start Linux with the linld.com command. It can handle big kernel images (>4 MB) and a big initrd (>10 MB).

In my system, I use the following command:

c:\loadlin\mandrake\linld image=C:\loadlin\mandrake\linuz263.889 initrd=c:\loadlin\mandrake\init-263.889 "cl=root=/dev/sdc14 ro video=1024x768"

linld.com can be downloaded from here.


In the end, I had to cut the size of the kernel down. When you run loadlin.exe without any arguments it prints out the amount of memory available (this is the amount of memory that DOS sees and not the amount of memory installed in the machine). On some machines, only 16MB is available, and on others, 64MB is available. I guess it could be any value really.

loadlin.exe assumes that the kernel has a 1:2 compression ratio, and because Linux is loaded at address 0x00100000 (1MB), then you need to ensure that:

kernel_size * 2 + initrd_size < available_ram - 0x00100000

If you have a modular kernel, offloading kernel modules into initrd rather than building them into the kernel may help. Choosing a different kernel compression may also help.


Try with Syslinux instead, it tends to work better for me.

  • How do I use syslinux to load Linux when the computer is already booted into DOS? I had a look at the documentation but it doesn't seem to have an .exe file that I can just run and give the path to the kernel image and initrd. – dreamlax Jul 8 '12 at 23:09
  • Use the syslinux.com command. Syslinux DOS – CR. Jul 8 '12 at 23:24
  • 2
    That command installs SYSLINUX as a bootloader on a disk, it doesn't load Linux from a DOS session... – dreamlax Jul 8 '12 at 23:35
  • You just have to create a syslinux.cfg file to load a kernel and initrd. – CR. Jul 9 '12 at 20:56
  • 2
    That doesn't help, the syslinux.cfg file is loaded before DOS (because SYSLINUX is a boot loader). I need a solution that allows me to boot into DOS, run some DOS tools and then load Linux while I'm inside DOS. loadlin.exe allows me to do this but appears to have some issues on some machines. – dreamlax Jul 9 '12 at 21:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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