我正在尝试使用 Windows、Ubuntu 和 Kali 进行三重启动。但我的 SSD 中已经有 4 个分区。这些是:
- 100 MB NTFS(系统、活动、主分区)
- Windows
C:
(启动、页面文件、崩溃转储、主分区) - 824 MB(恢复分区)
- 25 GB(主分区)– 这是安装的 Ubuntu。
我知道 Windows 和 Ubuntu 分区,但我不知道为什么其他两个分区位于不同的分区而不是与 Windows 分区位于不同的分区。我如何“合并”这些分区以便为 Kali 创建另一个分区?或者除非我卸载 Ubuntu 或 Windows,否则这是不可能的?
选择空闲分区:
选择自动占用最大可用空间的引导式可用分区选项:
答案1
答案2
您很可能有四个主分区。Ubuntu 的输出sudo fdisk -l /dev/sda
(sda
如有必要,请用适当的名称替换)将非常有用,但我将尝试在没有它的情况下提供帮助。
现在我可以建议一个一般的方案来解决你的问题。请记住我还没有对其进行整体测试。
由于还没有fdisk
输出,我将做出一些假设。我们最终可以稍后纠正它们。假设如下:
- 驱动器
/dev/sda
在Linux中; - 它有 DOS MBR,而不是 GPT;
- 四个分区中的每一个都是一个主分区;
- 逻辑扇区大小为512 B;
- 分区号与您的编号列表相对应;
- 分区顺序和数字匹配(
sda1
在前面sda2
等等); - 引导程序是 grub2。
就像 acejavelin 所说的那样:
DOS MBR 允许 4 个主分区,或 3 个主分区和 1 个扩展分区
目的是将 Ubuntu 的主分区“转换”为扩展分区内的逻辑分区。Kali 的分区稍后将作为扩展分区内的下一个逻辑分区添加。
准备
- 开始之前请阅读我的全部回答,以了解整体情况。根据您当前的分区对齐方式和所需的分区对齐方式,可能会跳过某些步骤;我的意思是主要与 Windows 打交道。
- 备份重要数据。
- 阅读两次,思考两次,检查三次数字- 然后做。
- 获取任何合适的 Live CD/DVD Linux – 例如 Knoppix 或 Ubuntu 安装程序(尝试 Ubuntu模式;也许 Kali 安装程序也有这种模式,我不知道)。最重要的是要有
gparted
。您已经安装的 Ubuntu 在这里没有用,因为我们当时无法挂载它的分区。 - 如果需要调整 Windows 分区的大小(请参阅移动分区部分),启动 Windows 并运行
chkdsk
。C:
它可能需要重新启动,因此请重新启动并重新启动 Windows。 - 再次,如果您需要调整 Windows 分区的大小,请按键盘上的 WIN+R 并输入
shutdown -s -t 0
,然后按回车键。在调整其分区大小之前,请勿再次启动 Windows。如果意外发生这种情况,请使用上述命令关闭。(此步骤在 Windows 8、8.1、10 上可能很重要,可以将其完全关闭。无论哪个版本,它都不会造成任何损害,所以无论如何都要这样做。) - 启动到 Ubuntu。检查
/etc/fstab
和是否/boot/grub/grub.cfg
引用分区由/dev/sdaX
或由唯一唯一标识符。每次出现 时/dev/sda4
都必须用 替换/dev/sda5
,稍后我们会处理它。UUID 引用应该没有问题。
移动分区
从 Live CD 启动 Linux。如果您选择的 Live CD 自动挂载/dev/sda*
它们umount
。
运行sudo gparted /dev/sda
。如果我的假设正确,它将显示:
sda1
一开始很小,sda2
旁边就是窗户sda1
,- 少量
sda3
追随者sda2
, - Ubuntu终于
sda4
接近尾声了。
我不知道你把 Kali 放在哪里了。可能就在最后,就在 Ubuntu 之后;或者就在之前。
gparted
让您对操作进行排队,以便您可以在进行实际更改之前取消其中任何一个操作。
不要触摸sda1
。不要触摸 的开头sda2
。否则可能会导致您的 Windows 无法启动。您可以通过移动 的结尾来缩小 Windows 分区sda2
,这不会影响启动。如果您想为 Kali 和/或 Ubuntu 获得更多空间,请执行此操作。在这种情况下,也请移动 ,以便和sda3
之间没有可用空间。sda2
sda3
移动/调整 Ubuntu 的大小sda4
,使两者之间有 1 MB 的间隙(可用空间)sda3
。sda4
此间隙至关重要。在磁盘的最末端为 Kali 留出空间。
注意:我认为我们需要的间隙仅为一个扇区,因此 1 MB 绰绰有余;gparted
可能会更大。不幸的是,此工具适用于兆字节,而不是扇区。命令行工具parted
可以处理扇区,但它不太友好,可能无法调整 ntfs 的大小——这就是我选择的原因gparted
。
应用所有更改并等待结果。移动分区需要时间。
希望一切顺利。通过启动 Ubuntu、Windows 进行健全性检查。预计chkdsk
将在调整大小的 Windows 分区上运行。
创建扩展和逻辑分区
再次从 Live CD/DVD 启动。将 MBR(主引导记录,包含分区表)保存到文件中:
sudo dd if=/dev/sda of=~/mbr.dd bs=512 count=1
如果您犯了一些错误,您可以使用以下命令恢复分区表:
sudo dd if=~/mbr.dd of=/dev/sda
不幸的是,MBR 备份对于逻辑分区来说不够,但它可以最大限度地减少对主分区造成的损坏。从现在起,要格外小心。
运行sudo fdisk /dev/sda
;它与自己的一组命令交互。更改使用w
命令保存到磁盘,而不是更早。遇到问题时,请按q
命令退出并重新开始。
在里面fdisk
调用p
命令查看分区表。记下(在纸上)的起始和结束扇区/dev/sda4
,因为它是主分区,我们需要删除它然后按逻辑重新创建。验证您的笔记三次。
的起始扇区/dev/sda2
可能比 的结束扇区大一个/dev/sda1
;这意味着它们之间没有间隙。这同样适用于sda3
和对。但是和sda2
之间应该有一个间隙。获取 的结束扇区,sda4
sda3
/dev/sda3
添加一个并将结果记为延长开始。验证数字三次。确保它比的开头小sda4
。
使用命令删除分区号 4。d
请注意,即使您现在将更改写入磁盘,也不会真正破坏您的 Ubuntu。数据仍然存在,fdisk
只是丢失了分区所在的位置。您将在几分钟内将其重新创建为逻辑分区。
使用命令创建新分区n
;让它成为扩展分区。fdisk
将建议一个起始扇区,其编号恰好是您的延长开始值 – 检查是否匹配,如果匹配,则按 Enter。然后,它会建议将结束扇区作为磁盘的最后一个可用扇区 – 如果正确,则按 Enter。
再次使用命令创建新分区。它将是编号为 5 的逻辑分区。给出与原始分区n
完全相同的起始和结束扇区。sda4
您可能会注意到这些数字使sda4
分区包含。这是正确的,逻辑分区必须全部位于扩展分区内。由于还有剩余空间,sda5
Kali Linux 应该能够在其中创建自己的扩展分区。sda4
新的分区表仍仅存在于内存中(磁盘尚未受到影响)。使用p
命令检查它。在使用写入之前w
,请仔细检查以下几点:
sda5
默认情况下应显示 ID=83
;该值适合 Linux。如果不同,请使用t
命令将其更改为。83
sda5
应显示开始和结束部门,因为这些部门是原始的sda4
。- 新的
sda4
应该从 的最后一个扇区之后的扇区开始sda3
;该数字应该小于sda5
起始扇区。
上述列表中的第 3 位非常重要。稍后您将把更改写入磁盘。分区 1-4 的信息将存储在 MBR 中。我们可以使用我们制作的 MBR 备份恢复此更改。但逻辑分区的信息sda5
将存储在扩展分区的开头sda4
。从没有数据的正确位置开始至关重要sda4
——这就是我们创建的间隙。如果您错过这个间隙,您可能会立即丢失一些数据。
经过三重检查后,调用w
命令将更改写入磁盘。fdisk
应该将新分区告知内核,这样就可以/dev/sda5
挂载了。现在这就是您的 Ubuntu。
(若没有/dev/sda5
节点,请尝试sudo partprobe
修复它。)
更新文件(如果需要)
一开始我建议检查你的 Ubuntu 是否使用而fstab
不是UUID。从现在开始将是旧的,所以文件可能需要更新。我认为这样做是安全的,即使文件中没有提到,所以如果有任何疑问,就这样做。首先安装:grub.cfg
/dev/sda4
sda4
sda5
sda4
sudo mount -o rw /dev/sda5 /mnt
您将找到这些文件,如/mnt/etc/fstab
和/mnt/boot/grub/grub.cfg
。不要将/etc/fstab
其与属于 Live CD Linux 且与您的 Ubuntu 无关的文件混淆。请备份文件,并将每个sda4
文件替换为sda5
。这可以通过一个命令完成:
sudo sed -i.backup 's/sda4/sda5/' /mnt/etc/fstab /mnt/boot/grub/grub.cfg
最后重新启动并检查两个系统是否正常启动。Kali Linux 现在应该能够在安装过程中利用可用空间。