mirror of
https://git.FreeBSD.org/src.git
synced 2024-11-28 08:02:54 +00:00
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. Help from: many (boot testing, feedback, etc.) Sponsored by: The FreeBSD Foundation
This commit is contained in:
commit
88feae84be
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=282693
@ -29,7 +29,7 @@
|
||||
# when going to single-user mode.
|
||||
console none unknown off secure
|
||||
#
|
||||
ttyv0 "/usr/libexec/getty Pc" xterm off secure
|
||||
ttyv0 "/usr/libexec/getty Pc" xterm onifconsole secure
|
||||
# Virtual terminals
|
||||
ttyv1 "/usr/libexec/getty Pc" xterm off secure
|
||||
ttyv2 "/usr/libexec/getty Pc" xterm off secure
|
||||
@ -41,7 +41,7 @@ ttyv7 "/usr/libexec/getty Pc" xterm off secure
|
||||
#ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secure
|
||||
# Serial terminals
|
||||
# The 'dialup' keyword identifies dialin lines to login, fingerd etc.
|
||||
ttyu0 "/usr/libexec/getty 3wire" vt100 on secure
|
||||
ttyu0 "/usr/libexec/getty 3wire" vt100 onifconsole secure
|
||||
ttyu1 "/usr/libexec/getty std.9600" dialup off secure
|
||||
ttyu2 "/usr/libexec/getty std.9600" dialup off secure
|
||||
ttyu3 "/usr/libexec/getty std.9600" dialup off secure
|
||||
|
@ -3,36 +3,35 @@
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
# Global variables.
|
||||
export SVNROOT="svn://svn.FreeBSD.org/"
|
||||
export SRCBRANCH="base/head@rHEAD"
|
||||
export DOCBRANCH="doc/head@rHEAD"
|
||||
export PORTBRANCH="ports/head@rHEAD"
|
||||
export NODOC=yes
|
||||
export WORLD_FLAGS="-j $(sysctl -n hw.ncpu)"
|
||||
export KERNEL_FLAGS="-j $(( $(( $(sysctl -n hw.ncpu) + 1 )) / 2 ))"
|
||||
export CHROOTDIR="/scratch"
|
||||
export EMBEDDEDBUILD=1
|
||||
export EMBEDDEDPORTS="sysutils/u-boot-beaglebone"
|
||||
EMBEDDEDBUILD=1
|
||||
EMBEDDED_TARGET="arm"
|
||||
EMBEDDED_TARGET_ARCH="armv6"
|
||||
EMBEDDEDPORTS="sysutils/u-boot-beaglebone"
|
||||
KERNEL="BEAGLEBONE"
|
||||
WORLD_FLAGS="${WORLD_FLAGS} UBLDR_LOADADDR=0x88000000"
|
||||
IMAGE_SIZE="1G"
|
||||
PART_SCHEME="MBR"
|
||||
FAT_SIZE="2m"
|
||||
FAT_TYPE="12"
|
||||
MD_ARGS="-x 63 -y 255"
|
||||
NODOC=1
|
||||
|
||||
# Build chroot configuration
|
||||
load_chroot_env() {
|
||||
# Avoid collision with TARGET and XDEV.
|
||||
unset XDEV XDEV_ARCH KERNEL
|
||||
export TARGET="amd64"
|
||||
export TARGET_ARCH="amd64"
|
||||
}
|
||||
|
||||
# Build target configuration
|
||||
load_target_env() {
|
||||
# Avoid collision with TARGET and XDEV.
|
||||
unset TARGET TARGET_ARCH
|
||||
export EMBEDDEDPORTS="lang/python textproc/gsed"
|
||||
export XDEV="arm"
|
||||
export XDEV_ARCH="armv6"
|
||||
export XDEV_FLAGS="WITH_GCC=1 WITH_GCC_BOOTSTRAP=1 WITHOUT_CLANG_IS_CC=1"
|
||||
export XDEV_FLAGS="${XDEV_FLAGS} MK_TESTS=no"
|
||||
export KERNEL="BEAGLEBONE"
|
||||
export CROCHETSRC="https://github.com/freebsd/crochet"
|
||||
export CROCHETBRANCH="trunk@rHEAD"
|
||||
arm_install_uboot() {
|
||||
UBOOT_DIR="/usr/local/share/u-boot/u-boot-beaglebone"
|
||||
FATMOUNT="${DESTDIR%${KERNEL}}/fat"
|
||||
UFSMOUNT="${DESTDIR%${KERNEL}}/ufs"
|
||||
chroot ${CHROOTDIR} mkdir -p "${FATMOUNT}" "${UFSMOUNT}"
|
||||
chroot ${CHROOTDIR} mount_msdosfs /dev/${mddev}s1 ${FATMOUNT}
|
||||
chroot ${CHROOTDIR} mount /dev/${mddev}s2a ${UFSMOUNT}
|
||||
chroot ${CHROOTDIR} cp -p ${UBOOT_DIR}/MLO ${FATMOUNT}/MLO
|
||||
chroot ${CHROOTDIR} cp -p ${UBOOT_DIR}/u-boot.img ${FATMOUNT}/u-boot.img
|
||||
chroot ${CHROOTDIR} cp -p ${UFSMOUNT}/boot/ubldr ${FATMOUNT}/ubldr
|
||||
chroot ${CHROOTDIR} touch ${UFSMOUNT}/firstboot
|
||||
sync
|
||||
umount_loop ${CHROOTDIR}/${FATMOUNT}
|
||||
umount_loop ${CHROOTDIR}/${UFSMOUNT}
|
||||
chroot ${CHROOTDIR} rmdir ${FATMOUNT}
|
||||
chroot ${CHROOTDIR} rmdir ${UFSMOUNT}
|
||||
|
||||
return 0
|
||||
}
|
||||
|
@ -3,35 +3,35 @@
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
# Global variables.
|
||||
export SVNROOT="svn://svn.FreeBSD.org/"
|
||||
export SRCBRANCH="base/head@rHEAD"
|
||||
export DOCBRANCH="doc/head@rHEAD"
|
||||
export PORTBRANCH="ports/head@rHEAD"
|
||||
export NODOC=yes
|
||||
export WORLD_FLAGS="-j $(sysctl -n hw.ncpu)"
|
||||
export KERNEL_FLAGS="-j $(( $(( $(sysctl -n hw.ncpu) + 1 )) / 2 ))"
|
||||
export CHROOTDIR="/scratch"
|
||||
export EMBEDDEDBUILD=1
|
||||
export EMBEDDEDPORTS="lang/python textproc/gsed"
|
||||
EMBEDDEDBUILD=1
|
||||
EMBEDDED_TARGET="arm"
|
||||
EMBEDDED_TARGET_ARCH="armv6"
|
||||
EMBEDDEDPORTS="sysutils/u-boot-pandaboard"
|
||||
KERNEL="PANDABOARD"
|
||||
NODOC=1
|
||||
WORLD_FLAGS="${WORLD_FLAGS} UBLDR_LOADADDR=0x88000000"
|
||||
IMAGE_SIZE="1G"
|
||||
PART_SCHEME="MBR"
|
||||
FAT_SIZE="2m"
|
||||
FAT_TYPE="12"
|
||||
MD_ARGS="-x 63 -y 255"
|
||||
|
||||
# Build chroot configuration
|
||||
load_chroot_env() {
|
||||
# Avoid collision with TARGET and XDEV.
|
||||
unset XDEV XDEV_ARCH KERNEL
|
||||
export TARGET="amd64"
|
||||
export TARGET_ARCH="amd64"
|
||||
}
|
||||
|
||||
# Build target configuration
|
||||
load_target_env() {
|
||||
# Avoid collision with TARGET and XDEV.
|
||||
unset TARGET TARGET_ARCH
|
||||
export XDEV="arm"
|
||||
export XDEV_ARCH="armv6"
|
||||
export XDEV_FLAGS="WITH_GCC=1 WITH_GCC_BOOTSTRAP=1 WITHOUT_CLANG_IS_CC=1"
|
||||
export XDEV_FLAGS="${XDEV_FLAGS} MK_TESTS=no"
|
||||
export KERNEL="PANDABOARD"
|
||||
export CROCHETSRC="https://github.com/freebsd/crochet"
|
||||
export CROCHETBRANCH="trunk@rHEAD"
|
||||
arm_install_uboot() {
|
||||
UBOOT_DIR="/usr/local/share/u-boot/u-boot-pandaboard"
|
||||
FATMOUNT="${DESTDIR%${KERNEL}}/fat"
|
||||
UFSMOUNT="${DESTDIR%${KERNEL}}/ufs"
|
||||
chroot ${CHROOTDIR} mkdir -p "${FATMOUNT}" "${UFSMOUNT}"
|
||||
chroot ${CHROOTDIR} mount_msdosfs /dev/${mddev}s1 ${FATMOUNT}
|
||||
chroot ${CHROOTDIR} mount /dev/${mddev}s2a ${UFSMOUNT}
|
||||
chroot ${CHROOTDIR} cp -p ${UBOOT_DIR}/MLO ${FATMOUNT}/MLO
|
||||
chroot ${CHROOTDIR} cp -p ${UBOOT_DIR}/u-boot.img ${FATMOUNT}/u-boot.img
|
||||
chroot ${CHROOTDIR} cp -p ${UFSMOUNT}/boot/ubldr ${FATMOUNT}/ubldr
|
||||
chroot ${CHROOTDIR} touch ${UFSMOUNT}/firstboot
|
||||
sync
|
||||
umount_loop ${CHROOTDIR}/${FATMOUNT}
|
||||
umount_loop ${CHROOTDIR}/${UFSMOUNT}
|
||||
chroot ${CHROOTDIR} rmdir ${FATMOUNT}
|
||||
chroot ${CHROOTDIR} rmdir ${UFSMOUNT}
|
||||
|
||||
return 0
|
||||
}
|
||||
|
@ -3,38 +3,41 @@
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
# Global variables.
|
||||
export SVNROOT="svn://svn.FreeBSD.org/"
|
||||
export SRCBRANCH="base/head@rHEAD"
|
||||
export DOCBRANCH="doc/head@rHEAD"
|
||||
export PORTBRANCH="ports/head@rHEAD"
|
||||
export NODOC=yes
|
||||
export WORLD_FLAGS="-j $(sysctl -n hw.ncpu)"
|
||||
export KERNEL_FLAGS="-j $(( $(( $(sysctl -n hw.ncpu) + 1 )) / 2 ))"
|
||||
export CHROOTDIR="/scratch"
|
||||
export EMBEDDEDBUILD=1
|
||||
export EMBEDDEDPORTS="lang/python textproc/gsed"
|
||||
EMBEDDEDBUILD=1
|
||||
EMBEDDED_TARGET="arm"
|
||||
EMBEDDED_TARGET_ARCH="armv6"
|
||||
EMBEDDEDPORTS="sysutils/u-boot-rpi"
|
||||
KERNEL="RPI-B"
|
||||
WORLD_FLAGS="${WORLD_FLAGS} UBLDR_LOADADDR=0x2000000"
|
||||
IMAGE_SIZE="1G"
|
||||
PART_SCHEME="MBR"
|
||||
FAT_SIZE="17m"
|
||||
FAT_TYPE="16"
|
||||
MD_ARGS="-x 63 -y 255"
|
||||
NODOC=1
|
||||
|
||||
# Build chroot configuration
|
||||
load_chroot_env() {
|
||||
# Avoid collision with TARGET and XDEV.
|
||||
unset XDEV XDEV_ARCH KERNEL
|
||||
export TARGET="amd64"
|
||||
export TARGET_ARCH="amd64"
|
||||
}
|
||||
|
||||
# Build target configuration
|
||||
load_target_env() {
|
||||
# Avoid collision with TARGET and XDEV.
|
||||
unset TARGET TARGET_ARCH
|
||||
export XDEV="arm"
|
||||
export XDEV_ARCH="armv6"
|
||||
export XDEV_FLAGS="WITH_GCC=1 WITH_GCC_BOOTSTRAP=1 WITHOUT_CLANG_IS_CC=1"
|
||||
export XDEV_FLAGS="${XDEV_FLAGS} MK_TESTS=no"
|
||||
export KERNEL="RPI-B"
|
||||
export CROCHETSRC="https://github.com/freebsd/crochet"
|
||||
export CROCHETBRANCH="trunk@rHEAD"
|
||||
export UBOOTSRC="https://github.com/gonzoua/u-boot-pi"
|
||||
export UBOOTBRANCH="trunk"
|
||||
export UBOOTDIR="/tmp/crochet/u-boot-rpi"
|
||||
arm_install_uboot() {
|
||||
UBOOT_DIR="/usr/local/share/u-boot/u-boot-rpi"
|
||||
UBOOT_FILES="bootcode.bin config.txt fixup.dat fixup_cd.dat \
|
||||
start.elf start_cd.elf u-boot.img"
|
||||
FATMOUNT="${DESTDIR%${KERNEL}}/fat"
|
||||
UFSMOUNT="${DESTDIR%${KERNEL}}/ufs"
|
||||
chroot ${CHROOTDIR} mkdir -p "${FATMOUNT}" "${UFSMOUNT}"
|
||||
chroot ${CHROOTDIR} mount_msdosfs /dev/${mddev}s1 ${FATMOUNT}
|
||||
chroot ${CHROOTDIR} mount /dev/${mddev}s2a ${UFSMOUNT}
|
||||
for _UF in ${UBOOT_FILES}; do
|
||||
chroot ${CHROOTDIR} cp -p ${UBOOT_DIR}/${_UF} \
|
||||
${FATMOUNT}/${_UF}
|
||||
done
|
||||
chroot ${CHROOTDIR} cp -p ${UFSMOUNT}/boot/ubldr ${FATMOUNT}/ubldr
|
||||
chroot ${CHROOTDIR} cp -p ${UFSMOUNT}/boot/dtb/rpi.dtb \
|
||||
${FATMOUNT}/rpi.dtb
|
||||
chroot ${CHROOTDIR} touch ${UFSMOUNT}/firstboot
|
||||
sync
|
||||
umount_loop ${CHROOTDIR}/${FATMOUNT}
|
||||
umount_loop ${CHROOTDIR}/${UFSMOUNT}
|
||||
chroot ${CHROOTDIR} rmdir ${FATMOUNT}
|
||||
chroot ${CHROOTDIR} rmdir ${UFSMOUNT}
|
||||
|
||||
return 0
|
||||
}
|
||||
|
@ -3,36 +3,41 @@
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
# Global variables.
|
||||
export SVNROOT="svn://svn.FreeBSD.org/"
|
||||
export SRCBRANCH="base/head@rHEAD"
|
||||
export DOCBRANCH="doc/head@rHEAD"
|
||||
export PORTBRANCH="ports/head@rHEAD"
|
||||
export NODOC=yes
|
||||
export WORLD_FLAGS="-j $(sysctl -n hw.ncpu)"
|
||||
export KERNEL_FLAGS="-j $(( $(( $(sysctl -n hw.ncpu) + 1 )) / 2 ))"
|
||||
export CHROOTDIR="/scratch"
|
||||
export EMBEDDEDBUILD=1
|
||||
export EMBEDDEDPORTS="sysutils/u-boot-rpi2"
|
||||
EMBEDDEDBUILD=1
|
||||
EMBEDDED_TARGET="arm"
|
||||
EMBEDDED_TARGET_ARCH="armv6"
|
||||
EMBEDDEDPORTS="sysutils/u-boot-rpi2"
|
||||
KERNEL="RPI2"
|
||||
NODOC=1
|
||||
WORLD_FLAGS="${WORLD_FLAGS} UBLDR_LOADADDR=0x2000000"
|
||||
IMAGE_SIZE="1G"
|
||||
PART_SCHEME="MBR"
|
||||
FAT_SIZE="50m"
|
||||
FAT_TYPE="16"
|
||||
MD_ARGS="-x 63 -y 255"
|
||||
|
||||
# Build chroot configuration
|
||||
load_chroot_env() {
|
||||
# Avoid collision with TARGET and XDEV.
|
||||
unset XDEV XDEV_ARCH KERNEL
|
||||
export TARGET="amd64"
|
||||
export TARGET_ARCH="amd64"
|
||||
arm_install_uboot() {
|
||||
UBOOT_DIR="/usr/local/share/u-boot/u-boot-rpi2"
|
||||
UBOOT_FILES="bootcode.bin config.txt fixup.dat fixup_cd.dat \
|
||||
fixup_x.dat start.elf start_cd.elf start_x.elf u-boot.bin"
|
||||
FATMOUNT="${DESTDIR%${KERNEL}}/fat"
|
||||
UFSMOUNT="${DESTDIR%${KERNEL}}/ufs"
|
||||
chroot ${CHROOTDIR} mkdir -p "${FATMOUNT}" "${UFSMOUNT}"
|
||||
chroot ${CHROOTDIR} mount_msdosfs /dev/${mddev}s1 ${FATMOUNT}
|
||||
chroot ${CHROOTDIR} mount /dev/${mddev}s2a ${UFSMOUNT}
|
||||
for _UF in ${UBOOT_FILES}; do
|
||||
chroot ${CHROOTDIR} cp -p ${UBOOT_DIR}/${_UF} \
|
||||
${FATMOUNT}/${_UF}
|
||||
done
|
||||
chroot ${CHROOTDIR} cp -p ${UFSMOUNT}/boot/ubldr ${FATMOUNT}/ubldr
|
||||
chroot ${CHROOTDIR} cp -p ${UFSMOUNT}/boot/dtb/rpi2.dtb \
|
||||
${FATMOUNT}/rpi2.dtb
|
||||
chroot ${CHROOTDIR} touch ${UFSMOUNT}/firstboot
|
||||
sync
|
||||
umount_loop ${CHROOTDIR}/${FATMOUNT}
|
||||
umount_loop ${CHROOTDIR}/${UFSMOUNT}
|
||||
chroot ${CHROOTDIR} rmdir ${FATMOUNT}
|
||||
chroot ${CHROOTDIR} rmdir ${UFSMOUNT}
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# Build target configuration
|
||||
load_target_env() {
|
||||
# Avoid collision with TARGET and XDEV.
|
||||
unset TARGET TARGET_ARCH
|
||||
export XDEV="arm"
|
||||
export XDEV_ARCH="armv6"
|
||||
export XDEV_FLAGS="WITH_GCC=1 WITH_GCC_BOOTSTRAP=1 WITHOUT_CLANG_IS_CC=1"
|
||||
export XDEV_FLAGS="${XDEV_FLAGS} MK_TESTS=no"
|
||||
export KERNEL="RPI2"
|
||||
export CROCHETSRC="https://github.com/freebsd/crochet"
|
||||
export CROCHETBRANCH="trunk@rHEAD"
|
||||
}
|
||||
|
||||
|
@ -1,37 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
# Global variables.
|
||||
export SVNROOT="svn://svn.FreeBSD.org/"
|
||||
export SRCBRANCH="base/head@rHEAD"
|
||||
export DOCBRANCH="doc/head@rHEAD"
|
||||
export PORTBRANCH="ports/head@rHEAD"
|
||||
export NODOC=yes
|
||||
export WORLD_FLAGS="-j $(sysctl -n hw.ncpu)"
|
||||
export KERNEL_FLAGS="-j $(( $(( $(sysctl -n hw.ncpu) + 1 )) / 2 ))"
|
||||
export CHROOTDIR="/scratch"
|
||||
export EMBEDDEDBUILD=1
|
||||
export EMBEDDEDPORTS="lang/python textproc/gsed"
|
||||
|
||||
# Build chroot configuration
|
||||
load_chroot_env() {
|
||||
# Avoid collision with TARGET and XDEV.
|
||||
unset XDEV XDEV_ARCH KERNEL
|
||||
export TARGET="amd64"
|
||||
export TARGET_ARCH="amd64"
|
||||
}
|
||||
|
||||
# Build target configuration
|
||||
load_target_env() {
|
||||
# Avoid collision with TARGET and XDEV.
|
||||
unset TARGET TARGET_ARCH
|
||||
export XDEV="arm"
|
||||
export XDEV_ARCH="armv6"
|
||||
export XDEV_FLAGS="WITH_GCC=1 WITH_GCC_BOOTSTRAP=1 WITHOUT_CLANG_IS_CC=1"
|
||||
export XDEV_FLAGS="${XDEV_FLAGS} MK_TESTS=no"
|
||||
export KERNEL="WANDBOARD-QUAD"
|
||||
export CROCHETSRC="https://github.com/freebsd/crochet"
|
||||
export CROCHETBRANCH="trunk@rHEAD"
|
||||
}
|
41
release/arm/WANDBOARD.conf
Normal file
41
release/arm/WANDBOARD.conf
Normal file
@ -0,0 +1,41 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
EMBEDDEDBUILD=1
|
||||
EMBEDDED_TARGET="arm"
|
||||
EMBEDDED_TARGET_ARCH="armv6"
|
||||
EMBEDDEDPORTS="sysutils/u-boot-wandboard"
|
||||
KERNEL="IMX6"
|
||||
WORLD_FLAGS="${WORLD_FLAGS} UBLDR_LOADADDR=0x11000000"
|
||||
IMAGE_SIZE="1G"
|
||||
PART_SCHEME="MBR"
|
||||
FAT_SIZE="50m -b 16384"
|
||||
FAT_TYPE="16"
|
||||
MD_ARGS="-x 63 -y 255"
|
||||
NODOC=1
|
||||
|
||||
arm_install_uboot() {
|
||||
UBOOT_DIR="/usr/local/share/u-boot/u-boot-wandboard"
|
||||
UBOOT_FILES="u-boot.imx"
|
||||
FATMOUNT="${DESTDIR%${KERNEL}}/fat"
|
||||
UFSMOUNT="${DESTDIR%${KERNEL}}/ufs"
|
||||
chroot ${CHROOTDIR} dd if=${UBOOT_DIR}/${UBOOT_FILES} \
|
||||
of=/dev/${mddev} bs=512 seek=2
|
||||
chroot ${CHROOTDIR} mkdir -p "${FATMOUNT}" "${UFSMOUNT}"
|
||||
chroot ${CHROOTDIR} mount_msdosfs /dev/${mddev}s1 ${FATMOUNT}
|
||||
chroot ${CHROOTDIR} mount /dev/${mddev}s2a ${UFSMOUNT}
|
||||
chroot ${CHROOTDIR} cp -p ${UFSMOUNT}/boot/ubldr ${FATMOUNT}/ubldr
|
||||
chroot ${CHROOTDIR} /bin/sh -c 'echo \
|
||||
setenv fdt_file wandboard-quad.dtb\; fatload mmc 0:1 11000000 ubldr\; bootelf 11000000\; \
|
||||
> ${FATMOUNT}/boot.txt'
|
||||
chroot ${CHROOTDIR} touch ${UFSMOUNT}/firstboot
|
||||
sync
|
||||
umount_loop ${CHROOTDIR}/${FATMOUNT}
|
||||
umount_loop ${CHROOTDIR}/${UFSMOUNT}
|
||||
chroot ${CHROOTDIR} rmdir ${FATMOUNT}
|
||||
chroot ${CHROOTDIR} rmdir ${UFSMOUNT}
|
||||
|
||||
return 0
|
||||
}
|
@ -1,36 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
# Global variables.
|
||||
export SVNROOT="svn://svn.FreeBSD.org/"
|
||||
export SRCBRANCH="base/head@rHEAD"
|
||||
export DOCBRANCH="doc/head@rHEAD"
|
||||
export PORTBRANCH="ports/head@rHEAD"
|
||||
export NODOC=yes
|
||||
export WORLD_FLAGS="-j $(sysctl -n hw.ncpu)"
|
||||
export export KERNEL_FLAGS="-j $(( $(( $(sysctl -n hw.ncpu) + 1 )) / 2 ))"
|
||||
export CHROOTDIR="/scratch"
|
||||
export EMBEDDEDBUILD=1
|
||||
|
||||
# Build chroot configuration
|
||||
load_chroot_env() {
|
||||
# Avoid collision with TARGET and XDEV.
|
||||
unset XDEV XDEV_ARCH KERNEL
|
||||
export TARGET="amd64"
|
||||
export TARGET_ARCH="amd64"
|
||||
}
|
||||
|
||||
# Build target configuration
|
||||
load_target_env() {
|
||||
# Avoid collision with TARGET and XDEV.
|
||||
unset TARGET TARGET_ARCH
|
||||
export XDEV="arm"
|
||||
export XDEV_ARCH="armv6"
|
||||
export XDEV_FLAGS="WITH_GCC=1 WITH_GCC_BOOTSTRAP=1 WITHOUT_CLANG_IS_CC=1"
|
||||
export XDEV_FLAGS="${XDEV_FLAGS} MK_TESTS=no"
|
||||
export KERNEL="ZEDBOARD"
|
||||
export CROCHETSRC="https://github.com/freebsd/crochet"
|
||||
export CROCHETBRANCH="trunk@rHEAD"
|
||||
}
|
@ -1,151 +0,0 @@
|
||||
#!/bin/sh
|
||||
#-
|
||||
# Copyright (c) 2013, 2014 The FreeBSD Foundation
|
||||
# All rights reserved.
|
||||
#
|
||||
# This software was 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.
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
# This script is intended to be called by release/release.sh to build ARM
|
||||
# images for release. It is not intended to be run directly. This sets up
|
||||
# the software needed within a build chroot, then runs crochet to provide
|
||||
# downloadable images for embedded devices.
|
||||
|
||||
set -e
|
||||
|
||||
before_build() {
|
||||
WANT_UBOOT=
|
||||
KNOWNHASH=
|
||||
UBOOT_VERSION=
|
||||
case ${KERNEL} in
|
||||
PANDABOARD)
|
||||
WANT_UBOOT=1
|
||||
KNOWNHASH="e08e20a6979bfca6eebb9a2b0e42aa4416af3d796332fd63a3470495a089d496"
|
||||
UBOOT_VERSION="u-boot-2012.07"
|
||||
;;
|
||||
WANDBOARD-QUAD)
|
||||
WANT_UBOOT=1
|
||||
KNOWNHASH="b4f83b8db325c21671a997198ec3a373e2e00dde2fcf17be9b9afd7cfd727f56"
|
||||
UBOOT_VERSION="u-boot-2014.07"
|
||||
;;
|
||||
*)
|
||||
# Fallthrough.
|
||||
;;
|
||||
esac
|
||||
if [ ! -z ${WANT_UBOOT} ]; then
|
||||
chroot ${CHROOTDIR} fetch -o /tmp/crochet/${UBOOT_VERSION}.tar.bz2 \
|
||||
http://people.freebsd.org/~gjb/${UBOOT_VERSION}.tar.bz2
|
||||
UBOOT_HASH="$(sha256 -q ${CHROOTDIR}/tmp/crochet/${UBOOT_VERSION}.tar.bz2)"
|
||||
if [ "${UBOOT_HASH}" != "${KNOWNHASH}" ]; then
|
||||
echo "Checksum mismatch! Exiting now."
|
||||
exit 1
|
||||
fi
|
||||
chroot ${CHROOTDIR} tar xf /tmp/crochet/${UBOOT_VERSION}.tar.bz2 \
|
||||
-C /tmp/crochet/
|
||||
fi
|
||||
}
|
||||
|
||||
install_crochet() {
|
||||
chroot ${CHROOTDIR} svn co -q ${CROCHETSRC}/${CROCHETBRANCH} \
|
||||
/tmp/crochet
|
||||
}
|
||||
|
||||
install_uboot() {
|
||||
# Only fetch u-boot sources if UBOOTSRC is set; otherwise it is
|
||||
# not needed.
|
||||
if [ -n "${UBOOTSRC}" ]; then
|
||||
continue
|
||||
else
|
||||
return 0
|
||||
fi
|
||||
chroot ${CHROOTDIR} svn co -q ${UBOOTSRC}/${UBOOTBRANCH} \
|
||||
/${UBOOTDIR}
|
||||
}
|
||||
|
||||
main() {
|
||||
# Fix broken ports that use kern.osreldate.
|
||||
OSVERSION=$(chroot ${CHROOTDIR} /usr/bin/uname -U)
|
||||
export OSVERSION
|
||||
REVISION=$(chroot ${CHROOTDIR} make -C /usr/src/release -V REVISION)
|
||||
BRANCH=$(chroot ${CHROOTDIR} make -C /usr/src/release -V BRANCH)
|
||||
UNAME_r=${REVISION}-${BRANCH}
|
||||
export UNAME_r
|
||||
export XZ_CMD=$(chroot ${CHROOTDIR} make -C /usr/src/release -V XZ_CMD)
|
||||
|
||||
# Build the 'xdev' target for crochet.
|
||||
eval chroot ${CHROOTDIR} make -C /usr/src \
|
||||
${XDEV_FLAGS} XDEV=${XDEV} XDEV_ARCH=${XDEV_ARCH} \
|
||||
TARGET=${XDEV} TARGET_ARCH=${XDEV_ARCH} \
|
||||
${WORLD_FLAGS} xdev
|
||||
|
||||
# Install the cross-build symlinks to /usr/bin to make crochet
|
||||
# happy.
|
||||
eval chroot ${CHROOTDIR} make -C /usr/src \
|
||||
${XDEV_FLAGS} XDEV=${XDEV} XDEV_ARCH=${XDEV_ARCH} \
|
||||
TARGET=${XDEV} TARGET_ARCH=${XDEV_ARCH} \
|
||||
${WORLD_FLAGS} xdev-links || true
|
||||
|
||||
# Run the ldconfig(8) startup script so /var/run/ld-elf*.so.hints
|
||||
# is created.
|
||||
eval chroot ${CHROOTDIR} /etc/rc.d/ldconfig forcerestart
|
||||
# Install security/ca_root_nss since we need to check the https
|
||||
# certificate of github.
|
||||
eval chroot ${CHROOTDIR} make -C /usr/ports/security/ca_root_nss \
|
||||
OPTIONS_SET="ETCSYMLINK" BATCH=1 FORCE_PKG_REGISTER=1 \
|
||||
install clean distclean
|
||||
EMBEDDEDPORTS="${EMBEDDEDPORTS} devel/subversion"
|
||||
for _PORT in ${EMBEDDEDPORTS}; do
|
||||
eval chroot ${CHROOTDIR} make -C /usr/ports/${_PORT} \
|
||||
BATCH=1 FORCE_PKG_REGISTER=1 install clean distclean
|
||||
done
|
||||
|
||||
# Certain u-boot versions hardcode the use of a host gcc, and gcc's
|
||||
# build relies on having gperf installed.
|
||||
eval chroot ${CHROOTDIR} make -C /usr/src/gnu/usr.bin/gperf \
|
||||
WITH_GCC=1 ${WORLD_FLAGS} obj
|
||||
eval chroot ${CHROOTDIR} make -C /usr/src/gnu/usr.bin/gperf \
|
||||
WITH_GCC=1 ${WORLD_FLAGS} -j1 depend all
|
||||
eval chroot ${CHROOTDIR} make -C /usr/src/gnu/usr.bin/gperf \
|
||||
WITH_GCC=1 ${WORLD_FLAGS} -j1 install
|
||||
eval chroot ${CHROOTDIR} make -C /usr/src/gnu/usr.bin/cc \
|
||||
WITH_GCC=1 ${WORLD_FLAGS} -j1 obj depend all install
|
||||
|
||||
mkdir -p ${CHROOTDIR}/tmp/crochet/work
|
||||
before_build
|
||||
install_crochet
|
||||
install_uboot
|
||||
eval chroot ${CHROOTDIR} /bin/sh /tmp/crochet/crochet.sh \
|
||||
-c /tmp/external/${XDEV}/crochet-${KERNEL}.conf
|
||||
mkdir -p ${CHROOTDIR}/R/
|
||||
cp -p ${CHROOTDIR}/usr/obj/*.img ${CHROOTDIR}/R/
|
||||
${XZ_CMD} ${CHROOTDIR}/R/FreeBSD*.img
|
||||
cd ${CHROOTDIR}/R/ && sha256 FreeBSD*.img.xz > CHECKSUM.SHA256
|
||||
cd ${CHROOTDIR}/R/ && md5 FreeBSD*.img.xz > CHECKSUM.MD5
|
||||
}
|
||||
|
||||
main "$@"
|
||||
exit 0
|
@ -36,257 +36,359 @@
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin"
|
||||
export PATH
|
||||
export PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin"
|
||||
|
||||
VERSION=2
|
||||
|
||||
# Prototypes that can be redefined per-chroot or per-target.
|
||||
load_chroot_env() { }
|
||||
load_target_env() { }
|
||||
buildenv_setup() { }
|
||||
|
||||
# The directory within which the release will be built.
|
||||
CHROOTDIR="/scratch"
|
||||
RELENGDIR="$(realpath $(dirname $(basename ${0})))"
|
||||
|
||||
# The default version control system command to obtain the sources.
|
||||
VCSCMD="svn checkout"
|
||||
|
||||
# The default svn checkout server, and svn branches for src/, doc/,
|
||||
# and ports/.
|
||||
SVNROOT="svn://svn.FreeBSD.org/"
|
||||
SRCBRANCH="base/head@rHEAD"
|
||||
DOCBRANCH="doc/head@rHEAD"
|
||||
PORTBRANCH="ports/head@rHEAD"
|
||||
|
||||
# Set for embedded device builds.
|
||||
EMBEDDEDBUILD=
|
||||
|
||||
# Sometimes one needs to checkout src with --force svn option.
|
||||
# If custom kernel configs copied to src tree before checkout, e.g.
|
||||
SRC_FORCE_CHECKOUT=
|
||||
|
||||
# The default make.conf and src.conf to use. Set to /dev/null
|
||||
# by default to avoid polluting the chroot(8) environment with
|
||||
# non-default settings.
|
||||
MAKE_CONF="/dev/null"
|
||||
SRC_CONF="/dev/null"
|
||||
|
||||
# The number of make(1) jobs, defaults to the number of CPUs available for
|
||||
# buildworld, and half of number of CPUs available for buildkernel.
|
||||
WORLD_FLAGS="-j$(sysctl -n hw.ncpu)"
|
||||
KERNEL_FLAGS="-j$(( $(( $(sysctl -n hw.ncpu) + 1 )) / 2))"
|
||||
|
||||
MAKE_FLAGS="-s"
|
||||
|
||||
# The name of the kernel to build, defaults to GENERIC.
|
||||
KERNEL="GENERIC"
|
||||
|
||||
# Set to non-empty value to disable checkout of doc/ and/or ports/. Disabling
|
||||
# ports/ checkout also forces NODOC to be set.
|
||||
NODOC=
|
||||
NOPORTS=
|
||||
|
||||
# Set to non-empty value to build dvd1.iso as part of the release.
|
||||
WITH_DVD=
|
||||
WITH_COMPRESSED_IMAGES=
|
||||
|
||||
# Set to non-empty value to build virtual machine images as part of
|
||||
# the release.
|
||||
WITH_VMIMAGES=
|
||||
WITH_COMPRESSED_VMIMAGES=
|
||||
XZ_THREADS=0
|
||||
|
||||
# Set to non-empty value to build virtual machine images for various
|
||||
# cloud providers as part of the release.
|
||||
WITH_CLOUDWARE=
|
||||
|
||||
usage() {
|
||||
echo "Usage: $0 [-c release.conf]"
|
||||
exit 1
|
||||
}
|
||||
|
||||
while getopts c: opt; do
|
||||
case ${opt} in
|
||||
c)
|
||||
RELEASECONF="${OPTARG}"
|
||||
if [ ! -e "${RELEASECONF}" ]; then
|
||||
echo "ERROR: Configuration file ${RELEASECONF} does not exist."
|
||||
exit 1
|
||||
fi
|
||||
# Source the specified configuration file for overrides
|
||||
. ${RELEASECONF}
|
||||
;;
|
||||
\?)
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
done
|
||||
shift $(($OPTIND - 1))
|
||||
# env_setup(): Set up the default build environment variables, such as the
|
||||
# CHROOTDIR, VCSCMD, SVNROOT, etc. This is called before the release.conf
|
||||
# file is sourced, if '-c <release.conf>' is specified.
|
||||
env_setup() {
|
||||
# The directory within which the release will be built.
|
||||
CHROOTDIR="/scratch"
|
||||
RELENGDIR="$(dirname $(realpath ${0}))"
|
||||
|
||||
# Fix for backwards-compatibility with release.conf that does not have the
|
||||
# trailing '/'.
|
||||
case ${SVNROOT} in
|
||||
*svn*)
|
||||
SVNROOT="${SVNROOT}/"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
# The default version control system command to obtain the sources.
|
||||
for _dir in /usr/bin /usr/local/bin; do
|
||||
for _svn in svn svnlite; do
|
||||
[ -x "${_dir}/${_svn}" ] && VCSCMD="${_dir}/${_svn}"
|
||||
[ ! -z "${VCSCMD}" ] && break 2
|
||||
done
|
||||
done
|
||||
VCSCMD="${VCSCMD} checkout"
|
||||
|
||||
# Prefix the branches with the SVNROOT for the full checkout URL.
|
||||
SRCBRANCH="${SVNROOT}${SRCBRANCH}"
|
||||
DOCBRANCH="${SVNROOT}${DOCBRANCH}"
|
||||
PORTBRANCH="${SVNROOT}${PORTBRANCH}"
|
||||
# The default svn checkout server, and svn branches for src/, doc/,
|
||||
# and ports/.
|
||||
SVNROOT="svn://svn.FreeBSD.org/"
|
||||
SRCBRANCH="base/head@rHEAD"
|
||||
DOCBRANCH="doc/head@rHEAD"
|
||||
PORTBRANCH="ports/head@rHEAD"
|
||||
|
||||
if [ -n "${EMBEDDEDBUILD}" ]; then
|
||||
# Set for embedded device builds.
|
||||
EMBEDDEDBUILD=
|
||||
|
||||
# Sometimes one needs to checkout src with --force svn option.
|
||||
# If custom kernel configs copied to src tree before checkout, e.g.
|
||||
SRC_FORCE_CHECKOUT=
|
||||
|
||||
# The default make.conf and src.conf to use. Set to /dev/null
|
||||
# by default to avoid polluting the chroot(8) environment with
|
||||
# non-default settings.
|
||||
MAKE_CONF="/dev/null"
|
||||
SRC_CONF="/dev/null"
|
||||
|
||||
# The number of make(1) jobs, defaults to the number of CPUs available
|
||||
# for buildworld, and half of number of CPUs available for buildkernel.
|
||||
WORLD_FLAGS="-j$(sysctl -n hw.ncpu)"
|
||||
KERNEL_FLAGS="-j$(( $(( $(sysctl -n hw.ncpu) + 1 )) / 2))"
|
||||
|
||||
MAKE_FLAGS="-s"
|
||||
|
||||
# The name of the kernel to build, defaults to GENERIC.
|
||||
KERNEL="GENERIC"
|
||||
|
||||
# Set to non-empty value to disable checkout of doc/ and/or ports/.
|
||||
# Disabling ports/ checkout also forces NODOC to be set.
|
||||
NODOC=
|
||||
NOPORTS=
|
||||
|
||||
# Set to non-empty value to build dvd1.iso as part of the release.
|
||||
WITH_DVD=
|
||||
WITH_COMPRESSED_IMAGES=
|
||||
NODOC=yes
|
||||
fi
|
||||
|
||||
# If PORTS is set and NODOC is unset, force NODOC=yes because the ports tree
|
||||
# is required to build the documentation set.
|
||||
if [ -n "${NOPORTS}" ] && [ -z "${NODOC}" ]; then
|
||||
echo "*** NOTICE: Setting NODOC=1 since ports tree is required"
|
||||
echo " and NOPORTS is set."
|
||||
NODOC=yes
|
||||
fi
|
||||
# Set to non-empty value to build virtual machine images as part of
|
||||
# the release.
|
||||
WITH_VMIMAGES=
|
||||
WITH_COMPRESSED_VMIMAGES=
|
||||
XZ_THREADS=0
|
||||
|
||||
# If NOPORTS and/or NODOC are unset, they must not pass to make as variables.
|
||||
# The release makefile verifies definedness of NOPORTS/NODOC variables
|
||||
# instead of their values.
|
||||
DOCPORTS=
|
||||
if [ -n "${NOPORTS}" ]; then
|
||||
DOCPORTS="NOPORTS=yes "
|
||||
fi
|
||||
if [ -n "${NODOC}" ]; then
|
||||
DOCPORTS="${DOCPORTS}NODOC=yes"
|
||||
fi
|
||||
# Set to non-empty value to build virtual machine images for various
|
||||
# cloud providers as part of the release.
|
||||
WITH_CLOUDWARE=
|
||||
|
||||
# The aggregated build-time flags based upon variables defined within
|
||||
# this file, unless overridden by release.conf. In most cases, these
|
||||
# will not need to be changed.
|
||||
CONF_FILES="__MAKE_CONF=${MAKE_CONF} SRCCONF=${SRC_CONF}"
|
||||
if [ -n "${TARGET}" ] && [ -n "${TARGET_ARCH}" ]; then
|
||||
ARCH_FLAGS="TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH}"
|
||||
else
|
||||
ARCH_FLAGS=
|
||||
fi
|
||||
load_chroot_env
|
||||
CHROOT_MAKEENV="${CHROOT_MAKEENV} MAKEOBJDIRPREFIX=${CHROOTDIR}/tmp/obj"
|
||||
CHROOT_WMAKEFLAGS="${MAKE_FLAGS} ${WORLD_FLAGS} ${CONF_FILES}"
|
||||
CHROOT_IMAKEFLAGS="${CONF_FILES}"
|
||||
CHROOT_DMAKEFLAGS="${CONF_FILES}"
|
||||
RELEASE_WMAKEFLAGS="${MAKE_FLAGS} ${WORLD_FLAGS} ${ARCH_FLAGS} ${CONF_FILES}"
|
||||
RELEASE_KMAKEFLAGS="${MAKE_FLAGS} ${KERNEL_FLAGS} KERNCONF=\"${KERNEL}\" ${ARCH_FLAGS} ${CONF_FILES}"
|
||||
RELEASE_RMAKEFLAGS="${ARCH_FLAGS} KERNCONF=\"${KERNEL}\" ${CONF_FILES} \
|
||||
${DOCPORTS} WITH_DVD=${WITH_DVD} WITH_VMIMAGES=${WITH_VMIMAGES} \
|
||||
WITH_CLOUDWARE=${WITH_CLOUDWARE} XZ_THREADS=${XZ_THREADS}"
|
||||
return 0
|
||||
} # env_setup()
|
||||
|
||||
# Force src checkout if configured
|
||||
FORCE_SRC_KEY=
|
||||
if [ -n "${SRC_FORCE_CHECKOUT}" ]; then
|
||||
FORCE_SRC_KEY="--force"
|
||||
fi
|
||||
# env_check(): Perform sanity tests on the build environment, such as ensuring
|
||||
# files/directories exist, as well as adding backwards-compatibility hacks if
|
||||
# necessary. This is called unconditionally, and overrides the defaults set
|
||||
# in env_setup() if '-c <release.conf>' is specified.
|
||||
env_check() {
|
||||
chroot_build_release_cmd="chroot_build_release"
|
||||
# Fix for backwards-compatibility with release.conf that does not have
|
||||
# the trailing '/'.
|
||||
case ${SVNROOT} in
|
||||
*svn*)
|
||||
SVNROOT="${SVNROOT}/"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -z "${CHROOTDIR}" ]; then
|
||||
echo "Please set CHROOTDIR."
|
||||
exit 1
|
||||
fi
|
||||
# Prefix the branches with the SVNROOT for the full checkout URL.
|
||||
SRCBRANCH="${SVNROOT}${SRCBRANCH}"
|
||||
DOCBRANCH="${SVNROOT}${DOCBRANCH}"
|
||||
PORTBRANCH="${SVNROOT}${PORTBRANCH}"
|
||||
|
||||
if [ $(id -u) -ne 0 ]; then
|
||||
echo "Needs to be run as root."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
set -e # Everything must succeed
|
||||
|
||||
mkdir -p ${CHROOTDIR}/usr
|
||||
|
||||
if [ -z "${SRC_UPDATE_SKIP}" ]; then
|
||||
${VCSCMD} ${FORCE_SRC_KEY} ${SRCBRANCH} ${CHROOTDIR}/usr/src
|
||||
fi
|
||||
if [ -z "${NODOC}" ] && [ -z "${DOC_UPDATE_SKIP}" ]; then
|
||||
${VCSCMD} ${DOCBRANCH} ${CHROOTDIR}/usr/doc
|
||||
fi
|
||||
if [ -z "${NOPORTS}" ] && [ -z "${PORTS_UPDATE_SKIP}" ]; then
|
||||
${VCSCMD} ${PORTBRANCH} ${CHROOTDIR}/usr/ports
|
||||
fi
|
||||
|
||||
if [ -z "${CHROOTBUILD_SKIP}" ]; then
|
||||
cd ${CHROOTDIR}/usr/src
|
||||
env ${CHROOT_MAKEENV} make ${CHROOT_WMAKEFLAGS} buildworld
|
||||
env ${CHROOT_MAKEENV} make ${CHROOT_IMAKEFLAGS} installworld \
|
||||
DESTDIR=${CHROOTDIR}
|
||||
env ${CHROOT_MAKEENV} make ${CHROOT_DMAKEFLAGS} distribution \
|
||||
DESTDIR=${CHROOTDIR}
|
||||
fi
|
||||
mount -t devfs devfs ${CHROOTDIR}/dev
|
||||
cp /etc/resolv.conf ${CHROOTDIR}/etc/resolv.conf
|
||||
trap "umount ${CHROOTDIR}/dev" EXIT # Clean up devfs mount on exit
|
||||
|
||||
# If MAKE_CONF and/or SRC_CONF are set and not character devices (/dev/null),
|
||||
# copy them to the chroot.
|
||||
if [ -e ${MAKE_CONF} ] && [ ! -c ${MAKE_CONF} ]; then
|
||||
mkdir -p ${CHROOTDIR}/$(dirname ${MAKE_CONF})
|
||||
cp ${MAKE_CONF} ${CHROOTDIR}/${MAKE_CONF}
|
||||
fi
|
||||
if [ -e ${SRC_CONF} ] && [ ! -c ${SRC_CONF} ]; then
|
||||
mkdir -p ${CHROOTDIR}/$(dirname ${SRC_CONF})
|
||||
cp ${SRC_CONF} ${CHROOTDIR}/${SRC_CONF}
|
||||
fi
|
||||
|
||||
# Embedded builds do not use the 'make release' target.
|
||||
if [ -n "${EMBEDDEDBUILD}" ]; then
|
||||
buildenv_setup
|
||||
# If a crochet configuration file exists in *this* checkout of
|
||||
# release/, copy it to the /tmp/external directory within the chroot.
|
||||
# This allows building embedded releases without relying on updated
|
||||
# scripts and/or configurations to exist in the branch being built.
|
||||
load_target_env
|
||||
if [ -e ${RELENGDIR}/tools/${XDEV}/crochet-${KERNEL}.conf ] && \
|
||||
[ -e ${RELENGDIR}/${XDEV}/release.sh ]; then
|
||||
mkdir -p ${CHROOTDIR}/tmp/external/${XDEV}/
|
||||
cp ${RELENGDIR}/tools/${XDEV}/crochet-${KERNEL}.conf \
|
||||
${CHROOTDIR}/tmp/external/${XDEV}/crochet-${KERNEL}.conf
|
||||
/bin/sh ${RELENGDIR}/${XDEV}/release.sh
|
||||
if [ -n "${EMBEDDEDBUILD}" ]; then
|
||||
WITH_DVD=
|
||||
WITH_COMPRESSED_IMAGES=
|
||||
NODOC=yes
|
||||
case ${EMBEDDED_TARGET}:${EMBEDDED_TARGET_ARCH} in
|
||||
arm:armv6)
|
||||
chroot_build_release_cmd="chroot_arm_armv6_build_release"
|
||||
;;
|
||||
*)
|
||||
esac
|
||||
fi
|
||||
# If the script does not exist for this architecture, exit.
|
||||
# This probably should be checked earlier, but allowing the rest
|
||||
# of the build process to get this far will at least set up the
|
||||
# chroot environment for testing.
|
||||
exit 0
|
||||
else
|
||||
# Not embedded.
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ -d ${CHROOTDIR}/usr/ports ]; then
|
||||
# If PORTS is set and NODOC is unset, force NODOC=yes because the ports
|
||||
# tree is required to build the documentation set.
|
||||
if [ -n "${NOPORTS}" ] && [ -z "${NODOC}" ]; then
|
||||
echo "*** NOTICE: Setting NODOC=1 since ports tree is required"
|
||||
echo " and NOPORTS is set."
|
||||
NODOC=yes
|
||||
fi
|
||||
|
||||
# If NOPORTS and/or NODOC are unset, they must not pass to make as
|
||||
# variables. The release makefile verifies definedness of the
|
||||
# NOPORTS/NODOC variables instead of their values.
|
||||
DOCPORTS=
|
||||
if [ -n "${NOPORTS}" ]; then
|
||||
DOCPORTS="NOPORTS=yes "
|
||||
fi
|
||||
if [ -n "${NODOC}" ]; then
|
||||
DOCPORTS="${DOCPORTS}NODOC=yes"
|
||||
fi
|
||||
|
||||
# The aggregated build-time flags based upon variables defined within
|
||||
# this file, unless overridden by release.conf. In most cases, these
|
||||
# will not need to be changed.
|
||||
CONF_FILES="__MAKE_CONF=${MAKE_CONF} SRCCONF=${SRC_CONF}"
|
||||
if [ -n "${TARGET}" ] && [ -n "${TARGET_ARCH}" ]; then
|
||||
ARCH_FLAGS="TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH}"
|
||||
else
|
||||
ARCH_FLAGS=
|
||||
fi
|
||||
# Force src checkout if configured
|
||||
FORCE_SRC_KEY=
|
||||
if [ -n "${SRC_FORCE_CHECKOUT}" ]; then
|
||||
FORCE_SRC_KEY="--force"
|
||||
fi
|
||||
|
||||
if [ -z "${CHROOTDIR}" ]; then
|
||||
echo "Please set CHROOTDIR."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ $(id -u) -ne 0 ]; then
|
||||
echo "Needs to be run as root."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
CHROOT_MAKEENV="${CHROOT_MAKEENV} \
|
||||
MAKEOBJDIRPREFIX=${CHROOTDIR}/tmp/obj"
|
||||
CHROOT_WMAKEFLAGS="${MAKE_FLAGS} ${WORLD_FLAGS} ${CONF_FILES}"
|
||||
CHROOT_IMAKEFLAGS="${CONF_FILES}"
|
||||
CHROOT_DMAKEFLAGS="${CONF_FILES}"
|
||||
RELEASE_WMAKEFLAGS="${MAKE_FLAGS} ${WORLD_FLAGS} ${ARCH_FLAGS} \
|
||||
${CONF_FILES}"
|
||||
RELEASE_KMAKEFLAGS="${MAKE_FLAGS} ${KERNEL_FLAGS} \
|
||||
KERNCONF=\"${KERNEL}\" ${ARCH_FLAGS} ${CONF_FILES}"
|
||||
RELEASE_RMAKEFLAGS="${ARCH_FLAGS} \
|
||||
KERNCONF=\"${KERNEL}\" ${CONF_FILES} ${DOCPORTS} \
|
||||
WITH_DVD=${WITH_DVD} WITH_VMIMAGES=${WITH_VMIMAGES} \
|
||||
WITH_CLOUDWARE=${WITH_CLOUDWARE} XZ_THREADS=${XZ_THREADS}"
|
||||
|
||||
return 0
|
||||
} # env_check()
|
||||
|
||||
# chroot_setup(): Prepare the build chroot environment for the release build.
|
||||
chroot_setup() {
|
||||
load_chroot_env
|
||||
mkdir -p ${CHROOTDIR}/usr
|
||||
|
||||
if [ -z "${SRC_UPDATE_SKIP}" ]; then
|
||||
${VCSCMD} ${FORCE_SRC_KEY} ${SRCBRANCH} ${CHROOTDIR}/usr/src
|
||||
fi
|
||||
if [ -z "${NODOC}" ] && [ -z "${DOC_UPDATE_SKIP}" ]; then
|
||||
${VCSCMD} ${DOCBRANCH} ${CHROOTDIR}/usr/doc
|
||||
fi
|
||||
if [ -z "${NOPORTS}" ] && [ -z "${PORTS_UPDATE_SKIP}" ]; then
|
||||
${VCSCMD} ${PORTBRANCH} ${CHROOTDIR}/usr/ports
|
||||
fi
|
||||
|
||||
if [ -z "${CHROOTBUILD_SKIP}" ]; then
|
||||
cd ${CHROOTDIR}/usr/src
|
||||
env ${CHROOT_MAKEENV} make ${CHROOT_WMAKEFLAGS} buildworld
|
||||
env ${CHROOT_MAKEENV} make ${CHROOT_IMAKEFLAGS} installworld \
|
||||
DESTDIR=${CHROOTDIR}
|
||||
env ${CHROOT_MAKEENV} make ${CHROOT_DMAKEFLAGS} distribution \
|
||||
DESTDIR=${CHROOTDIR}
|
||||
fi
|
||||
|
||||
return 0
|
||||
} # chroot_setup()
|
||||
|
||||
# extra_chroot_setup(): Prepare anything additional within the build
|
||||
# necessary for the release build.
|
||||
extra_chroot_setup() {
|
||||
mkdir -p ${CHROOTDIR}/dev
|
||||
mount -t devfs devfs ${CHROOTDIR}/dev
|
||||
[ -e /etc/resolv.conf ] && cp /etc/resolv.conf \
|
||||
${CHROOTDIR}/etc/resolv.conf
|
||||
# Run ldconfig(8) in the chroot directory so /var/run/ld-elf*.so.hints
|
||||
# is created. This is needed by ports-mgmt/pkg.
|
||||
chroot ${CHROOTDIR} /etc/rc.d/ldconfig forcerestart
|
||||
eval chroot ${CHROOTDIR} /etc/rc.d/ldconfig forcerestart
|
||||
|
||||
## Trick the ports 'run-autotools-fixup' target to do the right thing.
|
||||
_OSVERSION=$(sysctl -n kern.osreldate)
|
||||
REVISION=$(chroot ${CHROOTDIR} make -C /usr/src/release -V REVISION)
|
||||
BRANCH=$(chroot ${CHROOTDIR} make -C /usr/src/release -V BRANCH)
|
||||
UNAME_r=${REVISION}-${BRANCH}
|
||||
if [ -d ${CHROOTDIR}/usr/doc ] && [ -z "${NODOC}" ]; then
|
||||
PBUILD_FLAGS="OSVERSION=${_OSVERSION} BATCH=yes"
|
||||
PBUILD_FLAGS="${PBUILD_FLAGS} UNAME_r=${UNAME_r}"
|
||||
PBUILD_FLAGS="${PBUILD_FLAGS} OSREL=${REVISION}"
|
||||
chroot ${CHROOTDIR} make -C /usr/ports/textproc/docproj \
|
||||
${PBUILD_FLAGS} OPTIONS_UNSET="FOP IGOR" \
|
||||
install clean distclean
|
||||
# If MAKE_CONF and/or SRC_CONF are set and not character devices
|
||||
# (/dev/null), copy them to the chroot.
|
||||
if [ -e ${MAKE_CONF} ] && [ ! -c ${MAKE_CONF} ]; then
|
||||
mkdir -p ${CHROOTDIR}/$(dirname ${MAKE_CONF})
|
||||
cp ${MAKE_CONF} ${CHROOTDIR}/${MAKE_CONF}
|
||||
fi
|
||||
if [ -e ${SRC_CONF} ] && [ ! -c ${SRC_CONF} ]; then
|
||||
mkdir -p ${CHROOTDIR}/$(dirname ${SRC_CONF})
|
||||
cp ${SRC_CONF} ${CHROOTDIR}/${SRC_CONF}
|
||||
fi
|
||||
fi
|
||||
|
||||
buildenv_setup
|
||||
load_target_env
|
||||
eval chroot ${CHROOTDIR} make -C /usr/src ${RELEASE_WMAKEFLAGS} buildworld
|
||||
eval chroot ${CHROOTDIR} make -C /usr/src ${RELEASE_KMAKEFLAGS} buildkernel
|
||||
eval chroot ${CHROOTDIR} make -C /usr/src/release ${RELEASE_RMAKEFLAGS} \
|
||||
release
|
||||
eval chroot ${CHROOTDIR} make -C /usr/src/release ${RELEASE_RMAKEFLAGS} \
|
||||
install DESTDIR=/R WITH_COMPRESSED_IMAGES=${WITH_COMPRESSED_IMAGES} \
|
||||
WITH_COMPRESSED_VMIMAGES=${WITH_COMPRESSED_VMIMAGES}
|
||||
if [ -d ${CHROOTDIR}/usr/ports ]; then
|
||||
# Trick the ports 'run-autotools-fixup' target to do the right
|
||||
# thing.
|
||||
_OSVERSION=$(chroot ${CHROOTDIR} /usr/bin/uname -U)
|
||||
REVISION=$(chroot ${CHROOTDIR} make -C /usr/src/release -V REVISION)
|
||||
BRANCH=$(chroot ${CHROOTDIR} make -C /usr/src/release -V BRANCH)
|
||||
UNAME_r=${REVISION}-${BRANCH}
|
||||
if [ -d ${CHROOTDIR}/usr/doc ] && [ -z "${NODOC}" ]; then
|
||||
PBUILD_FLAGS="OSVERSION=${_OSVERSION} BATCH=yes"
|
||||
PBUILD_FLAGS="${PBUILD_FLAGS} UNAME_r=${UNAME_r}"
|
||||
PBUILD_FLAGS="${PBUILD_FLAGS} OSREL=${REVISION}"
|
||||
chroot ${CHROOTDIR} make -C /usr/ports/textproc/docproj \
|
||||
${PBUILD_FLAGS} OPTIONS_UNSET="FOP IGOR" \
|
||||
install clean distclean
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -z "${EMBEDDEDPORTS}" ]; then
|
||||
for _PORT in ${EMBEDDEDPORTS}; do
|
||||
eval chroot ${CHROOTDIR} make -C /usr/ports/${_PORT} \
|
||||
BATCH=1 FORCE_PKG_REGISTER=1 install clean distclean
|
||||
done
|
||||
fi
|
||||
|
||||
buildenv_setup
|
||||
|
||||
return 0
|
||||
} # extra_chroot_setup()
|
||||
|
||||
# chroot_build_target(): Build the userland and kernel for the build target.
|
||||
chroot_build_target() {
|
||||
load_target_env
|
||||
if [ ! -z "${EMBEDDEDBUILD}" ]; then
|
||||
RELEASE_WMAKEFLAGS="${RELEASE_WMAKEFLAGS} \
|
||||
TARGET=${EMBEDDED_TARGET} \
|
||||
TARGET_ARCH=${EMBEDDED_TARGET_ARCH}"
|
||||
RELEASE_KMAKEFLAGS="${RELEASE_KMAKEFLAGS} \
|
||||
TARGET=${EMBEDDED_TARGET} \
|
||||
TARGET_ARCH=${EMBEDDED_TARGET_ARCH}"
|
||||
fi
|
||||
eval chroot ${CHROOTDIR} make -C /usr/src ${RELEASE_WMAKEFLAGS} buildworld
|
||||
eval chroot ${CHROOTDIR} make -C /usr/src ${RELEASE_KMAKEFLAGS} buildkernel
|
||||
|
||||
return 0
|
||||
} # chroot_build_target
|
||||
|
||||
# chroot_build_release(): Invoke the 'make release' target.
|
||||
chroot_build_release() {
|
||||
load_target_env
|
||||
eval chroot ${CHROOTDIR} make -C /usr/src/release \
|
||||
${RELEASE_RMAKEFLAGS} release
|
||||
eval chroot ${CHROOTDIR} make -C /usr/src/release \
|
||||
${RELEASE_RMAKEFLAGS} install DESTDIR=/R \
|
||||
WITH_COMPRESSED_IMAGES=${WITH_COMPRESSED_IMAGES} \
|
||||
WITH_COMPRESSED_VMIMAGES=${WITH_COMPRESSED_VMIMAGES}
|
||||
|
||||
return 0
|
||||
} # chroot_build_release()
|
||||
|
||||
# chroot_arm_armv6_build_release(): Create arm/armv6 SD card image.
|
||||
chroot_arm_armv6_build_release() {
|
||||
load_target_env
|
||||
eval chroot ${CHROOTDIR} make -C /usr/src/release obj
|
||||
if [ -e "${RELENGDIR}/tools/${EMBEDDED_TARGET}.subr" ]; then
|
||||
. "${RELENGDIR}/tools/${EMBEDDED_TARGET}.subr"
|
||||
fi
|
||||
[ ! -z "${RELEASECONF}" ] && . "${RELEASECONF}"
|
||||
WORLDDIR="$(eval chroot ${CHROOTDIR} make -C /usr/src/release -V WORLDDIR)"
|
||||
OBJDIR="$(eval chroot ${CHROOTDIR} make -C /usr/src/release -V .OBJDIR)"
|
||||
DESTDIR="${OBJDIR}/${KERNEL}"
|
||||
IMGBASE="${CHROOTDIR}/${OBJDIR}/${KERNEL}.img"
|
||||
OSRELEASE="$(eval chroot ${CHROOTDIR} make -C /usr/src/release \
|
||||
TARGET=${EMBEDDED_TARGET} TARGET_ARCH=${EMBEDDED_TARGET_ARCH} \
|
||||
-V OSRELEASE)"
|
||||
chroot ${CHROOTDIR} mkdir -p ${DESTDIR}
|
||||
chroot ${CHROOTDIR} truncate -s ${IMAGE_SIZE} ${IMGBASE##${CHROOTDIR}}
|
||||
export mddev=$(chroot ${CHROOTDIR} \
|
||||
mdconfig -f ${IMGBASE##${CHROOTDIR}} ${MD_ARGS})
|
||||
arm_create_disk
|
||||
arm_install_base
|
||||
arm_install_uboot
|
||||
mdconfig -d -u ${mddev}
|
||||
chroot ${CHROOTDIR} rmdir ${DESTDIR}
|
||||
mv ${IMGBASE} ${CHROOTDIR}/${OBJDIR}/${OSRELEASE}-${KERNEL}.img
|
||||
chroot ${CHROOTDIR} mkdir -p /R
|
||||
chroot ${CHROOTDIR} cp -p ${OBJDIR}/${OSRELEASE}-${KERNEL}.img \
|
||||
/R/${OSRELEASE}-${KERNEL}.img
|
||||
chroot ${CHROOTDIR} xz -T ${XZ_THREADS} /R/${OSRELEASE}-${KERNEL}.img
|
||||
cd ${CHROOTDIR}/R && sha256 ${OSRELEASE}* \
|
||||
> CHECKSUM.SHA256
|
||||
cd ${CHROOTDIR}/R && md5 ${OSRELEASE}* \
|
||||
> CHECKSUM.MD5
|
||||
|
||||
return 0
|
||||
} # chroot_arm_armv6_build_release()
|
||||
|
||||
# main(): Start here.
|
||||
main() {
|
||||
set -e # Everything must succeed
|
||||
env_setup
|
||||
while getopts c: opt; do
|
||||
case ${opt} in
|
||||
c)
|
||||
RELEASECONF="${OPTARG}"
|
||||
;;
|
||||
\?)
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
done
|
||||
shift $(($OPTIND - 1))
|
||||
if [ ! -z "${RELEASECONF}" ]; then
|
||||
if [ -e "${RELEASECONF}" ]; then
|
||||
. ${RELEASECONF}
|
||||
else
|
||||
echo "Nonexistent configuration file: ${RELEASECONF}"
|
||||
echo "Using default build environment."
|
||||
fi
|
||||
fi
|
||||
env_check
|
||||
trap "umount ${CHROOTDIR}/dev" EXIT # Clean up devfs mount on exit
|
||||
chroot_setup
|
||||
extra_chroot_setup
|
||||
chroot_build_target
|
||||
${chroot_build_release_cmd}
|
||||
|
||||
return 0
|
||||
} # main()
|
||||
|
||||
main "${@}"
|
||||
|
137
release/tools/arm.subr
Normal file
137
release/tools/arm.subr
Normal file
@ -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
|
||||
}
|
@ -1,40 +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
|
||||
BEAGLEBONE_UBOOT=/tmp/external/u-boot-beaglebone
|
||||
|
||||
beaglebone_check_uboot() {
|
||||
mkdir -p "${BEAGLEBONE_UBOOT}"
|
||||
ln -fs /usr/local/share/u-boot/u-boot-beaglebone/MLO \
|
||||
${BEAGLEBONE_UBOOT}/MLO
|
||||
ln -fs /usr/local/share/u-boot/u-boot-beaglebone/u-boot.img \
|
||||
${BEAGLEBONE_UBOOT}/bb-uboot.img
|
||||
ln -fs ${BOARDDIR}/files/uEnv.txt \
|
||||
${BEAGLEBONE_UBOOT}/bb-uenv.txt
|
||||
}
|
@ -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
|
@ -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
|
@ -1,29 +0,0 @@
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
# This is the configuration file for use with crochet to produce
|
||||
# FreeBSD Raspberry Pi 2 images.
|
||||
|
||||
board_setup RaspberryPi2
|
||||
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=RPI2
|
||||
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
|
@ -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
|
@ -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
|
@ -1,28 +0,0 @@
|
||||
# Kernel configuration for Wandboard-Dual
|
||||
#
|
||||
# For more information on this file, please read the config(5) manual page,
|
||||
# and/or the handbook section on Kernel Configuration Files:
|
||||
#
|
||||
# http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html
|
||||
#
|
||||
# The handbook is also available locally in /usr/share/doc/handbook
|
||||
# if you've installed the doc distribution, otherwise always see the
|
||||
# FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the
|
||||
# latest information.
|
||||
#
|
||||
# An exhaustive list of options and more detailed explanations of the
|
||||
# device lines is also present in the ../../conf/NOTES and NOTES files.
|
||||
# If you are in doubt as to the purpose or necessity of a line, check first
|
||||
# in NOTES.
|
||||
#
|
||||
# $FreeBSD$
|
||||
|
||||
#NO_UNIVERSE
|
||||
|
||||
include "IMX6"
|
||||
ident WANDBOARD-DUAL
|
||||
|
||||
# Flattened Device Tree
|
||||
options FDT_DTB_STATIC
|
||||
makeoptions FDT_DTS_FILE=wandboard-dual.dts
|
||||
|
@ -1,28 +0,0 @@
|
||||
# Kernel configuration for Wandboard-Quad
|
||||
#
|
||||
# For more information on this file, please read the config(5) manual page,
|
||||
# and/or the handbook section on Kernel Configuration Files:
|
||||
#
|
||||
# http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html
|
||||
#
|
||||
# The handbook is also available locally in /usr/share/doc/handbook
|
||||
# if you've installed the doc distribution, otherwise always see the
|
||||
# FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the
|
||||
# latest information.
|
||||
#
|
||||
# An exhaustive list of options and more detailed explanations of the
|
||||
# device lines is also present in the ../../conf/NOTES and NOTES files.
|
||||
# If you are in doubt as to the purpose or necessity of a line, check first
|
||||
# in NOTES.
|
||||
#
|
||||
# $FreeBSD$
|
||||
|
||||
#NO_UNIVERSE
|
||||
|
||||
include "IMX6"
|
||||
ident WANDBOARD-QUAD
|
||||
|
||||
# Flattened Device Tree
|
||||
options FDT_DTB_STATIC
|
||||
makeoptions FDT_DTS_FILE=wandboard-quad.dts
|
||||
|
@ -1,28 +0,0 @@
|
||||
# Kernel configuration for Wandboard-Solo
|
||||
#
|
||||
# For more information on this file, please read the config(5) manual page,
|
||||
# and/or the handbook section on Kernel Configuration Files:
|
||||
#
|
||||
# http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html
|
||||
#
|
||||
# The handbook is also available locally in /usr/share/doc/handbook
|
||||
# if you've installed the doc distribution, otherwise always see the
|
||||
# FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the
|
||||
# latest information.
|
||||
#
|
||||
# An exhaustive list of options and more detailed explanations of the
|
||||
# device lines is also present in the ../../conf/NOTES and NOTES files.
|
||||
# If you are in doubt as to the purpose or necessity of a line, check first
|
||||
# in NOTES.
|
||||
#
|
||||
# $FreeBSD$
|
||||
|
||||
include "IMX6"
|
||||
ident WANDBOARD-SOLO
|
||||
|
||||
nooptions SMP
|
||||
|
||||
# Flattened Device Tree
|
||||
options FDT_DTB_STATIC
|
||||
makeoptions FDT_DTS_FILE=wandboard-solo.dts
|
||||
|
Loading…
Reference in New Issue
Block a user