Как изменить размер корневого раздела на Raspberry Pi/Orange Pi/Banana Pi

В данной статьи описан один из способов, как изменить/расширить размер корневого (системного или root) раздела на ОС Linux Ubuntu, Lubuntu, Raspbian, Debian и т.п. для использования не распределённой памяти на Raspberry Pi, Orange Pi, Banana Pi и т.п..

ВНИМАНИЕ!!! Лучше всего это сделать на «свежую» ОС, чтобы, в случае чего, не потерять данные или сделать резервную копию MicroSD карты памяти — это можно сделать с помощью утилиты Win32 Disk Imager, нажимая на кнопку Read.
Win32 Disk Imager (READ)

Вывод таблицы разделов

Для начала выводим список разделов с помощью fdisk, определим устройство, соответствующее SD.

sudo fdisk -l

Получаем примерно такой результат:

root@OrangePI:~# sudo fdisk -l
Disk /dev/mmcblk0: 7.4 GiB, 7948206080 bytes, 15523840 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0003c1e0

Device         Boot  Start     End Sectors Size Id Type
/dev/mmcblk0p1       40960  172031  131072  64M  b W95 FAT32
/dev/mmcblk0p2      172032 6547455 6375424   3G 83 Linux

В итоге мы имеем:

  1. Один диск (MicroSD накопитель) на 8 ГБ (Disk /dev/mmcblk0: 7.4 GiB);
  2. И два раздела: один на 64 МБ (/dev/mmcblk0p1 40960 172031 131072 64M b W95 FAT32) и второй на 3 ГБ (/dev/mmcblk0p2 172032 6547455 6375424 3G 83 Linux) — на этом разделе и установлена система.

Как изменить размер корневого раздела

Теперь переходим к расширению размера корневого раздела.

  1. Откроем инструмент разметки fdisk с устройством, соответствующим SD (mmcblk0):
    sudo fdisk /dev/mmcblk0

    результат:

    root@OrangePI:~# sudo fdisk /dev/mmcblk0
    
    Welcome to fdisk (util-linux 2.27.1).
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.
    
    
    Command (m for help):
  2. Ещё раз выводим список разделов, вводим p:
    p

    результат:

    Command (m for help): p
    Disk /dev/mmcblk0: 7.4 GiB, 7948206080 bytes, 15523840 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x0003c1e0
    
    Device         Boot  Start     End Sectors Size Id Type
    /dev/mmcblk0p1       40960  172031  131072  64M  b W95 FAT32
    /dev/mmcblk0p2      172032 6547455 6375424   3G 83 Linux
    
    Command (m for help):

    Нам нужно сохранить сектор с которого партиция (раздел) начинается, в моём случае это 172032, он нам понадобится позже.
    Как изменить размер корневого (root) раздела - сектор с которого партиция (раздел) начинается

  3. Удаляем раздел, в котором находится файловая система (в этом случае есть только один, mmcblk0p1). Нажмите d, чтобы удалить раздел, потом введите 2, чтобы выбрать второй раздел:
    d

    результат:

    Command (m for help): d
    Partition number (1,2, default 2): 2
    
    Partition 2 has been deleted.
    
    Command (m for help):

    Раздел 2 был удален.

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

    результат:

    Command (m for help): n
    Partition type
       p   primary (1 primary, 0 extended, 3 free)
       e   extended (container for logical partitions)
    Select (default p):
  5. Введите p, чтобы выбрать основной тип раздела:
    p

    результат:

    Select (default p): p
    Partition number (2-4, default 2):
  6. Нажимаем «ENTER» или 2, чтобы принять 2 в качестве номера раздела по умолчанию:
    2

    результат:

    Partition number (2-4, default 2): 2
    First sector (2048-15523839, default 2048):
  7. Вводим номер сектора с которого партиция (раздел) начинается, в моём случае — это 172032, номер о котором было написано выше (пункт второй):

    ВНИМАНИЕ!!! Если промахнёмся тут — значит всё, мы больше не сможем запустить ОС и прийдётся переустановить её. Как изменить размер корневого (root) раздела - сектор с которого партиция (раздел) начинается

    172032

    результат:

    First sector (2048-15523839, default 2048): 172032
    Last sector, +sectors or +size{K,M,G,T,P} (172032-15523839, default 15523839):
  8. Теперь нужно вводить номер сектора которым заканчивается раздел, оставляем параметр по умолчанию, для этого нажимаем «ENTER», таким образом будет выбрано всё свободное пространство. Результат:
    Last sector, +sectors or +size{K,M,G,T,P} (172032-15523839, default 15523839):
    
    Created a new partition 2 of type 'Linux' and of size 7.3 GiB.
    
    Command (m for help):
  9. Нажмите w, чтобы записать новую таблицу разделов:
    w

    результат:

    Command (m for help): w
    The partition table has been altered.
    Calling ioctl() to re-read partition table.
    Re-reading the partition table failed.: Device or resource busy
    
    The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).
    
    root@OrangePI:~#

    Он предупредит, что изменение таблицы невозможно (система активна).

    Как изменить размер корневого (root) раздела - Предупреждение, что изменение таблицы невозможно (система активна)

  10. Перезагрузите систему, чтобы заставить ядро распознать новую таблицу разделов.
    sudo reboot
  11. Теперь нужно изменить размер раздела, содержащего файловую систему (mmcblk0p1), на новый размер (максимальный размер SD):
    sudo resize2fs /dev/mmcblk0p2

    результат:

    root@OrangePI:~# sudo resize2fs /dev/mmcblk0p2
    resize2fs 1.42.13 (17-May-2015)
    Filesystem at /dev/mmcblk0p2 is mounted on /; on-line resizing required
    old_desc_blocks = 1, new_desc_blocks = 1
    The filesystem on /dev/mmcblk0p2 is now 1918976 (4k) blocks long.
  12. Чтобы проверить, изменился ли размер корневого раздела, ещё раз выводим список разделов:
    sudo fdisk -l

    результат:

    root@OrangePI:~# sudo fdisk -l
    Disk /dev/mmcblk0: 7.4 GiB, 7948206080 bytes, 15523840 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x0003c1e0
    
    Device         Boot  Start      End  Sectors  Size Id Type
    /dev/mmcblk0p1       40960   172031   131072   64M  b W95 FAT32
    /dev/mmcblk0p2      172032 15523839 15351808  7.3G 83 Linux
    root@OrangePI:~#

    Как мы видим теперь, размер корневого раздела почти 8 ГБ и мы можем использовать всю память.

    Как изменить размер корневого (root) раздела - Новый размер корневого раздела почти 8 ГБ
    Как изменить размер корневого (root) раздела - результат

