#!/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. 拷贝模块 # 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 fi 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}" # 修复 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."