Working aarch64 configs for 21.1 (#222)

This commit is contained in:
Christopher SHEN 2021-07-26 19:04:14 +08:00 committed by GitHub
parent a0e08bdccc
commit 91757dae56
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 160 additions and 54 deletions

View File

@ -81,7 +81,7 @@ ADDITIONS?= os-dyndns
DEVICE?= A10
COMSPEED?= 115200
COMPORT?= 0x3f8
UEFI?= dvd serial vga vm
UEFI?= dvd serial vga vm arm
GITBASE?= https://github.com/opnsense
MIRRORS?= https://opnsense.c0urier.net \
http://mirrors.nycbug.org/pub/opnsense \

View File

@ -32,7 +32,7 @@ SELF=arm
. ./common.sh
if [ ${PRODUCT_ARCH} != armv6 -a ${PRODUCT_ARCH} != aarch64 ]; then
if [ ${PRODUCT_ARCH} != armv6 -a ${PRODUCT_ARCH} != armv7 -a ${PRODUCT_ARCH} != aarch64 ]; then
echo ">>> Cannot build arm image with arch ${PRODUCT_ARCH}"
exit 1
fi
@ -56,7 +56,7 @@ truncate -s ${ARMSIZE} ${ARMIMG}
DEV=$(mdconfig -a -t vnode -f ${ARMIMG} -x 63 -y 255)
ARM_FAT_SIZE=${ARM_FAT_SIZE:-"50m"}
ARM_FAT_SIZE=${ARM_FAT_SIZE:-"50m -b 1m"}
gpart create -s MBR ${DEV}
gpart add -t '!12' -a 512k -s ${ARM_FAT_SIZE} ${DEV}
@ -98,10 +98,23 @@ arm_unmount()
umount ${STAGEDIR}
}
arm_install_efi()
{
DEV_EFI=$(mdconfig -a -t vnode -f ${STAGEDIR}/boot/boot1.efifat)
mount_msdosfs /dev/${DEV_EFI} ${STAGEDIR}/mnt
cp -r ${STAGEDIR}/mnt/efi ${STAGEDIR}/boot/msdos/efi
umount ${STAGEDIR}/mnt
mdconfig -d -u ${DEV_EFI}
}
echo -n ">>> Building arm image... "
arm_install_uboot
if [ -z "${PRODUCT_UEFI%%*"${SELF}"*}" ]; then
arm_install_efi
fi
arm_unmount
mdconfig -d -u ${DEV}

View File

