Update bash demo with bom tool and add musl version
Signed-off-by: Zheng, Qi <huaiqing.zq@antgroup.com>
This commit is contained in:
		
							parent
							
								
									e1cebcd488
								
							
						
					
					
						commit
						597f8c9080
					
				| @ -1,65 +0,0 @@ | |||||||
| { |  | ||||||
|     "resource_limits": { |  | ||||||
|         "user_space_size": "600MB", |  | ||||||
|         "kernel_space_heap_size": "32MB", |  | ||||||
|         "kernel_space_stack_size": "1MB", |  | ||||||
|         "max_num_of_threads": 16 |  | ||||||
|     }, |  | ||||||
|     "process": { |  | ||||||
|         "default_stack_size": "2MB", |  | ||||||
|         "default_heap_size": "16MB", |  | ||||||
|         "default_mmap_size": "80MB" |  | ||||||
|     }, |  | ||||||
|     "entry_points": [ |  | ||||||
|         "/root/bin" |  | ||||||
|     ], |  | ||||||
|     "env": { |  | ||||||
|         "default": [ |  | ||||||
|             "OCCLUM=yes", |  | ||||||
|             "HOME=/root" |  | ||||||
|         ], |  | ||||||
|         "untrusted": [ |  | ||||||
|         ] |  | ||||||
|     }, |  | ||||||
|     "metadata": { |  | ||||||
|         "product_id": 0, |  | ||||||
|         "version_number": 0, |  | ||||||
|         "debuggable": true |  | ||||||
|     }, |  | ||||||
|     "mount": [ |  | ||||||
|         { |  | ||||||
|             "target": "/", |  | ||||||
|             "type": "unionfs", |  | ||||||
|             "options": { |  | ||||||
|                 "layers": [ |  | ||||||
|                     { |  | ||||||
|                         "target": "/", |  | ||||||
|                         "type": "sefs", |  | ||||||
|                         "source": "./build/mount/__ROOT", |  | ||||||
|                         "options": { |  | ||||||
|                             "MAC": "" |  | ||||||
|                         } |  | ||||||
|                     }, |  | ||||||
|                     { |  | ||||||
|                         "target": "/", |  | ||||||
|                         "type": "sefs", |  | ||||||
|                         "source": "./run/mount/__ROOT" |  | ||||||
|                     } |  | ||||||
|                 ] |  | ||||||
|             } |  | ||||||
|         }, |  | ||||||
|         { |  | ||||||
|             "target": "/host", |  | ||||||
|             "type": "hostfs", |  | ||||||
|             "source": "." |  | ||||||
|         }, |  | ||||||
|         { |  | ||||||
|             "target": "/proc", |  | ||||||
|             "type": "procfs" |  | ||||||
|         }, |  | ||||||
|         { |  | ||||||
|             "target": "/dev", |  | ||||||
|             "type": "devfs" |  | ||||||
|         } |  | ||||||
|     ] |  | ||||||
| } |  | ||||||
| @ -6,14 +6,14 @@ Bash is the most widely used shell implementation around the world. Previously, | |||||||
| 
 | 
 | ||||||
| Now, Bash is finally supported with modification to the source code of Bash. We have evaluated and all commands defined in `occlum_bash_test.sh` are all supported. | Now, Bash is finally supported with modification to the source code of Bash. We have evaluated and all commands defined in `occlum_bash_test.sh` are all supported. | ||||||
| 
 | 
 | ||||||
| Please follow below steps to run this demo: | Two versions [`musl-libc` and `glibc`] of bash demo is provided: | ||||||
| 
 | 
 | ||||||
| 1. Download and build Busybox and Occlum-version Bash | * musl-libc bash demo | ||||||
| ``` | ``` | ||||||
| ./prepare_bash_demo.sh | ./run_bash_demo.sh musl | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| 2. Run Bash script in Occlum | * glibc bash demo | ||||||
| ``` | ``` | ||||||
| ./run_bash_demo.sh | ./run_bash_demo.sh | ||||||
| ``` | ``` | ||||||
|  | |||||||
							
								
								
									
										11
									
								
								demos/bash/bash-musl.yaml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										11
									
								
								demos/bash/bash-musl.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,11 @@ | |||||||
|  | includes: | ||||||
|  |   - base.yaml | ||||||
|  | # musl bash | ||||||
|  | targets: | ||||||
|  |   # copy bash and busybox | ||||||
|  |   - target: /bin | ||||||
|  |     copy: | ||||||
|  |       - files: | ||||||
|  |         - /opt/occlum/toolchains/bash/musl/bash | ||||||
|  |         - ../busybox/busybox | ||||||
|  |         - ../occlum_bash_test.sh | ||||||
							
								
								
									
										11
									
								
								demos/bash/bash.yaml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										11
									
								
								demos/bash/bash.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,11 @@ | |||||||
|  | includes: | ||||||
|  |   - base.yaml | ||||||
|  | # bash | ||||||
|  | targets: | ||||||
|  |   # copy bash and busybox | ||||||
|  |   - target: /bin | ||||||
|  |     copy: | ||||||
|  |       - files: | ||||||
|  |         - /opt/occlum/toolchains/bash/glibc/bash | ||||||
|  |         - ../busybox/busybox | ||||||
|  |         - ../occlum_bash_test.sh | ||||||
| @ -58,7 +58,7 @@ fi | |||||||
| fake_inst || true | fake_inst || true | ||||||
| 
 | 
 | ||||||
| # Test builtin command | # Test builtin command | ||||||
| cd /opt/occlum/glibc/lib | cd /host | ||||||
| pwd | pwd | ||||||
| cd - | cd - | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,35 +0,0 @@ | |||||||
| #! /bin/bash |  | ||||||
| set -e |  | ||||||
| 
 |  | ||||||
