From owner-freebsd-current@freebsd.org Fri May 5 20:01:13 2017 Return-Path: Delivered-To: freebsd-current@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 07DBFD5FC15 for ; Fri, 5 May 2017 20:01:13 +0000 (UTC) (envelope-from tsoome@me.com) Received: from st13p35im-asmtp002.me.com (st13p35im-asmtp002.me.com [17.164.199.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D2DB876D; Fri, 5 May 2017 20:01:12 +0000 (UTC) (envelope-from tsoome@me.com) Received: from process-dkim-sign-daemon.st13p35im-asmtp002.me.com by st13p35im-asmtp002.me.com (Oracle Communications Messaging Server 7.0.5.38.0 64bit (built Feb 26 2016)) id <0OPH00G00WJH8N00@st13p35im-asmtp002.me.com>; Fri, 05 May 2017 20:01:06 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=me.com; s=4d515a; t=1494014466; bh=wPhizSINz9okwXcyNa4C46OMSt7LGcBg+mDT766qlRw=; h=From:Message-id:Content-type:MIME-version:Subject:Date:To; b=paSru6t7cj/gvfCnSn8Z0FIp3+UJu0nxQzhyiC/lK190mvC4dXJijCrKF16S0SpWK 2MIlghCpReVeXK+z4R0cBiMv4EHiP9duwh9NOY2d7u3rmvyFIIYv3A2bG6arPtHGVo ztc7U8Z+9l2yR0vFlBBUBAow6hFxL0/6vJoVFUqlKUiVfyCpUtLvSy3BdXQ7Sl51/c Xj0OgZMN6+7IVul6yr5jQnJbIAmwSZW5h3eeee8Lfp51qVXNRRUayNFPQ73gndZqqF J6mNvdzM+BdTa3z+DD2s1wqP6SAlBPDj15q3t5DHZH0/4BAg306ZD2N7uwfq2daQk6 gtwDgDp/BUvgw== Received: from icloud.com ([127.0.0.1]) by st13p35im-asmtp002.me.com (Oracle Communications Messaging Server 7.0.5.38.0 64bit (built Feb 26 2016)) with ESMTPSA id <0OPH00355WXRKP30@st13p35im-asmtp002.me.com>; Fri, 05 May 2017 20:01:06 +0000 (GMT) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-05-05_16:,, signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 clxscore=1034 suspectscore=2 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1701120000 definitions=main-1705050189 From: Toomas Soome Message-id: <053354DF-651F-423C-8057-494496DA3B91@me.com> MIME-version: 1.0 (Mac OS X Mail 10.3 \(3273\)) Subject: Re: bootcode capable of booting both UFS and ZFS? Date: Fri, 05 May 2017 23:01:03 +0300 In-reply-to: <963c5c97-2f92-9983-cf90-ec9d59d87bba@freebsd.org> Cc: freebsd-current , Toomas Soome To: Julian Elischer References: <963c5c97-2f92-9983-cf90-ec9d59d87bba@freebsd.org> X-Mailer: Apple Mail (2.3273) Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.23 X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 May 2017 20:01:13 -0000 > On 5. mai 2017, at 22:07, Julian Elischer wrote: >=20 > Subject says it all really, is this an option at this time? >=20 > we'd like to try boot the main zfs root partition and then fall back = to a small UFS based recovery partition.. is that possible? >=20 > I know we could use grub but I'd prefer keep it in the family. >=20 >=20 >=20 it is, sure. but there is an compromise to be made for it. Lets start with what I have done in illumos port, as the idea there is = exactly about having as =E2=80=9Cuniversal=E2=80=9D binaries as possible = (just the binaries are listed below to get the size): -r-xr-xr-x 1 root sys 171008 apr 30 19:55 bootia32.efi -r-xr-xr-x 1 root sys 148992 apr 30 19:55 bootx64.efi -r--r--r-- 1 root sys 1255 okt 25 2015 cdboot -r--r--r-- 1 root sys 154112 apr 30 19:55 gptzfsboot -r-xr-xr-x 1 root sys 482293 mai 2 21:10 loader32.efi -r-xr-xr-x 1 root sys 499218 mai 2 21:10 loader64.efi -r--r--r-- 1 root sys 512 okt 15 2015 pmbr -r--r--r-- 1 root sys 377344 mai 2 21:10 pxeboot -r--r--r-- 1 root sys 376832 mai 2 21:10 zfsloader the loader (bios/efi) is built with full complement - zfs, ufs, dosfs, = cd9660, nfs, tftp + gzipfs. The cdboot is starting zfsloader (thats = trivial string change). The gptzfsboot in illumos case is only built with zfs, dosfs and ufs - = as it has to support only disk based media to read out the loader. Also = I am building gptzfsboot with libstand and libi386 to get as much shared = code as possible - which has both good and bad sides, as usual;) The gptzfsboot size means that with ufs the dedicated boot partition is = needed (freebsd-boot), with zfs the illumos port is always using the = 3.5MB boot area after first 2 labels (as there is no geli, the illumos = does not need dedicated boot partition with zfs). As the freebsd-boot is currently created 512k, the size is not an issue. = Also using common code does allow the generic partition code to be used, = so GPT/MBR/BSD (VTOC in illumos case) labels are not problem. So, even just with cd boot (iso), starting zfsloader (which in fbsd has = built in ufs, zfs etc), you already can get rescue capability.=20 Now, even with just adding ufs reader to gptzfsboot, we can use gpt + = freebsd-boot and ufs root but loading zfsloader on usb image, so it can = be used for both live/install and rescue, because zfsloader itself has = support for all file systems + partition types. I have kept myself a bit off from freebsd gptzfsboot because of simple = reason - the older setups have smaller size for freebsd boot, and not = everyone is necessarily happy about size changes:D also in freebsd case = there is another factor called geli - it most certainly does contribute = some bits, but also needs to be properly addressed on IO call stack (as = we have seen with zfsbootcfg bits). But then again, here also the shared = code can help to reduce the complexity. Yea, the zfsloader/loader*.efi in that listing above is actually built = with framebuffer code and compiled in 8x16 default font (lz4 compressed = ascii+boxdrawing basically - because zfs has lz4, the decompressor is = always there), and ficl 4.1, so thats a bit of difference from fbsd = loader. Also note that we can still build the smaller dedicated blocks like = boot2, just that we can not use those blocks for more universal cases = and eventually those special cases will diminish. rgds, toomas