@ -84,7 +84,7 @@ GPTDUMMY="-p freebsd-swap::512k"
SWAPARGS=
UEFIBOOT=
if [ ${PRODUCT_ARCH} = "amd64" -a -n "${PRODUCT_UEFI}" -a \
if [ ${PRODUCT_ARCH} = "amd64" -o ${PRODUCT_ARCH} = "aarch64" -a -n "${PRODUCT_UEFI}" -a \
-z "${PRODUCT_UEFI%%*"${SELF}"*}" ]; then
UEFIBOOT="-p efi:=${STAGEDIR}/boot/boot1.efifat"
fi
@ -107,8 +107,14 @@ mdconfig -d -u ${DEV}
echo -n ">>> Building vm image... "
mkimg -s gpt -f ${VMFORMAT} -o ${VMIMG} -b ${STAGEDIR}/boot/pmbr \
${UEFIBOOT} -p freebsd-boot/bootfs:=${STAGEDIR}/boot/gptboot \
${GPTDUMMY} -p freebsd-ufs/rootfs:=${VMBASE} ${SWAPARGS}
if [ ${PRODUCT_ARCH} = "aarch64" ]; then
mkimg -s gpt -f ${VMFORMAT} -o ${VMIMG} \
${UEFIBOOT} \
-p freebsd-ufs/rootfs:=${VMBASE} ${SWAPARGS}
else
mkimg -s gpt -f ${VMFORMAT} -o ${VMIMG} -b ${STAGEDIR}/boot/pmbr \
${UEFIBOOT} -p freebsd-boot/bootfs:=${STAGEDIR}/boot/gptboot \
${GPTDUMMY} -p freebsd-ufs/rootfs:=${VMBASE} ${SWAPARGS}
fi
echo "done"

View File

@ -1,6 +1,10 @@
include ALLWINNER
include GENERIC
ident SMP-BANANAPI
ident SMP-ARM
# Remove cloudabi device config
nodevice cloudabi32
nodevice cloudabi64
# Remove to build a debug kernel:
nomakeoptions DEBUG
@ -17,6 +21,9 @@ options MROUTING
options PPS_SYNC
options TCP_SIGNATURE
# XXX required for GEOM
device xz
# Wireless features
device wlan_acl
device wlan_xauth
@ -34,3 +41,24 @@ options PAX_CONTROL_ACL
options PAX_CONTROL_ACL_OVERRIDE_SUPPORT
options PAX_CONTROL_EXTATTR
options PAX_JAIL_SUPPORT
# Additional built-in devices
#device bwi
device bwn
#device rum
#device run
device u3g
device uark
#device uath
device ucom
device uftdi
device umct
device umodem
#device upgt
device uplcom
#device ural
#device urtw
device usb
device uvisor
device uvscom
#device zyd

View File

@ -1,36 +0,0 @@
include RPI2
ident SMP-RPI2
# Remove to build a debug kernel:
nomakeoptions DEBUG
options DDB
options GEOM_BDE
options GEOM_ELI
options GEOM_MIRROR
options GEOM_UZIP
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_VERBOSE
options IPSTEALTH
options MROUTING
options PPS_SYNC
options TCP_SIGNATURE
# Wireless features
device wlan_acl
device wlan_xauth
# Not all architectures have a consistent GENERIC
device netmap
# HardenedBSD goodies
options PAX
options PAX_ASLR
options PAX_HARDENING
options PAX_SEGVGUARD
options PAX_INSECURE_MODE
options PAX_CONTROL_ACL
options PAX_CONTROL_ACL_OVERRIDE_SUPPORT
options PAX_CONTROL_EXTATTR
options PAX_JAIL_SUPPORT

View File

@ -14,6 +14,34 @@ arm_hook()
{
loader_conf_fixup ${1}
cat > ${1}/tmp/arm.xml << EOF
<use_mfs_tmp/>
<use_mfs_var/>
<serialspeed>${PRODUCT_COMSPEED}</serialspeed>
<primaryconsole>video</primaryconsole>
<secondaryconsole>serial</secondaryconsole>
EOF
sed -i '' -e "/<system>/r ${1}/tmp/arm.xml" ${1}${CONFIG_XML}
rm ${1}/tmp/arm.xml
sed -i '' -e '/<rrd>/,/<\/rrd>/d' ${1}${CONFIG_XML}
echo "-S${PRODUCT_COMSPEED} -D" > ${1}/boot.config
cat >> ${1}/boot/loader.conf << EOF
beastie_disable="YES"
verbose_loading="YES"
comconsole_speed="${PRODUCT_COMSPEED}"
console="comconsole,vidconsole"
boot_multicons="YES"
boot_serial="YES"
usb_load="YES"
ugen_load="YES"
uhid_load="YES"
ukbd_load="YES"
umass_load="YES"
EOF
sed -I '' -e "/<tunable>hw\.uart\.console</{" -e \
"n;s/>default</></" -e "}" ${1}${CONFIG_XML}

11
device/ARM64-GENERIC.conf Normal file
View File

@ -0,0 +1,11 @@
# for generic ARM64 machine
# such as qemu & ESXi virtual machines
export MAKE_ARGS_DEV="
CROSS_BINUTILS_PREFIX=/usr/local/aarch64-unknown-freebsd${SRCREVISION}/bin
"
export PRODUCT_KERNEL=SMP-ARM
export PRODUCT_TARGET=arm64
export PRODUCT_ARCH=aarch64
export PRODUCT_WANTS="aarch64-binutils qemu-user-static"

View File

@ -3,15 +3,15 @@
# http://www.banana-pi.org/r1.html
export MAKE_ARGS_DEV="
CROSS_BINUTILS_PREFIX=/usr/local/arm-gnueabi-freebsd11.2/bin
CROSS_BINUTILS_PREFIX=/usr/local/arm-gnueabi-freebsd${SRCREVISION}/bin
UBLDR_LOADADDR=0x42000000
"
export PRODUCT_KERNEL=SMP-ARM
export PRODUCT_TARGET=arm
export PRODUCT_ARCH=armv6
export PRODUCT_WANTS="arm-gnueabi-binutils qemu-user-static u-boot-bananapi"
export PRODUCT_ARCH=armv7
export PRODUCT_WANTS="arm-none-eabi-binutils qemu-user-static u-boot-bananapi"
export ARM_FAT_SIZE="32m -b 1m"
export ARM_UBOOT_DIR="/usr/local/share/u-boot/u-boot-bananapi"
arm_install_uboot()
@ -21,5 +21,5 @@ arm_install_uboot()
arm_mount
cp ${ARM_UBOOT_DIR}/boot.scr ${STAGEDIR}/boot/msdos
cp -p ${STAGEDIR}/boot/ubldr.bin ${STAGEDIR}/boot/msdos
ln ${STAGEDIR}/boot/dtb/bananapi.dtb ${STAGEDIR}/boot/dtb/sun7i-a20-bananapi.dtb
cp -pr ${STAGEDIR}/boot/dtb ${STAGEDIR}/boot/msdos
}

23
device/CLEARFOG.conf Normal file
View File

@ -0,0 +1,23 @@
# https://www.solid-run.com/marvell-armada-family/clearfog/
export MAKE_ARGS_DEV="
CROSS_BINUTILS_PREFIX=/usr/local/arm-gnueabi-freebsd${SRCREVISION}/bin
UBLDR_LOADADDR=0x900000
"
export PRODUCT_KERNEL=SMP-ARM
export PRODUCT_TARGET=arm
export PRODUCT_ARCH=armv7
export PRODUCT_WANTS="arm-none-eabi-binutils qemu-user-static u-boot-clearfog"
export ARM_UBOOT_DIR="/usr/local/share/u-boot/u-boot-clearfog"
arm_install_uboot()
{
arm_unmount
dd if=${ARM_UBOOT_DIR}/u-boot-spl.kwb of=/dev/${DEV} bs=512 seek=1 conv=sync
arm_mount
cp ${ARM_UBOOT_DIR}/boot.scr ${STAGEDIR}/boot/msdos
cp -p ${STAGEDIR}/boot/ubldr.bin ${STAGEDIR}/boot/msdos
cp -pr ${STAGEDIR}/boot/dtb ${STAGEDIR}/boot/msdos
}

View File

@ -1,13 +1,14 @@
# https://www.raspberrypi.org/products/raspberry-pi-2-model-b/
export MAKE_ARGS_DEV="
CROSS_BINUTILS_PREFIX=/usr/local/arm-gnueabi-freebsd11.2/bin
CROSS_BINUTILS_PREFIX=/usr/local/arm-gnueabi-freebsd${SRCREVISION}/bin
UBLDR_LOADADDR=0x2000000
"
export PRODUCT_KERNEL=SMP-ARM
export PRODUCT_TARGET=arm
export PRODUCT_ARCH=armv6
export PRODUCT_WANTS="arm-gnueabi-binutils qemu-user-static rpi-firmware u-boot-rpi2"
export PRODUCT_ARCH=armv7
export PRODUCT_WANTS="arm-none-eabi-binutils qemu-user-static rpi-firmware u-boot-rpi2"
export ARM_FIRMWARE_DIR="/usr/local/share/rpi-firmware"
export ARM_UBOOT_DIR="/usr/local/share/u-boot/u-boot-rpi2"
@ -24,5 +25,5 @@ arm_install_uboot()
mkdir -p ${STAGEDIR}/boot/msdos/overlays
cp -p ${ARM_FIRMWARE_DIR}/overlays/mmc.dtbo ${STAGEDIR}/boot/msdos/overlays
cp -p ${STAGEDIR}/boot/ubldr.bin ${STAGEDIR}/boot/msdos/ubldr.bin
cp -p ${STAGEDIR}/boot/dtb/rpi2.dtb ${STAGEDIR}/boot/msdos/rpi2.dtb
cp -pr ${STAGEDIR}/boot/dtb ${STAGEDIR}/boot/msdos
}

