[SOLVED] Upgraded 2.1.1 -> 2.1.3, boot leads to BTX halted

  • First off, I've been a home user of pfSense for about 2 years now absolutely free of charge.  I'd like to say thanks to the large developer community out there that makes pfSense possible.  Seriously, you guys rock.

    For some reason, I got the urge to update my perfectly good pfSense installation (i386, v2.1.1).  Since it was before my first cup of coffee, I didn't make a backup…

    Now, when pfSense boots, I get to a boot selection screen with 8 options and the pfSense logo. Letting the default roll through I get a list of output followed by "BTX halted".  I'm unable to select any of the options from to boot menu, as the screen doesn't appear to respond to any keyboard input.  I'm sure the keyboard is working, because I can still access my CMOS settings on my motherboard.

    The full output after the boot menu:

    int=0000000e  err=00000000  efl=00010046  eip=00009465
    eax=ffff3000  ebx=c1820d20  ecx=00008c10  edx=078bfb02
    esi=ffffffff  edi=00001952  ebp=ffffffff  esp=00000010
    cs=0008  ds=0010  es=0010  fs=0010  gs=0010  ss=0010
    cs:eip=ac e8 46 00 00 00 fe c9-74 0c b0 2d 80 f9 08 74
           02 b0 20 aa eb ea fe ca-74 0e b0 0a aa b1 07 b0
    ss:esp=16 e8 00 f0 54 ff 00 f0-68 6a 00 f0 16 e8 00 f0
           a5 fe 00 f0 87 e9 00 f0-6f ef 00 f0 6f ef 00 f0
    BTX halted

    It would be really great if I didn't have to start from scratch, but it would certainly drive home the need to always make a backup…

  • What hardware?  Any recent bios settings change?  Is this a dual boot system perhaps?  Are you sure you used i386 and not x86-64 to update?

    If you have another disk temporarily available, you could do a fresh install on the new disk, and then recover your config from the un-bootable disk.

  • The hardware is a very old Athlon II which I picked up for free.  Can't give much more detail right now, at work, let me know if you need more.

    There were no recent BIOS changes.  I upgraded by using the update manager from within the WebUI, so I myself did not explicitly elect and architecture.

    I don't have a spare HDD to use for a recovery.  Can I just use a LIVE CD of some sort, and mount the existing HDD?  Also, what file(s) do I need to grab?  I'm not terribly familiar with the internal workings of pfSense, but I work as a developer and can usually catch on pretty quick.

    Thanks in advance.

  • You may be able to use the LiveCD, wait for the menu prompt asking for Easy, Custom, or Recovery of config.xml.  Choose Recovery and you should get a version of FreeBSD with the old tree mounted in a rescue folder (follow the prompts, I don't remember the exact path names).  In that folder you're looking for "config.xml", that's the master file with all your configuration settings.  In a normal install, that file lives at "/cf/conf" with a "backup" subfolder that will have all your changes over time.  Look for a similar folder set below the "rescue" folder and copy it out to a usb stick.  I often try and grab a bunch (or all) of the backup folder as well since the main config.xml may have gotten munged by the upgrade process.  The dates on the various .xml files will give you a clue as to their validity.

    I've had to do a similar restore once or twice and it's a little nerve wracking until you're sure you get the right .xml.  That's probably why charliem suggested using a different drive, so you can keep the old one as an ultimate backup til you're sure you've got it right (excellent idea).

    Good luck  ;)

  • Finally found some time to go and give this a try.  I recovered the config.xml and backups using the LiveCD.  The Recovery Mode that divsys described automatically mounted my hard drive before I even got to a prompt.  Much appreciated pfSense!

    I then did a fresh install and copied over the config.xml that I had saved whilest in Recovery Mode and rebooted.  Everything appears to be back exactly as it was.  :)

    Thanks for your help divsys and charliem!

  • Glad you got it back up and running.

    pfSense is one amazing piece of effective code  :D

Log in to reply