Path: blob/main/scripts/build/build-test_image-13.sh
1130 views
#!/bin/sh12SSL_CA_CERT_FILE=/usr/local/share/certs/ca-root-nss.crt34set -ex56if [ -z "${GIT_COMMIT}" ]; then7echo "No git commit id specified"8exit 19fi1011cleanup () {12# check mount point inside jail13P=${WORKSPACE}/work/ufs/dev14if [ `mount | grep ${P} | wc -l` -gt 0 ]; then15sudo umount ${P}16fi17}1819trap cleanup EXIT2021KERNCONF=${KERNCONF:-GENERIC}22ARTIFACT_SERVER=${ARTIFACT_SERVER:-artifact.ci.freebsd.org}23ARTIFACT_SUBDIR=snapshot/${FBSD_BRANCH}/${GIT_COMMIT}/${TARGET}/${TARGET_ARCH}24CONFIG_BASE=`dirname $0 | xargs realpath`/config-1325if [ "${KERNCONF}" = "GENERIC" ]; then26KERNEL=kernel27KERNEL_DBG=kernel-dbg28OUTPUT_IMG_NAME=disk-test.img29else30KERNEL=kernel-${KERNCONF}31KERNEL_DBG=kernel-dbg-${KERNCONF}32OUTPUT_IMG_NAME=disk-test-${KERNCONF}.img33fi3435sudo rm -fr work36mkdir -p work37cd work3839DIST_PACKAGES="base ${KERNEL}"40if [ "${WITH_DOC}" = 1 ]; then41DIST_PACKAGES="${DIST_PACKAGES} doc"42fi43if [ "${WITH_TESTS}" = 1 ]; then44DIST_PACKAGES="${DIST_PACKAGES} tests"45fi46if [ "${WITH_DEBUG}" = 1 ]; then47DIST_PACKAGES="${DIST_PACKAGES} base-dbg ${KERNEL_DBG}"48fi49if [ "${WITH_LIB32}" = 1 ]; then50DIST_PACKAGES="${DIST_PACKAGES} lib32"51if [ "${WITH_DEBUG}" = 1 ]; then52DIST_PACKAGES="${DIST_PACKAGES} lib32-dbg"53fi54fi55mkdir -p ufs56for f in ${DIST_PACKAGES}57do58fetch https://${ARTIFACT_SERVER}/${ARTIFACT_SUBDIR}/${f}.txz59sudo tar Jxf ${f}.txz -C ufs60done6162# Install packages in the target image. We can only do it63# if we can execute target architecture binaries.64if [ "${TARGET}" = "amd64" -o "${TARGET}" = "i386" ]; then65sudo cp /etc/resolv.conf ufs/etc/66sudo mount -t devfs devfs ufs/dev67sudo chroot ufs env ASSUME_ALWAYS_YES=yes pkg update68# Install packages needed by tests:69# coreutils: bin/date70# gdb: local/kyua/utils/stacktrace_test71# jq: sys/net/if_bridge_test72# kyua: everything73# ksh93: tests/sys/cddl/zfs/...74# nist-kat: sys/opencrypto/runtests75# nmap: sys/netinet/fibs_test:arpresolve_checks_interface_fib76# perl5: lots of stuff77# pkgconf: local/lutok/examples_test, local/atf/atf-c, local/atf/atf-c++78# porch: sys/kern/tty79# py-dpkt: sys/opencrypto/runtests80# python3: sys/opencrypto/runtests81# sg3_utils: sys/cam/ctl82# sudo: tests/sys/cddl/zfs/tests/delegate/...83# tcptestsuite: network stack test suite84sudo chroot ufs pkg install -y \85coreutils \86gdb \87jq \88ksh93 \89nist-kat \90nmap \91perl5 \92porch \93net/py-dpkt \94net/scapy \95python \96python3 \97sg3_utils \98sudo \99tcptestsuite100101if [ "${TARGET}" = "amd64" ]; then102sudo chroot ufs pkg install -Iy \103linux-c7-ltp || true104fi105106sudo umount ufs/dev107sudo rm -f ufs/etc/resolv.conf108fi109110# copy default configs, existing files will be override111sudo cp -Rf ${CONFIG_BASE}/testvm/override/ ufs/112113FROM=${CONFIG_BASE}/testvm/append/114TO=ufs115for i in `find ${FROM} -type f`116do117f=${i#${FROM}}118sudo mkdir -p ${TO}/`dirname $f`119cat ${FROM}$f | sudo tee -a ${TO}/$f > /dev/null120done121122if [ "${TARGET}" = "powerpc" ]; then123# XXX: Looks like powerpc64 cannot boot with GPT,124# and the default fstab specifies /dev/gpt/rootfs.125cat <<EOF | sudo tee ufs/etc/fstab126# Device Mountpoint FStype Options Dump Pass#127/dev/vtbd0s3 none swap sw 0 0128/dev/vtbd0s2 / ufs rw 1 1129fdesc /dev/fd fdescfs rw 0 0130EOF131fi132133case "${TARGET_ARCH}" in134mips|mips64|powerpc|powerpcspe|powerpc64)135B_FLAG="big"136;;137*)138B_FLAG="little"139;;140esac141142sudo dd if=/dev/random of=ufs/boot/entropy bs=4k count=1143sudo makefs -B ${B_FLAG} -d 6144 -t ffs -f 200000 -s 8g -o version=2,bsize=32768,fsize=4096 -Z ufs.img ufs144case "${TARGET}" in145arm64)146mkdir -p efi/EFI/BOOT147cp -f ufs/boot/loader_lua.efi efi/EFI/BOOT/bootaa64.efi148sudo makefs -d 6144 -t msdos -s 50m -Z efi.img efi149mkimg -s gpt -f raw \150-p efi:=efi.img \151-p freebsd-swap/swapfs::1G \152-p freebsd-ufs/rootfs:=ufs.img \153-o ${OUTPUT_IMG_NAME}154;;155arm)156mkdir -p efi/EFI/BOOT157cp -f ufs/boot/loader_lua.efi efi/EFI/BOOT/bootarm.efi158sudo makefs -d 6144 -t msdos -s 50m -Z efi.img efi159mkimg -s gpt -f raw \160-p efi:=efi.img \161-p freebsd-swap/swapfs::1G \162-p freebsd-ufs/rootfs:=ufs.img \163-o ${OUTPUT_IMG_NAME}164;;165mips)166mv ufs.img ${OUTPUT_IMG_NAME}167;;168powerpc)169# Note: BSD slices container is not working when cross created from amd64.170# As workaround, add UFS image directly on MBR partition #2171mkimg -a 1 -s mbr -f raw \172-p prepboot:=ufs/boot/boot1.elf \173-p freebsd:=ufs.img \174-p freebsd::1G \175-o ${OUTPUT_IMG_NAME}176;;177riscv)178mkdir -p efi/EFI/BOOT179cp -f ufs/boot/loader_lua.efi efi/EFI/BOOT/bootriscv64.efi180sudo makefs -d 6144 -t msdos -s 50m -Z efi.img efi181mkimg -s gpt -f raw \182-p efi:=efi.img \183-p freebsd-swap/swapfs::1G \184-p freebsd-ufs/rootfs:=ufs.img \185-o ${OUTPUT_IMG_NAME}186;;187*)188mkimg -s gpt -f raw \189-b ufs/boot/pmbr \190-p freebsd-boot/bootfs:=ufs/boot/gptboot \191-p freebsd-swap/swapfs::1G \192-p freebsd-ufs/rootfs:=ufs.img \193-o ${OUTPUT_IMG_NAME}194;;195esac196197zstd --rm ${OUTPUT_IMG_NAME}198199cd ${WORKSPACE}200rm -fr artifact201mkdir -p artifact/${ARTIFACT_SUBDIR}202mv work/${OUTPUT_IMG_NAME}.zst artifact/${ARTIFACT_SUBDIR}203204echo "USE_GIT_COMMIT=${GIT_COMMIT}" > ${WORKSPACE}/trigger.property205206207