32
device/RPI3.conf Normal file
View File

@ -0,0 +1,32 @@
# https://www.raspberrypi.org/products/raspberry-pi-3-model-b/
# https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus/
export MAKE_ARGS_DEV="
CROSS_BINUTILS_PREFIX=/usr/local/aarch64-unknown-freebsd${SRCREVISION}/bin
UBLDR_LOADADDR=0x42000000
"
export PRODUCT_KERNEL=SMP-ARM
export PRODUCT_TARGET=arm64
export PRODUCT_ARCH=aarch64
export PRODUCT_WANTS="aarch64-binutils qemu-user-static u-boot-rpi3 rpi-firmware"
export ARM_FIRMWARE_DIR="/usr/local/share/rpi-firmware"
export ARM_UBOOT_DIR="/usr/local/share/u-boot/u-boot-rpi3"
arm_install_uboot()
{
cp -p ${ARM_UBOOT_DIR}/README ${STAGEDIR}/boot/msdos
cp -p ${ARM_UBOOT_DIR}/u-boot.bin ${STAGEDIR}/boot/msdos
cp -p ${ARM_FIRMWARE_DIR}/armstub8*.bin ${STAGEDIR}/boot/msdos
cp -p ${ARM_FIRMWARE_DIR}/bootcode.bin ${STAGEDIR}/boot/msdos
cp -p ${ARM_FIRMWARE_DIR}/fixup* ${STAGEDIR}/boot/msdos
cp -p ${ARM_FIRMWARE_DIR}/LICENCE.broadcom ${STAGEDIR}/boot/msdos
cp -p ${ARM_FIRMWARE_DIR}/start* ${STAGEDIR}/boot/msdos
cp -p ${ARM_FIRMWARE_DIR}/config*.txt ${STAGEDIR}/boot/msdos
cp -p ${ARM_FIRMWARE_DIR}/bcm2710-rpi-3-b*.dtb ${STAGEDIR}/boot/msdos
cp -p ${ARM_FIRMWARE_DIR}/bcm2711-rpi-4*.dtb ${STAGEDIR}/boot/msdos
cp -p ${ARM_FIRMWARE_DIR}/bcm271*-rpi-cm*.dtb ${STAGEDIR}/boot/msdos
cp -pr ${ARM_FIRMWARE_DIR}/overlays ${STAGEDIR}/boot/msdos/overlays
cp -pr ${STAGEDIR}/boot/dtb ${STAGEDIR}/boot/msdos/dtb
}