Remove pre-install userspace refresh

This commit is contained in:
byjoey
2026-06-15 11:26:20 +08:00
parent 9561dcd59a
commit 55d4a71769
2 changed files with 0 additions and 106 deletions
-2
View File
@@ -25,8 +25,6 @@ bash <(curl -fsSL https://raw.githubusercontent.com/byJoey/Actions-bbr-v3/main/i
本项目当前内核主线为 Linux 7.x。安装内核时脚本会按最低支持系统拦截过旧环境,避免因用户态、initramfs 或引导链路过旧导致启动失败或 kernel panic。推荐系统是更稳妥的部署选择;旧系统仍可使用状态检查、网络调优、清空优化和卸载功能。 本项目当前内核主线为 Linux 7.x。安装内核时脚本会按最低支持系统拦截过旧环境,避免因用户态、initramfs 或引导链路过旧导致启动失败或 kernel panic。推荐系统是更稳妥的部署选择;旧系统仍可使用状态检查、网络调优、清空优化和卸载功能。
安装内核前,脚本会先刷新关键用户态组件:更新 apt 索引,并在缺少时补装 `dpkg``kmod``initramfs-tools`,同时仅升级当前系统已安装的 `dpkg``kmod``initramfs-tools``systemd``udev` 等组件。该步骤不是全量系统升级,也不会执行 `dist-upgrade`;脚本不会自动升级 `grub-pc``grub-efi-*``shim-signed` 等 GRUB 安装器包,避免触发 `grub-install` 设备选择问题。如果检测到上一次 apt/dpkg 留下 GRUB 半配置状态,脚本会先自动尝试修复,失败后才提示手动处理;如果关键用户态刷新仍失败,脚本会在卸载旧内核前中止安装。
## 菜单功能 ## 菜单功能
运行脚本后会进入交互菜单: 运行脚本后会进入交互菜单:
-104
View File
@@ -859,108 +859,6 @@ update_bootloader() {
fi fi
} }
# 函数:查询上次 apt/dpkg 是否留下 GRUB 半配置状态
get_broken_grub_packages() {
dpkg-query -W -f='${binary:Package} ${db:Status-Abbrev}\n' \
grub-common grub2-common grub-pc grub-pc-bin \
grub-efi-amd64 grub-efi-amd64-bin grub-efi-arm64 grub-efi-arm64-bin \
shim-signed 2>/dev/null \
| awk '$1 != "" && $2 ~ /^i/ && $2 !~ /^ii/ {print $1}' \
| tr '\n' ' '
}
# 函数:自动修复 GRUB 半配置状态,避免阻断内核安装
repair_broken_grub_packages() {
local broken_grub_packages=""
broken_grub_packages=$(get_broken_grub_packages)
if [[ -n "$broken_grub_packages" ]]; then
echo -e "\033[31m检测到 GRUB 相关软件包处于未完成配置状态:$broken_grub_packages\033[0m"
echo -e "\033[33m正在尝试自动修复 dpkg 状态:跳过 grub-install 目标盘选择,仅完成软件包配置。\033[0m"
if command -v debconf-set-selections > /dev/null 2>&1; then
{
echo 'grub-pc grub-pc/install_devices multiselect'
echo 'grub-pc grub-pc/install_devices_empty boolean true'
} | sudo debconf-set-selections || true
fi
if sudo env DEBIAN_FRONTEND=noninteractive dpkg --configure -a; then
broken_grub_packages=$(get_broken_grub_packages)
if [[ -z "$broken_grub_packages" ]]; then
echo -e "\033[1;32m✔ GRUB 相关 dpkg 半配置状态已自动修复\033[0m"
return 0
fi
fi
echo -e "\033[31mGRUB 相关软件包自动修复失败:$broken_grub_packages\033[0m"
echo -e "\033[33m请手动执行以下命令修复后,再重新运行本脚本:\033[0m"
echo -e "\033[33m sudo DEBIAN_FRONTEND=dialog dpkg --configure grub-pc\033[0m"
echo -e "\033[33m sudo dpkg --configure -a\033[0m"
return 1
fi
}
# 函数:安装内核前刷新关键用户态组件,降低 7.x 内核安装和启动失败概率
refresh_kernel_install_userspace() {
local missing_required_packages=()
local upgrade_candidates=(
dpkg
kmod
initramfs-tools
initramfs-tools-core
initramfs-tools-bin
linux-base
systemd
systemd-sysv
udev
)
local installed_packages=()
local pkg
echo -e "\033[36m安装内核前刷新关键用户态组件...\033[0m"
echo -e "\033[33m将更新 apt 索引,并刷新已安装的 dpkg/initramfs/kmod/systemd/udev 等组件;不会自动升级 grub 安装器包,避免触发 grub-install 设备配置。\033[0m"
repair_broken_grub_packages || return 1
if ! sudo apt-get update; then
echo -e "\033[31mapt 索引更新失败。为避免安装后无法生成 initramfs 或更新引导,已中止内核安装。\033[0m"
return 1
fi
command -v dpkg > /dev/null 2>&1 || missing_required_packages+=(dpkg)
command -v modprobe > /dev/null 2>&1 || missing_required_packages+=(kmod)
command -v update-initramfs > /dev/null 2>&1 || missing_required_packages+=(initramfs-tools)
if [[ ${#missing_required_packages[@]} -gt 0 ]]; then
if ! sudo env DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends "${missing_required_packages[@]}"; then
echo -e "\033[31m关键用户态组件安装/检查失败。已中止内核安装。\033[0m"
return 1
fi
fi
for pkg in "${upgrade_candidates[@]}"; do
if dpkg-query -W -f='${Status}' "$pkg" 2>/dev/null | grep -q "install ok installed"; then
installed_packages+=("$pkg")
fi
done
if [[ ${#installed_packages[@]} -gt 0 ]]; then
if ! sudo env DEBIAN_FRONTEND=noninteractive apt-get install --only-upgrade -y "${installed_packages[@]}"; then
echo -e "\033[31m关键用户态组件升级失败。已中止内核安装。\033[0m"
return 1
fi
fi
if ! command -v update-initramfs &> /dev/null; then
echo -e "\033[31m未找到 update-initramfs,当前系统不适合继续安装通用 7.x 内核。\033[0m"
return 1
fi
echo -e "\033[1;32m关键用户态组件已刷新完成。\033[0m"
}
# 函数:安全地安装下载的包 # 函数:安全地安装下载的包
install_packages() { install_packages() {
if ! ls /tmp/linux-*.deb &> /dev/null; then if ! ls /tmp/linux-*.deb &> /dev/null; then
@@ -976,8 +874,6 @@ install_packages() {
fi fi
done done
refresh_kernel_install_userspace || return 1
echo -e "\033[36m开始卸载旧版内核... \033[0m" echo -e "\033[36m开始卸载旧版内核... \033[0m"
INSTALLED_PACKAGES=$(dpkg -l | grep "joeyblog" | awk '{print $2}' | tr '\n' ' ') INSTALLED_PACKAGES=$(dpkg -l | grep "joeyblog" | awk '{print $2}' | tr '\n' ' ')
if [[ -n "$INSTALLED_PACKAGES" ]]; then if [[ -n "$INSTALLED_PACKAGES" ]]; then