Как я могу изменить размер моего / (корневого) раздела?


171

Несмотря на то, что моя SD-карта емкостью 16 ГБ, изображение, которое я поместил на нее, было всего 2 ГБ, и теперь я вижу только 2 ГБ дискового пространства на диске.

Как я могу изменить размер изображения, чтобы у меня было больше места на моем корневом разделе?


Спасибо .. отлично сработало для меня и не заправляло мою систему .. еще есть IRC и веб-сервер apache и моя полная емкость 8

1
Зачем изменять размер корневого раздела, если вы можете создать новый раздел на оставшемся свободном пространстве SD-карты, а затем смонтировать его внутри корневого раздела, /mnt/storageнапример, в. Это эффективно изолирует систему и данные и упрощает обслуживание и резервное копирование.
mbaitoff

2
@mbaitoff - потому что образ системы по умолчанию имеет только 68 МБ свободного места, что не оставляет много места для добавления дополнительного программного обеспечения.
Жюль

@Jules - я не спрашивал, почему нужно изменить размер раздела. А спрашивал, зачем менять размер системного раздела вместо монтирования дополнительного хранилища в точке монтирования системного раздела, эффективно изолируя систему и программное обеспечение / данные? Если вам нужно хранилище, смонтируйте оставшиеся SD spcae в /mnt/storage, если вам нужны программы - смонтируйте в /opt/software/.
mbaitoff

@mbaitoff большинство программ устанавливаются в / usr, а не в / opt / software. Готовые образы содержат содержимое / usr в корневом разделе. Поэтому представляется важным увеличить размер корневого раздела, если вы хотите установить любое программное обеспечение не по умолчанию.
Жюль

Ответы:


158

Предполагая, что вы используете Debian.

Краткая версия:

  1. Сделайте резервную копию вашей системы
  2. Удалите основной и раздел подкачки (оставив загрузочный раздел в покое)
  3. Создайте заново основной раздел, чтобы использовать оставшееся место на диске (исключая загрузочный раздел). Убедитесь, что вы используете тот же начальный сектор, что и исходный корневой раздел.
  4. перезагрузите систему
  5. измените размер нового загрузочного корневого раздела, чтобы использовать полный размер раздела.

Пошаговые инструкции

Сначала сделайте резервную копию вашей SD-карты, используя инструкции, приведенные здесь, на случай, если что-то пойдет не так.

Из командной строки или окна терминала введите следующее

sudo fdisk /dev/mmcblk0

затем введите pсписок таблицы разделов

Вы должны увидеть три раздела. если вы посмотрите в последнем столбце с надписью Система, вы должны иметь

  1. W95 FAT32
  2. Linux
  3. Linux Swap

запишите начальный номер для части 2, она понадобится вам позже. хотя, вероятно, все еще будет на экране (на всякий случай).

Следующий тип, dчтобы удалить раздел.

Затем вам будет предложено указать номер раздела, который вы хотите удалить. В приведенном выше случае вы хотите удалить разделы подкачки как Linux, так и Linux.

Так типа 2

затем введите dснова, а затем введите, 3чтобы удалить раздел подкачки.

Теперь вы можете изменить размер основного раздела.

введите, nчтобы создать новый раздел.

Этот новый раздел должен быть основным, поэтому введите p.

Далее введите, 2когда будет предложено ввести номер раздела.

Теперь вам будет предложено ввести первый сектор для нового раздела. Введите начальный номер с предыдущего шага (раздел Linux)

Далее вам будет предложено указать последний сектор, который вы можете просто нажать Enter, чтобы принять значение по умолчанию, которое будет использовать оставшееся дисковое пространство.

Введите, wчтобы сохранить внесенные изменения.

Затем перезагрузите систему с помощью следующей команды:

sudo reboot

как только система перезагрузится и вы вернетесь в командную строку, введите следующую команду:

sudo resize2fs /dev/mmcblk0p2

Примечание: это может занять много времени (в зависимости от размера и скорости карты), наберитесь терпения и дайте ей закончить, чтобы вы не испортили файловую систему и не начали с нуля.

После этого перезагрузите систему с помощью следующей команды:

sudo reboot

Теперь вы можете проверить, что система использует всю емкость SD-карты, введя следующую команду:

df -h

Почему это работает:

Настоящая магия здесь в том, что вы удаляете корневой раздел и меняете разделы, а затем воссоздаете только корневой раздел (используя исходный начальный сектор) перед записью данных на диск . В результате вы не удаляете существующие данные из корневого раздела.

Удаляя раздел подкачки, вы позволяете комнате корневого раздела вырасти за пределы своего текущего размера и заполняете неиспользуемую часть диска (из-за расположения разделов - корневой раздел зажат между загрузочным и разделом подкачки - он не может просто измените размер, оставив раздел подкачки в покое).

Затем вы изменяете размер (что безопасно для запуска на смонтированном диске) файловой системы, чтобы использовать все пространство в новом корневом разделе.

ссылка:


1
@ Jivings, если все сделано правильно, вы ничего не потеряете, но по этой причине я сделал резервную копию первого шага.
Стив Робиллард

2
Из комментариев кажется, что вы также должны документально подтвердить, почему это работает, а не только как.
Jivings

