Весьма вероятно, что у вас есть четыре основных раздела. Вывод из sudo fdisk -l /dev/sda
Ubuntu (при необходимости замените sda
на собственное имя) будет очень полезен, но я постараюсь помочь без него.
На данный момент я могу предложить общий сценарий, чтобы справиться с вашей проблемой. Имейте в виду, я не проверял это в целом.
Не имея вывода fdisk
, я сделаю некоторые предположения. Мы можем исправить их позже в конце концов. Предположения:
- диск является
/dev/sda
в Linux;
- у него DOS MBR, а не GPT;
- каждый из четырех разделов является основным разделом;
- размер логического сектора 512 B;
- номера разделов соответствуют вашему нумерованному списку;
- порядок и номера разделов совпадают (
sda1
предшествует sda2
и т. д.);
- загрузчик grub2.
Точно так же, как сказал ацеавелин:
DOS MBR допускает 4 основных раздела или 3 основных и 1 расширенный раздел
Цель состоит в том, чтобы «преобразовать» основной раздел вашего Ubuntu в логический раздел в расширенном разделе. Раздел Кали будет добавлен позже как следующий логический раздел в расширенном разделе.
Подготовка
- Прочитайте весь мой ответ, прежде чем начать, чтобы получить полную картину. Некоторые шаги могут быть пропущены в зависимости от текущего выравнивания раздела и желаемого выравнивания раздела; Я имею в виду возиться с Windows в основном.
- Сделайте резервную копию ваших важных данных.
- Прочитайте дважды, подумайте дважды, проверьте свои цифры три раза - затем сделайте.
- Получить любой приличный Live CD/DVD Linux - например, Knoppix или установщик Ubuntu (в режиме Try 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
или по UUID . Каждое вхождение /dev/sda4
должно быть заменено на /dev/sda5
позже, и мы доберемся до него. Ссылки по UUID должны быть без проблем.
Перемещение Разделов
Загрузите Linux с Live CD. Если Live CD по вашему выбору автомонтирует /dev/sda*
- umount
их.
Запустите sudo gparted /dev/sda
. Если мои предположения верны, он покажет:
- крошечный
sda1
в начале,
- большой
sda2
с Windows прямо рядом с sda1
,
- маленький
sda3
следующий за sda2
,
- наконец
sda4
с Ubuntu рядом или в конце.
Я не знаю, где вы оставили место для Кали. Вероятно, это в самом конце, сразу после Ubuntu; или просто раньше.
gparted
позволяет ставить операции в очередь, поэтому вы можете отменить любого из них, прежде чем вносить какие-либо реальные изменения.
Не трогай sda1
. Не трогай начало sda2
. В противном случае ваша Windows может не загружаться. Вы можете сжать раздел Windows, переместив конец sda2
и это не должно повлиять на загрузку. Сделайте это, если хотите получить больше места для Kali и / или Ubuntu. В этом случае переместите также sda3
чтобы между sda2
и sda3
не было свободного места.
Переместите / измените размер sda4
Ubuntu, чтобы между sda3
и sda4
разрыв в 1 МБ (свободное пространство). Оставьте место для Кали в самом конце диска.
Примечание: я думаю, что нам нужно, чтобы разрыв составлял всего один сектор, поэтому 1 МБ - это более чем достаточно; gparted
может сделать его еще больше. К сожалению, этот инструмент работает с мегабайтами, а не с секторами. Инструмент командной строки parted
может работать с секторами, но он менее дружественен и, вероятно, не может изменить размер ntfs - поэтому я выбрал gparted
.
Примените все изменения и дождитесь результата. Перемещение перегородок требует времени.
Надеюсь, все пройдет хорошо. Выполните проверку работоспособности, загрузившись с Ubuntu, Windows. Ожидается, что chkdsk
будет работать на измененном разделе Windows.
Создание расширенного и логического раздела
Снова загрузитесь с Live CD/DVD. Сохраните вашу MBR (Master Boot Record, она содержит таблицу разделов) в файл:
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.
Снова создайте новый раздел с помощью команды n
. Это будет логический раздел с номером 5. Укажите начальный и конечный сектор в точности так, как они были для исходного раздела 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
и / или grub.cfg
/dev/sda4
вместо UUID. Старый 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 теперь сможет использовать свободное место во время установки.