| current=$(pwd) |  | ||||||
| bash_src="$current/bash_for_occlum" |  | ||||||
| bash_git="https://github.com/occlum/bash.git" |  | ||||||
| bash_branch="bash_5.1_for_occlum" |  | ||||||
| busybox_src="$current/busybox" |  | ||||||
| 
 |  | ||||||
| if [ ! -d "$bash_src" ]; then |  | ||||||
|     # Download and configure Bash |  | ||||||
|     cd $current |  | ||||||
|     git clone -b $bash_branch $bash_git bash_for_occlum |  | ||||||
|     cd bash_for_occlum && git checkout $bash_branch |  | ||||||
|     if [ "$DEBUG" == "1" ]; then |  | ||||||
|         CFLAGS="-D DEBUG=1 -g -O0" ./configure --enable-debugger |  | ||||||
|     else |  | ||||||
|         ./configure |  | ||||||
|     fi |  | ||||||
| 
 |  | ||||||
|     # Build |  | ||||||
|     make -j$(nproc) |  | ||||||
|     echo "Bash is ready." |  | ||||||
| fi |  | ||||||
| 
 |  | ||||||
| if [ ! -d "$busybox_src" ]; then |  | ||||||
|     cd $current |  | ||||||
|     busybox_config="$current/../fish/.config" |  | ||||||
|     git clone -b 1_31_1 --depth 1 https://github.com/mirror/busybox.git |  | ||||||
|     cd busybox |  | ||||||
|     # CROSS_COMPILE=/opt/occlum/toolchains/gcc/bin/occlum- |  | ||||||
|     make defconfig |  | ||||||
|     cp $busybox_config . |  | ||||||
|     make -j$(nproc) |  | ||||||
| fi |  | ||||||
							
								
								
									
										24
									
								
								demos/bash/prepare_busybox.sh
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										24
									
								
								demos/bash/prepare_busybox.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,24 @@ | |||||||
|  | #! /bin/bash | ||||||
|  | set -e | ||||||
|  | 
 | ||||||
|  | current=$(pwd) | ||||||
|  | busybox_src="$current/busybox" | ||||||
|  | busybox_config="$current/../fish/.config" | ||||||
|  | 
 | ||||||
|  | rm -rf $busybox_src | ||||||
|  | git clone -b 1_31_1 --depth 1 https://github.com/mirror/busybox.git | ||||||
|  | 
 | ||||||
|  | pushd $busybox_src | ||||||
|  | make clean | ||||||
|  | make defconfig | ||||||
|  | cp $busybox_config . | ||||||
|  | 
 | ||||||
|  | if [[ $1 == "musl" ]]; then | ||||||
|  |     echo "Building musl-libc version of busybox" | ||||||
|  |     sed -e 's/.*CONFIG_CROSS_COMPILER_PREFIX.*/CONFIG_CROSS_COMPILER_PREFIX="occlum-"/' -i .config | ||||||
|  | else | ||||||
|  |     echo "Building glibc version of busybox" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | make -j | ||||||
|  | popd | ||||||
| @ -1,29 +1,27 @@ | |||||||
| #! /bin/bash | #! /bin/bash | ||||||
| set -e | set -e | ||||||
| 
 | 
 | ||||||
| current=$(pwd) | if [[ $1 == "musl" ]]; then | ||||||
| bash_src="$current/bash_for_occlum" |     echo "*** Run musl-libc bash demo ***" | ||||||
| busybox_src="$current/busybox" |     ./prepare_busybox.sh musl | ||||||
| occlum_instance="$current/occlum_instance" |     bomfile="../bash-musl.yaml" | ||||||
| occlum_glibc_path=$occlum_instance/image/opt/occlum/glibc/lib | else | ||||||
| # Executable path in Occlum |     echo "*** Run glibc bash demo ***" | ||||||
| exec_path=/root/bin |     ./prepare_busybox.sh | ||||||
|  |     bomfile="../bash.yaml" | ||||||
|  | fi | ||||||
| 
 | 
 | ||||||
| rm -rf occlum_instance | rm -rf occlum_instance | ||||||
| occlum new occlum_instance | occlum new occlum_instance | ||||||
| 
 | 
 | ||||||
| cd occlum_instance | pushd occlum_instance | ||||||
|  | rm -rf image | ||||||
|  | copy_bom -f $bomfile --root image --include-dir /opt/occlum/etc/template | ||||||
| 
 | 
 | ||||||
| cp $bash_src/bash ./image/bin/ | new_json="$(jq '.resource_limits.user_space_size = "600MB" ' Occlum.json)" && \ | ||||||
| cp /lib/x86_64-linux-gnu/libtinfo.so.5 $occlum_glibc_path |     echo "${new_json}" > Occlum.json | ||||||
| cp /lib/x86_64-linux-gnu/libdl.so.2 $occlum_glibc_path |  | ||||||
| cp $busybox_src/busybox image/bin |  | ||||||
| cp /lib/x86_64-linux-gnu/libm.so.6 $occlum_glibc_path |  | ||||||
| cp /lib/x86_64-linux-gnu/libresolv.so.2 $occlum_glibc_path |  | ||||||
| 
 |  | ||||||
| mkdir -p "$occlum_instance/image/$exec_path" |  | ||||||
| cp "$current/occlum_bash_test.sh" "$occlum_instance/image/$exec_path" |  | ||||||
| cp "$current/Occlum.json" "$occlum_instance" |  | ||||||
| 
 | 
 | ||||||
| occlum build | occlum build | ||||||
| occlum run /root/bin/occlum_bash_test.sh | occlum run /bin/occlum_bash_test.sh | ||||||
|  | 
 | ||||||
|  | popd | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user