From owner-svn-src-head@freebsd.org Sat Jun 9 17:49:45 2018 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id EB68C10175C1; Sat, 9 Jun 2018 17:49:44 +0000 (UTC) (envelope-from allanjude@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A1BDF68403; Sat, 9 Jun 2018 17:49:44 +0000 (UTC) (envelope-from allanjude@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 84898210F9; Sat, 9 Jun 2018 17:49:44 +0000 (UTC) (envelope-from allanjude@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w59Hnias015827; Sat, 9 Jun 2018 17:49:44 GMT (envelope-from allanjude@FreeBSD.org) Received: (from allanjude@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w59HniGp015825; Sat, 9 Jun 2018 17:49:44 GMT (envelope-from allanjude@FreeBSD.org) Message-Id: <201806091749.w59HniGp015825@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: allanjude set sender to allanjude@FreeBSD.org using -f From: Allan Jude Date: Sat, 9 Jun 2018 17:49:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r334888 - head/tools/boot X-SVN-Group: head X-SVN-Commit-Author: allanjude X-SVN-Commit-Paths: head/tools/boot X-SVN-Commit-Revision: 334888 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 09 Jun 2018 17:49:45 -0000 Author: allanjude Date: Sat Jun 9 17:49:43 2018 New Revision: 334888 URL: https://svnweb.freebsd.org/changeset/base/334888 Log: Add ZFS+GPT EFI and LEGACY+EFI to rootgen.sh and installboot.sh Reviewed by: imp (maintainer) Sponsored by: Klara Systems Differential Revision: https://reviews.freebsd.org/D15700 Modified: head/tools/boot/install-boot.sh head/tools/boot/rootgen.sh Modified: head/tools/boot/install-boot.sh ============================================================================== --- head/tools/boot/install-boot.sh Sat Jun 9 17:47:56 2018 (r334887) +++ head/tools/boot/install-boot.sh Sat Jun 9 17:49:43 2018 (r334888) @@ -51,6 +51,37 @@ boot_nogeli_gpt_ufs_legacy() { exit 0 } +boot_nogeli_gpt_zfs_uefi() { + dev=$1 + dst=$2 + + idx=$(find-part $dev "efi") + if [ -z "$idx" ] ; then + die "No efi ESP partition found" + fi + doit gpart bootcode -p ${efi2} -i $idx $dev + exit 0 +} + +boot_nogeli_gpt_zfs_both() { + dev=$1 + dst=$2 + + # XXX: Should this be copy/pasted, or should it call both _uefi and _legacy + idx=$(find-part $dev "efi") + if [ -z "$idx" ] ; then + die "No efi ESP partition found" + fi + doit gpart bootcode -p ${efi2} -i $idx $dev + + idx=$(find-part $dev "freebsd-boot") + if [ -z "$idx" ] ; then + die "No freebsd-boot partition found" + fi + doit gpart bootcode -b ${gpt0} -p ${gptzfs2} -i $idx $dev + exit 0 +} + boot_nogeli_mbr_zfs_legacy() { dev=$1 dst=$2 @@ -133,6 +164,10 @@ dev=$1 gpt0=${DESTDIR}/boot/pmbr gpt2=${DESTDIR}/boot/gptboot gptzfs2=${DESTDIR}/boot/gptzfsboot + +# For gpt + EFI we install the ESP +# XXX This should use newfs or makefs, but it deosn't yet +efi2=${DESTDIR}/boot/boot1.efifat # For MBR, we have lots of choices, but select boot0 mbr0=${DESTDIR}/boot/boot0 Modified: head/tools/boot/rootgen.sh ============================================================================== --- head/tools/boot/rootgen.sh Sat Jun 9 17:47:56 2018 (r334887) +++ head/tools/boot/rootgen.sh Sat Jun 9 17:49:43 2018 (r334888) @@ -119,9 +119,84 @@ EOF } mk_nogeli_gpt_zfs_uefi() { + src=$1 + img=$2 + mntpt=$3 + geli=$4 + scheme=$5 + fs=$6 + bios=$7 + pool=nogeli-gpt-zfs-uefi + + dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) + md=$(mdconfig -f ${img}) + gpart create -s gpt ${md} + gpart add -t efi -s 800k -a 4k ${md} + gpart add -t freebsd-zfs -l root $md + # install-boot will make this bootable + zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2 + zpool set bootfs=${pool} ${pool} + zfs create -po mountpoint=/ ${pool}/ROOT/default + # NB: The online guides go nuts customizing /var and other mountpoints here, no need + cpsys ${src} ${mntpt} + df + # need to make a couple of tweaks + cat > ${mntpt}/boot/loader.conf < ${mntpt}/boot/loader.conf < $sh - echo "qemu-system-x86_64 -bios ~/bios/OVMF-X64.fd --drive file=${img},format=raw ${qser}" > $sh + echo "qemu-system-x86_64 -bios ~/bios/OVMF-X64.fd --drive file=${img},format=raw ${qser}" >> $sh } # arm @@ -288,7 +363,7 @@ qemu_i386_both() sh=$2 echo "qemu-system-i386 --drive file=${img},format=raw ${qser}" > $sh - echo "qemu-system-i386 -bios ~/bios/OVMF-X32.fd --drive file=${img},format=raw ${qser}" > $sh + echo "qemu-system-i386 -bios ~/bios/OVMF-X32.fd --drive file=${img},format=raw ${qser}" >> $sh } # mips @@ -314,8 +389,15 @@ DESTDIR=${OBJDIR}/boot-tree rm -rf ${DESTDIR} mkdir -p ${DESTDIR}/boot/defaults mkdir -p ${DESTDIR}/boot/kernel +cp /boot/boot0 ${DESTDIR}/boot +cp /boot/boot0sio ${DESTDIR}/boot +cp /boot/pmbr ${DESTDIR}/boot +cp /boot/boot ${DESTDIR}/boot # XXX boot1 exists only on sparc64 cp /boot/boot1 ${DESTDIR}/boot +cp /boot/boot1.efifat ${DESTDIR}/boot +cp /boot/gptboot ${DESTDIR}/boot +cp /boot/gptzfsboot ${DESTDIR}/boot cp /boot/loader ${DESTDIR}/boot cp /boot/kernel/kernel ${DESTDIR}/boot/kernel echo -h -D -S115200 > ${DESTDIR}/boot.config