mirror of
https://github.com/HEYAHONG/linux-live.git
synced 2025-10-14 02:07:48 +08:00
139 lines
2.9 KiB
Bash
Executable File
139 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
function CheckTool
|
|
{
|
|
[ -n "$1" ] ||
|
|
{
|
|
echo -e "CheckTool 参数错误!!";
|
|
return 255;
|
|
};
|
|
ToolPath=`which $1`;
|
|
[ -e "$ToolPath" ] ||
|
|
{
|
|
echo -e "$1 不存在,请先安装此工具!!!";
|
|
return 255;
|
|
};
|
|
return 0;
|
|
}
|
|
|
|
export TOOL_UNSUPPORTED=0
|
|
CheckTool uname
|
|
[ $? -eq 0 ] || export TOOL_UNSUPPORTED=1
|
|
CheckTool find
|
|
[ $? -eq 0 ] || export TOOL_UNSUPPORTED=1
|
|
CheckTool dirname
|
|
[ $? -eq 0 ] || export TOOL_UNSUPPORTED=1
|
|
CheckTool basename
|
|
[ $? -eq 0 ] || export TOOL_UNSUPPORTED=1
|
|
CheckTool readlink
|
|
[ $? -eq 0 ] || export TOOL_UNSUPPORTED=1
|
|
CheckTool realpath
|
|
[ $? -eq 0 ] || export TOOL_UNSUPPORTED=1
|
|
CheckTool ln
|
|
[ $? -eq 0 ] || export TOOL_UNSUPPORTED=1
|
|
CheckTool sed
|
|
[ $? -eq 0 ] || export TOOL_UNSUPPORTED=1
|
|
CheckTool grep
|
|
[ $? -eq 0 ] || export TOOL_UNSUPPORTED=1
|
|
CheckTool id
|
|
[ $? -eq 0 ] || export TOOL_UNSUPPORTED=1
|
|
CheckTool mkdir
|
|
[ $? -eq 0 ] || export TOOL_UNSUPPORTED=1
|
|
CheckTool xargs
|
|
[ $? -eq 0 ] || export TOOL_UNSUPPORTED=1
|
|
|
|
show_config()
|
|
{
|
|
echo -e \\tLIVEKITNAME:${LIVEKITNAME}
|
|
echo -e \\tVMLINUZ:${VMLINUZ}
|
|
echo -e \\tKERNEL:${KERNEL}
|
|
echo -e \\tMKMOD:${MKMOD}
|
|
echo -e \\tNETWORK:${NETWORK}
|
|
echo -e \\tLIVEKITDATA:${LIVEKITDATA}
|
|
echo -e \\tBEXT:${BEXT}
|
|
echo -e \\tLMK:${LMK}
|
|
}
|
|
|
|
load_and_show_config()
|
|
{
|
|
. ${script_dir}/config
|
|
|
|
show_config
|
|
}
|
|
|
|
if [ ${TOOL_UNSUPPORTED} -ne 1 ]
|
|
then
|
|
# shellcheck disable=SC2128 # ignore array expansion warning
|
|
if [ -n "${BASH_SOURCE-}" ]
|
|
then
|
|
self_path="${BASH_SOURCE}"
|
|
elif [ -n "${ZSH_VERSION-}" ]
|
|
then
|
|
self_path="${(%):-%x}"
|
|
else
|
|
return 1
|
|
fi
|
|
|
|
# shellcheck disable=SC2169,SC2169,SC2039 # unreachable with 'dash'
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
# convert possibly relative path to absolute
|
|
script_dir="$(realpath_int "${self_path}")"
|
|
# resolve any ../ references to make the path shorter
|
|
script_dir="$(cd "${script_dir}" || exit 1; pwd)"
|
|
else
|
|
# convert to full path and get the directory name of that
|
|
script_name="$(readlink -f "${self_path}")"
|
|
script_dir="$(dirname "${script_name}")"
|
|
fi
|
|
echo 配置目录:${script_dir}
|
|
|
|
echo 当前配置:
|
|
|
|
load_and_show_config
|
|
|
|
if [ ! -e ${VMLINUZ} ]
|
|
then
|
|
echo -e VMLINUZ不存在,尝试使用/boot/vmlinuz!
|
|
VMLINUZ=/boot/vmlinuz
|
|
if [ ! -e ${VMLINUZ} ]
|
|
then
|
|
exit -1
|
|
fi
|
|
fi
|
|
|
|
|
|
KERNEL=`realpath ${VMLINUZ} | xargs basename | sed 's/vmlinuz-//g'`
|
|
|
|
|
|
NEW_LMK="lib/modules/${KERNEL}"
|
|
|
|
if [ -d "/${NEW_LMK}" ]
|
|
then
|
|
echo 使用新VMLINUZ的模块路径${NEW_LMK}!
|
|
LMK=${NEW_LMK}
|
|
fi
|
|
|
|
show_config
|
|
|
|
pushd "${script_dir}" 1> /dev/null 2> /dev/null
|
|
|
|
cp config config.tmp
|
|
|
|
sed -i "s/VMLINUZ=.*/VMLINUZ=\"${VMLINUZ//\//\\/}\"/g" config.tmp
|
|
sed -i "s/KERNEL=.*/KERNEL=\"${KERNEL}\"/g" config.tmp
|
|
|
|
popd 1> /dev/null 2> /dev/null
|
|
|
|
echo 新配置已在config.tmp中
|
|
|
|
if [ "${LIVEKITNAME}" != "linux" ]
|
|
then
|
|
echo 需要手动执行 sudo ./tools/isolinux.bin.update 更新启动文件。
|
|
fi
|
|
|
|
else
|
|
echo 工具不支持!
|
|
exit -1
|
|
fi
|
|
|