acrn-config: add 'run_container' back to the launch script

'run_container' starts to run the container which contains the
clearlinux rootfs. store it in the same launch script with clearlinux.

Tracked-On: #3811
Signed-off-by: Wei Liu <weix.w.liu@intel.com>
Acked-by: Victor Sun <victor.sun@intel.com>
This commit is contained in:
Wei Liu 2019-10-16 11:06:39 +08:00 committed by wenlingz
parent 55e4f0aff9
commit 73ac285ec3
1 changed files with 58 additions and 5 deletions

View File

@ -106,14 +106,24 @@ def off_line_cpus(uos_type, config):
print("", file=config)
def run_container(board_name, config):
if board_name != "apl-mrb":
def run_container(board_name, uos_type, config):
"""
The container contains the clearlinux as rootfs
:param board_name: board name
:param uos_type: the os name of user os
:param config: the file pointer to store the information
"""
# the runC.json is store in the path under board name, but for nuc7i7dnb/nuc6cayh/kbl-nuc-i7 is under nuc/
if 'nuc' in board_name:
board_name = 'nuc'
if board_name == "apl-up2" or uos_type != "CLEARLINUX":
return
print("function run_container()", file=config)
print("{", file=config)
print("vm_name=vm1", file=config)
print('config_src="/usr/share/acrn/samples/apl-mrb/runC.json"', file=config)
print('config_src="/usr/share/acrn/samples/{}/runC.json"'.format(board_name), file=config)
print('shell="/usr/share/acrn/conf/add/$vm_name.sh"', file=config)
print('arg_file="/usr/share/acrn/conf/add/$vm_name.args"', file=config)
print('runc_bundle="/usr/share/acrn/conf/add/runc/$vm_name"', file=config)
@ -148,6 +158,35 @@ def run_container(board_name, config):
print(" fi", file=config)
print("done", file=config)
dst_str = """ cp "$config_src" "$config_dst"
args=$(sed '{s/-C//g;s/^[ \\t]*//g;s/^/\\"/;s/ /\\",\\"/g;s/$/\\"/}' ${arg_file})
sed -i "s|\\"sh\\"|\\"$shell\\", $args|" $config_dst"""
print('', file=config)
print('if [ ! -f "$shell" ]; then', file=config)
print(' echo "Pls add the vm at first!"', file=config)
print(' exit', file=config)
print('fi', file=config)
print('', file=config)
print('if [ ! -f "$arg_file" ]; then', file=config)
print(' echo "Pls add the vm args!"', file=config)
print(' exit', file=config)
print('fi', file=config)
print('', file=config)
print('if [ ! -d "$rootfs_dir" ]; then', file=config)
print(' mkdir -p "$rootfs_dir"', file=config)
print('fi', file=config)
print('if [ ! -d "$runc_bundle" ]; then', file=config)
print(' mkdir -p "$runc_bundle"', file=config)
print('fi', file=config)
print('if [ ! -f "$config_dst" ]; then', file=config)
print('{}'.format(dst_str), file=config)
print('fi', file=config)
print('runc run --bundle $runc_bundle -d $vm_name', file=config)
print('echo "The runC container is running in backgroud"', file=config)
print('echo "\'#runc exec <vmname> bash\' to login the container bash"', file=config)
print('exit', file=config)
print('}', file=config)
print('', file=config)
def boot_image_type(args, vmid, config):
@ -191,8 +230,9 @@ def log_level_set(uos_type, config):
print("", file=config)
def launch_begin(uos_type, config):
def launch_begin(board_name, uos_type, config):
launch_uos = '_'.join(uos_type.lower().split())
run_container(board_name, uos_type, config)
print("function launch_{}()".format(launch_uos), file=config)
print("{", file=config)
@ -231,6 +271,7 @@ def mem_size_set(names, args, vmid, config):
def uos_launch(names, args, vmid, config):
board_name = names['board_name']
gvt_args = args['gvt_args'][vmid]
uos_type = names['uos_types'][vmid]
launch_uos = '_'.join(uos_type.lower().split())
@ -240,6 +281,7 @@ def uos_launch(names, args, vmid, config):
print("", file=config)
print('launch_{} {} "{}" {} "{}" $debug'.format(launch_uos, vmid, gvt_args, launch_uos, vmid), file=config)
print("", file=config)
print("umount /data", file=config)
if uos_type not in ("CLEARLINUX", "ANDROID", "ALIOS"):
@ -263,6 +305,7 @@ def uos_launch(names, args, vmid, config):
def launch_end(names, args, vmid, config):
board_name = names['board_name']
uos_type = names['uos_types'][vmid]
mem_size = args["mem_size"][vmid]
@ -302,6 +345,15 @@ def launch_end(names, args, vmid, config):
print("mount {} /data".format(root_fs), file=config)
print("", file=config)
if board_name == "apl-mrb":
print("if [ $runC_enable == 1 ]; then", file=config)
print(' if [ $(hostname) = "runc" ]; then', file=config)
print(' echo "Already in container exit!"', file=config)
print(" exit", file=config)
print(" fi", file=config)
print(" run_container", file=config)
print(" exit", file=config)
print("fi", file=config)
off_line_cpus(uos_type, config)
uos_launch(names, args, vmid, config)
@ -474,13 +526,14 @@ def dm_arg_set(names, sel, dm, vmid, config):
def gen(names, pt_sel, dm, vmid, config):
board_name = names['board_name']
uos_type = names['uos_types'][vmid]
# passthrough bdf/vpid dictionay
pt.gen_pt_head(names, pt_sel, vmid, config)
# gen launch header
launch_begin(uos_type, config)
launch_begin(board_name, uos_type, config)
tap_uos_net(names, vmid, config)
# passthrough device