注意:
Grub 安装在 /dev/sda 上。
一 概况
- 本篇文章的流程概况:以有 Windows 10 -> 在 Win 10 中划分出一个分区 -> 安装 Deepin Linux -> 返回 Win10 再划分一块分区(之前没打算装两个 Linux)-> grub rescue 恢复引导 -> 返回 Win 10 查看、制作第二个 Linux 启动盘安装 -> 完成
- 如果一开始就打算安装两个 Linux,可以直接划分出两个分区准备好,这样就不会出现 grub rescue 恢复引导。
- 在 Windows 基础上安装 Linux 很容易,但返过来在引导上会比较麻烦。
- 根据硬盘分区容量大小搞清楚自己已经安装的操作系统、将要安装的操作系统在哪个分区上以及相关信息。
二 安装第一个 Linux 系统
此篇均为 BIOS 传统模式 + MBR,非 UEFI + GPT。
查看 BIOS 模式:已存在 Windows 10,在 Windows 下准备好划分出一定的磁盘空间(用分区魔术师切割并转为主分区。一开始就准备装两个 Linux 的话,直接划两个分区出来。);用 UltraISO 解压出其中的 deepin-boot-maker.exe,用它来制作 U 盘映像;设置 BIOS 启动顺序等其他配置,U 盘安装即可(引导会自动设置好)。Deepin 安装成功。
三 安装第二个 Linux 系统
先进入 Deeppin,为以防万一和备份一些信息,备份 gurb.cfg(一般不会有问题,可略过),查看分区情况和 UUID(硬盘分区唯一识别符),拍照记录。根据硬盘分区容量大小搞清楚自己已经安装的操作系统、将要安装的操作系统在哪个分区上。
重启返回 Windows 10。
使用 Win32DiskImager-0.9.5(用其它软件写入可能会数据写入出错)将 Kali 镜像写入准备好的 U 盘,注意路径及文件名用英文。
用分区魔术师切割一部分空间并转为主分区(之前没预留空间的情况,已预留分区可直接重启安装,结束。),并重启。
重启后因为分区的变化导致 Grub 引导找不到 Windows 操作系统位置而无法正常启动(最好之前预留好空闲分区),进入 grub rescue:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21# 查看各分区文件系统类型,确定哪个是 Deepin 系统安装位置,文件系统为 ext。
ls
ls (hdx,msdosy) # x,y 为数字,参见 ls 命令后显示的分区情况。
# 如果之前安装 Linux 时没有分 /boot 分区:
ls (hdx,msdosy)/boot/grub
set root=(hdx,msdosy)
set prefix=(hdx,msdosy)/boot/grub
insmod normal
normal
# 如果之前安装 Linux 时分出了 /boot 分区:
ls (hdx,msdosy)/grub
set root=(hdx,msdosy)
set prefix=(hdx,msdosy)/grub
insmod normal
normal
# 回车进入 Linux,命令行输入命令:
sudo update-grub
sudo grub-install /dev/sda重启进入 Windows 查看,准备好的空闲分区也已成功:
重启用 U 盘安装第二个 Linux 操作系统 Kali,完成(Grub 会自动识别并完成引导的配置)。
四 补充:换成 Deepin 的 Grub 引导
由于先安装的 Deepin,后安装的 Kali,导致后者的 Grub 覆盖了前者的,现在恢复用 Deepin 的 Grub 来引导(更加美观)。
先进入 Deepin,终端查看分区情况,我的 Kali 装在 /dev/sda8。如下图。
安装 Grub:
grub2-install
或grub-install /dev/sda
。在 /boot/grub/grub.cfg 中添加 Kali Linux 的启动项,让 Deepin Linux 的 Grub 能找到 Kali 操作系统的位置并添加在开机启动操作系统选择菜单上(想再改回去则同理,在 Kali 里覆盖安装 Deepin 的 Grub,然后添加 Deepin 的启动项),如图:
1
2
3
4
5
6
7menuentry "显示的操作系统名" {
insmod part_msdos
insmod ntfs # 文件系统类型。
set root='hd0,msdos8' # hd0 为第几块硬盘,8 为第几个分区。
search --no-floppy --fs-uuid --set=root 7E58BCF758BCAF71 # 磁盘用 UUID 来标记,更精确。
chainloader +1
}
- 更新 Grub 配置:
update-grub
,重启完成。