After "Boot from hard disk" nothing happens

  • I have added some new machines to my fog setup, and everything seemed to be working fine at first. Compatibility test, host registration, image uploading and image deployment all worked fine. Everything was going OK until I configured them to boot PXE first always by default. The system seems totally frozen some time after selecting this option. I get dumped at a screen that says “Booting from local disk…” and nothing else happens. Toggling num-lock doesn’t change num-lock light on the keyboard, ctrl-alt-delete doesn’t reboot.

    I’m not sure if this is a fog problem or a problem with these machines? They are new, ready for Windows 8, and use UEFI I think.

    I tried to google around and I found some suggestions to use gPXE first and chainload the regular PXE file. I could totally be misunderstanding what to do, because the instructions provided in the fog thread were pretty vague. The thread: [url][/url]

    The first response in that thread just says get a gpxe image from here: [url][/url]

    Then follow the instructions here: [url][/url]

    So in the first link, you are given a form to configure how to create an image. I had no idea what to put here. I tried to use output format PXE bootstrap loader keep [Keep PXE stack method 1] (.kpxe). I renamed the resulting file gpxe.0 and put it in fog server /tftpboot. I configured my DHCP server to point to gpxe.0 and that gave me an infinite loop, so I read further instructions about how to get proper pxe chaining. I configured my dnsmasq dhcp server like this:



    And it seemed to be working fine. When booting from PXE it looks like it hits GPXE first, then I get dumped to the normal fog menu, then I choose boot from hard disk and… drum roll… nothing happens still.

    I’m kind of at a loss of what to do next.

  • The reason output is useful is it can tell what’s going wrong. It may say, not correct format which would tell us to use a newer or different file. Maybe it’s just not reaching the tftpserver for some reason, in which case it may be saying timeout or cannot load file.

    Either way, outout is always useful, even if it isn’t helpful.

    That being said, one resource to look at for efi pxe booting could be:

    While I don’t know all the possible methods that will get your system actually working, it’s one place to start.

  • [quote=“Tom Elliott, post: 23125, member: 7271”]I’m thinking, then, that this is due to UEFI almost entirely. The LAN Card does not want to boot to “Legacy” PXE which is probably what the error is telling you. You can pause the output by hitting the PAUSE-BREAK key, to see if you can catch it before it continues onto Windows.[/quote]

    Does it matter what the output is? I haven’t even tried to configure fog to serve anything other than legacy PXE.

    I’m not entirely sure how to begin setting up something that supports new PXE. Like you said, documentation is scarce. Can you point me in the right direction?

  • I’m thinking, then, that this is due to UEFI almost entirely. The LAN Card does not want to boot to “Legacy” PXE which is probably what the error is telling you. You can pause the output by hitting the PAUSE-BREAK key, to see if you can catch it before it continues onto Windows.

  • I have only explored with CSM in depth. Without CSM, PXE does something, but it’s not working correctly.

    If it attempts to boot PXE and does not reach a server (I unplugged the fog server), it times out and boots to windows.

    If it attempts to boot PXE and does reach fog server, then it does something very quickly that I can’t read, then switched to booting windows.

  • And this is where the problem is lying? Without CSM, you can’t even see the PXE menu?, with CSM, you can see the PXE menu, but you can’t boot to the drive?

  • [quote=“Tom Elliott, post: 23118, member: 7271”]If CSM is disabled, can you still set LAN to “Legacy OPROM”?[/quote]

    I don’t think so. If CSM is disabled then there are no visible settings for legacy anything.

    That’s on the newer .B0 BIOS, and I’m pretty certain that’s how it was with the older BIOS too.

  • If CSM is disabled, can you still set LAN to “Legacy OPROM”?

  • I don’t want the CSM setting to be a certain way, I just want to find any way that it works. I think I may have exhausted my options for trying things that might work with CSM Always.

    Regarding my system, I think it may not be all that configurable because it’s on the low-budget end.

    If I have CSM Always, then the only choice is Legacy PXE. If CSM is set to Always then I get a two inaccessible rows below, Launch PXE OPROM – Legacy and Launch Video OPROM – Legacy.

    The only other choice is CSM Never that just shows a blank space where the other sub-options were under Always.

    The CSM line and a small section about secure boot that I have disabled are the only two parts of this BIOS setup that look new to me and I think might have anything to do with UEFI.

    I can enable the LAN Option Rom or not, a simple enable/disable row that’s the only thing that shows whether CSM is Always or Never.

    Regarding the append hd0 command, I tried a bunch of permutations. I tried append hd1 then the screen flashes briefly and the countdown restarts. My hard drive is plugged into SATA port 1 of 1-4, according to the POST.

  • Your google skills aren’t necessarily “weak”. It just not many people have had such a cause for this yet.

    One of the things I’ve learned about UEFI and PXE Booting is it’s not perfected yet, so documentation is very scarce. While people have succeeded, I have yet to find an END-ALL-BE-ALL method for this. Everything I’ve tested on with EFI/UEFI doesn’t even provide a good option, to the point when I’m testing (linux only so far) UEFI imaging, I actually have to disable UEFI, upload/deploy my image, then before it restarts, re-enable EFI on the system.

    I will ask a few questions first. Is there a reason you don’t want CSM at all? When you have CSM enabled, have you enabled Legacy PXE from within the BIOS?

    I ask these as I don’t think we’ll be getting UEFI enabled for a little bit as even the best options I’ve found (iPXE) don’t have the greatest UEFI support yet. I’d really like to try to get regular PXE operating where you can select the menus, and then narrow down from there why your Hard drive is not booting. My guess is the append hd0 command is the root cause, but maybe it’s simpler than that. Is the Hard-drive connected on another channel bus on the mother board? Maybe on sata port 1 rather than sata port 0?

  • I’ve just tried one more thing that might help troubleshoot the problem here.

    If the system boots from PXE first and fails to download anything from the TFTP server, the boot process does successfully go to the next boot device and windows loads fine.

    Actually I think this information doesn’t help at all…if it attempts to boot PXE but does not do it successfully, then the process to get to the next boot device is entirely managed by the system and has nothing to do with PXE…

  • You have helped so much, even if nothing has worked so far I was able to try many different things thanks to your suggestions.

    If you could be so kind as to try to help me out with one more thing–

    For some reason I cannot get chainloading to work using CSM the way that everyone else has.

    Do you think you could set me on the right track for how to set up my /tftpboot folder for how to use PXE without CSM i.e. in UEFI mode?

    I feel like a fool because I would think that such a procedure would be written somewhere in the syslinux docs…or anywhere…but my google skills are weak because I can’t find anything of the sort.

  • I completely understand.

    I’m totally shooting in the dark as well as I don’t have anything on my side to “play” with to try replicating your issues to see if I could come up with a fix for your particular problem. I suspect you’re probably right that it’s got something to do with UEFI, and I’ve had similar issues with other systems due to UEFI. We did end up putting the system into “CSM” mode and from there the chainload method I provided you worked for us. We did, also, have to recreate the image from scratch after doing this, but it was well worth it as it’s one of our major providers of systems sending us these new systems with this issue.

    I hope I’ve helped a little even if I wasn’t able to get a working solution to you yet.

  • I’m in Ubuntu 10.04 so maybe the paths are a little different, I found syslinux installed in /usr/lib/syslinux/ . I copied pxelinux.0, vesamenu.c32, and chain.c32 from there into /tftpboot .

    The fog menu goes away, and I see a screen that says “Booting…” with a blnking cursor below it, and that’s it.

    Then I tried doing the same for syslinux 5.10, which required the same other files required by 6.x I tried before. I got the same screen as above.

    And I tried to the same for syslinux 4.07 with the same result.

    So from reading [url][/url] , it seems like this is a common problem with some hardware BUT the procedure to fix it isn’t working for me. I must be doing something wrong or this might be a class of hardware not covered by this fix?

    The hardware I’m trying this on is an Acer Veriton M2611G, Pentium G2020, H61 express chipset I believe, BIOS P21-A2. There are a couple of new BIOS versions available that I’m trying now.

    I still wonder if this goes back to UEFI. I don’t know as much about it as I would like–it’s like black magic to me. I just know that if I choose the BIOS boot menu, the options are unlike other systems I’ve worked on in the past. I see “Windows Boot Manager” which is something I’ve never seen before, and it’s what got me on track to try ntldr=BOOTMGR that never went anywhere, and I also see “UEFI: the hard drive.”

    So I flashed BIOS P21.B0 and all sorts of things started to go wrong. I could not boot into windows. Startup recovery fails. I tried putting in a window 7 disc and doing startup recover and it’s incompatible with whatever OEM crap Acer did to the machine. Tried everything and just when I was about ready to give up, I noticed there was an option in the BIOS that was set differently than the old version. There’s an option “Launch CSM” which was set to Always and was now set to Never. I flipped it to Always and I was able to boot to windows.

    But I still have the problem where if it boots PXE first, then it cannot boot the hard disk after. I just see “Booting…” with a blinking cursor underneath and nothing happens.

    I messed around a little more with Launch CSM set to never, and it seems like PXE doesn’t work in this mode. Not that it matters, because I can’t get windows to boot in this mode, but I just wanted to try things and see what happened. I guess it’s because the pxelinux files I was using are considered legacy and aren’t supported without CSM.

    I suspect that if I re-install windows so that it works without CSM, and configure the PXE server to work without CSM, that might work. But I feel like I’m shooting completely in the dark.

  • Try using the chain.c32 and pxelinux.0 file from your system under /usr/share/syslinux.

    You could use modern syslinux’s to do this as well, but as you found out it requires more and more items to get working.

    Most systems install syslinux under /usr/share/syslinux and they’re not as “modern” as what’s currently available.

  • Thanks very much for your help.

    I found chain.c32, actually several versions of it.

    I downloaded from Within that archive, there were three chain.c32 files:
    All of the following things, I tried three times with each of the different versions.
    When I tried just using append hd0, nothing happened.
    I googled around and found the syslinux documentation, which led me to try all sorts of things in place of append hd0. I tried:
    ]append hd0 0
    []append hd0 1
    ]append hd1
    []append hd1 0
    ]append hd1 1
    []append ntdlr=bootmgr
    ]append ntldr=BOOTMGR
    None of that worked. When the timer ran out or you manually selected the option, the screen would hang stuck in the same menu as it was. I could ctrl-alt-delete to reboot. One permutation, I think bios/com/chain/chain.c32 / append hd0 (or append hd0 0) caused the computer to reboot instead of hanging.
    I noticed that the syslinux archive I downloaded also had a pxelinux.0 file in it. I tried to overwrite the one provided by fog with this one, and when PXE booting it did not get to the menu, instead I saw a message “failed to load ldlinux.c32”.
    At this point I got a little careless and accidentally overwrote the pxelinux.0 file provided by fog with the one from syslinux without saving a copy.
    Now I’m really confused. In the [URL=‘’]syslinux docs[/URL], it says you just have to copy pxelinux.0 into tftpboot and makes no mention of ldlinux.c32…except for in the wiki page “Common Problems” that says
    [QUOTE]Version 5.00 and newer now require an additional module (ldlinux) be loaded before a config can be loaded/parsed, specifically ldlinux.c32 (BIOS)[/QUOTE]

    So I copied ldlinux.c32 that I found somewhere in the syslinux archive to /tftpboot and it complained about not being able to load vesamenu.c32, and then libcom32.c32, then abruptly the fog menu came up. When trying to boot from hard disk the first thing that came up was a message about chain.c32… this is when I realized that the last version of chain.c32 that I copied was not from the bios directory, like pxelinux.0 was, so I copied that version of chain.c32 into /tftpboot, rebooted and now says “ERR: Couldn’t read the first disk sector.”

    I double checked /tftpboot/pxelinux.cfg/default and the thing currently written under chain.c32 was “append hd0”. I tried to switch it to append ntldr=BOOTMGR and then it said that option was meaningless under something something conditions, so I guess I can rule out using that anymore.

    I tried a few more permutations of append hdx x and I couldn’t get anything good to happen.

  • I think you’re onto the right method by trying the “chainload” but you’re going about it in the wrong method.

    You shouldn’t have to do very much work to get this working for you.

    I would recommend going back to regular “PXE” setup for now.

    After that is done: you edit the /tftpboot/pxelinux.cfg/default file.

    Edit the Lines in the default file that read:
    [code]LABEL fog.local
    localboot 0[/code]
    So that they say:
    [code]LABEL fog.local
    kernel chain.c32
    append hd0[/code]

    Verify that you have chain.c32 downloaded to the /tftpboot/ directory. If you need a copy of this file let me know and I’ll get you one.

    That should get you going.