From 84c893150f2bd8cef652b4ad3af4ca501b587f37 Mon Sep 17 00:00:00 2001 From: bin456789 Date: Thu, 20 Mar 2025 21:55:37 +0800 Subject: [PATCH] =?UTF-8?q?ubuntu:=20=E4=BF=AE=E5=A4=8D=20do-release-upgra?= =?UTF-8?q?de=20=E6=97=B6=20grub=20=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- trans.sh | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/trans.sh b/trans.sh index fb450dc..02245b5 100644 --- a/trans.sh +++ b/trans.sh @@ -3884,15 +3884,17 @@ chroot_apt_remove() { # 不能用 apt remove --purge -y xxx yyy # 因为如果索引里没有其中一个,会报错,另一个也不会删除 - # 因此需要分开删除 - for package in "$@"; do + local pkgs= + for pkg in "$@"; do # apt list 会提示 WARNING: apt does not have a stable CLI interface. Use with caution in scripts. # 但又不能用 apt-get list - if chroot $os_dir apt list --installed "$package" | grep -q installed; then - # 删除 resolvconf 时会弹出建议重启,因此添加 noninteractive - DEBIAN_FRONTEND=noninteractive chroot $os_dir apt-get remove --purge -y "$package" + if chroot $os_dir apt list --installed "$pkg" | grep -q installed; then + pkgs="$pkgs $pkg" fi done + + # 删除 resolvconf 时会弹出建议重启,因此添加 noninteractive + DEBIAN_FRONTEND=noninteractive chroot $os_dir apt-get remove --purge --allow-remove-essential -y $pkgs } chroot_apt_autoremove() { @@ -4360,6 +4362,24 @@ configfile \$prefix/grub.cfg EOF fi + # 避免 do-release-upgrade 时自动执行 dpkg-reconfigure grub-xx 但是 efi/biosgrub 分区不存在而导致报错 + # shellcheck disable=SC2046 + chroot_apt_remove $os_dir $(is_efi && echo 'grub-pc' || echo 'grub-efi*' 'shim*') + chroot_apt_autoremove $os_dir + + # 安装 mbr + if ! is_efi; then + if false; then + # debconf-show grub-pc + # 每次开机硬盘名字可能不一样,但是 debian netboot 安装后也是设置了 grub-pc/install_devices + echo grub-pc grub-pc/install_devices multiselect /dev/$xda | chroot $os_dir debconf-set-selections # 22.04 + echo grub-pc grub-pc/cloud_style_installation boolean true | chroot $os_dir debconf-set-selections # 24.04 + chroot $os_dir dpkg-reconfigure -f noninteractive grub-pc + else + chroot $os_dir grub-install /dev/$xda + fi + fi + # 自带内核: # 常规版本 generic # minimal 20.04/22.04 kvm # 后台 vnc 无显示 @@ -4442,11 +4462,6 @@ EOF fi fi - # 安装 bios 引导 - if ! is_efi; then - chroot $os_dir grub-install /dev/$xda - fi - # 更改 efi 目录的 grub.cfg 写死的 fsuuid # 因为 24.04 fsuuid 对应 boot 分区 efi_grub_cfg=$os_dir/boot/efi/EFI/ubuntu/grub.cfg