svn commit: r295374 - head/tools/tools/nanobsd/embedded

Warner Losh imp at FreeBSD.org
Sun Feb 7 16:43:56 UTC 2016


Author: imp
Date: Sun Feb  7 16:43:55 2016
New Revision: 295374
URL: https://svnweb.freebsd.org/changeset/base/295374

Log:
  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

Modified:
  head/tools/tools/nanobsd/embedded/common

Modified: head/tools/tools/nanobsd/embedded/common
==============================================================================
--- head/tools/tools/nanobsd/embedded/common	Sun Feb  7 16:41:54 2016	(r295373)
+++ head/tools/tools/nanobsd/embedded/common	Sun Feb  7 16:43:55 2016	(r295374)
@@ -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
-)
-
-# 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 / GPT
+# split later if the #ifdef soup gets too bad.
+create_diskimage_gpt ( ) (
+	pprint 2 "build diskimage gpt ${NANO_NAME}"
+
+	create_diskimage_mbr $*
+)
 
-# 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
 


More information about the svn-src-head mailing list