os: build bootable images

This commit is contained in:
Alex Zenla
2024-03-10 00:22:24 +00:00
parent 817509bcef
commit 4894bd9d1c
28 changed files with 384 additions and 82 deletions

25
hack/dist/apk.sh vendored Executable file
View File

@ -0,0 +1,25 @@
#!/bin/sh
set -e
# shellcheck source-path=SCRIPTDIR source=common.sh
. "$(dirname "${0}")/common.sh"
export RUST_LIBC="musl"
KRATA_SYSTAR_OPENRC=1 "${KRATA_DIR}/hack/dist/systar.sh"
KRATA_VERSION="$("${KRATA_DIR}/hack/dist/version.sh")"
TARGET_ARCH="$("${KRATA_DIR}/hack/build/arch.sh")"
cd "${OUTPUT_DIR}"
rm -f "krata_${KRATA_VERSION}_${TARGET_ARCH}.apk"
fpm -s tar -t apk \
--name krata \
--license agpl3 \
--version "${KRATA_VERSION}" \
--architecture "${TARGET_ARCH}" \
--description "Krata Hypervisor" \
--url "https://krata.dev" \
--maintainer "Edera Team <contact@edera.dev>" \
"${OUTPUT_DIR}/system-openrc.tgz"

4
hack/dist/bundle.sh vendored
View File

@ -9,7 +9,7 @@ then
KRATA_KERNEL_BUILD_JOBS="2"
fi
BUNDLE_TAR="${OUTPUT_DIR}/bundle.tgz"
BUNDLE_TAR="${OUTPUT_DIR}/bundle-systemd.tgz"
rm -f "${BUNDLE_TAR}"
BUNDLE_DIR="$(mktemp -d /tmp/krata-bundle.XXXXXXXXXXXXX)"
BUNDLE_DIR="${BUNDLE_DIR}/krata"
@ -21,7 +21,7 @@ do
cp "${KRATA_DIR}/target/${RUST_TARGET}/release/${X}" "${BUNDLE_DIR}/${X}"
done
./hack/initrd/build.sh
if [ "${KRATA_BUNDLE_SKIP_KERNEL_BUILD}" != "1" ]
if [ "${KRATA_KERNEL_BUILD_SKIP}" != "1" ]
then
./hack/kernel/build.sh "-j${KRATA_KERNEL_BUILD_JOBS}"
fi

2
hack/dist/deb.sh vendored
View File

@ -27,4 +27,4 @@ fpm -s tar -t deb \
--deb-systemd "${KRATA_DIR}/resources/systemd/kratanet.service" \
--deb-systemd-enable \
--deb-systemd-auto-start \
"${OUTPUT_DIR}/system.tgz"
"${OUTPUT_DIR}/system-systemd.tgz"

23
hack/dist/systar.sh vendored
View File

@ -6,11 +6,17 @@ set -e
"${KRATA_DIR}/hack/dist/bundle.sh"
SYSTAR="${OUTPUT_DIR}/system.tgz"
SYSTAR_VARIANT="systemd"
if [ "${KRATA_SYSTAR_OPENRC}" = "1" ]
then
SYSTAR_VARIANT="openrc"
fi
SYSTAR="${OUTPUT_DIR}/system-${SYSTAR_VARIANT}.tgz"
rm -f "${SYSTAR}"
SYSTAR_DIR="$(mktemp -d /tmp/krata-systar.XXXXXXXXXXXXX)"
cd "${SYSTAR_DIR}"
tar xf "${OUTPUT_DIR}/bundle.tgz"
tar xf "${OUTPUT_DIR}/bundle-systemd.tgz"
mkdir sys
cd sys
@ -19,8 +25,17 @@ mkdir -p usr/bin usr/libexec
mv ../krata/kratactl usr/bin
mv ../krata/kratanet ../krata/kratad usr/libexec/
mkdir -p usr/lib/systemd/system
mv ../krata/kratad.service ../krata/kratanet.service usr/lib/systemd/system/
if [ "${SYSTAR_VARIANT}" = "openrc" ]
then
mkdir -p etc/init.d
cp "${KRATA_DIR}/resources/openrc/kratad" etc/init.d/kratad
cp "${KRATA_DIR}/resources/openrc/kratanet" etc/init.d/kratanet
chmod +x etc/init.d/kratad
chmod +x etc/init.d/kratanet
else
mkdir -p usr/lib/systemd/system
mv ../krata/kratad.service ../krata/kratanet.service usr/lib/systemd/system/
fi
mkdir -p usr/share/krata/guest
mv ../krata/kernel ../krata/initrd usr/share/krata/guest