1
@Jivings, надеюсь, это решит ваши проблемы.
Стив Робиллард

9
Кажется очень неправильным, что вы должны удалить раздел, чтобы изменить его размер.
Алекс Чемберлен

5
@AwesomeUser Вы не делаете это на Mac, вы делаете это на самом пи. Кроме того, если вы используете raspbian, вы можете загрузить pi и из командной строки выполнить следующую команду sudo raspi-config и выбрать опцию изменения размера корневого раздела.
Стив Робиллард

103

Используя бета-образ Debian-Wheezy, есть встроенная утилита конфигурации, которая делает это легко:

Есть утилита под названием raspi-config. Это выполняется при первой загрузке, если вы подключены напрямую к RPi. Если вы используете SSH, вы можете запустить его вручную, используя $ sudo raspi-config. (Я думаю, что вы можете перезапустить инструмент вручную в любое время).

Второй вариант в синем диалоговом окне, который следует ниже, называется expand_rootfs«Развернуть корневой раздел для заполнения SD-карты».

Выбор этого параметра приведет к изменению размера корневого раздела для заполнения карты при следующей загрузке RPi.

Обновление на 2015 год!

Я возвращаюсь к этому ответу с предостережением: я использовал кучу SD-карт емкостью 16 ГБ, и меня поймали, максимизируя раздел, чтобы заполнить карту, которую я использовал. Это вызвало кучу проблем при переходе на новую карту, которая (хотя она была обозначена как 16 ГБ) была примерно на 200 МБ меньше, чем старая карта.

Это пришло в голову, когда я переключил пару RPis с v1 на новую модель v2, которая использует карты Micro SD.

Теперь я оставляю около 1 Гб свободного места, чтобы быть уверенным, что мои изображения можно без проблем переключать между SD-картами.


Этот процесс занял около 10 минут с картой 16 ГБ на моем Pi.
Der Hochstapler

5
Это намного проще, чем главный ответ. Это решение для использования.
Джеймс Скимминг

@JamesSkimming: это решение для использования в бета-образе Debian-Wheezy. Не для других.
SF.

Это не работает для Raspbian при установке из NOOBS на SDCard, которые они поставляют с наборами RPi. когда вы пытаетесь запустить параметр расширения, он говорит, что он не поддерживается этим конфигом, но так как ваши работающие новички, вероятно, все равно используют все пространство ... проблема в том, что я пытаюсь перепрошить образ 8 ГБ на карту 32 ГБ
Eoin Кэмпбелл

Raspi-config не знает, как изменить размер корня Raspbian Wheezy. Как вы предположили, файл expand_rootfs вызвал проблемы. Ответ выше вашего работает как талисман в живой системе и не нужно «оставлять около 1 ГБ».
Г.Т.Доров

28

Если вам не очень удобно работать с командной строкой, как, например, в превосходном ответе Стива Робилларда, есть несколько доступных приложений с графическим интерфейсом. В частности, gparted работает очень хорошо.

Я думаю, что он установлен по умолчанию на Ubuntu LiveCD, но не в установленной системе. Существует, конечно , легко исправить это: apt-get install gparted. Вы не можете сделать это на реальном Pi, потому что для изменения размера разделов их необходимо отключить.

Картинка ниже на голландском, но не позволяйте этому испортить удовольствие. Это очень просто в использовании. Это макет образа Debian по умолчанию на SD-карте 8 ГБ.

GParted

Щелкните правой кнопкой мыши по разделам, чтобы размонтировать их, а затем щелкните правой кнопкой мыши, чтобы изменить размер или переместить раздел. Вы также можете создавать новые разделы и форматировать существующие. На рисунке ниже я удалил раздел подкачки, и теперь я могу изменить размер корневого раздела на все пространство справа от него. Не заполняйте его полностью, потому что вам все равно нужно добавить раздел подкачки.

Изменение размера

Вы можете поиграть с разметкой раздела, изменения записываются только в том случае, если вы примените изменения (на первом рисунке выделена серым цветом клавиша возврата).

Переместить разделы очень легко, но, как и в ответе Стива, я бы порекомендовал полностью удалить раздел подкачки, затем изменить размер корня и затем заново создать раздел подкачки. Перемещение раздела может занять очень много времени, и подкачка не содержит данных, которые вам нужно сохранить.


1
Я использовал этот метод; работает как шарм.
Алекс Чемберлен

Я согласен. Я использовал gparted, чтобы сделать именно это, и это очень легко
JayDev

Если вы подключаетесь через VNC, запуститеsudo -E gparted
forzagreen

Может также потребоваться выполнить следующую команду, прежде чем, gpartedесли вы работаете под Wayland (не уверен, что эти проблемы были решены):xhost +SI:localuser:root
Джон Манько

11

Если вы используете более новый образ Debian Wheezy: http://www.raspberrypi.org/archives/1435 Сценарий при загрузке позволяет изменить размер, чтобы автоматически заполнить sdcard.


1
Я использую Arch Linux.
Jivings

2
Как бы это сделать, хотя?

2
Это самый простой способ изменить размер разделов для любого современного изображения wheezy.
Ювал Адам

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.