You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决grub_is_shim_lock_enabled错误,实现便携M.2 Linux盘通用启动

解决grub_is_shim_lock_enabled错误,实现便携M.2 Linux硬盘即插即用启动

方案1:重新编译GRUB,移除shim lock依赖

该错误根源是GRUB依赖主机shim中的特定符号,不同主机的shim环境不一致导致启动失败。直接编译不带shim lock支持的GRUB是最彻底的解决方式:

  1. 在外置硬盘的系统内(或通过Live镜像chroot进入)安装编译依赖:
    # Arch系发行版
    sudo pacman -S base-devel grub efibootmgr
    # Debian/Ubuntu系发行版
    sudo apt install build-essential grub-common efibootmgr
    
  2. 下载对应版本的GRUB源码:
    git clone https://git.savannah.gnu.org/git/grub.git
    cd grub
    git checkout grub-2.06  # 替换为你当前系统使用的GRUB版本
    
  3. 配置编译参数,禁用shim lock:
    # UEFI平台
    ./configure --disable-shim-lock --prefix=/usr --with-platform=efi
    # BIOS平台替换为
    # ./configure --disable-shim-lock --prefix=/usr --with-platform=pc
    
  4. 编译并安装:
    make -j$(nproc)
    sudo make install
    
  5. 重新生成GRUB配置文件:
    sudo grub-mkconfig -o /boot/grub/grub.cfg
    

方案2:制作独立UEFI引导镜像(不依赖主机shim)

生成包含GRUB的独立UEFI引导文件,放在硬盘ESP分区,让主机直接引导该镜像,彻底脱离对主机shim的依赖:

  1. 确保外置硬盘的ESP分区(通常为/dev/sdX1)挂载到/boot/efi:
    sudo mount /dev/sdX1 /boot/efi
    
  2. 生成独立GRUB EFI引导镜像:
    sudo grub-mkimage -o /boot/efi/EFI/BOOT/BOOTX64.EFI -p /EFI/grub -O x86_64-efi fat part_gpt ext2 linux normal boot configfile loopback iso9660 search search_label search_fs_uuid search_fs_file
    
  3. 设置外置硬盘的UEFI引导项优先级:
    sudo efibootmgr -c -d /dev/sdX -p 1 -L "Portable Linux" -l "\EFI\BOOT\BOOTX64.EFI"
    
    其中/dev/sdX是你的外置M.2硬盘设备名。

核心注意事项

  • 外置硬盘的ESP分区必须为FAT32格式,且容量不小于512MB,满足UEFI通用引导要求。
  • 编译GRUB时需匹配系统架构(x86_64/aarch64),BIOS/UEFI平台需对应调整编译参数。
  • 系统内核更新后,仅需重新生成grub.cfg,无需重复编译GRUB。

内容的提问来源于stack exchange,提问作者Holloway

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 04:32:48