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