How to expand Arch Linux root partition

After installing Arch Linux on the Raspberry Pi you will mostly need to expand the disk size to the maximum available size used by SD cards.

And here we show how to do it:

1. After logging in you view the status of filesystem:

[root@alarmpi ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       1.7G  444M  1.2G  28% /
devtmpfs         83M     0   83M   0% /dev
tmpfs           231M     0  231M   0% /dev/shm
tmpfs           231M  236K  231M   1% /run
tmpfs           231M     0  231M   0% /sys/fs/cgroup
tmpfs           231M     0  231M   0% /tmp
/dev/mmcblk0p1   90M   24M   67M  27% /boot

2. Using the command fdisk will edit the filesystem /dev/mmcblk0:

[root@alarmpi ~]# fdisk /dev/mmcblk0
Welcome to fdisk (util-linux 2.23.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
 
Command (m for help):

3. List the information and delete partition 2

Command (m for help): p
 
Disk /dev/mmcblk0: 7969 MB, 7969177600 bytes, 15564800 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
 
Command (m for help): d
Partition number (1,2,5, default 5): 2
Partition 2 is deleted
 
Command (m for help):

Advertisement:

Do you need more power than RPi?

4. Create a new extended partition a logical volume

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-15564799, default 186368):
Using default value 186368
Last sector, +sectors or +size{K,M,G} (186368-15564799, default 15564799):
Using default value 15564799
Partition 2 of type Extended and of size 7.3 GiB is set
 
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-15564799, default 188416):
Using default value 188416
Last sector, +sectors or +size{K,M,G} (188416-15564799, default 15564799):
Using default value 15564799
Partition 5 of type Linux and of size 7.3 GiB is set
 
Command (m for help):

5. !! Check whether top block starts in the same place as the original (start)

Command (m for help): p
 
Disk /dev/mmcblk0: 7969 MB, 7969177600 bytes, 15564800 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    15564799     7689216    5  Extended
/dev/mmcblk0p5          188416    15564799     7688192   83  Linux
 
Command (m for help):

6. If it starts again (in this case on 186368 p2 a 188416 p5) write changes and reboot.

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.
[root@alarmpi ~]# reboot

7. After booting the system we online enlarge root partitions

[root@alarmpi ~]# resize2fs /dev/mmcblk0p5
resize2fs 1.42.8 (20-Jun-2013)
Filesystem at /dev/mmcblk0p5 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mmcblk0p5 is now 1922048 blocks long.

8. Check and it is done :-)

[root@alarmpi ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       7.3G  447M  6.5G   7% /
devtmpfs         83M     0   83M   0% /dev
tmpfs           231M     0  231M   0% /dev/shm
tmpfs           231M  236K  231M   1% /run
tmpfs           231M     0  231M   0% /sys/fs/cgroup
tmpfs           231M     0  231M   0% /tmp
/dev/mmcblk0p1   90M   24M   67M  27% /boot

In this case we have used 8GB SD card.

Comments

after the reboot, my archlinux does not charge

An incredibly good tutorial ! Thanks !

Make sure you execute that last resize2fs command or else the rootfs will not expand to fill the new space.

worked, thanks

My raspi 2 didnt wouldnt reboot at the reboot stage. where did i go wrong?

Mine neighter

Worked pretty well. Many thanks.

Thank you - Great Tutorials

Thanks worked. (Had root partition as primary 2, so no need to do the logical partition steps)