2026-08-13 11:28:40 +08:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
|
|
PREREQ=""
|
|
|
|
|
|
|
|
|
|
prereqs()
|
|
|
|
|
{
|
|
|
|
|
echo "$PREREQ"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case "$1" in
|
|
|
|
|
prereqs)
|
|
|
|
|
prereqs
|
|
|
|
|
exit 0
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
|
|
|
|
|
. /usr/share/initramfs-tools/hook-functions
|
|
|
|
|
|
|
|
|
|
amlramfs=/usr/local/amlramfs
|
|
|
|
|
modules_dir=/lib/modules/
|
|
|
|
|
echo "Installing custom ramfs... ${version}"
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
# 1. 替换默认 init
|
|
|
|
|
#
|
|
|
|
|
mkdir -p "${DESTDIR}"
|
|
|
|
|
cp "${DESTDIR}/init" "/usr/local/init_back"
|
|
|
|
|
mv "${DESTDIR}/init" "${DESTDIR}/init2"
|
|
|
|
|
cp -a "${amlramfs}/init" \
|
|
|
|
|
"${DESTDIR}/init"
|
|
|
|
|
|
|
|
|
|
chmod 755 "${DESTDIR}/init"
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
# 3. 拷贝模块
|
|
|
|
|
#
|
2026-11-11 08:50:43 +08:00
|
|
|
ramdisk_source="/lib/modules/${version}/modules/ramdisk"
|
|
|
|
|
ramdisk_order="${ramdisk_source}/ramdisk_modules.order"
|
|
|
|
|
ramdisk_installer="${ramdisk_source}/ramdisk_install.sh"
|
|
|
|
|
ramdisk_target="${DESTDIR}/modules/ramdisk"
|
|
|
|
|
|
|
|
|
|
if [ ! -f "${ramdisk_order}" ]; then
|
|
|
|
|
echo "ERROR: ramdisk module list missing: ${ramdisk_order}" >&2
|
|
|
|
|
exit 1
|
2026-08-13 11:28:40 +08:00
|
|
|
fi
|
|
|
|
|
|
2026-11-11 08:50:43 +08:00
|
|
|
if [ ! -f "${ramdisk_installer}" ]; then
|
|
|
|
|
echo "ERROR: ramdisk installer missing: ${ramdisk_installer}" >&2
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
echo "Installing ramdisk modules ..."
|
|
|
|
|
mkdir -p "${ramdisk_target}" || exit 1
|
|
|
|
|
cp -a "${ramdisk_order}" "${ramdisk_installer}" "${ramdisk_target}/" || exit 1
|
|
|
|
|
|
|
|
|
|
while IFS= read -r module; do
|
|
|
|
|
[ -n "${module}" ] || continue
|
|
|
|
|
|
|
|
|
|
module_path="$(find "/lib/modules/${version}/kernel" \
|
|
|
|
|
-type f -name "${module}" -print -quit)"
|
|
|
|
|
|
|
|
|
|
if [ -z "${module_path}" ]; then
|
|
|
|
|
echo "ERROR: ramdisk module missing from kernel tree: ${module}" >&2
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
cp -a "${module_path}" "${ramdisk_target}/${module}" || exit 1
|
|
|
|
|
done < "${ramdisk_order}"
|
2026-08-13 11:28:40 +08:00
|
|
|
|
|
|
|
|
# 修复 init 脚本依赖的工具
|
|
|
|
|
copy_exec /bin/grep # 用于 upstream_emmc_mount()
|
|
|
|
|
copy_exec /usr/bin/expr # 用于 read_args()
|
|
|
|
|
|
|
|
|
|
# 文本处理工具
|
|
|
|
|
copy_exec /bin/sed # 可能被其他脚本使用
|
|
|
|
|
copy_exec /bin/mawk # 通用文本处理
|
|
|
|
|
ln -sf mawk ${DESTDIR}/usr/bin/awk
|
|
|
|
|
|
|
|
|
|
# 编辑器
|
|
|
|
|
copy_exec /usr/bin/vim.tiny # vi 编辑器
|
|
|
|
|
copy_exec /bin/nano # 简单的替代编辑器
|
|
|
|
|
|
|
|
|
|
# 文件查看工具
|
|
|
|
|
copy_exec /usr/bin/less # 更好的文件查看
|
|
|
|
|
copy_exec /bin/more # 基础文件查看
|
|
|
|
|
|
|
|
|
|
echo "Custom ramfs installed."
|