我在扩展分区中安装了 Windows 8.1 和 Kali Linux。由于某种原因,我只格式化了安装Windows的分区并重新安装。现在它只能启动到Windows 并且不显示grub。
我正在使用实时 USB 并尝试重新安装 grub:
grub-install --boot-directory=/mnt/boot /dev/sda
并得到错误:
grub-install :command not found
答案1
添加到用户提供的答案@kirill-a
并进一步充实它:
以下是我最近在 Windows 8 和 Debian 8 双引导计算机上恢复 GRUB 引导加载程序所做的事情,在 Windows 8 重新安装从磁盘开头清除了以前的 GRUB 引导加载程序条目后。
修复 GRUB2:Linux 上的实时 USB/CD 'chroot' 方法:
这些说明通常适用于基于 Debian 的发行版上未加密的非 LVM 磁盘,在基于 RHEL/SUSE 和可能基于 Arch 的发行版下使用的目录名称和实用程序需要进行细微更改。
从您选择的发行版的可启动 Live USB 或 CD 开始。
- 用于确定GRUB 引导加载程序丢失或损坏的块设备的
lsblk
内核名称描述符(即)。/dev/xxyN
以下所有操作均需以 root 身份完成(使用su
或sudo
)。
为已安装的 Linux 创建临时挂载点:
mkdir -p /mnt/linux
(如果父目录尚不存在,该
-p
选项将创建父目录)/mnt
使用
/dev/xxyN
上一个lsblk
命令:mount /dev/xxyN /mnt/linux
仅当您有单独的分区时才需要以下命令
/boot
;/dev/xxyN
这里代表/boot
分区的内核名称描述符。mount /dev/xxyN /mnt/linux/boot
然后:
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
(此处,
dev/xxy
= 要安装 GRUB 引导加载程序的设备名称和编号,例如 ,/dev/sda
不包括 中的根分区号/dev/sda1
)如果您想对 GRUB 进行任何其他更改/自定义,现在是编辑文件
/etc/default/grub
并保存的时候了。grub-mkconfig -o /boot/grub/grub.cfg
重新启动并验证。
注意:如果 GRUB2 引导加载程序驻留在具有 LVM LV 根和/或加密根卷的 Linux 系统上,则此过程还有几个附加步骤。请随意在这里给我发消息,我已经写下了这些附加说明,并已成功将它们多次应用到 SSD 上的 LVM LV,其中包含使用内核 dm-crypt 模块加密的根卷。
答案2
您需要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
答案3
我的答案是 forgrub2-install
和grub2-mkconfig
命令。
command not found
我的 Photon OS Linux 机器上也出现错误。
下有配置文件/boot/grub2
。所以我认为 grub2 软件包已经安装,但由于某种原因 grub2-* 命令不起作用。
但是发现grub2软件包没有安装。运行以下命令修复了该问题。
yum install grub2 -y
对于grub-install
命令,您需要安装grub
软件包而不是grub2
.