install-scripts/0002-support-mbsc.patch
zhangqiumiao ed3b9af390 add support for mbsc
Signed-off-by: zhangqiumiao <zhangqiumiao1@huawei.com>
2022-11-05 15:46:22 +08:00

343 lines
13 KiB
Diff
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

From a179ee1222064472dad6cb09f7e97eceac69b575 Mon Sep 17 00:00:00 2001
From: zhangqiumiao <zhangqiumiao1@huawei.com>
Date: Tue, 1 Nov 2022 10:56:16 +0800
Subject: [PATCH] support mbsc
---
usr/Euler/project/disk/hwcompatible.sh | 27 ++++++++++
usr/Euler/project/init/LinuxSetup.sh | 8 +++
usr/Euler/project/install/setupOS.sh | 71 ++++++++++++++++++++++++--
usr/Euler/project/load/filetransfer.sh | 10 ++--
usr/Euler/project/load/load.sh | 16 +++---
5 files changed, 115 insertions(+), 17 deletions(-)
diff --git a/usr/Euler/project/disk/hwcompatible.sh b/usr/Euler/project/disk/hwcompatible.sh
index 97f3b78..e28b1ff 100644
--- a/usr/Euler/project/disk/hwcompatible.sh
+++ b/usr/Euler/project/disk/hwcompatible.sh
@@ -16,6 +16,7 @@
#machine type
CON_MACHINE_TYPE_GENERAL="general"
CON_MACHINE_TYPE_HP="hp"
+CON_MACHINE_TYPE_RED3="red3"
#version for kernel and crash kernel
CON_KERNEL_TYPE_XEN="xen"
@@ -35,6 +36,8 @@ function DM_GetMachineType()
#get machine type
if [ ! -z "`ls -l /sys/block | grep "c0d"`" ]; then
machine_type=${CON_MACHINE_TYPE_HP}
+ elif [ ! -z "`ls -l /sys/block | grep "md"`" ]; then
+ machine_type=${CON_MACHINE_TYPE_RED3}
else
machine_type=${CON_MACHINE_TYPE_GENERAL}
fi
@@ -76,6 +79,9 @@ function DM_GetPartitionName()
${CON_MACHINE_TYPE_HP})
echo "${disk_dev}p${partition_count}"
;;
+ ${CON_MACHINE_TYPE_RED3})
+ echo "${disk_dev}p${partition_count}"
+ ;;
*)
if [[ ${disk_dev} == /dev/nvme* ]]; then
echo "${disk_dev}p${partition_count}"
@@ -119,6 +125,9 @@ function DM_GetPartitionNumber()
${CON_MACHINE_TYPE_HP})
echo "${partition_name}" | sed "s ${disk_dev}p "
;;
+ ${CON_MACHINE_TYPE_RED3})
+ echo "${partition_name}" | sed "s ${disk_dev}p "
+ ;;
*)
if [[ ${disk_dev} == /dev/nvme* ]]; then
echo "${partition_name}" | sed "s ${disk_dev}p "
@@ -161,6 +170,9 @@ function DM_GetPartitionById()
${CON_MACHINE_TYPE_HP})
partition_by_id="`echo "${partition_by_id}" | grep "^cciss"`"
;;
+ ${CON_MACHINE_TYPE_RED3})
+ partition_by_id="`echo "${partition_by_id}" | grep "^md-uuid"`"
+ ;;
*)
partition_by_id_tmp=${partition_by_id}
partition_by_id="`echo "${partition_by_id_tmp}" | grep "^scsi"`"
@@ -273,6 +285,14 @@ function DM_GetGrubInfo()
command="`printf "%d" "'${harddisk_id}"` - `printf "%d" "'0"`"
disk_dev="`hwinfo --disk --short | awk '{print $1}' | grep -w "${disk_dev}"`"
;;
+ ${CON_MACHINE_TYPE_RED3})
+ first_disk="`DM_Get_FirstDiskName`"
+ first_disk_id="`echo ${first_disk} | awk '{print substr($NF,length($NF),1)}'`"
+ disk_dev="`echo ${partition_info} | awk -F "/" '{print $NF}' | sed "s p${partition_id}$ "`"
+ harddisk_id="`echo ${disk_dev} | awk '{print substr($NF,length($NF),1)}'`"
+ command="`printf "%d" "'${harddisk_id}"` - `printf "%d" "'${first_disk_id}"`"
+ disk_dev="/dev/${disk_dev}"
+ ;;
*)
if [[ ${partition_info} == */nvme* ]]; then
disk_dev="`echo ${partition_info} | awk -F "/" '{print $NF}' | sed "s p${partition_id}$ "`"
@@ -293,6 +313,13 @@ function DM_GetGrubInfo()
harddisk_id="`echo ${disk_dev} | awk -F "/" '{print substr($NF,length($NF),1)}'`"
command="`printf "%d" "'${harddisk_id}"` - `printf "%d" "'0"`"
;;
+ ${CON_MACHINE_TYPE_RED3})
+ first_disk="`DM_Get_FirstDiskName`"
+ first_disk_id="`echo ${first_disk} | awk '{print substr($NF,length($NF),1)}'`"
+ disk_dev="`echo ${partition_name} | sed "s p${partition_id}$ "`"
+ harddisk_id="`echo ${disk_dev} | awk -F "/" '{print substr($NF,length($NF),1)}'`"
+ command="`printf "%d" "'${harddisk_id}"` - `printf "%d" "'${first_disk_id}"`"
+ ;;
*)
if [[ ${partition_name} == */nvme* ]]; then
disk_dev="`echo ${partition_name} | sed "s p${partition_id}$ "`"
diff --git a/usr/Euler/project/init/LinuxSetup.sh b/usr/Euler/project/init/LinuxSetup.sh
index 0cfb8c3..7311e8a 100644
--- a/usr/Euler/project/init/LinuxSetup.sh
+++ b/usr/Euler/project/init/LinuxSetup.sh
@@ -126,6 +126,7 @@ function INIT_Setup_Main()
local tmp=
local sysconfig_conf=`basename ${SYSCONFIG_CONF}`
local cmdline=/proc/cmdline
+ local pstore_files=
#initialize the drivers
${INIT_MODULES}
@@ -196,6 +197,13 @@ function INIT_Setup_Main()
fi
g_LOG_Notice "Initializing environment success."
+ if [ -d /sys/fs/pstore ]; then
+ g_LOG_Info "Removing files stored in nonvolatile ram created by the pstore subsystem..."
+ pstore_files=`find /sys/fs/pstore/ -type f`
+ g_LOG_Debug "Removing files: [${pstore_files}]"
+ find /sys/fs/pstore/ -type f -delete
+ fi
+
INIT_Execute_Hook ${BEFORE_PARTITION_HOOK_PATH} ${PARTITION_CONF}
if [ $? -ne 0 ]; then
g_LOG_Error "Execute custom hook failed before partition."
diff --git a/usr/Euler/project/install/setupOS.sh b/usr/Euler/project/install/setupOS.sh
index fdbf17c..f1040c4 100644
--- a/usr/Euler/project/install/setupOS.sh
+++ b/usr/Euler/project/install/setupOS.sh
@@ -813,6 +813,16 @@ function SetupOS_GrubCfg()
sed -i "s/${title_str}/${MENU_VERSION}/g" ${grub_cfg}
fi
+ if cat /proc/cmdline | grep "product=mbsc" &>/dev/null; then
+ g_LOG_Info "copy ${LOCAL_CONFIG_PATH}/grub.cfg to ${LOCAL_DISK_PATH}${SI_GRUB2_PATH}"
+ cp -af ${LOCAL_CONFIG_PATH}/grub.cfg ${LOCAL_DISK_PATH}${SI_GRUB2_PATH} >> ${OTHER_TTY} 2>&1
+ chmod 600 ${grub_cfg}
+ if [ $? -ne 0 ]; then
+ g_LOG_Error "chmod grub.cfg failed."
+ return 1
+ fi
+ fi
+
g_LOG_Notice "instsall OS grub.cfg success."
return 0
@@ -906,6 +916,52 @@ function SetupOS_Menulst()
return 0
}
+#########################################################
+# Description: SetupOS_LoadSourceToDisk
+# Input none
+# Return: 0: SUCCESS
+# 1: Internal Error.
+#########################################################
+function SetupOS_LoadSourceToDisk()
+{
+ local cmdline=/proc/cmdline
+
+ pxecfg_path="`INIT_Get_CmdLineParamValue 'install_saveosdir' ${cmdline}`"
+ if [ -z "${pxecfg_path}" ]; then
+ g_LOG_Notice "The install_saveosdir parameter is not set so we can not copy the source file to the target disk."
+ return 0
+ fi
+
+ g_LOG_Debug "Load source to disk ..."
+ if [ ! -d ${LOCAL_DISK_PATH}/${pxecfg_path} ]; then
+ mkdir -p ${LOCAL_DISK_PATH}/${pxecfg_path}
+ if [ $? -ne 0 ]; then
+ g_LOG_Error "Create directory ${LOCAL_DISK_PATH}/${pxecfg_path} failed."
+ return 1
+ fi
+ fi
+
+ dirtype=$(df -hT ${LOCAL_DISK_PATH}/${pxecfg_path} | sed -n 2p | awk '{print $1}' | grep "\/dev")
+ if [ -z ${dirtype} ]; then
+ g_LOG_Error "Directory ${pxecfg_path} is not in a disk"
+ return 1
+ fi
+
+ partition_size=$(df -lm ${LOCAL_DISK_PATH}/${pxecfg_path} | sed -n 2p | awk '{print $4}')
+ file_size=$(du -m ${LOCAL_SOURCE_PATH}/ | awk '{print $1}')
+ if [ ${file_size} -ge ${partition_size} ]; then
+ g_LOG_Error "Direcotry ${pxecfg_path} space is not enough to store source files."
+ return 1
+ fi
+
+ cp -ap ${LOCAL_SOURCE_PATH}/* ${LOCAL_DISK_PATH}/${pxecfg_path}
+ if [ $? -ne 0 ]; then
+ g_LOG_Error "Copy ${SI_OSTARNAME} to ${LOCAL_DISK_PATH}/${pxecfg_path} failed."
+ return 1
+ fi
+ g_LOG_Debug "Copy ${SI_OSTARNAME} to ${LOCAL_DISK_PATH}/${pxecfg_path} success"
+}
+
#########################################################
# Description: SetupOS_clean
# Input none
@@ -1049,6 +1105,8 @@ function SetupOS_Install()
fi
fi
+ SetupOS_LoadSourceToDisk
+
#拷贝new.part到/etc目录中用于下次安装进行分区比较
if [ -f "${LOCAL_TEMPCFG_PATH}/new.part" ] && [ -d "${LOCAL_DISK_PATH}/etc" ]; then
g_LOG_Info "copy ${LOCAL_TEMPCFG_PATH}/new.part to ${LOCAL_DISK_PATH}/etc"
@@ -1099,13 +1157,18 @@ function SetupOS()
esac
}
-
-if [ ! -z "`cat /proc/mounts | grep " ${LOCAL_DISK_PATH} "`" ]; then
+if cat /proc/cmdline | grep "product=mbsc" &>/dev/null; then
+ g_LOG_Info "start mbsc SetupOS"
SetupOS
ret=$?
else
- g_LOG_Error "${LOCAL_DISK_PATH} is not mounted."
- ret=1
+ if [ ! -z "`cat /proc/mounts | grep " ${LOCAL_DISK_PATH} "`" ]; then
+ SetupOS
+ ret=$?
+ else
+ g_LOG_Error "${LOCAL_DISK_PATH} is not mounted."
+ ret=1
+ fi
fi
exit ${ret}
diff --git a/usr/Euler/project/load/filetransfer.sh b/usr/Euler/project/load/filetransfer.sh
index 5d75640..7066f25 100644
--- a/usr/Euler/project/load/filetransfer.sh
+++ b/usr/Euler/project/load/filetransfer.sh
@@ -261,7 +261,7 @@ function tftp_download()
if echo ${fileName} | grep -q ${FT_FILE_LIST} ;then
#download filelist first
- result=`${FT_TFTP} ${serverIp} ${serverPort} -c get ${sourceFile}/${filelist} ${targetFile} 2>&1`
+ result=`${FT_TFTP} -m binary ${serverIp} ${serverPort} -c get ${sourceFile}/${filelist} ${targetFile} 2>&1`
if [ ! -z "${result}" ];then
g_LOG_Error "${result}"
g_LOG_Error "Download remote file [${FT_FILE_LIST}] failed, maybe it's not exist."
@@ -289,7 +289,7 @@ function tftp_download()
fi
echo "${line}" | grep "\/$" > /dev/null 2>&1
if [ $? -ne 0 ];then
- result=`${FT_TFTP} ${serverIp} ${serverPort} -c get ${sourceFile}/${line} ${targetDir}/${line} 2>&1`
+ result=`${FT_TFTP} -m binary ${serverIp} ${serverPort} -c get ${sourceFile}/${line} ${targetDir}/${line} 2>&1`
if [ ! -z "${result}" ]; then
rm -rf ${targetDir}/${line} > /dev/null 2>&1
g_LOG_Warn "${result}"
@@ -298,7 +298,7 @@ function tftp_download()
fi
done < ${targetFile}
else
- result=`${FT_TFTP} ${serverIp} ${serverPort} -c get ${sourceFile} ${targetFile} 2>&1`
+ result=`${FT_TFTP} -m binary ${serverIp} ${serverPort} -c get ${sourceFile} ${targetFile} 2>&1`
if [ ! -z "${result}" ];then
rm -rf ${targetFile} > /dev/null 2>&1
g_LOG_Error "${result}"
@@ -315,7 +315,7 @@ function parseUrl()
local serverUrl=
local userName=
local password=
- local pattern="^[fF][iI][lL][eE]$|^[cC][dD]$|^[nN][fF][sS]$|^[fF][tT][pP]$|^[hH][tT][tT][pP]$|^[tT][fF][tT][pP]$"
+ local pattern="^[fF][iI][lL][eE]$|^[cC][dD]$|^[nN][fF][sS]$|^[cC][iI][fF][sS]$|^[fF][tT][pP]$|^[hH][tT][tT][pP]$|^[tT][fF][tT][pP]$"
local ipPattern="^[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}$"
local tmpPath=
local TMP_PARAMS=
@@ -327,7 +327,7 @@ function parseUrl()
serverUrl=$1
FT_TRAN_PROTOCOL=`echo ${serverUrl} | awk -F ":" '{print $1}'`
if ! echo ${FT_TRAN_PROTOCOL} | grep -q -E "${pattern}"; then
- g_LOG_Error "The serverurl protocol must be cd, nfs, ftp, http or tftp"
+ g_LOG_Error "The serverurl protocol must be cd, nfs, cifs, ftp, http or tftp"
return 1
fi
g_LOG_Debug "file transfer protocol is ${FT_TRAN_PROTOCOL}"
diff --git a/usr/Euler/project/load/load.sh b/usr/Euler/project/load/load.sh
index 700e5fc..2f0a5d8 100644
--- a/usr/Euler/project/load/load.sh
+++ b/usr/Euler/project/load/load.sh
@@ -20,12 +20,12 @@ MODPROBE="`which modprobe`"
MKFS_EXT3="`which mkfs.ext3`"
MOUNT="`which mount`"
######################################################
-#function g_LOAD_CONFIG
+#function g_Load_Config
#input none
-#dataAccess $CFG_SERVER_URL $LOCAL_CONFIG_PATH
+#dataAcess $CFG_SERVER_URL $LOCAL_CONFIG_PATH
# LOCAL_TEMPCFG_PATH
######################################################
-function g_LOAD_CONFIG
+function g_Load_Config
{
local returnValue
g_LOG_Info "begin load config file"
@@ -65,7 +65,7 @@ function g_LOAD_CONFIG
######################################################
#function g_LOAD_Os
#description load os repo to targetdir
-#dataAccess $REPO_SERVER_URL $LOCAL_SOURCE_PATH
+#dataAcess $REPO_SERVER_URL $LOCAL_SOURCE_PATH
######################################################
function g_Load_Os
{
@@ -82,7 +82,7 @@ function g_Load_Os
fi
if [ -n "${REPO_SERVER_URL}" -a -n "${LOCAL_SOURCE_PATH}" ];then
- INIT_RAMDISK
+ INIT_Ramdisk
if [ $? -ne 0 ];then
g_LOG_Error "init load os storage error"
return 1
@@ -114,7 +114,7 @@ function g_Load_Os
LOCAL_SOURCE_PATH="$LOCAL_SOURCE_PATH/repo"
fi
else
- LOCAL_SOURCE_PATH="$LOCAL_SOURCE_PATH/repo"
+ LOCAL_SOURCE_PATH="$LOCAL_SOURCE_PATH/repo"
fi
else
returnValue=1
@@ -126,7 +126,7 @@ function g_Load_Os
##########################################################
#description init a ramdisk and mount 2 $LOCAL_SOURCE_PATH
##########################################################
-function INIT_RAMDISK()
+function INIT_Ramdisk()
{
$MODPROBE brd rd_size=3072000 rd_nr=1 max_part=1 >>$OTHER_TTY 2>&1
if [ -b /dev/ram0 ];then
@@ -136,7 +136,7 @@ function INIT_RAMDISK()
g_LOG_Error "mkdir $LOCAL_SOURCE_PATH failed"
return 1
fi
-
+
$MOUNT -t ext3 /dev/ram0 $LOCAL_SOURCE_PATH >>$OTHER_TTY 2>&1
if [ $? -ne 0 ]; then
g_LOG_Error "mount /dev/ram0 to $LOCAL_SOURCE_PATH error"
--
2.27.0