From owner-freebsd-hackers@freebsd.org Fri Jan 15 14:23:11 2016 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id EC455A84199 for ; Fri, 15 Jan 2016 14:23:10 +0000 (UTC) (envelope-from eric@metricspace.net) Received: from mail.metricspace.net (mail.metricspace.net [IPv6:2001:470:1f11:617::107]) by mx1.freebsd.org (Postfix) with ESMTP id A5BBB1F5D; Fri, 15 Jan 2016 14:23:10 +0000 (UTC) (envelope-from eric@metricspace.net) Received: from [IPv6:2001:470:1f11:617:ea2a:eaff:fe21:e067] (unknown [IPv6:2001:470:1f11:617:ea2a:eaff:fe21:e067]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: eric) by mail.metricspace.net (Postfix) with ESMTPSA id 2004E1DB9; Fri, 15 Jan 2016 14:23:10 +0000 (UTC) Subject: Re: EFI/ZFS Update: successful tests, need more complex vdevs To: Renato Botelho , Steven Hartland References: <9418E44F-114E-4ABA-A32D-416297BCDA9F@metricspace.net> <56985C6A.6040209@multiplay.co.uk> Cc: Gabor Radnai , freebsd-hackers@freebsd.org From: Eric McCorkle Message-ID: <569900CD.2040003@metricspace.net> Date: Fri, 15 Jan 2016 09:23:09 -0500 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:38.0) Gecko/20100101 Thunderbird/38.5.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 15 Jan 2016 14:23:11 -0000 On 01/15/16 06:51, Renato Botelho wrote: >> On Jan 15, 2016, at 00:41, Steven Hartland wrote: >> >> Just wanted to let everyone know that I just finished committing these changes to the tree. >> >> Huge thanks to Eric's for his work on this, as well as everyone else who contributed. >> >> I've set the target for MFC of 2 weeks, so I hope to be able to get this into stable/10 before the 10.3 slush, so if you're interested in this change please test a head build > r294068 ASAP. > > Great work, thanks! > > Is there a way to move a installed ZFS system to EFI? > (Refer to Steven's guide for the simple case where you can create an EFI partition) == Using GRUB == GRUB can be used with loader.efi on a ZFS system (I use this myself, as I have a Gentoo install in the same ZFS volume) Make sure you install GRUB with EFI support (the ports collection will handle this). The grub port comes with a script that auto-detects filesystems and sets up a grub.cfg in /boot/grub/. However, that script won't properly detect ZFS partitions, so you'll need to add it manually. The entry is simple. I have a zfs volume called "data", which has the freebsd system root on the filesystem data/freebsd. The GRUB entry then is: menuentry "FreeBSD" { search.fs_label data ZFS_PART chainloader ($ZFS_PART)/freebsd@/boot/loader.efi } The first line searches for the volume "data" and binds its device to the variable ZFS_PART. The second specifies that the chained bootloader is under the filesystem "freebsd" (the @ at the end of the name denotes a filesystem, not a path), with the path /boot/loader.efi == Disks without enough space to make the GPT or EFI partition == If you have a ZFS filesystem on an MBR disk, or on a GPT disk without enough space to create a workable EFI partition, you can use one of ZFS's lesser-known features: zfs send/recv. ZFS send and recv allow an entire filesystem to be serialized out to a stream, and then read back in. You can use this to dump the entire filesystem out to a removable storage or an NFS mount. Then, use an install disk or memstick and repartition your drive, using zfs recv to recreate the filesystem. == On a Mac == (Note: this is based on research that is several years old at this point. Also, I never actually field tested this myself.) Macs are wierd, due to their non-standard EFI. The Mac EFI implementation looks for an HFS+ partition, and loads the "blessed" file as the EFI bootloader (this is a special filesystem-level metadata unique to HFS+ filesystems). In order to do an EFI boot on a mac, you'd need some way of manufacturing an HFS+ partition containing only your bootloader, with that file being "blessed". The easiest way to do this would be to use a Mac OS install to create an empty HFS+ filesystem, add your boot loader, then use a shell command to "bless" it (this command exists, but I don't remember what it is offhand). It also wouldn't be too hard to write a tool to create an HFS+ image from a file (I have a half-written implementation of that lying around somewhere). Also note that Macs expect a 200MB EFI partition (which isn't actually used for anything), and I've heard reports of the firmware flaking out if it's not there. I believe there are also GRUB and rEFIt options for Mac, if you don't want to go to these lengths.