fix_sysroot_absolute_symlinks() {
  local sysroot="$1"

  if [ -z "$sysroot" ]; then
    echo "ERROR: sysroot is empty"
    return 1
  fi

  sysroot="${sysroot%/}"

  if [ ! -d "$sysroot" ]; then
    echo "ERROR: SYSROOT 不存在: $sysroot"
    return 1
  fi

  # 防止误删宿主机
  case "$sysroot" in
  /|/proc|/dev|/sys|/run|/etc|/usr|/lib|/lib64|/bin|/sbin|"")
    echo "ERROR: 危险 SYSROOT 路径: $sysroot"
    return 1
    ;;
  esac

  local total=0
  local converted=0
  local copied=0
  local deleted_pseudo_dirs=0
  local deleted_source_special=0
  local deleted_bad_links=0

  is_virtual_abs_path() {
    local path="$1"

    case "$path" in
    /proc|/proc/*|/dev|/dev/*|/sys|/sys/*|/run|/run/*)
      return 0
      ;;
    *)
      return 1
      ;;
    esac
  }

  is_copyable_regular_path() {
    local path="$1"

    # 只允许复制普通文件和目录
    [ -f "$path" ] || [ -d "$path" ]
  }

  assert_not_mountpoint() {
    local path="$1"

    if command -v mountpoint >/dev/null 2>&1 && mountpoint -q "$path"; then
      echo "ERROR: 不能删除挂载点: $path"
      echo "请先 umount，再清理 sysroot"
      return 1
    fi

    return 0
  }

  cleanup_sysroot_pseudo_dirs() {
    local name
    local path

    echo
    echo "===== 清理 sysroot 伪文件系统目录 ====="

    for name in proc sys run dev; do
      path="${sysroot}/${name}"

      if [ -e "$path" ] || [ -L "$path" ]; then
        assert_not_mountpoint "$path" || return 1

        echo "删除伪文件系统目录: $path"
        rm -rf -- "$path" || return 1
        deleted_pseudo_dirs=$((deleted_pseudo_dirs + 1))
      fi

      mkdir -p -- "$path" || return 1
    done

    return 0
  }

  cleanup_sysroot_special_files() {
    local root="${1:-$sysroot}"
    local node

    [ -e "$root" ] || return 0

    echo
    echo "===== 清理 sysroot 特殊文件 ====="

    while IFS= read -r -d '' node; do
      echo "删除特殊文件: $node"
      rm -f -- "$node" || return 1
      deleted_source_special=$((deleted_source_special + 1))
    done < <(
      find "$root" -xdev \
        \( -type b -o -type c -o -type p -o -type s \) \
        -print0
    )

    return 0
  }

  convert_link_to_relative() {
    local link="$1"
    local abs_target_in_sysroot="$2"

    local link_dir
    local rel_target

    link_dir="$(dirname "$link")"

    # -s / --no-symlinks：
    # 不解析已有软链接，避免 /etc/alternatives 这类链跳到宿主机
    rel_target="$(realpath -m -s --relative-to="$link_dir" "$abs_target_in_sysroot")" || return 1

    echo "  处理  : 转换为相对软链接"
    echo "  new    : $rel_target"

    rm -f -- "$link" || return 1
    ln -s "$rel_target" "$link" || return 1

    converted=$((converted + 1))
    return 0
  }

  delete_source_link() {
    local link="$1"
    local reason="$2"

    echo "  删除  : $reason"
    rm -f -- "$link" || return 1
    deleted_bad_links=$((deleted_bad_links + 1))

    return 0
  }

  # 先处理源目录里的伪文件系统和特殊文件
  cleanup_sysroot_pseudo_dirs || return 1
  cleanup_sysroot_special_files "$sysroot" || return 1

  echo
  echo "===== 修复 sysroot 全部绝对软链接 ====="
  echo "SYSROOT: $sysroot"

  while IFS= read -r -d '' link; do
    local target
    target="$(readlink "$link")"

    case "$target" in
    /*)
      total=$((total + 1))

      echo
      echo "发现绝对软链接:"
      echo "  link   : $link"
      echo "  target : $target"

      # target 指向伪文件系统：源目录里的这个 link 直接删除
      if is_virtual_abs_path "$target"; then
        delete_source_link "$link" "目标属于伪文件系统，不复制、不转换" || return 1
        continue
      fi

      local sysroot_target
      local host_target

      sysroot_target="${sysroot}${target}"
      host_target="$target"

      # sysroot 内目标存在：直接转相对链接
      if [ -e "$sysroot_target" ] || [ -L "$sysroot_target" ]; then
        echo "  处理  : sysroot 内目标存在"
        convert_link_to_relative "$link" "$sysroot_target" || return 1
        continue
      fi

      # sysroot 内目标不存在，但宿主机目标存在：复制实体到 sysroot，再转相对链接
      if [ -e "$host_target" ] || [ -L "$host_target" ]; then
        local host_real
        host_real="$(readlink -f "$host_target" || true)"

        if [ -z "$host_real" ] || [ ! -e "$host_real" ]; then
          delete_source_link "$link" "宿主机目标无法解析，删除源目录软链接" || return 1
          continue
        fi

        # 宿主机真实目标属于伪文件系统：源目录 link 删除
        if is_virtual_abs_path "$host_real"; then
          delete_source_link "$link" "宿主机目标属于伪文件系统，不复制" || return 1
          continue
        fi

        # 宿主机真实目标是特殊文件：源目录 link 删除
        if ! is_copyable_regular_path "$host_real"; then
          echo "  host_real: $host_real"
          delete_source_link "$link" "宿主机目标是特殊文件，不复制" || return 1
          continue
        fi

        echo "  处理  : sysroot 内目标不存在，但宿主机存在，复制实体到 sysroot"
        echo "  from   : $host_target"
        echo "  real   : $host_real"
        echo "  to     : $sysroot_target"

        mkdir -p -- "$(dirname "$sysroot_target")" || return 1

        # 用 host_real 复制最终实体，避免把宿主机软链接结构带进去
        cp -aL -- "$host_real" "$sysroot_target" || return 1
        copied=$((copied + 1))

        # 如果复制的是目录，里面可能混入特殊文件，复制后在 sysroot 源目录内清掉
        cleanup_sysroot_special_files "$sysroot_target" || return 1

        convert_link_to_relative "$link" "$sysroot_target" || return 1
        continue
      fi

      echo "  ERROR : target not exists in sysroot or host"
      echo "  link  : $link"
      echo "  target: $target"
      echo "  miss  : $sysroot_target"
      return 1
      ;;
    esac
  done < <(find "$sysroot" -type l -print0)

  # 最后再扫一次，保证源目录里没有残留特殊文件
  cleanup_sysroot_special_files "$sysroot" || return 1

  echo
  echo "===== 检查剩余绝对软链接 ====="

  local remaining
  remaining="$(
    find "$sysroot" -type l -printf '%p -> %l\n' \
      | awk -F' -> ' '$2 ~ /^\// {print}'
  )"

  if [ -n "$remaining" ]; then
    echo "ERROR: 仍存在绝对软链接:"
    echo "$remaining"
    return 1
  fi

  echo
  echo "===== 处理完成 ====="
  echo "发现绝对软链接数量     : $total"
  echo "转换为相对链接数量     : $converted"
  echo "从宿主机复制数量       : $copied"
  echo "删除伪文件系统目录数量 : $deleted_pseudo_dirs"
  echo "删除源目录特殊文件数量 : $deleted_source_special"
  echo "删除无效/伪文件链接数量: $deleted_bad_links"

  return 0
}