diff options
author | gjb <gjb@FreeBSD.org> | 2015-05-20 19:32:57 +0000 |
---|---|---|
committer | gjb <gjb@FreeBSD.org> | 2015-05-20 19:32:57 +0000 |
commit | b1fc2fbae970fc4d2aad4e8411330f54d3073b9c (patch) | |
tree | 17495815755e8059896f1921cee44a6c2a725d43 /release/tools | |
parent | b4fe1f9ecc338294f0cec71ef718d81c53766c33 (diff) | |
download | FreeBSD-src-b1fc2fbae970fc4d2aad4e8411330f54d3073b9c.zip FreeBSD-src-b1fc2fbae970fc4d2aad4e8411330f54d3073b9c.tar.gz |
MFC r282500, r282693:
r282500:
Add initial support for building RPI2 images.
In release.sh, allow overriding buildenv_setup() before
the handoff to arm/release.sh.
Copy arm/RPI-B.conf -> arm/RPI2.conf, set UBOOT_PORT and
the correct KERNEL, and add the buildenv_setup() override
to install the sysutils/u-boot-rpi2 port/package.
Copy tools/arm/crochet-RPI-B.conf -> tools/arm/crochet-RPI2.conf,
and set the correct entries for the RaspberryPi2 board.
r282693:
Merge ^/projects/release-arm-redux into ^/head.
Of note:
- This commit adds native FreeBSD/arm release build support without
requiring out-of-tree utilities.
- Part of this merge removes the WANDBOARD-{SOLO,DUAL,QUAD} kernel
configuration files, for which the IMX6 kernel configuration file
should be used instead.
- The resulting images have a 'freebsd' user (password 'freebsd'),
to allow ssh(1) access when console access is not available (VGA
or serial). The default 'root' user password is set to 'root'.
- The /etc/ttys file for arm images now enable both ttyv0 and ttyu0
by default.
Note: The RPI2 kernel configuration does not yet exist in stable/10,
however the merge conflicts needed to be properly resolved.
Additionally, SRCBRANCH has been set to base/stable/10 in the updated
arm configuration files as part of this commit.
Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'release/tools')
-rw-r--r-- | release/tools/arm.subr | 137 | ||||
-rw-r--r-- | release/tools/arm/crochet-BEAGLEBONE.conf | 29 | ||||
-rw-r--r-- | release/tools/arm/crochet-PANDABOARD.conf | 29 | ||||
-rw-r--r-- | release/tools/arm/crochet-RPI-B.conf | 29 | ||||
-rw-r--r-- | release/tools/arm/crochet-WANDBOARD-QUAD.conf | 29 | ||||
-rw-r--r-- | release/tools/arm/crochet-ZEDBOARD.conf | 29 |
6 files changed, 137 insertions, 145 deletions
diff --git a/release/tools/arm.subr b/release/tools/arm.subr new file mode 100644 index 0000000..5cc61e3 --- /dev/null +++ b/release/tools/arm.subr @@ -0,0 +1,137 @@ +#!/bin/sh +#- +# Copyright (c) 2015 The FreeBSD Foundation +# All rights reserved. +# +# Portions of this software were developed by Glen Barber +# under sponsorship from the FreeBSD Foundation. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# Common subroutines used to build arm/armv6 images. +# +# $FreeBSD$ +# + +cleanup() { + if [ -c "${DESTDIR}/dev/null" ]; then + umount_loop ${DESTDIR}/dev 2>/dev/null + fi + umount_loop ${DESTDIR} + if [ ! -z "${mddev}" ]; then + mdconfig -d -u ${mddev} + fi + + return 0 +} + +umount_loop() { + DIR=$1 + i=0 + sync + while ! umount ${DIR}; do + i=$(( $i + 1 )) + if [ $i -ge 10 ]; then + # This should never happen. But, it has happened. + echo "Cannot umount(8) ${DIR}" + echo "Something has gone horribly wrong." + return 1 + fi + sleep 1 + done + + return 0 +} + +arm_create_disk() { + # Create the target raw file and temporary work directory. + chroot ${CHROOTDIR} gpart create -s ${PART_SCHEME} ${mddev} + chroot ${CHROOTDIR} gpart add -t '!12' -a 63 -s ${FAT_SIZE} ${mddev} + chroot ${CHROOTDIR} gpart set -a active -i 1 ${mddev} + chroot ${CHROOTDIR} newfs_msdos -L msdosboot -F ${FAT_TYPE} /dev/${mddev}s1 + chroot ${CHROOTDIR} gpart add -t freebsd ${mddev} + chroot ${CHROOTDIR} gpart create -s bsd ${mddev}s2 + chroot ${CHROOTDIR} gpart add -t freebsd-ufs -a 64k /dev/${mddev}s2 + chroot ${CHROOTDIR} newfs -U -L rootfs /dev/${mddev}s2a + chroot ${CHROOTDIR} tunefs -j enable -N enable /dev/${mddev}s2a + + return 0 +} + +arm_create_user() { + # Create a default user account 'freebsd' with the password 'freebsd', + # and set the default password for the 'root' user to 'root'. + chroot ${CHROOTDIR} /usr/sbin/pw groupadd freebsd -g 1001 + chroot ${CHROOTDIR} /usr/sbin/pw useradd freebsd \ + -m -M 0755 -w yes -n freebsd -u 1001 -g 1001 -G 0 \ + -c 'FreeBSD User' -d '/home/freebsd' -s '/bin/csh' + chroot ${CHROOTDIR} /usr/sbin/pw usermod root -w yes + + return 0 +} + +arm_install_base() { + chroot ${CHROOTDIR} mount /dev/${mddev}s2a ${DESTDIR} + eval chroot ${CHROOTDIR} make -C ${WORLDDIR} \ + TARGET=${EMBEDDED_TARGET} \ + TARGET_ARCH=${EMBEDDED_TARGET_ARCH} \ + DESTDIR=${DESTDIR} KERNCONF=${KERNEL} \ + installworld installkernel distribution + chroot ${CHROOTDIR} mkdir -p ${DESTDIR}/boot/msdos + + arm_create_user + + echo '# Custom /etc/fstab for FreeBSD embedded images' \ + > ${CHROOTDIR}/${DESTDIR}/etc/fstab + echo "/dev/ufs/rootfs / ufs rw 1 1" \ + >> ${CHROOTDIR}/${DESTDIR}/etc/fstab + echo "/dev/msdosfs/MSDOSBOOT /boot/msdos msdosfs rw,noatime 0 0" \ + >> ${CHROOTDIR}/${DESTDIR}/etc/fstab + echo "md /tmp mfs rw,noatime,-s30m 0 0" \ + >> ${CHROOTDIR}/${DESTDIR}/etc/fstab + echo "md /var/log mfs rw,noatime,-s15m 0 0" \ + >> ${CHROOTDIR}/${DESTDIR}/etc/fstab + echo "md /var/tmp mfs rw,noatime,-s12m 0 0" \ + >> ${CHROOTDIR}/${DESTDIR}/etc/fstab + + local hostname + hostname="$(echo ${KERNEL} | tr '[:upper:]' '[:lower:]')" + echo "hostname=\"${hostname}\"" > ${CHROOTDIR}/${DESTDIR}/etc/rc.conf + echo 'ifconfig_DEFAULT="DHCP"' >> ${CHROOTDIR}/${DESTDIR}/etc/rc.conf + echo 'sshd_enable="YES"' >> ${CHROOTDIR}/${DESTDIR}/etc/rc.conf + echo 'sendmail_enable="NONE"' >> ${CHROOTDIR}/${DESTDIR}/etc/rc.conf + echo 'sendmail_submit_enable="NO"' >> ${CHROOTDIR}/${DESTDIR}/etc/rc.conf + echo 'sendmail_outbound_enable="NO"' >> ${CHROOTDIR}/${DESTDIR}/etc/rc.conf + echo 'sendmail_msp_queue_enable="NO"' >> ${CHROOTDIR}/${DESTDIR}/etc/rc.conf + echo 'growfs_enable="YES"' >> ${CHROOTDIR}/${DESTDIR}/etc/rc.conf + + sync + umount_loop ${CHROOTDIR}/${DESTDIR} + + return 0 +} + +arm_install_uboot() { + # Override in the arm/KERNEL.conf file. + + return 0 +} diff --git a/release/tools/arm/crochet-BEAGLEBONE.conf b/release/tools/arm/crochet-BEAGLEBONE.conf deleted file mode 100644 index e72814f..0000000 --- a/release/tools/arm/crochet-BEAGLEBONE.conf +++ /dev/null @@ -1,29 +0,0 @@ -# -# $FreeBSD$ -# - -# This is the configuration file for use with crochet to produce -# FreeBSD BeagleBone images. - -board_setup BeagleBone -option ImageSize 1gb -option Growfs - -export MAKEOBJDIRPREFIX=/usr/obj -FREEBSD_SRC=/usr/src -__MAKE_CONF=/dev/null -SRCCONF=/dev/null -WORKDIR=/usr/obj -_BRANCH=$(make -C ${FREEBSD_SRC}/release -V BRANCH) -_REVISION=$(make -C ${FREEBSD_SRC}/release -V REVISION) -KERNCONF=BEAGLEBONE -TARGET=arm -TARGET_ARCH=armv6 -FREEBSD_BUILDWORLD_EXTRA_ARGS="${WORLD_FLAGS}" -FREEBSD_BUILDKERNEL_EXTRA_ARGS="${KERNEL_FLAGS}" -FREEBSD_INSTALLWORLD_EXTRA_ARGS="" -FREEBSD_INSTALLKERNEL_EXTRA_ARGS="" -FREEBSD_WORLD_EXTRA_ARGS="" -FREEBSD_KERNEL_EXTRA_ARGS="" -FREEBSD_EXTRA_ARGS="" -IMG=${WORKDIR}/FreeBSD-${_REVISION}-${_BRANCH}-${TARGET}-${TARGET_ARCH}-${KERNCONF}.img diff --git a/release/tools/arm/crochet-PANDABOARD.conf b/release/tools/arm/crochet-PANDABOARD.conf deleted file mode 100644 index 366c4cc..0000000 --- a/release/tools/arm/crochet-PANDABOARD.conf +++ /dev/null @@ -1,29 +0,0 @@ -# -# $FreeBSD$ -# - -# This is the configuration file for use with crochet to produce -# FreeBSD PandaBoard images. - -board_setup PandaBoard -option ImageSize 1gb -option Growfs - -export MAKEOBJDIRPREFIX=/usr/obj -FREEBSD_SRC=/usr/src -__MAKE_CONF=/dev/null -SRCCONF=/dev/null -WORKDIR=/usr/obj -_BRANCH=$(make -C ${FREEBSD_SRC}/release -V BRANCH) -_REVISION=$(make -C ${FREEBSD_SRC}/release -V REVISION) -KERNCONF=PANDABOARD -TARGET=arm -TARGET_ARCH=armv6 -FREEBSD_BUILDWORLD_EXTRA_ARGS="${WORLD_FLAGS}" -FREEBSD_BUILDKERNEL_EXTRA_ARGS="${KERNEL_FLAGS}" -FREEBSD_INSTALLWORLD_EXTRA_ARGS="" -FREEBSD_INSTALLKERNEL_EXTRA_ARGS="" -FREEBSD_WORLD_EXTRA_ARGS="" -FREEBSD_KERNEL_EXTRA_ARGS="" -FREEBSD_EXTRA_ARGS="" -IMG=${WORKDIR}/FreeBSD-${_REVISION}-${_BRANCH}-${TARGET}-${TARGET_ARCH}-${KERNCONF}.img diff --git a/release/tools/arm/crochet-RPI-B.conf b/release/tools/arm/crochet-RPI-B.conf deleted file mode 100644 index 352048f..0000000 --- a/release/tools/arm/crochet-RPI-B.conf +++ /dev/null @@ -1,29 +0,0 @@ -# -# $FreeBSD$ -# - -# This is the configuration file for use with crochet to produce -# FreeBSD Raspberry Pi images. - -board_setup RaspberryPi -option ImageSize 1gb -option Growfs - -export MAKEOBJDIRPREFIX=/usr/obj -FREEBSD_SRC=/usr/src -__MAKE_CONF=/dev/null -SRCCONF=/dev/null -WORKDIR=/usr/obj -_BRANCH=$(make -C ${FREEBSD_SRC}/release -V BRANCH) -_REVISION=$(make -C ${FREEBSD_SRC}/release -V REVISION) -KERNCONF=RPI-B -TARGET=arm -TARGET_ARCH=armv6 -FREEBSD_BUILDWORLD_EXTRA_ARGS="${WORLD_FLAGS}" -FREEBSD_BUILDKERNEL_EXTRA_ARGS="${KERNEL_FLAGS}" -FREEBSD_INSTALLWORLD_EXTRA_ARGS="" -FREEBSD_INSTALLKERNEL_EXTRA_ARGS="" -FREEBSD_WORLD_EXTRA_ARGS="" -FREEBSD_KERNEL_EXTRA_ARGS="" -FREEBSD_EXTRA_ARGS="" -IMG=${WORKDIR}/FreeBSD-${_REVISION}-${_BRANCH}-${TARGET}-${TARGET_ARCH}-${KERNCONF}.img diff --git a/release/tools/arm/crochet-WANDBOARD-QUAD.conf b/release/tools/arm/crochet-WANDBOARD-QUAD.conf deleted file mode 100644 index d1e0062..0000000 --- a/release/tools/arm/crochet-WANDBOARD-QUAD.conf +++ /dev/null @@ -1,29 +0,0 @@ -# -# $FreeBSD$ -# - -# This is the configuration file for use with crochet to produce -# FreeBSD WandboardQuad images. - -board_setup Wandboard -option ImageSize 1gb -option Growfs - -export MAKEOBJDIRPREFIX=/usr/obj -FREEBSD_SRC=/usr/src -__MAKE_CONF=/dev/null -SRCCONF=/dev/null -WORKDIR=/usr/obj -_BRANCH=$(make -C ${FREEBSD_SRC}/release -V BRANCH) -_REVISION=$(make -C ${FREEBSD_SRC}/release -V REVISION) -KERNCONF=WANDBOARD-QUAD -TARGET=arm -TARGET_ARCH=armv6 -FREEBSD_BUILDWORLD_EXTRA_ARGS="${WORLD_FLAGS}" -FREEBSD_BUILDKERNEL_EXTRA_ARGS="${KERNEL_FLAGS}" -FREEBSD_INSTALLWORLD_EXTRA_ARGS="" -FREEBSD_INSTALLKERNEL_EXTRA_ARGS="" -FREEBSD_WORLD_EXTRA_ARGS="" -FREEBSD_KERNEL_EXTRA_ARGS="" -FREEBSD_EXTRA_ARGS="" -IMG=${WORKDIR}/FreeBSD-${_REVISION}-${_BRANCH}-${TARGET}-${TARGET_ARCH}-${KERNCONF}.img diff --git a/release/tools/arm/crochet-ZEDBOARD.conf b/release/tools/arm/crochet-ZEDBOARD.conf deleted file mode 100644 index 8353038..0000000 --- a/release/tools/arm/crochet-ZEDBOARD.conf +++ /dev/null @@ -1,29 +0,0 @@ -# -# $FreeBSD$ -# - -# This is the configuration file for use with crochet to produce -# FreeBSD ZedBoard images. - -board_setup ZedBoard -option ImageSize 1gb -option Growfs - -export MAKEOBJDIRPREFIX=/usr/obj -FREEBSD_SRC=/usr/src -__MAKE_CONF=/dev/null -SRCCONF=/dev/null -WORKDIR=/usr/obj -_BRANCH=$(make -C ${FREEBSD_SRC}/release -V BRANCH) -_REVISION=$(make -C ${FREEBSD_SRC}/release -V REVISION) -KERNCONF=ZEDBOARD -TARGET=arm -TARGET_ARCH=armv6 -FREEBSD_BUILDWORLD_EXTRA_ARGS="${WORLD_FLAGS}" -FREEBSD_BUILDKERNEL_EXTRA_ARGS="${KERNEL_FLAGS}" -FREEBSD_INSTALLWORLD_EXTRA_ARGS="" -FREEBSD_INSTALLKERNEL_EXTRA_ARGS="" -FREEBSD_WORLD_EXTRA_ARGS="" -FREEBSD_KERNEL_EXTRA_ARGS="" -FREEBSD_EXTRA_ARGS="" -IMG=${WORKDIR}/FreeBSD-${_REVISION}-${_BRANCH}-${TARGET}-${TARGET_ARCH}-${KERNCONF}.img |