Як я можу змінити розмір свого / (root) розділу?


171

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

Як я можу змінити розмір зображення, щоб у моєму кореневому розділі було більше місця?


Дякую .. спрацював чудово для мене, і не заправляв мою систему .. все-таки є IRC та apache webserver і моя повна ємність 8

1
Навіщо змінювати розмір кореневого розділу, коли ви можете створити новий розділ у вільному просторі SD-картки, а потім встановити його, наприклад, у кореневому розділі /mnt/storage. Це ефективно ізолює систему та дані та полегшує підтримку та резервне копіювання.
mbaitoff

2
@mbaitoff - тому що в системному образі за замовчуванням є лише 68MiB вільного місця, що не залишає багато місця для додавання додаткового програмного забезпечення.
Жуль

@Jules - Я не питав, чому можна змінити розмір розділу. A запитував, чому можна змінити розмір системного розділу замість того, щоб встановлювати додаткове сховище у точці монтажу системного розділу, таким чином ефективно ізолюючи систему та програмне забезпечення / дані? Якщо ви хочете зберігати, встановіть залишкові SD-шпа /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 swap-розділи.

Отже, наберіть 2

потім введіть dще раз, а потім введіть, 3щоб видалити розділ swap.

Тепер ви можете змінити розмір основного розділу.

введіть nдля створення нового розділу.

Цей новий розділ повинен бути основним розділом, так що наберіть p.

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

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

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

Введіть, wщоб зберегти внесені вами зміни.

Далі перезавантажте систему за допомогою наступної команди:

sudo reboot

як тільки система перезавантажиться, і ви знову на командному рядку, введіть таку команду:

sudo resize2fs /dev/mmcblk0p2

Примітка: це може зайняти багато часу (залежно від розміру та швидкості карти), наберіться терпіння, і нехай це закінчиться, щоб ви не зіпсували файлову систему і не довелося починати з нуля.

Після цього перезавантажте систему за допомогою наступної команди:

sudo reboot

Тепер ви можете перевірити, що система використовує повну ємність SD-карти, ввівши таку команду:

df -h

Чому це працює:

Справжня магія тут полягає в тому, що ви видаляєте кореневі та поміняєте розділи, після чого відтворюєте лише кореневий розділ (використовуючи початковий сектор запуску) перед записом даних на диск . Як результат, ви не стираєте наявні дані з кореневого розділу.

Видаляючи розділ swap, ви дозволяєте кімнаті кореневих розділів збільшити його поточний розмір і заповнити невикористану частину диска (через розміщення розділів - кореневий розділ замикається між завантажувальним і swap-розділом - він не може просто змінити розмір, залишивши розділ своп у спокої).

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

посилання:


1
@ Живі, якщо зробити все правильно, ви нічого не втратите, але це я зробив крок перший резервного копіювання.
Стів Робільярд

2
З коментарів, схоже, ви також повинні документувати, чому це працює, а не тільки як.
Стрибки

1
@Jivings сподіваємось, це вирішує ваші проблеми.
Стів Робіллард

9
Дуже неправильно видається розділ, щоб змінити його розмір.
Алекс Чемберлен

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

102

Використовуючи бета-версію зображення 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 хвилин, коли карта на моєму Pi піла 16 Гб.
Der Hochstapler

5
Це набагато простіше, ніж головна відповідь. Це рішення для використання.
Джеймс Скімінг

@JamesSkimming: Це рішення для використання для бета-версії зображення Debian-Wheezy. Не для інших.
СФ.

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

Raspi-config не знає, як змінити розмір кореня Raspbian Wheezy. розширення_rootfs, як ви запропонували, викликало проблеми. Відповідь над вашою спрацьовує як шарм у живій системі і не потрібно «залишати близько 1 ГБ».
Гтодоров

28

Якщо вам не дуже зручно працювати в командному рядку, як, наприклад, у відмінній відповіді Стіва Робіллардса, є деякі програми GUI. Зокрема, дуже добре працює gparted.

Я думаю, що він встановлений за замовчуванням на Ubuntu LiveCD, але не на встановленій системі. Існує, звичайно , легко виправити це: apt-get install gparted. Це не можна зробити на фактичному Pi, оскільки для зміни розмірів розділів їх потрібно відключити.

Малюнок нижче голландською мовою, але не дозволяйте це зіпсувати задоволення. Це дуже просто у використанні. Це макет дебіанського зображення за замовчуванням на 8gb SDCard.

GParted

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

Змініть розмір

Ви можете грати з макетом розділів, зміни записуються лише в тому випадку, якщо ви застосуєте зміни (сіра клавіша "return" на першому малюнку).

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


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.
Відхилення

2
Як би все-таки зробити таке?

2
Це найпростіший спосіб змінити розмір розділів для будь-якого сучасного хрипкого зображення.
Юваль Адам

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.