From 3f41d9573a2db5e776d0ea598394863f50d28ebb Mon Sep 17 00:00:00 2001 From: zhuanghb3 Date: Tue, 26 Aug 2025 21:08:43 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=9A=E8=BF=87=E4=BC=A0=E5=85=A5=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E6=9D=A5=E9=83=A8=E7=BD=B2=E7=BA=AF64=E4=BD=8DKbox?= =?UTF-8?q?=EF=BC=8C=E8=80=8C=E4=B8=8D=E6=98=AF=E9=80=9A=E8=BF=87=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E5=86=85=E6=A0=B8=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy_scripts/android_kbox.sh | 9 ++++--- deploy_scripts/base_box.sh | 21 +++++++++------- deploy_scripts/kbox_config.cfg | 3 +++ deploy_scripts/make_image.sh | 46 ++++++++++++++++------------------ 4 files changed, 43 insertions(+), 36 deletions(-) diff --git a/deploy_scripts/android_kbox.sh b/deploy_scripts/android_kbox.sh index 91302e4..c8266dd 100644 --- a/deploy_scripts/android_kbox.sh +++ b/deploy_scripts/android_kbox.sh @@ -197,8 +197,8 @@ function wait_container_ready() { local cmd="docker exec -i $1 getprop sys.boot_completed | grep 1 &" local result=$(bash $CURRENT_DIR/base_box.sh wait_async_cmd "${cmd}") if [ "${result}" == "1" ]; then - bash $CURRENT_DIR/base_box.sh chk_key_process ${CONTAINER_NAME} ${ENABLE_SOFT_RENDER} - [ ${?} -ne 0 ] && has_restart=1 && bash $CURRENT_DIR/base_box.sh restart "${CONTAINER_NAME}" "$MOUNT_DIR" 2 ${ENABLE_SOFT_RENDER} + bash $CURRENT_DIR/base_box.sh chk_key_process ${CONTAINER_NAME} + [ ${?} -ne 0 ] && has_restart=1 && bash $CURRENT_DIR/base_box.sh restart "${CONTAINER_NAME}" "$MOUNT_DIR" 2 [ ${?} -eq 1 ] && [ $has_restart -eq 1 ] && echo "${KBOX_NAME} started failed at $(date +'%Y-%m-%d %H:%M:%S')!" && res=1 && break echo "${KBOX_NAME} started successfully at $(date +'%Y-%m-%d %H:%M:%S')!" @@ -486,6 +486,8 @@ function main() { exit 1 fi + export ENABLE_ONLY64_KBOX + if [ $1 = "start" ];then local MIN=$3 MAX=$4 if [ -z $4 ]; then @@ -528,7 +530,7 @@ function main() { set +e enable_hard_decoder $TAG_NUMBER local MOUNT_DIR=${KBOX_MOUNT_MAP[TAG_NUMBER - 1]} - bash $CURRENT_DIR/base_box.sh restart "kbox_$TAG_NUMBER" "$MOUNT_DIR" 3 ${ENABLE_SOFT_RENDER} ${ENABLE_HARD_DECODE} + bash $CURRENT_DIR/base_box.sh restart "kbox_$TAG_NUMBER" "$MOUNT_DIR" 3 ${ENABLE_HARD_DECODE} [ ${?} -eq 1 ] && continue enable_netint "kbox_$TAG_NUMBER" @@ -547,6 +549,7 @@ function main() { fi done fi + unset ENABLE_ONLY64_KBOX } check_environment diff --git a/deploy_scripts/base_box.sh b/deploy_scripts/base_box.sh index 93769f8..f266527 100644 --- a/deploy_scripts/base_box.sh +++ b/deploy_scripts/base_box.sh @@ -24,9 +24,8 @@ function check_environment() { CURRENT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) cd ${CURRENT_DIR} - # 如果内核是4.19,不需要检查转码 - local kernel_version=$(uname -r) - if echo $kernel_version | grep -q "^4.19"; then + # 如果使能纯64位,不需要转码 + if [ "$ENABLE_ONLY64_KBOX" == "1" ]; then return fi @@ -386,8 +385,7 @@ function check_paras() { function check_key_process() { # 检查关键进程是否存在 local process_name=(system_server zygote zygote64 surfaceflinger) - local enable_soft_render=$2 - if [ ${enable_soft_render} -eq 1 ]; then + if [ "$ENABLE_ONLY64_KBOX" == "1" ]; then # 软渲染为纯64位,不用检查zygote unset process_name[1] fi @@ -774,11 +772,16 @@ function restart_box() { local BOX_NAME=$1 local USER_DATA_PATH=$2 - local restart_times=$3 + local restart_times=3 # 默认最大重启次数为三次 + if [ $# -ge 3 ]; then + restart_times=$3 + fi - local ENABLE_SOFT_RENDER=$4 + local ENABLE_HARD_DECODE=0 + if [ $# -ge 4 ]; then + ENABLE_HARD_DECODE=$4 + fi - local ENABLE_HARD_DECODE=$5 set +e if [ -z ${USER_DATA_PATH} ]; then @@ -864,7 +867,7 @@ function restart_box() { check_wait_cmd_result "${cmd}" "${result}" if [ "${result}" == "1" ]; then # 等待容器启动完成 - check_key_process ${BOX_NAME} ${ENABLE_SOFT_RENDER} + check_key_process ${BOX_NAME} [ ${?} -ne 0 ] && echo "${BOX_NAME} check key process fail" && should_restart=1 break fi diff --git a/deploy_scripts/kbox_config.cfg b/deploy_scripts/kbox_config.cfg index e328fe0..495bb8e 100644 --- a/deploy_scripts/kbox_config.cfg +++ b/deploy_scripts/kbox_config.cfg @@ -11,6 +11,9 @@ ENABLE_RENDER_LAYER=0 #是否使能软渲染,1表示使能,其他值默认不使能 ENABLE_SOFT_RENDER=0 +#是否使能纯64位,1表示使能,其他值默认不使能 +ENABLE_ONLY64_KBOX=0 + #硬件解码卡类型:0:T432 1:Quadra HARD_DECODE_TYPE=2 diff --git a/deploy_scripts/make_image.sh b/deploy_scripts/make_image.sh index fa2b2fa..3cfc985 100644 --- a/deploy_scripts/make_image.sh +++ b/deploy_scripts/make_image.sh @@ -5,11 +5,12 @@ # 脚本至少提供两个参数 #第一个参数:kbox基础云手机镜像名称:kbox:latest #第二个参数:目标GPU Kbox云手机镜像名称:kbox:latest_{GPU_NAME} -#第三个参数:[gpu驱动包名称] 为可选参数,无该参数时默认制作基于amd GPU 的kbox镜像。soft表示使能软渲染。 +#第三个参数:[gpu驱动包名称] 为可选参数,无该参数时默认制作基于amd GPU 的kbox镜像。soft表示使能软渲染,soft64表示使能纯64位软渲染。 # 例: # ./make_image.sh kbox:latest kbox:latest_ # ./make_image.sh kbox:latest kbox:latest_ xxxx.tar.gz # ./make_image.sh kbox:latest kbox:latest_ soft +# ./make_image.sh kbox:latest kbox:latest_ soft64 set -e @@ -21,6 +22,7 @@ TMP_PACKAGE_DIR=${CUR_PATH}/imageFile DOCKER_FILE_DIR=${CUR_PATH}/Dockerfiles DOCKER_FILE_BAK=${CUR_PATH}/Dockerfile.bak DOCKER_FILE=${CUR_PATH}/Dockerfile +ENABLE_ONLY64_KBOX=0 function gen_docker_file() { @@ -139,43 +141,31 @@ function prepare_kbox_binary() unzip -o "${binary_packages}" -d ${TMP_PACKAGE_DIR} > /dev/null BinaryPath=${TMP_PACKAGE_DIR}/product_prebuilt - local kernel_version=$(uname -r) - enable_only64_so=0 - if echo $kernel_version | grep -q "^4.19"; then - enable_only64_so=1 - fi - - if [ ${GPUTYPE} == "cpu" ]; then - cp ${BinaryPath}/soft_gralloc/lib64/hw/gralloc.soft.so ${TMP_PACKAGE_DIR}/system/vendor/lib64/hw/ - [ $enable_only64_so -eq 1 ] || cp ${BinaryPath}/soft_gralloc/lib/hw/gralloc.soft.so ${TMP_PACKAGE_DIR}/system/vendor/lib/hw/ - else - cp ${BinaryPath}/gbm_gralloc/lib64/hw/gralloc.kbox.so ${TMP_PACKAGE_DIR}/system/vendor/lib64/hw/ - [ $enable_only64_so -eq 1 ] || cp ${BinaryPath}/gbm_gralloc/lib/hw/gralloc.kbox.so ${TMP_PACKAGE_DIR}/system/vendor/lib/hw/ - fi - - [ $enable_only64_so -eq 1 ] || cp ${BinaryPath}/audio/lib/hw/audio.primary.kbox.so ${TMP_PACKAGE_DIR}/system/lib/hw/ + cp ${BinaryPath}/gbm_gralloc/lib64/hw/gralloc.kbox.so ${TMP_PACKAGE_DIR}/system/vendor/lib64/hw/ + [ $ENABLE_ONLY64_KBOX -eq 1 ] || cp ${BinaryPath}/gbm_gralloc/lib/hw/gralloc.kbox.so ${TMP_PACKAGE_DIR}/system/vendor/lib/hw/ + [ $ENABLE_ONLY64_KBOX -eq 1 ] || cp ${BinaryPath}/audio/lib/hw/audio.primary.kbox.so ${TMP_PACKAGE_DIR}/system/lib/hw/ cp ${BinaryPath}/audio/lib64/hw/audio.primary.kbox.so ${TMP_PACKAGE_DIR}/system/lib64/hw/ - [ $enable_only64_so -eq 1 ] || cp ${BinaryPath}/gps/lib/hw/gps.kbox.so ${TMP_PACKAGE_DIR}/system/vendor/lib/hw/ + [ $ENABLE_ONLY64_KBOX -eq 1 ] || cp ${BinaryPath}/gps/lib/hw/gps.kbox.so ${TMP_PACKAGE_DIR}/system/vendor/lib/hw/ cp ${BinaryPath}/gps/lib64/hw/gps.kbox.so ${TMP_PACKAGE_DIR}/system/vendor/lib64/hw/ - [ $enable_only64_so -eq 1 ] || cp ${BinaryPath}/omx/lib/* ${TMP_PACKAGE_DIR}/system/vendor/lib/ + [ $ENABLE_ONLY64_KBOX -eq 1 ] || cp ${BinaryPath}/omx/lib/* ${TMP_PACKAGE_DIR}/system/vendor/lib/ cp ${BinaryPath}/omx/lib64/* ${TMP_PACKAGE_DIR}/system/vendor/lib64/ if [ $GPUTYPE = "awm" ]; then - [ $enable_only64_so -eq 1 ] || cp ${BinaryPath}/product_hwcomposer/lib/hw/hwcomposer.awmgpu.so ${TMP_PACKAGE_DIR}/system/vendor/lib/hw/ + [ $ENABLE_ONLY64_KBOX -eq 1 ] || cp ${BinaryPath}/product_hwcomposer/lib/hw/hwcomposer.awmgpu.so ${TMP_PACKAGE_DIR}/system/vendor/lib/hw/ cp ${BinaryPath}/product_hwcomposer/lib64/hw/hwcomposer.awmgpu.so ${TMP_PACKAGE_DIR}/system/vendor/lib64/hw/ - elif [ $GPUTYPE = "amd" ]; then - [ $enable_only64_so -eq 1 ] || cp ${BinaryPath}/product_hwcomposer/lib/hw/hwcomposer.kbox.so ${TMP_PACKAGE_DIR}/system/vendor/lib/hw/ + elif [ $GPUTYPE = "amd" ] || [ $GPUTYPE = "cpu" ]; then + [ $ENABLE_ONLY64_KBOX -eq 1 ] || cp ${BinaryPath}/product_hwcomposer/lib/hw/hwcomposer.kbox.so ${TMP_PACKAGE_DIR}/system/vendor/lib/hw/ cp ${BinaryPath}/product_hwcomposer/lib64/hw/hwcomposer.kbox.so ${TMP_PACKAGE_DIR}/system/vendor/lib64/hw/ fi - [ $enable_only64_so -eq 1 ] || cp ${BinaryPath}/sensors/lib/hw/sensors.kbox.so ${TMP_PACKAGE_DIR}/system/vendor/lib/hw/ + [ $ENABLE_ONLY64_KBOX -eq 1 ] || cp ${BinaryPath}/sensors/lib/hw/sensors.kbox.so ${TMP_PACKAGE_DIR}/system/vendor/lib/hw/ cp ${BinaryPath}/sensors/lib64/hw/sensors.kbox.so ${TMP_PACKAGE_DIR}/system/vendor/lib64/hw/ cp ${BinaryPath}/vinput/bin/vinput ${TMP_PACKAGE_DIR}/system/vendor/bin/ cp ${BinaryPath}/vinput/vinput.rc ${TMP_PACKAGE_DIR}/system/vendor/etc/init/vinput.rc if [ -d ${BinaryPath}/RenderAccLayer ]; then - [ $enable_only64_so -eq 1 ] || cp ${BinaryPath}/RenderAccLayer/lib/hw/RenderAccLayer.kbox.so ${TMP_PACKAGE_DIR}/system/vendor/lib/hw/ + [ $ENABLE_ONLY64_KBOX -eq 1 ] || cp ${BinaryPath}/RenderAccLayer/lib/hw/RenderAccLayer.kbox.so ${TMP_PACKAGE_DIR}/system/vendor/lib/hw/ cp ${BinaryPath}/RenderAccLayer/lib64/hw/RenderAccLayer.kbox.so ${TMP_PACKAGE_DIR}/system/vendor/lib64/hw/ cp ${BinaryPath}/RenderAccLayer/kbox_render_accelerating_configuration.xml ${TMP_PACKAGE_DIR}/system/vendor/etc/ fi @@ -211,6 +201,14 @@ function detect_gpu_type() if [ "${GPU_DRIVER_PACKAGE}" == "soft" ]; then GPUTYPE="cpu" echo -e "\033[1;36m[INFO] Enable soft render... \033[0m" + return 0 + fi + + if [ "${GPU_DRIVER_PACKAGE}" == "soft64" ]; then + GPUTYPE="cpu" + ENABLE_ONLY64_KBOX=1 + echo -e "\033[1;36m[INFO] Enable only64 soft render... \033[0m" + return 0 fi if [ 0 -ne ${#amd_gpus[@]} ]; then @@ -232,7 +230,7 @@ function detect_gpu_type() echo -e "and make sure it match the gpu type. \033[0m" && exit -1 fi else - echo -e "\033[1;36m[INFO] unsupport gpu type. Enable soft render... \033[0m" && exit -1 + echo -e "\033[1;31m[ERROR] unsupport gpu type." && exit -1 fi } -- Gitee