Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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.

share|improve this question
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

2 Answers 2

up vote 1 down vote accepted

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.

share|improve this answer

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

share|improve this answer
    
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
1  
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
    
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

 
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.