Update occlum new/init/build for grpc_ratls init
This commit is contained in:
parent
435ae8b68d
commit
a096d176c9
124
tools/occlum
124
tools/occlum
@ -56,11 +56,13 @@ report_arg_error() {
|
||||
echo ""
|
||||
cat <<EOF
|
||||
Usage:
|
||||
occlum new <path>
|
||||
occlum new <path> [--init-ra <grpc_ratls/aecs>]
|
||||
Create a new directory at <path> and initialize as the Occlum instance.
|
||||
If flag --init-ra specifies, generate initfs with RA KMS client function.
|
||||
|
||||
occlum init
|
||||
occlum init [--init-ra <grpc_ratls/aecs>]
|
||||
Initialize a directory as the Occlum instance.
|
||||
If flag --init-ra specifies, generate initfs with RA KMS client function.
|
||||
|
||||
occlum build [--sign-key <key_path>] [--sign-tool <tool_path>] [--image-key <key_path>] [--buildin-image-key] [-f/--force]
|
||||
Build and sign an Occlum SGX enclave (.so) and generate its associated secure
|
||||
@ -158,15 +160,79 @@ check_aesm_service() {
|
||||
exit 1
|
||||
}
|
||||
|
||||
gen_initfs_grpc_ratls()
|
||||
{
|
||||
echo "Generate initfs with GRPC RATLS KMS client"
|
||||
mkdir -p initfs
|
||||
mkdir -p initfs/bin
|
||||
mkdir -p initfs/lib
|
||||
mkdir -p initfs/dev
|
||||
mkdir -p initfs/proc
|
||||
mkdir -p initfs/etc
|
||||
# add default timezone file
|
||||
cp /etc/localtime initfs/etc/
|
||||
# add ssl ca-certificates
|
||||
mkdir -p initfs/etc/ssl/certs
|
||||
cp /etc/ssl/certs/ca-certificates.crt initfs/etc/ssl/certs
|
||||
|
||||
# add musl
|
||||
local occlum_musl_lib=/usr/local/occlum/x86_64-linux-musl/lib
|
||||
cp -t initfs/lib \
|
||||
/lib/ld-musl-x86_64.so.1 \
|
||||
"$occlum_musl_lib/libc.so" \
|
||||
"$occlum_musl_lib/libstdc++.so.6" \
|
||||
"$occlum_musl_lib/libgcc_s.so.1" \
|
||||
"$occlum_musl_lib/libgomp.so.1"
|
||||
|
||||
# add grpc_ratls required libs
|
||||
cp -t initfs/lib \
|
||||
"$occlum_dir"/toolchains/grpc_ratls/musl/libgrpc_ratls_client.so \
|
||||
"$occlum_dir"/toolchains/grpc_ratls/musl/libhw_grpc_proto.so \
|
||||
"$occlum_dir"/toolchains/dcap_lib/musl/libocclum_dcap.so.0.1.0 \
|
||||
"$occlum_dir"/toolchains/gcc/x86_64-linux-musl/lib/libcjson.so.1
|
||||
|
||||
# add template init_ra_conf
|
||||
cp "$occlum_dir"/etc/template/init_grpc_ratls.json "$instance_dir"/init_ra_conf.json
|
||||
|
||||
cp "$occlum_dir"/build/bin/init_grpc_ratls initfs/bin/init
|
||||
cp "$occlum_dir"/etc/template/Occlum.json "$instance_dir"/
|
||||
}
|
||||
|
||||
gen_initfs()
|
||||
{
|
||||
mkdir -p initfs
|
||||
mkdir -p initfs/bin
|
||||
mkdir -p initfs/lib
|
||||
mkdir -p initfs/dev
|
||||
mkdir -p initfs/proc
|
||||
mkdir -p initfs/etc
|
||||
# add default /etc/hosts
|
||||
echo "127.0.0.1 localhost" > initfs/etc/hosts
|
||||
# add default timezone file
|
||||
cp /etc/localtime initfs/etc/
|
||||
|
||||
# add musl
|
||||
local occlum_musl_lib=/usr/local/occlum/x86_64-linux-musl/lib
|
||||
cp -t initfs/lib \
|
||||
/lib/ld-musl-x86_64.so.1 \
|
||||
"$occlum_musl_lib/libc.so" \
|
||||
"$occlum_musl_lib/libstdc++.so.6" \
|
||||
"$occlum_musl_lib/libgcc_s.so.1" \
|
||||
"$occlum_musl_lib/libgomp.so.1"
|
||||
|
||||
cp "$occlum_dir"/build/bin/init initfs/bin/
|
||||
cp "$occlum_dir"/etc/template/Occlum.json "$instance_dir"/
|
||||
}
|
||||
|
||||
cmd_new() {
|
||||
if [ -z $@ ]; then
|
||||
if [ -z $1 ]; then
|
||||
echo "Error: target directory is not set"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
dir_path="$@"
|
||||
dir_path="$1"
|
||||
if [[ "$dir_path" != "/"* ]]; then
|
||||
dir_path="$instance_dir/$@"
|
||||
dir_path="$instance_dir/$1"
|
||||
fi
|
||||
|
||||
if [[ -e "$dir_path" ]]; then
|
||||
@ -177,7 +243,7 @@ cmd_new() {
|
||||
mkdir -p $dir_path
|
||||
instance_dir=$dir_path
|
||||
status_file=$instance_dir/.__occlum_status
|
||||
cd $dir_path && cmd_init
|
||||
cd $dir_path && cmd_init ${@:2:2}
|
||||
}
|
||||
|
||||
cmd_init() {
|
||||
@ -186,6 +252,14 @@ cmd_init() {
|
||||
exit 1
|
||||
fi
|
||||
|
||||
local init_ra=""
|
||||
while [ -n "$1" ]; do
|
||||
case "$1" in
|
||||
--init-ra) [ -n "$2" ] && init_ra=$2 ; shift 2 || exit_error "Empty init-ra option provided" ;;
|
||||
*) ;;
|
||||
esac
|
||||
done
|
||||
|
||||
echo "initialized" > $status_file
|
||||
|
||||
cd "$instance_dir"
|
||||
@ -242,29 +316,15 @@ cmd_init() {
|
||||
/etc/localtime
|
||||
fi
|
||||
|
||||
mkdir -p initfs
|
||||
mkdir -p initfs/bin
|
||||
mkdir -p initfs/lib
|
||||
mkdir -p initfs/dev
|
||||
mkdir -p initfs/proc
|
||||
mkdir -p initfs/etc
|
||||
# add default /etc/hosts
|
||||
echo "127.0.0.1 localhost" > initfs/etc/hosts
|
||||
# add default timezone file
|
||||
cp /etc/localtime initfs/etc/
|
||||
if [[ "$init_ra" == "grpc_ratls" ]]; then
|
||||
gen_initfs_grpc_ratls
|
||||
elif [[ "$init_ra" == "aecs" ]]; then
|
||||
echo "Error: do not support AECS yet"
|
||||
exit 1
|
||||
else
|
||||
gen_initfs
|
||||
fi
|
||||
|
||||
# add musl
|
||||
local occlum_musl_lib=/usr/local/occlum/x86_64-linux-musl/lib
|
||||
cp -t initfs/lib \
|
||||
/lib/ld-musl-x86_64.so.1 \
|
||||
"$occlum_musl_lib/libc.so" \
|
||||
"$occlum_musl_lib/libstdc++.so.6" \
|
||||
"$occlum_musl_lib/libgcc_s.so.1" \
|
||||
"$occlum_musl_lib/libgomp.so.1"
|
||||
|
||||
cp "$occlum_dir"/build/bin/init initfs/bin/
|
||||
|
||||
cp "$occlum_dir"/etc/template/Occlum.json "$instance_dir"/
|
||||
chmod 644 "$instance_dir"/Occlum.json
|
||||
|
||||
echo "$instance_dir initialized as an Occlum instance"
|
||||
@ -311,6 +371,10 @@ cmd_build() {
|
||||
echo "SGX mode: HW"
|
||||
fi
|
||||
|
||||
if [[ -f "$instance_dir/init_ra_conf.json" ]]; then
|
||||
cp "$instance_dir/init_ra_conf.json" "$instance_dir/initfs/etc/"
|
||||
fi
|
||||
|
||||
# If sgx mode is changed, build thoroughly again
|
||||
if [[ -n $SGX_MODE && "$SGX_MODE" != "HW" ]]; then
|
||||
if [ "$(cat $instance_dir/.sgx_mode 2>/dev/null)" != "$SGX_MODE" ]; then
|
||||
@ -667,10 +731,10 @@ fi
|
||||
cmd=$1
|
||||
case "$cmd" in
|
||||
new)
|
||||
cmd_new "${@:2:1}"
|
||||
cmd_new "${@:2}"
|
||||
;;
|
||||
init)
|
||||
cmd_init
|
||||
cmd_init "${@:2}"
|
||||
;;
|
||||
build)
|
||||
cmd_build "${@:2}"
|
||||
|
Loading…
Reference in New Issue
Block a user