Various fixups:

o Make sure we create bsd label for MBR scheme (though we don't
  really need it for the efi case, and boot1 can't read it). Add
  notes about why we have to do this, at least for BIOS.
o Make the BIOS / UEFI with gpt config work.
o Remove now-moribund packaging stuff
This commit is contained in:
Warner Losh 2016-02-07 16:43:55 +00:00
parent 7879db7636
commit 9e0cf3c0d1
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=295374

View File

@ -76,7 +76,7 @@ fi
NANO_SLICE_FAT_SIZE=32m
NANO_SLICE_CFG_SIZE=32m
NANO_BOOT2CFG="-D -h -S115200 comconsole_port=0x3e8"
NANO_BOOT2CFG="-P -S115200"
NANO_RAM_ETCSIZE=8192
NANO_RAM_TMPVARSIZE=8192
@ -180,105 +180,14 @@ WITHOUT_RCS=true
NANO_PACKAGE_ONLY=1
# install a package from a pre-built binary
do_add_pkg ( ) (
# Need to create ${NANO_OBJ}/ports in this add_pkg_${port} function
set -x
mkdir -p ${NANO_OBJ}/ports/distfiles
mkdir -p ${NANO_OBJ}/ports/packages
mkdir -p ${NANO_WORLDDIR}/usr/ports/packages
mkdir -p ${NANO_WORLDDIR}/usr/ports/distfiles
mount -t nullfs -o noatime ${NANO_OBJ}/ports/packages \
${NANO_WORLDDIR}/usr/ports/packages
mount -t nullfs -o noatime ${NANO_OBJ}/ports/distfiles \
${NANO_WORLDDIR}/usr/ports/distfiles
CR env ASSUME_ALWAYS_YES=YES SIGNATURE_TYPE=none /usr/sbin/pkg add /usr/ports/packages/All/$1.txz
umount ${NANO_WORLDDIR}/usr/ports/distfiles
umount ${NANO_WORLDDIR}/usr/ports/packages
rmdir ${NANO_WORLDDIR}/usr/ports/packages
rmdir ${NANO_WORLDDIR}/usr/ports/distfiles
rmdir ${NANO_WORLDDIR}/usr/ports
set +x
# Creates images for all the formats that use MBR / GPT
# split later if the #ifdef soup gets too bad.
create_diskimage_gpt ( ) (
pprint 2 "build diskimage gpt ${NANO_NAME}"
create_diskimage_mbr $*
)
# Build a port (with the side effect of creating a package)
do_add_port ( ) (
local port_path
port_path=$1
shift
set -x
# Need to create ${NANO_OBJ}/ports in this add_port_${port} function
mkdir -p ${NANO_OBJ}/ports/distfiles
mkdir -p ${NANO_OBJ}/ports/packages
mkdir -p ${NANO_PORTS}/packages
mkdir -p ${NANO_PORTS}/distfiles
mkdir -p ${NANO_WORLDDIR}/usr/src
mkdir -p ${NANO_WORLDDIR}/usr/ports
mount -t nullfs -o noatime ${NANO_SRC} ${NANO_WORLDDIR}/usr/src
mount -t nullfs -o noatime ${NANO_PORTS} ${NANO_WORLDDIR}/usr/ports
mount -t nullfs -o noatime ${NANO_OBJ}/ports/packages \
${NANO_WORLDDIR}/usr/ports/packages
mount -t nullfs -o noatime ${NANO_OBJ}/ports/distfiles \
${NANO_WORLDDIR}/usr/ports/distfiles
mkdir -p ${NANO_WORLDDIR}/dev
mount -t devfs devfs ${NANO_WORLDDIR}/dev
mkdir -p ${NANO_WORLDDIR}/usr/workdir
cp /etc/resolv.conf ${NANO_WORLDDIR}/etc/resolv.conf
# OK, a little inefficient, but likely not enough to worry about.
CR ldconfig /lib /usr/lib /usr/local/lib
CR ldconfig -R
CR ldconfig -r
# Improvement: Don't know why package-recursive don't works here
CR "env UNAME_p=${NANO_ARCH} TARGET=${NANO_ARCH} \
TARGET_ARCH=${NANO_ARCH} PORTSDIR=${NANO_PORTS} make \
__MAKE_CONF=${NANO_MAKE_CONF_BUILD} \
WRKDIRPREFIX=/usr/workdir -C /usr/ports/$port_path \
package-recursive BATCH=yes $* clean FORCE_PKG_REGISTER=t"
rm ${NANO_WORLDDIR}/etc/resolv.conf
rm -rf ${NANO_WORLDDIR}/usr/obj
rm -rf ${NANO_WORLDDIR}/usr/workdir
umount ${NANO_WORLDDIR}/dev
umount ${NANO_WORLDDIR}/usr/ports/packages
umount ${NANO_WORLDDIR}/usr/ports/distfiles
umount ${NANO_WORLDDIR}/usr/ports
umount ${NANO_WORLDDIR}/usr/src
set +x
)
# Need to check if this function works with cross-compiling architecture!!!!
# Recursive complex fonction: Generate one function for each ports
# writes shell functions called later, so don't do in subshell.
add_port ( ) {
local port_path=$1
local port=`echo $1 | sed -e 's/\//_/'`
shift
# Check if package allready exist
# Need to:
# 1. check ARCH of this package!
# 2. Add a trap
cd ${NANO_PORTS}/${port_path}
PKG_NAME=`env PORTSDIR=${NANO_PORTS} make __MAKE_CONF=${NANO_MAKE_CONF_BUILD} package-name`
if [ -f ${NANO_OBJ}/ports/packages/All/${PKG_NAME}.txz ]; then
# Pkg file found: Generate add_pkg_NAME function
eval "
add_pkg_${port} ( ) {
do_add_pkg ${PKG_NAME}
}
customize_cmd add_pkg_${port}
"
else
# No pkg file: Generate add_port_NAME function
eval "
add_port_${port} ( ) {
do_add_port ${port_path} $*
}
customize_cmd add_port_${port}
"
NANO_PACKAGE_ONLY=0
fi
}
# Creates images for all the formats that use MBR
create_diskimage_mbr ( ) (
pprint 2 "build diskimage ${NANO_NAME}"
@ -319,10 +228,20 @@ create_diskimage_mbr ( ) (
# bsd label
[ -z ${NANO_NOPRIV_BUILD} ] || extra="-F ${NANO_METALOG}"
sz=${NANO_SLICE_ROOT_SIZE:+-s ${NANO_SLICE_ROOT_SIZE}}
eval "${NANO_MAKEFS_UFS}" ${extra} $sz "${NANO_OBJ}/_.${NANO_SLICE_ROOT}" \
eval "${NANO_MAKEFS_UFS}" ${extra} $sz "${NANO_OBJ}/_.${NANO_ROOT}" \
"${NANO_WORLDDIR}"
# mkimg -s bsd ${bootbsd} -p freebsd-ufs:=${NANO_OBJ}/_.${NANO_SLICE_ROOT} \
# -o ${NANO_OBJ}/_.${NANO_SLICE_ROOT}
case ${NANO_DISK_SCHEME} in
mbr)
mkimg -s bsd ${bootbsd} -p freebsd-ufs:=${NANO_OBJ}/_.${NANO_ROOT} \
-o ${NANO_OBJ}/_.${NANO_SLICE_ROOT}
eval $NANO_SLICE_CFG=freebsd
eval $NANO_SLICE_ROOT=freebsd
;;
gpt)
eval $NANO_SLICE_CFG=freebsd-ufs
eval $NANO_SLICE_ROOT=freebsd-ufs
;;
esac
# Populate the /cfg partition, empty if none given
if [ -z "${NANO_CFGDIR}" ]; then
@ -341,18 +260,7 @@ create_diskimage_mbr ( ) (
if [ -n "$NANO_SLICE_FAT" ]; then
eval $NANO_SLICE_FAT=fat16b
fi
case ${NANO_SLICE_CFG} in
s*)
echo slice
eval $NANO_SLICE_CFG=freebsd
eval $NANO_SLICE_ROOT=freebsd
;;
p*)
echo part
eval $NANO_SLICE_CFG=freebsd-ufs
eval $NANO_SLICE_ROOT=freebsd-ufs
;;
esac
# below depends on https://reviews.freebsd.org/D4403 not yet in the tree
# but there's problems: it marks all partitions as active, so you have to
# boot off parittion 3 or 2 by hand if you're playing around with this WIP
@ -662,11 +570,21 @@ eval std_${NANO_ARCH}
# off the top. We also resize the 'a' partion on first boot
# to the size of the partition for the ping/pong upgrade.
# This feature needs support in the rc.d bootup script.
#
# Ideally, we'd not put BSD labels on the MBR disks.
# However, we can't boot off raw MBR disks. First,
# boot2 defaults to 'a' partition, and freaks out
# unless you tell it to use 'c'. But even if we
# hack that, then /boot/loader wants to load off
# of 'c' partition. If you fix that, then we'll
# try to mount root, but sanity checks prevent
# slices from working.
#
: ${NANO_ENDIAN:=little} # make -V something to figure it out?
: ${NANO_LAYOUT:=std-embedded}
: ${NANO_MAKEFS_UFS:=makefs -t ffs -B ${NANO_ENDIAN}}
: ${NANO_DISK_SCHEME:=mbr} # No others really supported ATM
: ${NANO_DISK_SCHEME:=mbr} # No others really supported ATM (well, gpt)
case ${NANO_LAYOUT} in
std-embedded)
NANO_SLICE_FAT=s1
@ -696,11 +614,15 @@ std-uefi)
NANO_SLICE_ALTROOT=s4
;;
std-uefi-bios)
NANO_DISK_SCHEME=gpt
NANO_SLICE_UEFI=p1
NANO_SLICE_BOOT=p2
NANO_SLICE_CFG=p3
NANO_SLICE_ROOT=p4
NANO_SLICE_ALTROOT=p5
# override root name
NANO_ROOT=${NANO_SLICE_ROOT}
NANO_ALTROOT=${NANO_SLICE_ALTROOT}
;;
*)
echo Unknown Layout ${NANO_LAYOUT}
@ -708,10 +630,6 @@ std-uefi-bios)
;;
esac
# For this config, no BSD labels so NANO_ROOT and NANO_ALTROOT need to be
# adjusted
NANO_ROOT=${NANO_SLICE_ROOT}
NANO_ALTROOT=${NANO_SLICE_ALTROOT}
NANO_SLICE_DATA= # Not included