Reclaim sda1–sda4 and move /home onto it

Goal: Free the ~352G of unused Windows partitions (sda1–sda4) and turn it into usable storage by creating a new partition and migrating /home onto it.

Current disk layout (verified)

NAME   FSTYPE FSVER LABEL  SIZE MOUNTPOINT
sda                          476.9G
├─sda1 vfat               100M            ← stray Windows EFI (unused)
├─sda2                     16M            ← Microsoft reserved (unused)
├─sda3                  350.9G            ← Windows data / NTFS (unused)
├─sda4 ntfs               916M            ← Windows recovery (unused)
├─sda5 vfat                 1G /boot      ← ACTIVE Linux boot/ESP — DO NOT TOUCH
└─sda6 ext4               124G /          ← root (83G used, 33G free)
sdb                          931.5G
└─sdb1 ext4   1.0   backup 931.5G         ← BACKUP TARGET (not mounted)

Why sda6 can't simply be extended

sda1–sda4 sit physically before sda5 and sda6 on the disk. A partition can only grow into free space immediately after it, and sda5 sits in the way. So the clean path is a new partition + migrate /home onto it. This gains ~352G for home data and frees ~45G back on root.


Phase 1 — Do this from your running Arch system (no reboot)

Step 0 — Backup to sdb1 (mandatory)

0a. Inspect sdb1 read-only first (don't overwrite anything unexpected)

sudo mkdir -p /mnt/insp && sudo mount -o ro /dev/sdb1 /mnt/insp
ls -la /mnt/insp
du -sh /mnt/insp/* 2>/dev/null
sudo dumpe2fs -h /dev/sdb1 | grep -Ei "free blocks|mount count|last mounted"
sudo umount /mnt/insp

This only reads — it won't change anything on sdb1. Confirm the existing content is OK to keep alongside the backup before proceeding.

0b. Mount sdb1 and back up /home + a full image of sda6

sudo mkdir -p /mnt/backup
sudo mount /dev/sdb1 /mnt/backup      # ext4, label "backup"

# Full sda6 root image (stays on the root filesystem only — skips /boot, /tmp,
# virtual filesystems). Lets you restore the whole system if repartitioning fails.
sudo rsync -aHAX --info=progress2 --one-file-system / /mnt/backup/sda6-root/

# /home explicitly (captured above via --one-file-system too, but kept separate
# so it's easy to find/restore on its own)
sudo rsync -aHAX --info=progress2 /home/ /mnt/backup/home/

sync      # flush all writes before unmounting

0c. Verify the backup before moving on

sudo du -sh /mnt/backup/sda6-root /mnt/backup/home
ls -la /mnt/backup/home                  # spot-check users/owners/perms

Do not proceed to Phase 2 until this backup checks out.


Phase 2 — Do this from the Arch live USB

/home is in use while you're logged in, so the migration (rsync + rename + fstab) must be done offline. Boot the Arch ISO — it matches your installed system and has parted, rsync, and mkfs.ext4. (You could also repartition sda1–sda4 live since they're unmounted, but doing it from the USB is safer.)

Step 1 — Boot the live USB

Boot the live USB, open a terminal, and confirm the disk is still /dev/sda:

lsblk                            # match by 476.9G size
sudo parted /dev/sda print

Step 2 — Delete Windows partitions and create the new one

Easiest with gparted (GUI). Or via CLI:

sudo parted /dev/sda print                       # note start sector of sda5 (call it S5)
sudo parted /dev/sda rm 4
sudo parted /dev/sda rm 3
sudo parted /dev/sda rm 2
sudo parted /dev/sda rm 1

# Create one partition filling the gap (from 2048s up to just before sda5)
sudo parted /dev/sda mkpart home ext4 2048s $((S5-1))s
sudo mkfs.ext4 -L home /dev/sda1    # verify the new partition's letter!
sudo blkid /dev/sda1                # record UUID for fstab

Step 3 — Copy /home onto the new partition

sudo mkdir /mnt/root /mnt/newhome
sudo mount /dev/sda6  /mnt/root
sudo mount /dev/sda1  /mnt/newhome      # use the real new device
sudo rsync -aHAX --info=progress2 /mnt/root/home/ /mnt/newhome/

# Verify: compare sizes and spot-check permissions/owners
sudo du -sh /mnt/root/home /mnt/newhome

-aHAX preserves ownership, permissions, symlinks, hardlinks, ACLs, and xattrs — essential for /home.

Step 4 — Swap in the new home and update fstab

sudo mv /mnt/root/home /mnt/root/home.old
sudo mkdir /mnt/root/home               # empty mountpoint

Edit /mnt/root/etc/fstab and add:

UUID=<new-uuid>  /home  ext4  rw,relatime  0 2

Step 5 — Reboot and verify

df -hT /home          # should show the new ~352G ext4
mount | grep /home
ls -la /home          # confirm users/files/perms

Step 6 — Cleanup (only after a day or two of confirming all is well)

sudo rm -rf /home.old    # frees ~45G back on sda6 (root)

Risks / notes