Following a simple UFS autopartitioned install from `bsdinstall` on a Lenovo x220 (w/latest BIOS image available from Lenovo) the bootcode does not appear to be installed. I.e. the system reacts as if there is no bootable OS on the boot drive. I experimented with GPT partitioning and also made some attempts to get bootcodes working for ZFS (with both but MBR and GPT schemes) and never quite sorted out what to bootcode to install where to render the install bootable. It is my understanding the x220s (and some other Lenovo laptops) have some known idiosyncratic boot behavior, but it also seems as if bsdinstall has been skipping the branch wherein it installs bootcodes on this system. In all experiments I used the memstick USB image I have not experienced this issue with virtualized systems Fix: To remedy this I have exited to a shell following the installer, and have manually run: gpart bootcode -b /boot/mbr /dev/ada0 gpart bootcode -b /boot/boot /dev/ada0s1 How-To-Repeat: Install with any autopartitioned option in `bsdinstall` on a Lenovo x220 (regardless of legacy boot vs. EFI boot BIOS setting) with either a current or vintage BIOS installed.
I can confirm there is still a problem with 10RC3. Background: The X220 has a quirk/feature/bug in that it refuses to boot from a GPT partitioned disk if you select "legacy boot" in the BIOS. This apparently is a problem for GNU/Linux users as well. So, we're stuck with MBR partition schemes until UEFI booting is supported. Here is the bsdinstall_log from an attempt to install MBR/ZFS/GELI: http://ftfl.ca/misc/bsdinstall_log. Like Max, I'm told there is no OS installed after rebooting. After bsdinstall finishes if I try to manually add the boot code with # gpart bootcode -b /boot/mbr ada0 # gpart set -a active -i 1 ada0 # dd if=/boot/zfsboot of=/dev/ada1s1 count=1 # dd if=/boot/zfsboot of=/dev/ada1s1a skip=1 seek=1024 the two dd commands return operation not permitted errors even when setting kern.geom.debugflags=0x10. Now after I reboot I see an error about not having ufs filesystems. If there is anything else I can test, just let me know. Joseph
This is not a bug with bsdinstall, but with the lenovo bios. Can you please try this fixed image: https://lists.freebsd.org/pipermail/freebsd-current/2015-July/056551.html Just write it to a USB stick and try to boot from it
A commit references this bug: Author: allanjude Date: Wed Jul 15 02:23:56 UTC 2015 New revision: 285594 URL: https://svnweb.freebsd.org/changeset/base/285594 Log: Add a new option to gpart(8) to fix Lenovo BIOS boot issue PR: 184910 Reviewed by: ae, wblock Approved by: marcel MFC after: 3 days Relnotes: yes Sponsored by: ScaleEngine Inc. Differential Revision: https://reviews.freebsd.org/D3065 Changes: head/sbin/geom/class/part/gpart.8 head/sys/geom/part/g_part_gpt.c
A commit references this bug: Author: allanjude Date: Sat Jul 18 18:49:47 UTC 2015 New revision: 285679 URL: https://svnweb.freebsd.org/changeset/base/285679 Log: Add support for two workarounds for known issues booting GPT in legacy mode on some hardware For Lenovo laptops with buggy bios (x220, t420, t520): Write the 0xee entry into the second slot in the pmbr instead of the first For some Dell and HP models: The BIOS gives a warning message when booting in legacy mode from a GPT partitioned disk where the 0xee partition in the pmbr is not flagged active For models known to have this problem, mark the pmbr active during installation Use smbios data to identify machines known to be affected by any of the above, and offer the user the option to apply the workaround In bsdinstall's ufs auto mode (autopart partition wizard): Allow users to select which type of partition table to use Keep current defaults: MBR for BIOS, GPT for UEFI This allows users to choose GPT for legacy boot if they wish PR: 184910 PR: 194359 Reviewed by: Michael Dexter Approved by: marcel MFC after: 3 days X-MFC-With: r285594 Relnotes: yes Sponsored by: ScaleEngine Inc. Differential Revision: https://reviews.freebsd.org/D3091 Changes: head/usr.sbin/bsdinstall/partedit/gpart_ops.c head/usr.sbin/bsdinstall/partedit/part_wizard.c head/usr.sbin/bsdinstall/partedit/partedit.c head/usr.sbin/bsdinstall/partedit/partedit.h head/usr.sbin/bsdinstall/scripts/auto head/usr.sbin/bsdinstall/scripts/zfsboot
I have produced a memstick image of 10.2-BETA2 with these patches applied. Please test it: http://www.allanjude.com/bsd/FreeBSD-10.2-BETA2-amd64-20150718-r285678_bsdinstall-memstick.img.xz SHA256 (FreeBSD-10.2-BETA2-amd64-20150718-r285678_bsdinstall-memstick.img.xz) = d277249b63eec68fa4b201372a8a2b853ae1f8a9734907d641e88bbd052dce9d
A commit references this bug: Author: allanjude Date: Tue Jul 21 15:50:16 UTC 2015 New revision: 285756 URL: https://svnweb.freebsd.org/changeset/base/285756 Log: MFC: r285594 New partition flag for gpart, writes the 0xee partition in the pmbr in the second slot, rather than the first. Works around Lenovo legacy GPT boot issue PR: 184910 Approved by: re (gjb), marcel Relnotes: yes Sponsored by: ScaleEngine Inc. Differential Revision: https://reviews.freebsd.org/D3140 Changes: _U stable/10/ stable/10/sbin/geom/class/part/gpart.8 stable/10/sys/geom/part/g_part_gpt.c
A commit references this bug: Author: allanjude Date: Tue Jul 21 21:12:31 UTC 2015 New revision: 285769 URL: https://svnweb.freebsd.org/changeset/base/285769 Log: MFC: r285679 Add auto-detecting workaround for Lenovo GPT boot issue Add auto-detecting workaround for "GPT Active" boot issue Allow user to select partitioning scheme in the ufs wizard PR: 184910 PR: 194359 Approved by: re (gjb), marcel Relnotes: yes Sponsored by: ScaleEngine Inc. Differential Revision: https://reviews.freebsd.org/D3144 Changes: _U stable/10/ stable/10/usr.sbin/bsdinstall/partedit/gpart_ops.c stable/10/usr.sbin/bsdinstall/partedit/part_wizard.c stable/10/usr.sbin/bsdinstall/partedit/partedit.c stable/10/usr.sbin/bsdinstall/partedit/partedit.h stable/10/usr.sbin/bsdinstall/scripts/auto stable/10/usr.sbin/bsdinstall/scripts/zfsboot
This issue is now solved in FreeBSD 11.0-CURRENT and the fix will be included in the next stable/10 snapshot (10.2-BETA3 or 10.2-RC1)