How I broke my Acer Aspire by installing FreeBSD

This post is a combination of a story, a HOWTO and a subtle customer review. It is not a support question; I already solved the issue.

System
Acer Aspire Timeline 1810TZ
Insyde H2O BIOS v1.3314
160 GB SeaGate harddisk (ST9160314AS)

Background
I wanted to install FreeBSD as dual-boot on my laptop, which came pre-installed with Windows and the following partitioning scheme.
  • 12 GB factory restore partition
  • 283 MB Windows boot partition
  • 78 GB Windows partition (C:\)
  • 58 GB DATA partition (D:\)
The BIOS has a feature to initiate a factory restore from that partition by pressing Alt+F10. I had previously rendered this laptop unbootable by installing FreeBSD, to the point that entering setup with F2, selecting another boot-device with F12, or factory restoring with Alt+F10 did not function either. I concluded then the BIOS in an early stage tries to parse the MBR and does not always handle that well; in other words it seems the BIOS is poorly written. Since then I had not made a second attempt of putting FreeBSD on that laptop, in fear of breaking it again. This time I had a plan though, to install FreeBSD without a bootloader and use the Windows bootloader to start FreeBSD, thus avoiding this issue. This gave me courage and I was sure it would work.

Breaking
From Windows using diskmgmt.msc I removed the DATA-partition to make space for FreeBSD. Using FreeBSD-9.0-RELEASE-amd64-memstick.img on a USB-stick, I rebooted into the FreeBSD 9.0 install-process. When bsdinstall asked about partitioning, I opted for Manual, because I am already familiar with partitioning and wanted to control what would happen. I created a slice and partitions for FreeBSD within the existing MBR-scheme and committed my changes. Because sysinstall used to ask explicitly which bootloader to install, I blindly assumed bsdinstall would do the same. When bsdinstall said it was finished, I realised it had not asked me what bootloader to use and I started getting nervous. I chose to enter the post-install shell to try and assess the situation. I wrote the MBR of the disk to a file.
# dd if=/dev/ada0 of=/tmp/mbr count=1
Comparing this to /boot/mbr showed many similarities, but also differences. At this point I was not yet absolutely sure whether my MBR had been overwritten and I did not want to make matters worse, so I left my MBR as it was at that point and rebooted.

After rebooting I realised bsdinstall had written to my MBR because my laptop refused to boot. To clarify, I don't mean it did not recognize the harddisk as a boot device, the BIOS would actually freeze soon after displaying the messages to press F2 for Setup and F12 for Boot Device; there was a brief moment where pressing F2 or F12 at least changed the text on the screen but the BIOS still froze after that. Booting from the USB-stick or any another medium to try and fix this, was therefor not an option. At this point I started getting more nervous and considering my remaining options.

Fixing
I did not want to send my laptop back to Acer Customer Service (which takes weeks) and figured my warranty had probably already expired anyway. I decided the only remaining option was to remove the harddisk from the laptop and try to fix the MBR either from another computer or by booting my laptop from another medium and hotplugging the harddisk after it had booted.

I turned my laptop upside down and took the usual precautions for handling hardware: washing my hands (had just eaten pizza), discharging statically, putting the pizzabox (crumbs) and Club Mate (liquid) a safe distance away, etc. The harddisk is behind a separate lid with two screws, which I could unscrew without having to open the rest of the laptop; this may or may not void your warranty. I carefully lifted and unplugged the harddisk and tried booting again. As I suspected, without the harddisk plugged in, the BIOS was functioning again and able to boot from USB-stick. There was some hope again, but still no concrete plan to fix my MBR.

I borrowed a SATA-to-USB-converter, which was actually an opened external harddisk casing, so that I could boot from USB-stick and try to fix my MBR from within the LiveCD-environment. Out of curiosity I first tried to boot from my harddisk when it was connected through USB instead of internal SATA. To my amazement, the BIOS recognizes the MBR just fine this way and happily boots FreeBSD. I did need to tell loader(8)() to use another vfs.mountfrom since my /dev/ada0s4 had now become /dev/da0s4. I was not able to boot Windows this way though, it would blue screen during the boot process.

I knew I was on the right track and just needed to find a way to get into Windows so I could use a fixmbr-command to restore an MBR the BIOS would recognize. Just out of curiosity, I decided to install boot0 to the harddisk to see how the BIOS would react to that.
# boot0cfg -Bv da0
I put the harddisk back to the internal SATA and again to my surprise, the BIOS did not freeze and was able to load boot0 and through that boot either Windows or FreeBSD. Apparently the regular MBR installed by bsdinstall (or previously sysinstall) would freeze the BIOS, but boot0 was fine.

My next problem was getting into the Windows recovery console. There was not enough time between boot0 and Windows booting to press F8 effectively. I used EasyBCD to force the Windows-bootloader to wait 3 seconds before proceeding, which gave me the option to enter the recovery console. From there I restored my MBR.
[cmd=]bootrec.exe /nt60 C: /mbr[/cmd]
Also using EasyBCD I added an entry for FreeBSD to the Windows bootloader (which is easier than the method described in the official FAQ) and gave me dual-boot the way I had planned initially.

And that is how I broke (and fixed) my Acer Aspire by installing FreeBSD.
 
I have same laptop. I only use FreeBSD with this laptop. I face the same booting problem if I install FreeBSD in MBR slice. However, this laptop happy with FreeBSD if I install FreeBSD in GPT slice.
 
Back
Top