diff --git a/release/kata-deploy-binaries.sh b/release/kata-deploy-binaries.sh index e08ab26dc3..7d994f8280 100755 --- a/release/kata-deploy-binaries.sh +++ b/release/kata-deploy-binaries.sh @@ -120,6 +120,14 @@ install_qemu() { tar xf kata-qemu-static.tar.gz -C "${destdir}" } +# Install static qemu-virtiofsd asset +install_qemu_virtiofsd() { + info "build static qemu-virtiofs" + "${script_dir}/../static-build/qemu-virtiofsd/build-static-qemu.sh" + info "Install static qemu-virtiofsd" + tar xf kata-qemu-static.tar.gz -C "${destdir}" +} + # Install static firecracker asset install_firecracker() { info "build static firecracker" @@ -210,6 +218,7 @@ main() { install_kata_components install_kernel install_qemu + install_qemu_virtiofsd install_nemu install_firecracker install_docker_config_script diff --git a/static-build/qemu-virtiofs/Dockerfile b/static-build/qemu-virtiofs/Dockerfile new file mode 100644 index 0000000000..e0a1f8c9c1 --- /dev/null +++ b/static-build/qemu-virtiofs/Dockerfile @@ -0,0 +1,48 @@ +from ubuntu:18.04 + +ARG QEMU_VIRTIOFS_REPO +# commit/tag/branch +ARG QEMU_VIRTIOFS_TAG +ARG PREFIX + +WORKDIR /root/qemu-virtiofs +RUN apt-get update && apt-get upgrade -y +RUN apt-get install -y \ + autoconf \ + automake \ + bc \ + bison \ + cpio \ + flex \ + gawk \ + libaudit-dev \ + libcap-dev \ + libcap-ng-dev \ + libdw-dev \ + libelf-dev \ + libglib2.0-0 \ + libglib2.0-dev \ + libglib2.0-dev git \ + libltdl-dev \ + libpixman-1-dev \ + libseccomp-dev \ + libtool \ + pkg-config \ + pkg-config \ + python \ + python-dev \ + rsync \ + seccomp \ + libseccomp2 \ + zlib1g-dev + +RUN cd .. && git clone "${QEMU_VIRTIOFS_REPO}" qemu-virtiofs +RUN git checkout "${QEMU_VIRTIOFS_TAG}" +ADD scripts/configure-hypervisor.sh /root/configure-hypervisor.sh +RUN PREFIX="${PREFIX}" /root/configure-hypervisor.sh -s kata-qemu | sed -e 's|--enable-rbd||g' -e 's|--disable-seccomp||g' | xargs ./configure \ + --with-pkgversion=kata-static +RUN make -j$(nproc) +RUN make -j$(nproc) virtiofsd +RUN make install DESTDIR=/tmp/qemu-virtiofs-static +RUN chmod +x virtiofsd && mv virtiofsd /tmp/qemu-virtiofs-static/opt/kata/bin/ +RUN cd /tmp/qemu-virtiofs-static && tar -czvf kata-qemu-static.tar.gz * diff --git a/static-build/qemu-virtiofs/Makefile b/static-build/qemu-virtiofs/Makefile new file mode 100644 index 0000000000..ab25f369d5 --- /dev/null +++ b/static-build/qemu-virtiofs/Makefile @@ -0,0 +1,7 @@ +MK_DIR :=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) +CONFIG_DIR := $(MK_DIR)/../../scripts/ + +build: + "$(MK_DIR)/build-static-qemu-virtiofs.sh" +clean: + rm -f kata-qemu-static.tar.gz diff --git a/static-build/qemu-virtiofs/build-static-qemu-virtiofs.sh b/static-build/qemu-virtiofs/build-static-qemu-virtiofs.sh new file mode 100755 index 0000000000..416b24e131 --- /dev/null +++ b/static-build/qemu-virtiofs/build-static-qemu-virtiofs.sh @@ -0,0 +1,48 @@ +#!/bin/bash +# +# Copyright (c) 2019 Intel Corporation +# +# SPDX-License-Identifier: Apache-2.0 + +set -o errexit +set -o nounset +set -o pipefail + +script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +source "${script_dir}/../../scripts/lib.sh" + +packaging_dir="${script_dir}/../.." +qemu_virtiofs_repo="https://gitlab.com/virtio-fs/qemu.git" +# This tag will be supported on the runtime versions.yaml +qemu_virtiofs_tag="virtio-fs-v0.3" +qemu_tar="kata-qemu-static.tar.gz" +qemu_tmp_tar="kata-qemu-static-tmp.tar.gz" + +info "Build ${qemu_virtiofs_repo} tag: ${qemu_virtiofs_tag}" + +http_proxy="${http_proxy:-}" +https_proxy="${https_proxy:-}" +prefix="${prefix:-"/opt/kata"}" + +sudo docker build \ + --no-cache \ + --build-arg http_proxy="${http_proxy}" \ + --build-arg https_proxy="${https_proxy}" \ + --build-arg QEMU_VIRTIOFS_REPO="${qemu_virtiofs_repo}" \ + --build-arg QEMU_VIRTIOFS_TAG="${qemu_virtiofs_tag}" \ + --build-arg PREFIX="${prefix}" \ + "${packaging_dir}" \ + -f "${script_dir}/Dockerfile" \ + -t qemu-virtiofs-static + +sudo docker run \ + -i \ + -v "${PWD}":/share qemu-virtiofs-static \ + mv "/tmp/qemu-virtiofs-static/${qemu_tar}" /share/ + +sudo chown ${USER}:${USER} "${PWD}/${qemu_tar}" + +# Remove blacklisted binaries +gzip -d < "${qemu_tar}" | tar --delete --wildcards -f - ${qemu_black_list[*]} | gzip > "${qemu_tmp_tar}" +mv -f "${qemu_tmp_tar}" "${qemu_tar}"