grub-install :找不到命令

son*_*eze 11 grub

我在扩展分区中安装了 Windows 8.1 和 Kali Linux。出于某种原因,我只格式化了安装和重新安装 Windows 的分区。现在它只启动到 Windows 并且不显示 grub。

我正在使用实时 USB 并尝试重新安装 grub:

grub-install --boot-directory=/mnt/boot /dev/sda
Run Code Online (Sandbox Code Playgroud)

并得到错误:

grub-install :command not found
Run Code Online (Sandbox Code Playgroud)

nom*_*drc 5

要添加到用户提供的答案@kirill-a并使其更加充实:

这是我最近在 Windows 8 和 Debian 8 双引导机器上恢复 GRUB 引导加载程序的操作,在重新安装 Windows 8 后从磁盘开头清除了以前的 GRUB 引导加载程序条目。

修复 GRUB2:Linux 上的 Live USB/CD 'chroot' 方法:

这些说明通常适用于基于 Debian 的发行版上的未加密、非 LVM 磁盘,在基于 RHEL/SUSE 和可能基于 Arch 的发行版下使用的目录名称和实用程序需要进行微小更改。

从您选择的发行版的可启动 Live USB 或 CD 开始。

  1. 使用lsblk以确定内核名称描述符(即/dev/xxyN该块设备)与丢失或损坏的GRUB引导装载程序。

以下所有操作都必须以 root 身份完成(使用susudo)。

  1. 为已安装的 Linux 创建一个临时挂载点:

    mkdir -p /mnt/linux
    
    Run Code Online (Sandbox Code Playgroud)

    (如果-p父目录/mnt尚不存在,则该选项会创建父目录)

  2. 使用/dev/xxyN上一个lsblk命令:

    mount /dev/xxyN /mnt/linux
    
    Run Code Online (Sandbox Code Playgroud)
  3. 仅当您有单独的/boot分区时才需要以下命令;/dev/xxyN这里代表您的/boot分区的内核名称描述符。

    mount /dev/xxyN /mnt/linux/boot
    
    Run Code Online (Sandbox Code Playgroud)
  4. 然后:

    mount -t proc none /mnt/linux/proc
    mount -t sysfs sys /mnt/linux/sys
    mount -o bind /dev /mnt/linux/dev
    mount -t devpts pts /mnt/linux/dev/pts
    chroot /mnt/linux /bin/bash
    grep -v rootfs /proc/mounts > /etc/mtab
    grub-install /dev/xxy
    
    Run Code Online (Sandbox Code Playgroud)

    (此处,dev/xxy= 安装 GRUB 引导加载程序的设备名称和编号,例如/dev/sda,不包括根分区编号,如/dev/sda1

  5. 如果您想对 GRUB 进行任何其他更改/自定义,现在是编辑/etc/default/grub文件并保存的时候了。

    grub-mkconfig -o /boot/grub/grub.cfg
    
    Run Code Online (Sandbox Code Playgroud)
  6. 重新启动并验证。

注意:如果您的 GRUB2 引导加载程序驻留在具有 LVM LV 根和/或加密根卷的 linux 系统上,则此过程还有几个额外的步骤。随时在这里给我发消息,我已经写下这些附加说明,并已成功将它们多次应用于 ssd 上的 LVM LV,其中包含使用内核 dm-crypt 模块加密的根卷。


kir*_*l-a 3

您需要chroot到已安装的系统并从那里重新安装 grub:

mount /dev/sda(number of partition with kali) /mnt
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt bash
grub-install --boot-directory=/mnt/boot /dev/sda
update-grub
exit
reboot 
Run Code Online (Sandbox Code Playgroud)