Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F175184233
D15846.id43936.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
21 KB
Referenced Files
None
Subscribers
None
D15846.id43936.diff
View Options
Index: tools/boot/install-boot.sh
===================================================================
--- tools/boot/install-boot.sh
+++ tools/boot/install-boot.sh
@@ -27,7 +27,7 @@
gpart show $dev | tail +2 | awk '$4 == "'$part'" { print $3; }'
}
-boot_nogeli_gpt_zfs_legacy() {
+boot_nogeli_gpt_ufs_legacy() {
dev=$1
dst=$2
@@ -35,20 +35,34 @@
if [ -z "$idx" ] ; then
die "No freebsd-boot partition found"
fi
- doit gpart bootcode -b ${gpt0} -p ${gptzfs2} -i $idx $dev
- exit 0
+ doit gpart bootcode -b ${gpt0} -p ${gpt2} -i $idx $dev
}
-boot_nogeli_gpt_ufs_legacy() {
+boot_nogeli_gpt_ufs_uefi() {
dev=$1
dst=$2
+ idx=$(find-part $dev "efi")
+ if [ -z "$idx" ] ; then
+ die "No ESP partition found"
+ fi
+ doit gpart bootcode -p ${efi2} -i $idx $dev
+}
+
+boot_nogeli_gpt_ufs_both() {
+ boot_nogeli_gpt_ufs_legacy $1 $2 $3
+ boot_nogeli_gpt_ufs_uefi $1 $2 $3
+}
+
+boot_nogeli_gpt_zfs_legacy() {
+ dev=$1
+ dst=$2
+
idx=$(find-part $dev "freebsd-boot")
if [ -z "$idx" ] ; then
die "No freebsd-boot partition found"
fi
- doit gpart bootcode -b ${gpt0} -p ${gpt2} -i $idx $dev
- exit 0
+ doit gpart bootcode -b ${gpt0} -p ${gptzfs2} -i $idx $dev
}
boot_nogeli_gpt_zfs_uefi() {
@@ -57,64 +71,132 @@
idx=$(find-part $dev "efi")
if [ -z "$idx" ] ; then
- die "No efi ESP partition found"
+ die "No ESP partition found"
fi
doit gpart bootcode -p ${efi2} -i $idx $dev
- exit 0
}
boot_nogeli_gpt_zfs_both() {
+ boot_nogeli_gpt_zfs_legacy $1 $2 $3
+ boot_nogeli_gpt_zfs_uefi $1 $2 $3
+}
+
+boot_nogeli_mbr_ufs_legacy() {
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"
+ doit gpart bootcode -b ${mbr0} ${dev}
+ s=$(find-part $dev "freebsd")
+ if [ -z "$s" ] ; then
+ die "No freebsd slice found"
fi
- doit gpart bootcode -p ${efi2} -i $idx $dev
+ doit gpart bootcode -p ${mbr2} ${dev}s${s}
+}
- idx=$(find-part $dev "freebsd-boot")
- if [ -z "$idx" ] ; then
- die "No freebsd-boot partition found"
+boot_nogeli_mbr_ufs_uefi() {
+ dev=$1
+ dst=$2
+
+ s=$(find-part ${dev} "!239")
+ if [ -z "$s" ] ; then
+ die "No ESP slice found"
fi
- doit gpart bootcode -b ${gpt0} -p ${gptzfs2} -i $idx $dev
- exit 0
+ doit gpart bootcode -p ${efi2} -i ${s} ${dev}
}
+boot_nogeli_mbr_ufs_both() {
+ boot_nogeli_mbr_ufs_legacy $1 $2 $3
+ boot_nogeli_mbr_ufs_uefi $1 $2 $3
+}
+
boot_nogeli_mbr_zfs_legacy() {
dev=$1
dst=$2
# search to find the BSD slice
- s=$(findpart $dev "freebsd-zfs")
+ s=$(find-part $dev "freebsd")
if [ -z "$s" ] ; then
+ die "No BSD slice found"
+ fi
+ idx=$(find-part ${dev}s${s} "freebsd-zfs")
+ if [ -z "$idx" ] ; then
die "No freebsd-zfs slice found"
fi
# search to find the freebsd-zfs partition within the slice
# Or just assume it is 'a' because it has to be since it fails otherwise
+ doit gpart bootcode -b ${dst}/boot/mbr ${dev}
dd if=${dst}/boot/zfsboot of=/tmp/zfsboot1 count=1
- doit gpart bootcode -b /tmp/zfsboo1 ${dev}s${s} # Put boot1 into the start of part
+ doit gpart bootcode -b /tmp/zfsboot1 ${dev}s${s} # Put boot1 into the start of part
sysctl kern.geom.debugflags=0x10 # Put boot2 into ZFS boot slot
- doit dd if=${dst}/boot/zfsboot of=/dev/${dev}s${s} iseek=1 seek=1024
+ doit dd if=${dst}/boot/zfsboot of=/dev/${dev}s${s}a skip=1 seek=1024
sysctl kern.geom.debugflags=0x0
-
- exit 0
}
-boot_nogeli_mbr_ufs_legacy() {
+boot_nogeli_mbr_zfs_uefi() {
dev=$1
dst=$2
- doit gpart bootcode -b ${mbr0} ${dev}
- s=$(findpart $dev "freebsd-ufs")
+ s=$(find-part $dev "!239")
if [ -z "$s" ] ; then
- die "No freebsd-ufs slice found"
+ die "No ESP slice found"
fi
- doit gpart bootcode -p ${mbr2} ${dev}s${s}
- exit 0
+ doit gpart bootcode -p ${efi2} -i ${s} ${dev}
}
+boot_nogeli_mbr_zfs_both() {
+ boot_nogeli_mbr_zfs_legacy $1 $2 $3
+ boot_nogeli_mbr_zfs_uefi $1 $2 $3
+}
+
+boot_geli_gpt_ufs_legacy() {
+ boot_nogeli_gpt_ufs_legacy $1 $2 $3
+}
+
+boot_geli_gpt_ufs_uefi() {
+ boot_nogeli_gpt_ufs_uefi $1 $2 $3
+}
+
+boot_geli_gpt_ufs_both() {
+ boot_nogeli_gpt_ufs_both $1 $2 $3
+}
+
+boot_geli_gpt_zfs_legacy() {
+ boot_nogeli_gpt_zfs_legacy $1 $2 $3
+}
+
+boot_geli_gpt_zfs_uefi() {
+ boot_nogeli_gpt_zfs_uefi $1 $2 $3
+}
+
+boot_geli_gpt_zfs_both() {
+ boot_nogeli_gpt_zfs_both $1 $2 $3
+}
+
+# GELI+MBR is not a valid configuration
+boot_geli_mbr_ufs_legacy() {
+ exit 1
+}
+
+boot_geli_mbr_ufs_uefi() {
+ exit 1
+}
+
+boot_geli_mbr_ufs_both() {
+ exit 1
+}
+
+boot_geli_mbr_zfs_legacy() {
+ exit 1
+}
+
+boot_geli_mbr_zfs_uefi() {
+ exit 1
+}
+
+boot_geli_mbr_zfs_both() {
+ exit 1
+}
+
boot_nogeli_vtoc8_ufs_ofw() {
dev=$1
dst=$2
@@ -122,7 +204,6 @@
# For non-native builds, ensure that geom_part(4) supports VTOC8.
kldload geom_part_vtoc8.ko
doit gpart bootcode -p ${vtoc8} ${dev}
- exit 0
}
DESTDIR=/
@@ -166,11 +247,12 @@
gptzfs2=${DESTDIR}/boot/gptzfsboot
# For gpt + EFI we install the ESP
-# XXX This should use newfs or makefs, but it deosn't yet
+# XXX This should use newfs or makefs, but it doesn't yet
+efi1=${DESTDIR}/boot/boot1.efi
efi2=${DESTDIR}/boot/boot1.efifat
-# For MBR, we have lots of choices, but select boot0
-mbr0=${DESTDIR}/boot/boot0
+# For MBR, we have lots of choices, but select mbr, boot0 has issues with UEFI
+mbr0=${DESTDIR}/boot/mbr
mbr2=${DESTDIR}/boot/boot
# VTOC8
Index: tools/boot/rootgen.sh
===================================================================
--- tools/boot/rootgen.sh
+++ tools/boot/rootgen.sh
@@ -51,9 +51,9 @@
/dev/ada0p2 / ufs rw 1 1
EOF
# XXX need to make msdos part for this to work XXXX
- cp ${src}/boot/boot.efifat ${img}.p1
+ cp ${src}/boot/boot1.efifat ${img}.p1
makefs -t ffs -B little -s 200m ${img}.p2 ${src}
- mkimg -s gpt -b ${src}/boot/pmbr \
+ mkimg -s gpt \
-p efi:=${img}.p1 \
-p freebsd-ufs:=${img}.p2 -o ${img}
rm -f ${src}/etc/fstab
@@ -67,7 +67,7 @@
/dev/ada0p3 / ufs rw 1 1
EOF
# XXX need to make msdos part for this to work XXXX
- cp ${src}/boot/boot.efifat ${img}.p1
+ cp ${src}/boot/boot1.efifat ${img}.p1
makefs -t ffs -B little -s 200m ${img}.p3 ${src}
# p1 is boot for uefi, p2 is boot for gpt, p3 is /
mkimg -b ${src}/boot/pmbr -s gpt \
@@ -99,7 +99,6 @@
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 <<EOF
zfs_load=YES
@@ -107,7 +106,6 @@
EOF
cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
- ls -las ${mntpt}/boot
# end tweaks
zfs umount -f ${pool}/ROOT/default
zfs set mountpoint=none ${pool}/ROOT/default
@@ -139,7 +137,6 @@
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 <<EOF
zfs_load=YES
@@ -147,7 +144,6 @@
EOF
cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
- ls -las ${mntpt}/boot
# end tweaks
zfs umount -f ${pool}/ROOT/default
zfs set mountpoint=none ${pool}/ROOT/default
@@ -180,7 +176,6 @@
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 <<EOF
zfs_load=YES
@@ -188,7 +183,6 @@
EOF
cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
- ls -las ${mntpt}/boot
# end tweaks
zfs umount -f ${pool}/ROOT/default
zfs set mountpoint=none ${pool}/ROOT/default
@@ -208,43 +202,400 @@
EOF
makefs -t ffs -B little -s 200m ${img}.s1a ${src}
mkimg -s bsd -b ${src}/boot/boot -p freebsd-ufs:=${img}.s1a -o ${img}.s1
- mkimg -a 1 ${bootmbr} -s mbr -b ${src}/boot/boot0sio -p freebsd:=${img}.s1 -o ${img}
+ mkimg -a 1 -s mbr -b ${src}/boot/boot0sio -p freebsd:=${img}.s1 -o ${img}
rm -f ${src}/etc/fstab
}
mk_nogeli_mbr_ufs_uefi() {
+ src=$1
+ img=$2
+
+ cat > ${src}/etc/fstab <<EOF
+/dev/ada0s1a / ufs rw 1 1
+EOF
+ cp ${src}/boot/boot1.efifat ${img}.s1
+ makefs -t ffs -B little -s 200m ${img}.s2a ${src}
+ mkimg -s bsd -p freebsd-ufs:=${img}.s2a -o ${img}.s2
+ mkimg -a 1 -s mbr -p efi:=${img}.s1 -p freebsd:=${img}.s2 -o ${img}
+ rm -f ${src}/etc/fstab
}
mk_nogeli_mbr_ufs_both() {
+ src=$1
+ img=$2
+
+ cat > ${src}/etc/fstab <<EOF
+/dev/ada0s1a / ufs rw 1 1
+EOF
+ cp ${src}/boot/boot1.efifat ${img}.s1
+ makefs -t ffs -B little -s 200m ${img}.s2a ${src}
+ mkimg -s bsd -b ${src}/boot/boot -p freebsd-ufs:=${img}.s2a -o ${img}.s2
+ mkimg -a 2 -s mbr -b ${src}/boot/mbr -p efi:=${img}.s1 -p freebsd:=${img}.s2 -o ${img}
+ rm -f ${src}/etc/fstab
}
mk_nogeli_mbr_zfs_legacy() {
+ src=$1
+ img=$2
+ mntpt=$3
+ geli=$4
+ scheme=$5
+ fs=$6
+ bios=$7
+ pool=nogeli-mbr-zfs-legacy
+
+ dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
+ md=$(mdconfig -f ${img})
+ gpart create -s mbr ${md}
+ gpart add -t freebsd ${md}
+ gpart set -a active -i 1 ${md}
+ gpart create -s bsd ${md}s1
+ gpart add -t freebsd-zfs ${md}s1
+ # install-boot will make this bootable
+ zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s1a
+ 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}
+ # need to make a couple of tweaks
+ cat > ${mntpt}/boot/loader.conf <<EOF
+zfs_load=YES
+opensolaris_load=YES
+EOF
+ cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
+ cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
+ # end tweaks
+ zfs umount -f ${pool}/ROOT/default
+ zfs set mountpoint=none ${pool}/ROOT/default
+ zpool set bootfs=${pool}/ROOT/default ${pool}
+ zpool set autoexpand=on ${pool}
+ zpool export ${pool}
+ ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
+ mdconfig -d -u ${md}
}
mk_nogeli_mbr_zfs_uefi() {
+ src=$1
+ img=$2
+ mntpt=$3
+ geli=$4
+ scheme=$5
+ fs=$6
+ bios=$7
+ pool=nogeli-mbr-zfs-uefi
+
+ dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
+ md=$(mdconfig -f ${img})
+ gpart create -s mbr ${md}
+ gpart add -t \!239 -s 800k ${md}
+ gpart add -t freebsd ${md}
+ gpart set -a active -i 2 ${md}
+ gpart create -s bsd ${md}s2
+ gpart add -t freebsd-zfs ${md}s2
+ # install-boot will make this bootable
+ zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s2a
+ 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}
+ # need to make a couple of tweaks
+ cat > ${mntpt}/boot/loader.conf <<EOF
+zfs_load=YES
+opensolaris_load=YES
+EOF
+ cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
+ cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
+ # end tweaks
+ zfs umount -f ${pool}/ROOT/default
+ zfs set mountpoint=none ${pool}/ROOT/default
+ zpool set bootfs=${pool}/ROOT/default ${pool}
+ zpool set autoexpand=on ${pool}
+ zpool export ${pool}
+ ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
+ mdconfig -d -u ${md}
}
mk_nogeli_mbr_zfs_both() {
+ src=$1
+ img=$2
+ mntpt=$3
+ geli=$4
+ scheme=$5
+ fs=$6
+ bios=$7
+ pool=nogeli-mbr-zfs-both
+
+ dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
+ md=$(mdconfig -f ${img})
+ gpart create -s mbr ${md}
+ gpart add -t \!239 -s 800k ${md}
+ gpart add -t freebsd ${md}
+ gpart set -a active -i 2 ${md}
+ gpart create -s bsd ${md}s2
+ gpart add -t freebsd-zfs ${md}s2
+ # install-boot will make this bootable
+ zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s2a
+ 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}
+ # need to make a couple of tweaks
+ cat > ${mntpt}/boot/loader.conf <<EOF
+zfs_load=YES
+opensolaris_load=YES
+EOF
+ cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
+ cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
+ # end tweaks
+ zfs umount -f ${pool}/ROOT/default
+ zfs set mountpoint=none ${pool}/ROOT/default
+ zpool set bootfs=${pool}/ROOT/default ${pool}
+ zpool set autoexpand=on ${pool}
+ zpool export ${pool}
+ ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
+ mdconfig -d -u ${md}
}
mk_geli_gpt_ufs_legacy() {
+ src=$1
+ img=$2
+ mntpt=$3
+ geli=$4
+ scheme=$5
+ fs=$6
+ bios=$7
+
+ 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 freebsd-boot -s 400k -a 4k ${md} # <= ~540k
+ gpart add -t freebsd-ufs -l root $md
+ # install-boot will make this bootable
+ echo passphrase | geli init -bg -e AES-XTS -i 50000 -J - -l 256 -s 4096 ${md}p2
+ echo passphrase | geli attach -j - ${md}p2
+ newfs /dev/${md}p2.eli
+ mount /dev/${md}p2.eli ${mntpt}
+ cpsys ${src} ${mntpt}
+ # need to make a couple of tweaks
+ cat > ${mntpt}/boot/loader.conf <<EOF
+geom_eli_load=YES
+EOF
+ cat > ${mntpt}/etc/fstab <<EOF
+/dev/ada0p2.eli / ufs rw 1 1
+EOF
+
+ cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
+ # end tweaks
+ umount -f ${mntpt}
+ geli detach ${md}p2
+ ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
+ mdconfig -d -u ${md}
}
mk_geli_gpt_ufs_uefi() {
+ src=$1
+ img=$2
+ mntpt=$3
+ geli=$4
+ scheme=$5
+ fs=$6
+ bios=$7
+
+ 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-ufs -l root $md
+ # install-boot will make this bootable
+ echo passphrase | geli init -bg -e AES-XTS -i 50000 -J - -l 256 -s 4096 ${md}p2
+ echo passphrase | geli attach -j - ${md}p2
+ newfs /dev/${md}p2.eli
+ mount /dev/${md}p2.eli ${mntpt}
+ cpsys ${src} ${mntpt}
+ # need to make a couple of tweaks
+ cat > ${mntpt}/boot/loader.conf <<EOF
+geom_eli_load=YES
+EOF
+ cat > ${mntpt}/etc/fstab <<EOF
+/dev/ada0p2.eli / ufs rw 1 1
+EOF
+
+ cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
+ # end tweaks
+ umount -f ${mntpt}
+ geli detach ${md}p2
+ ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
+ mdconfig -d -u ${md}
}
mk_geli_gpt_ufs_both() {
+ src=$1
+ img=$2
+ mntpt=$3
+ geli=$4
+ scheme=$5
+ fs=$6
+ bios=$7
+
+ 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-boot -s 400k -a 4k ${md} # <= ~540k
+ gpart add -t freebsd-ufs -l root $md
+ # install-boot will make this bootable
+ echo passphrase | geli init -bg -e AES-XTS -i 50000 -J - -l 256 -s 4096 ${md}p3
+ echo passphrase | geli attach -j - ${md}p3
+ newfs /dev/${md}p3.eli
+ mount /dev/${md}p3.eli ${mntpt}
+ cpsys ${src} ${mntpt}
+ # need to make a couple of tweaks
+ cat > ${mntpt}/boot/loader.conf <<EOF
+geom_eli_load=YES
+EOF
+ cat > ${mntpt}/etc/fstab <<EOF
+/dev/ada0p3.eli / ufs rw 1 1
+EOF
+
+ cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
+ # end tweaks
+ umount -f ${mntpt}
+ geli detach ${md}p3
+ ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
+ mdconfig -d -u ${md}
}
mk_geli_gpt_zfs_legacy() {
+ src=$1
+ img=$2
+ mntpt=$3
+ geli=$4
+ scheme=$5
+ fs=$6
+ bios=$7
+ pool=geli-gpt-zfs-legacy
+
+ 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 freebsd-boot -s 400k -a 4k ${md} # <= ~540k
+ gpart add -t freebsd-zfs -l root $md
+ # install-boot will make this bootable
+ echo passphrase | geli init -bg -e AES-XTS -i 50000 -J - -l 256 -s 4096 ${md}p2
+ echo passphrase | geli attach -j - ${md}p2
+ zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2.eli
+ 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}
+ # need to make a couple of tweaks
+ cat > ${mntpt}/boot/loader.conf <<EOF
+zfs_load=YES
+opensolaris_load=YES
+geom_eli_load=YES
+EOF
+ cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
+ cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
+ cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
+ # end tweaks
+ zfs umount -f ${pool}/ROOT/default
+ zfs set mountpoint=none ${pool}/ROOT/default
+ zpool set bootfs=${pool}/ROOT/default ${pool}
+ zpool set autoexpand=on ${pool}
+ zpool export ${pool}
+ geli detach ${md}p2
+ ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
+ mdconfig -d -u ${md}
}
mk_geli_gpt_zfs_uefi() {
+ src=$1
+ img=$2
+ mntpt=$3
+ geli=$4
+ scheme=$5
+ fs=$6
+ bios=$7
+ pool=geli-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
+ echo passphrase | geli init -bg -e AES-XTS -i 50000 -J - -l 256 -s 4096 ${md}p2
+ echo passphrase | geli attach -j - ${md}p2
+ zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2.eli
+ 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}
+ # need to make a couple of tweaks
+ cat > ${mntpt}/boot/loader.conf <<EOF
+zfs_load=YES
+opensolaris_load=YES
+geom_eli_load=YES
+EOF
+ cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
+ cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
+ cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
+ # end tweaks
+ zfs umount -f ${pool}/ROOT/default
+ zfs set mountpoint=none ${pool}/ROOT/default
+ zpool set bootfs=${pool}/ROOT/default ${pool}
+ zpool set autoexpand=on ${pool}
+ zpool export ${pool}
+ geli detach ${md}p2
+ ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
+ mdconfig -d -u ${md}
}
mk_geli_gpt_zfs_both() {
+ src=$1
+ img=$2
+ mntpt=$3
+ geli=$4
+ scheme=$5
+ fs=$6
+ bios=$7
+ pool=geli-gpt-zfs-both
+
+ 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-boot -s 400k -a 4k ${md} # <= ~540k
+ gpart add -t freebsd-zfs -l root $md
+ # install-boot will make this bootable
+ echo passphrase | geli init -bg -e AES-XTS -i 50000 -J - -l 256 -s 4096 ${md}p3
+ echo passphrase | geli attach -j - ${md}p3
+ zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p3.eli
+ 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}
+ # need to make a couple of tweaks
+ cat > ${mntpt}/boot/loader.conf <<EOF
+zfs_load=YES
+opensolaris_load=YES
+geom_eli_load=YES
+EOF
+ cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
+ cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
+ cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
+ # end tweaks
+ zfs umount -f ${pool}/ROOT/default
+ zfs set mountpoint=none ${pool}/ROOT/default
+ zpool set bootfs=${pool}/ROOT/default ${pool}
+ zpool set autoexpand=on ${pool}
+ zpool export ${pool}
+ geli detach ${md}p3
+ ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
+ mdconfig -d -u ${md}
}
+# GELI+MBR is not a valid configuration
mk_geli_mbr_ufs_legacy() {
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Oct 9, 10:43 PM (15 h, 21 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
40509346
Default Alt Text
D15846.id43936.diff (21 KB)
Attached To
Mode
D15846: rootgen.sh: complete all profiles except GELI+MBR (not supported)
Attached
Detach File
Event Timeline
Log In to Comment