Жизнь, веб, XMPP, TAS, электронные самоделки

Изменение размера корневого раздела

При установке Arch Linux на флеш-накопитель размером более 2 гигабайт корневая файловая система не занимает весь диск. Это происходит по той простой причине, что dd, cat и аналогичные программы просто копируют образ на диск побайтно, перенося туда без изменений всё, в том числе и таблицу разделов.

Так как необходимость в большом корневом разделе всё равно присутствует, существуют способы расширения этого раздела уже после установки. Для Arch Linux эта процедура несколько отличается от аналогичной процедуры для Raspbian, так как расположение разделов иное, ии корневая файловая система расположена на логическом диске расширенного раздела, а не на самостоятельном разделе.

В моём случае таблица разделов имела следующий вид:

Disk /dev/mmcblk0: 31.8 GB, 31812747264 bytes, 62134272 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
Disk label type: dos
Disk identifier: 0x00057540

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            2048      186367       92160    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          186368     3667967     1740800    5  Extended
/dev/mmcblk0p5          188416     3667967     1739776   83  Linux

Задача заключалась в удалении Extended-раздела, создании нового в той же позиции, но большего размера, с последующим пересозданием логического диска в той же позиции, что и раньше, но также с новым размером. У меня получилось следующее:

Command (m for help): d
Partition number (1,2,5, default 5): 2
Partition 2 is deleted

Command (m for help): p

Disk /dev/mmcblk0: 31.8 GB, 31812747264 bytes, 62134272 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
Disk label type: dos
Disk identifier: 0x00057540

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            2048      186367       92160    c  W95 FAT32 (LBA)

Command (m for help): n   
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e
Partition number (2-4, default 2): 2
First sector (186368-62134271, default 186368): 
Using default value 186368
Last sector, +sectors or +size{K,M,G} (186368-62134271, default 62134271): 
Using default value 62134271
Partition 2 of type Extended and of size 29.6 GiB is set

Command (m for help): p

Disk /dev/mmcblk0: 31.8 GB, 31812747264 bytes, 62134272 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
Disk label type: dos
Disk identifier: 0x00057540

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            2048      186367       92160    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          186368    62134271    30973952    5  Extended

Command (m for help): n
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): l
Adding logical partition 5
First sector (188416-62134271, default 188416): 
Using default value 188416
Last sector, +sectors or +size{K,M,G} (188416-62134271, default 62134271): 
Using default value 62134271
Partition 5 of type Linux and of size 29.6 GiB is set

Command (m for help): p

Disk /dev/mmcblk0: 31.8 GB, 31812747264 bytes, 62134272 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
Disk label type: dos
Disk identifier: 0x00057540

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            2048      186367       92160    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          186368    62134271    30973952    5  Extended
/dev/mmcblk0p5          188416    62134271    30972928   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 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)
Syncing disks.

После перезагрузки потребовалось выполнить команду resize2fs /dev/mmcblk0p5.

Литература