mirror of
https://github.com/edera-dev/krata.git
synced 2025-08-03 13:11:31 +00:00
krata xen control-plane
This commit is contained in:
@ -1,54 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
checksum_sha256() {
|
||||
if type sha256sum > /dev/null 2>&1
|
||||
then
|
||||
sha256sum "${1}"
|
||||
else
|
||||
shasum -a 256 "${1}"
|
||||
fi
|
||||
}
|
||||
|
||||
asset() {
|
||||
cp "${1}" "${2}"
|
||||
PREVIOUS="${PWD}"
|
||||
cd "$(dirname "${2}")"
|
||||
BASE_FILE_NAME="$(basename "${2}")"
|
||||
checksum_sha256 "${BASE_FILE_NAME}" > "${BASE_FILE_NAME}.sha256"
|
||||
cd "${PREVIOUS}"
|
||||
}
|
||||
|
||||
FORM="${1}"
|
||||
shift
|
||||
TAG_NAME="${1}"
|
||||
shift
|
||||
PLATFORM="${1}"
|
||||
shift
|
||||
|
||||
mkdir -p target/assets
|
||||
|
||||
for SOURCE_FILE_PATH in "${@}"
|
||||
do
|
||||
if [ "${FORM}" = "kratactl" ]
|
||||
then
|
||||
SUFFIX=""
|
||||
if echo "${PLATFORM}" | grep "^windows-" > /dev/null
|
||||
then
|
||||
SUFFIX=".exe"
|
||||
fi
|
||||
asset "${SOURCE_FILE_PATH}" "target/assets/kratactl_${TAG_NAME}_${PLATFORM}${SUFFIX}"
|
||||
elif [ "${FORM}" = "debian" ]
|
||||
then
|
||||
asset "${SOURCE_FILE_PATH}" "target/assets/krata_${TAG_NAME}_${PLATFORM}.deb"
|
||||
elif [ "${FORM}" = "alpine" ]
|
||||
then
|
||||
asset "${SOURCE_FILE_PATH}" "target/assets/krata_${TAG_NAME}_${PLATFORM}.apk"
|
||||
elif [ "${FORM}" = "bundle-systemd" ]
|
||||
then
|
||||
asset "${SOURCE_FILE_PATH}" "target/assets/krata-systemd_${TAG_NAME}_${PLATFORM}.tgz"
|
||||
else
|
||||
echo "ERROR: Unknown form '${FORM}'"
|
||||
exit 1
|
||||
fi
|
||||
done
|
@ -1,5 +1,4 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
brew install protobuf
|
||||
brew upgrade rustup || true
|
||||
|
@ -2,9 +2,8 @@
|
||||
set -e
|
||||
|
||||
CROSS_RS_REV="7b79041c9278769eca57fae10c74741f5aa5c14b"
|
||||
FPM_VERSION="1.15.1"
|
||||
|
||||
PACKAGES=(build-essential musl-dev protobuf-compiler musl-tools)
|
||||
PACKAGES=(build-essential musl-dev musl-tools)
|
||||
|
||||
sudo apt-get update
|
||||
|
||||
@ -21,8 +20,3 @@ if [ "${CROSS_COMPILE}" = "1" ]
|
||||
then
|
||||
cargo install cross --git "https://github.com/cross-rs/cross.git" --rev "${CROSS_RS_REV}"
|
||||
fi
|
||||
|
||||
if [ "${CI_NEEDS_FPM}" = "1" ]
|
||||
then
|
||||
sudo gem install --no-document fpm -v "${FPM_VERSION}"
|
||||
fi
|
||||
|
@ -1,4 +1,2 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
choco install protoc
|
||||
|
@ -1,22 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
retry() {
|
||||
for i in $(seq 1 10)
|
||||
do
|
||||
if "${@}"
|
||||
then
|
||||
return 0
|
||||
else
|
||||
sleep "${i}"
|
||||
fi
|
||||
done
|
||||
"${@}"
|
||||
}
|
||||
|
||||
TAG="${1}"
|
||||
shift
|
||||
|
||||
cd target/assets
|
||||
|
||||
retry gh release upload "${TAG}" --clobber ./*
|
@ -1,32 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
REAL_SCRIPT="$(realpath "${0}")"
|
||||
cd "$(dirname "${REAL_SCRIPT}")/../.."
|
||||
|
||||
if [ -z "${RUST_LOG}" ]
|
||||
then
|
||||
RUST_LOG="INFO"
|
||||
fi
|
||||
|
||||
CARGO_BUILD_FLAGS=""
|
||||
|
||||
if [ "${KRATA_BUILD_QUIET}" = "1" ]
|
||||
then
|
||||
CARGO_BUILD_FLAGS="-q"
|
||||
fi
|
||||
|
||||
build_and_run() {
|
||||
EXE_TARGET="${1}"
|
||||
shift
|
||||
sudo mkdir -p /var/lib/krata/zone
|
||||
if [ "${KRATA_BUILD_INITRD}" = "1" ]
|
||||
then
|
||||
TARGET_ARCH="$(./hack/build/arch.sh)"
|
||||
./hack/initrd/build.sh ${CARGO_BUILD_FLAGS}
|
||||
sudo cp "target/initrd/initrd-${TARGET_ARCH}" "/var/lib/krata/zone/initrd"
|
||||
fi
|
||||
RUST_TARGET="$(./hack/build/target.sh)"
|
||||
./hack/build/cargo.sh build ${CARGO_BUILD_FLAGS} --bin "${EXE_TARGET}"
|
||||
exec sudo -E sh -c "RUST_LOG='${RUST_LOG}' 'target/${RUST_TARGET}/debug/${EXE_TARGET}' $*"
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
REAL_SCRIPT="$(realpath "${0}")"
|
||||
DEBUG_DIR="$(dirname "${REAL_SCRIPT}")"
|
||||
# shellcheck source-path=SCRIPTDIR source=common.sh
|
||||
. "${DEBUG_DIR}/common.sh"
|
||||
|
||||
build_and_run kratactl "${@}"
|
@ -1,9 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
REAL_SCRIPT="$(realpath "${0}")"
|
||||
DEBUG_DIR="$(dirname "${REAL_SCRIPT}")"
|
||||
# shellcheck source-path=SCRIPTDIR source=common.sh
|
||||
. "${DEBUG_DIR}/common.sh"
|
||||
|
||||
KRATA_BUILD_INITRD=1 build_and_run kratad "${@}"
|
@ -1,9 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
REAL_SCRIPT="$(realpath "${0}")"
|
||||
DEBUG_DIR="$(dirname "${REAL_SCRIPT}")"
|
||||
# shellcheck source-path=SCRIPTDIR source=common.sh
|
||||
. "${DEBUG_DIR}/common.sh"
|
||||
|
||||
build_and_run kratanet "${@}"
|
@ -1,14 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
stop_service_if_running() {
|
||||
if sudo systemctl is-active "${1}" > /dev/null 2>&1
|
||||
then
|
||||
sudo systemctl stop "${1}"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
stop_service_if_running "kratad.service"
|
||||
stop_service_if_running "kratanet.service"
|
||||
tmuxp load "$(dirname "${0}")/session.yml"
|
@ -1,11 +0,0 @@
|
||||
session_name: krata-dev
|
||||
start_directory: ../..
|
||||
sleep_after: 3
|
||||
windows:
|
||||
- window_name: live
|
||||
layout: tiled
|
||||
panes:
|
||||
- shell_command: ./hack/debug/kratad.sh
|
||||
- shell_command: ./hack/debug/kratanet.sh
|
||||
- focus: true
|
||||
shell_command: "alias kratactl=./hack/debug/kratactl.sh"
|
27
hack/dist/apk.sh
vendored
27
hack/dist/apk.sh
vendored
@ -1,27 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
# shellcheck source-path=SCRIPTDIR source=common.sh
|
||||
. "$(dirname "${0}")/common.sh"
|
||||
|
||||
export TARGET_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}" \
|
||||
--depends "squashfs-tools" \
|
||||
--depends "erofs-utils" \
|
||||
--description "Krata Isolation Engine" \
|
||||
--url "https://krata.dev" \
|
||||
--maintainer "Edera Team <contact@edera.dev>" \
|
||||
"${OUTPUT_DIR}/system-openrc-${TARGET_ARCH}.tgz"
|
42
hack/dist/bundle.sh
vendored
42
hack/dist/bundle.sh
vendored
@ -1,42 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
# shellcheck source-path=SCRIPTDIR source=common.sh
|
||||
. "$(dirname "${0}")/common.sh"
|
||||
|
||||
TARGET_ARCH="$("${KRATA_DIR}/hack/build/arch.sh")"
|
||||
BUNDLE_TAR="${OUTPUT_DIR}/bundle-systemd-${TARGET_ARCH}.tgz"
|
||||
rm -f "${BUNDLE_TAR}"
|
||||
BUNDLE_DIR="$(mktemp -d /tmp/krata-bundle.XXXXXXXXXXXXX)"
|
||||
BUNDLE_DIR="${BUNDLE_DIR}/krata"
|
||||
mkdir -p "${BUNDLE_DIR}"
|
||||
|
||||
./hack/build/cargo.sh build --release --bin kratad --bin kratanet --bin kratactl
|
||||
|
||||
RUST_TARGET="$(./hack/build/target.sh)"
|
||||
for X in kratad kratanet kratactl
|
||||
do
|
||||
cp "${KRATA_DIR}/target/${RUST_TARGET}/release/${X}" "${BUNDLE_DIR}/${X}"
|
||||
done
|
||||
./hack/initrd/build.sh
|
||||
./hack/kernel/fetch.sh
|
||||
|
||||
cd "${BUNDLE_DIR}"
|
||||
|
||||
cp "${KRATA_DIR}/target/initrd/initrd-${TARGET_ARCH}" initrd
|
||||
cp "${KRATA_DIR}/target/kernel/kernel-${TARGET_ARCH}" kernel
|
||||
cp "${KRATA_DIR}/target/kernel/addons-${TARGET_ARCH}.squashfs" addons.squashfs
|
||||
cp "${KRATA_DIR}/resources/systemd/kratad.service" kratad.service
|
||||
cp "${KRATA_DIR}/resources/systemd/kratanet.service" kratanet.service
|
||||
cp "${KRATA_DIR}/resources/bundle/install.sh" install.sh
|
||||
cp "${KRATA_DIR}/resources/bundle/uninstall.sh" uninstall.sh
|
||||
|
||||
for X in install.sh uninstall.sh kratactl kratad kratanet
|
||||
do
|
||||
chmod +x "${X}"
|
||||
done
|
||||
|
||||
cd ..
|
||||
tar czf "${BUNDLE_TAR}" .
|
||||
cd "${KRATA_DIR}"
|
||||
rm -rf "$(dirname "${BUNDLE_DIR}")"
|
33
hack/dist/deb.sh
vendored
33
hack/dist/deb.sh
vendored
@ -1,33 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
# shellcheck source-path=SCRIPTDIR source=common.sh
|
||||
. "$(dirname "${0}")/common.sh"
|
||||
|
||||
"${KRATA_DIR}/hack/dist/systar.sh"
|
||||
|
||||
KRATA_VERSION="$("${KRATA_DIR}/hack/dist/version.sh")"
|
||||
TARGET_ARCH_STANDARD="$(KRATA_ARCH_ALT_NAME=0 "${KRATA_DIR}/hack/build/arch.sh")"
|
||||
TARGET_ARCH_DEBIAN="$(KRATA_ARCH_ALT_NAME=1 "${KRATA_DIR}/hack/build/arch.sh")"
|
||||
|
||||
cd "${OUTPUT_DIR}"
|
||||
|
||||
rm -f "krata_${KRATA_VERSION}_${TARGET_ARCH_DEBIAN}.deb"
|
||||
|
||||
fpm -s tar -t deb \
|
||||
--name krata \
|
||||
--license agpl3 \
|
||||
--version "${KRATA_VERSION}" \
|
||||
--architecture "${TARGET_ARCH_DEBIAN}" \
|
||||
--depends "xen-system-${TARGET_ARCH_DEBIAN}" \
|
||||
--depends "squashfs-tools" \
|
||||
--depends "erofs-utils" \
|
||||
--description "Krata Isolation Engine" \
|
||||
--url "https://krata.dev" \
|
||||
--maintainer "Edera Team <contact@edera.dev>" \
|
||||
-x "usr/lib/**" \
|
||||
--deb-systemd "${KRATA_DIR}/resources/systemd/kratad.service" \
|
||||
--deb-systemd "${KRATA_DIR}/resources/systemd/kratanet.service" \
|
||||
--deb-systemd-enable \
|
||||
--deb-systemd-auto-start \
|
||||
"${OUTPUT_DIR}/system-systemd-${TARGET_ARCH_STANDARD}.tgz"
|
48
hack/dist/systar.sh
vendored
48
hack/dist/systar.sh
vendored
@ -1,48 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
# shellcheck source-path=SCRIPTDIR source=common.sh
|
||||
. "$(dirname "${0}")/common.sh"
|
||||
|
||||
"${KRATA_DIR}/hack/dist/bundle.sh"
|
||||
|
||||
SYSTAR_VARIANT="systemd"
|
||||
if [ "${KRATA_SYSTAR_OPENRC}" = "1" ]
|
||||
then
|
||||
SYSTAR_VARIANT="openrc"
|
||||
fi
|
||||
|
||||
TARGET_ARCH="$("${KRATA_DIR}/hack/build/arch.sh")"
|
||||
SYSTAR="${OUTPUT_DIR}/system-${SYSTAR_VARIANT}-${TARGET_ARCH}.tgz"
|
||||
rm -f "${SYSTAR}"
|
||||
SYSTAR_DIR="$(mktemp -d /tmp/krata-systar.XXXXXXXXXXXXX)"
|
||||
cd "${SYSTAR_DIR}"
|
||||
tar xf "${OUTPUT_DIR}/bundle-systemd-${TARGET_ARCH}.tgz"
|
||||
|
||||
mkdir sys
|
||||
cd sys
|
||||
|
||||
mkdir -p usr/bin usr/sbin
|
||||
mv ../krata/kratactl usr/bin
|
||||
mv ../krata/kratanet ../krata/kratad usr/sbin/
|
||||
|
||||
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/zone
|
||||
mv ../krata/kernel ../krata/initrd usr/share/krata/zone
|
||||
mv ../krata/addons.squashfs usr/share/krata/zone/addons.squashfs
|
||||
|
||||
tar czf "${SYSTAR}" --owner 0 --group 0 .
|
||||
|
||||
cd "${KRATA_DIR}"
|
||||
rm -rf "${SYSTAR_DIR}"
|
@ -1,22 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
REAL_SCRIPT="$(realpath "${0}")"
|
||||
cd "$(dirname "${REAL_SCRIPT}")/../.."
|
||||
KRATA_DIR="${PWD}"
|
||||
cd "${KRATA_DIR}"
|
||||
|
||||
TARGET_ARCH="$(./hack/build/arch.sh)"
|
||||
|
||||
export TARGET_LIBC="musl"
|
||||
RUST_TARGET="$(./hack/build/target.sh)"
|
||||
export RUSTFLAGS="-Ctarget-feature=+crt-static"
|
||||
|
||||
./hack/build/cargo.sh build "${@}" --release --bin krata-zone
|
||||
INITRD_DIR="$(mktemp -d /tmp/krata-initrd.XXXXXXXXXXXXX)"
|
||||
cp "target/${RUST_TARGET}/release/krata-zone" "${INITRD_DIR}/init"
|
||||
chmod +x "${INITRD_DIR}/init"
|
||||
cd "${INITRD_DIR}"
|
||||
mkdir -p "${KRATA_DIR}/target/initrd"
|
||||
find . | cpio -R 0:0 --ignore-devno --renumber-inodes -o -H newc --quiet > "${KRATA_DIR}/target/initrd/initrd-${TARGET_ARCH}"
|
||||
rm -rf "${INITRD_DIR}"
|
@ -1,19 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
REAL_SCRIPT="$(realpath "${0}")"
|
||||
cd "$(dirname "${REAL_SCRIPT}")/../.."
|
||||
KRATA_DIR="${PWD}"
|
||||
cd "${KRATA_DIR}"
|
||||
|
||||
HOST_RUST_TARGET="$(TARGET_ARCH="" TARGET_LIBC="" ./hack/build/target.sh)"
|
||||
TARGET_ARCH="$(./hack/build/arch.sh)"
|
||||
|
||||
if [ "${1}" != "-u" ] && [ -f "target/kernel/kernel-${TARGET_ARCH}" ]
|
||||
then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
export TARGET_ARCH
|
||||
TARGET_ARCH="" TARGET_LIBC="" RUST_TARGET="${HOST_RUST_TARGET}" ./hack/build/cargo.sh build -q --bin build-fetch-kernel
|
||||
exec "target/${HOST_RUST_TARGET}/debug/build-fetch-kernel" "ghcr.io/edera-dev/linux-kernel:latest"
|
Reference in New Issue
Block a user