Материалы

Banana Pi: resizing the SD card root partition on Lubuntu
Fdisk — wikipedia

Похожие записи

Комментарии 9

  • Хорошая заметка, спасибо. Исследовал свою SD и обнаружил странное. По команде fdisk -l разглядел кроме 15 дисков /dev/ram1 … /dev/ram15. По 4 mb каждый. Предположительно — виртуальные диски !? Очень интересно. Среди смонтированных ( df) их нет.
    Можете прокомментировать?

    • Я так полагаю, что у вас Raspbian, потому что я использую Ubuntu и в нём отсутствуют?
      По поводу этих 16 разделов, это совершенно нормально в системах Linux. Это своего рода подготовительное пространство в случае, когда потребуются RAM. Каждый из них имеет размер, в зависимости от системы, от 4 до 64 МБ, что является очень низким значением. При необходимости размер будет увеличен автоматически.

      https://askubuntu.com/questions/703576/fdisk-l-shows-16-ram-disks-dev-ram0-ram15

      • Спасибо.
        Однако, для чего 15 дисков надо — не понятно. Я в качестве RAM диска использую /dev/shm. Может быть стоит использовать эти странные /dev/ram1 …?
        Еще вопрос — и как уживается rapberry pi с ubuntu? Зачем? Какие преимущества вас привлекли? В и-нете на этот счет противоречиво

        • Почему именно столько — я не знаю, наверное создатели нашли «золотую середину» и это оптимальное количество с оптимальным размером. А использовать их — не думаю, что это хорошая идея, лучше оставить так как есть, иобо 1 ГБ оперативки уже маловато.
          На второй вопрос я тоже не отвечу, мне просто удобно использовать Ubuntu, так как я уже привык (это первая моя ОС линукс), Raspbian я установил лишь несколько раз и не сдружились как-то 🙂 Если я не ошибаюсь, Raspbian быстрее и потребляет меньше ресурсов чем Ubuntu. Но тут опять — всё зависит от поставленных задач: для мультимедиа подойдёт Ubuntu, для работы — Raspbian (но это не точно, для rapberry pi возможно и обратное, у меня Orange Pi PC и Banana Pi M3).

  • Автор сей статьи огромное СПАСИБО это очень нужная информация, я сделал в точности по тутор алу и всё ваышло, до этого находил инструкции и что-то не работало, чтото выдавало ошибку. Ещё раз спасибо большое!!!)

  • Спасибо за инструкцию. Менял на orange pi по ней.
    Поправка:
    >Чтобы проверить, изменился ли размер корневого раздела… …fdisk -l
    fdisk итак покажет новый размер сразу после w и ребута.
    Так что, после resize2fs (изменения размера ФС) смотреть df -h
    /dev/mmcblk1p1 7.3G 1.3G 5.9G 18% /

  • Спасибо. Всё получилось.
    после 8 пункта программа сообщила, что нашла сигнатуру ext4 и спросила удалить ли? (да/нет). Выбрал нет и продолжил дальше.

Добавить комментарий для admin Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *