Add symbolic file support for FISH demo
This commit is contained in:
parent
bddb87a11b
commit
9ce23a8c08
@ -1,12 +1,18 @@
|
|||||||
{
|
{
|
||||||
"vm": {
|
"resource_limits": {
|
||||||
"user_space_size": "512MB"
|
"user_space_size": "512MB",
|
||||||
|
"kernel_space_heap_size": "32MB",
|
||||||
|
"kernel_space_stack_size": "1MB",
|
||||||
|
"max_num_of_threads": 32
|
||||||
},
|
},
|
||||||
"process": {
|
"process": {
|
||||||
"default_stack_size": "4MB",
|
"default_stack_size": "4MB",
|
||||||
"default_heap_size": "32MB",
|
"default_heap_size": "32MB",
|
||||||
"default_mmap_size": "80MB"
|
"default_mmap_size": "80MB"
|
||||||
},
|
},
|
||||||
|
"entry_points": [
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
"env": {
|
"env": {
|
||||||
"default": [
|
"default": [
|
||||||
"OCCLUM=yes",
|
"OCCLUM=yes",
|
||||||
@ -15,9 +21,11 @@
|
|||||||
"untrusted": [
|
"untrusted": [
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"entry_points": [
|
"metadata": {
|
||||||
"/bin"
|
"product_id": 0,
|
||||||
],
|
"version_number": 0,
|
||||||
|
"debuggable": true
|
||||||
|
},
|
||||||
"mount": [
|
"mount": [
|
||||||
{
|
{
|
||||||
"target": "/",
|
"target": "/",
|
||||||
|
@ -11,12 +11,15 @@ for most of the utilities you usually find in GNU fileutils, shellutils, etc.
|
|||||||
|
|
||||||
This shell script contains executable binaries, pipe symbols and output redirection like this:
|
This shell script contains executable binaries, pipe symbols and output redirection like this:
|
||||||
```
|
```
|
||||||
busybox echo "Hello-world-from-fish" | busybox awk '$1=$1' FS="-" OFS=" " > /root/output.txt
|
command echo "Hello-world-from-fish" | awk '$1=$1' FS="-" OFS=" " > /root/output.txt
|
||||||
|
cat /root/output.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
which is defined in `fish_script.sh`. `awk` will replace `-` to `space` and should output result
|
which is defined in `fish_script.sh`. `awk` will replace `-` to `space` and should output result
|
||||||
string `Hello world from fish` and store in `/root/output.txt` of Occlum SEFS and can only be read
|
string `Hello world from fish` and store in `/root/output.txt` of Occlum SEFS and can only be read
|
||||||
inside Occlum.
|
inside Occlum. `echo`, `awk`, `cat` here are actually symbolic files linked to busybox and in this way, we don't need
|
||||||
|
to write `busybox` prefix. The `command` keyword tells FISH that `echo` is an external command because FISH also provides
|
||||||
|
builtin `echo` command.
|
||||||
|
|
||||||
## Step 1:
|
## Step 1:
|
||||||
Downlaod FISH and busybox and build them with Occlum tool chain:
|
Downlaod FISH and busybox and build them with Occlum tool chain:
|
||||||
@ -25,26 +28,13 @@ Downlaod FISH and busybox and build them with Occlum tool chain:
|
|||||||
```
|
```
|
||||||
|
|
||||||
## Step 2:
|
## Step 2:
|
||||||
Prepare environment by running:
|
Run command to prepare context and execute script:
|
||||||
```
|
```
|
||||||
./env_setup.sh
|
./run_fish_test.sh
|
||||||
```
|
```
|
||||||
|
Or if this demo is running on non-SGX platform, use:
|
||||||
If user wants to run this demo on non-SGX platform, run command:
|
|
||||||
```
|
```
|
||||||
SGX_MODE=SIM ./env_setup.sh
|
SGX_MODE=SIM ./run_fish_test.sh
|
||||||
```
|
|
||||||
|
|
||||||
## Step 3:
|
|
||||||
Run command to execute script:
|
|
||||||
```
|
|
||||||
cd occlum-context && occlum run /bin/fish /fish_script.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
## Step 4:
|
|
||||||
Go to `occlum-context` and check result by running:
|
|
||||||
```
|
|
||||||
occlum run /bin/busybox cat /root/output.txt
|
|
||||||
```
|
```
|
||||||
|
|
||||||
And you should see `Hello world from fish`.
|
And you should see `Hello world from fish`.
|
||||||
|
@ -6,7 +6,7 @@ git clone -b v6.1 --depth 1 https://github.com/mirror/ncurses.git
|
|||||||
cd ncurses
|
cd ncurses
|
||||||
CC=occlum-gcc CXX=occlum-g++ CFLAGS="-O2 -fPIC" CXXFLAGS="-O2 -fPIC" LDFLAGS="-pie" \
|
CC=occlum-gcc CXX=occlum-g++ CFLAGS="-O2 -fPIC" CXXFLAGS="-O2 -fPIC" LDFLAGS="-pie" \
|
||||||
./configure --without-shared --without-cxx-shared --prefix=/usr/local/occlum --enable-overwrite
|
./configure --without-shared --without-cxx-shared --prefix=/usr/local/occlum --enable-overwrite
|
||||||
make && make install
|
make -j$(nproc) && make install
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
# download and build FISH
|
# download and build FISH
|
||||||
@ -22,7 +22,7 @@ cmake ../ -DCMAKE_BUILD_TYPE=Debug -DCURSES_LIBRARY=/opt/occlum/toolchains/gcc/
|
|||||||
-DCMAKE_C_COMPILER_RANLIB=/usr/local/occlum/bin/occlum-ranlib \
|
-DCMAKE_C_COMPILER_RANLIB=/usr/local/occlum/bin/occlum-ranlib \
|
||||||
-DCMAKE_LINKER=/usr/local/occlum/bin/occlum-ld -DCMAKE_C_FLAGS="-I/usr/local/occlum/include -fpic -pie" \
|
-DCMAKE_LINKER=/usr/local/occlum/bin/occlum-ld -DCMAKE_C_FLAGS="-I/usr/local/occlum/include -fpic -pie" \
|
||||||
-DCMAKE_CXX_FLAGS="-I/usr/local/occlum/include -fpic -pie"
|
-DCMAKE_CXX_FLAGS="-I/usr/local/occlum/include -fpic -pie"
|
||||||
make
|
make -j$(nproc)
|
||||||
cd ../../
|
cd ../../
|
||||||
|
|
||||||
# download and build busybox
|
# download and build busybox
|
||||||
@ -31,4 +31,4 @@ cd busybox
|
|||||||
CROSS_COMPILE=/opt/occlum/toolchains/gcc/bin/occlum-
|
CROSS_COMPILE=/opt/occlum/toolchains/gcc/bin/occlum-
|
||||||
make CROSS_COMPILE="$CROSS_COMPILE" defconfig
|
make CROSS_COMPILE="$CROSS_COMPILE" defconfig
|
||||||
cp ../.config .
|
cp ../.config .
|
||||||
make CROSS_COMPILE="$CROSS_COMPILE"
|
make CROSS_COMPILE="$CROSS_COMPILE" -j$(nproc)
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
#! /bin/fish
|
#! /bin/fish
|
||||||
busybox echo "Hello-world-from-fish" | busybox awk '$1=$1' FS="-" OFS=" " > /root/output.txt
|
command echo "Hello-world-from-fish" | awk '$1=$1' FS="-" OFS=" " > /root/output.txt
|
||||||
|
cat /root/output.txt
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
#
|
|
||||||
rm -rf occlum-context
|
rm -rf occlum-context
|
||||||
mkdir occlum-context && cd occlum-context
|
mkdir occlum-context && cd occlum-context
|
||||||
occlum init
|
occlum init
|
||||||
@ -9,5 +8,12 @@ cp ../Occlum.json .
|
|||||||
cp ../fish-shell/build/fish image/bin
|
cp ../fish-shell/build/fish image/bin
|
||||||
cp ../busybox/busybox image/bin
|
cp ../busybox/busybox image/bin
|
||||||
cp ../fish_script.sh image
|
cp ../fish_script.sh image
|
||||||
|
pushd image/bin
|
||||||
|
ln -s /bin/busybox cat
|
||||||
|
ln -s /bin/busybox echo
|
||||||
|
ln -s /bin/busybox awk
|
||||||
|
popd
|
||||||
|
|
||||||
occlum build
|
occlum build
|
||||||
|
echo -e "\nBuild done. Running fish script ..."
|
||||||
|
occlum run /bin/fish /fish_script.sh
|
Loading…
Reference in New Issue
Block a user