Archived
Public Access
Refresh userspace before kernel installs
This commit is contained in:
@@ -25,6 +25,8 @@ 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`、`systemd`、`udev`、`grub` 等启动相关组件。该步骤不是全量系统升级,也不会执行 `dist-upgrade`;如果关键用户态刷新失败,脚本会在卸载旧内核前中止安装。
|
||||||
|
|
||||||
## 菜单功能
|
## 菜单功能
|
||||||
|
|
||||||
运行脚本后会进入交互菜单:
|
运行脚本后会进入交互菜单:
|
||||||
|
|||||||
+59
@@ -683,6 +683,63 @@ update_bootloader() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# 函数:安装内核前刷新关键用户态组件,降低 7.x 内核安装和启动失败概率
|
||||||
|
refresh_kernel_install_userspace() {
|
||||||
|
local required_packages=(dpkg kmod initramfs-tools)
|
||||||
|
local upgrade_candidates=(
|
||||||
|
dpkg
|
||||||
|
kmod
|
||||||
|
initramfs-tools
|
||||||
|
initramfs-tools-core
|
||||||
|
initramfs-tools-bin
|
||||||
|
linux-base
|
||||||
|
systemd
|
||||||
|
systemd-sysv
|
||||||
|
udev
|
||||||
|
grub-common
|
||||||
|
grub2-common
|
||||||
|
grub-pc
|
||||||
|
grub-efi-amd64
|
||||||
|
grub-efi-arm64
|
||||||
|
shim-signed
|
||||||
|
)
|
||||||
|
local installed_packages=()
|
||||||
|
local pkg
|
||||||
|
|
||||||
|
echo -e "\033[36m安装内核前刷新关键用户态组件...\033[0m"
|
||||||
|
echo -e "\033[33m将更新 apt 索引,并刷新已安装的 dpkg/initramfs/kmod/systemd/udev/grub 等启动相关组件。\033[0m"
|
||||||
|
|
||||||
|
if ! sudo apt-get update; then
|
||||||
|
echo -e "\033[31mapt 索引更新失败。为避免安装后无法生成 initramfs 或更新引导,已中止内核安装。\033[0m"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! sudo env DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends "${required_packages[@]}"; then
|
||||||
|
echo -e "\033[31m关键用户态组件安装/检查失败。已中止内核安装。\033[0m"
|
||||||
|
return 1
|
||||||
|
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
|
||||||
@@ -697,6 +754,8 @@ install_packages() {
|
|||||||
return 1
|
return 1
|
||||||
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' ' ')
|
||||||
|
|||||||
Reference in New Issue
Block a user