I helped someone install Ubuntu recently and took notes as I went, the way I usually do when I know I'll need to do the same thing again someday. Writing it up properly here, because "someday" always arrives faster than expected, and I'd rather look this up than relearn it.
Manual partitioning during install looks intimidating mostly because the installer doesn't tell you which situation you're in, and the right answer genuinely depends on it. A fresh machine with nothing else on it is almost boring. A machine that's already running Windows and needs to keep doing so afterward is where people actually get nervous — and where mistakes happen.
Case 1: fresh install, whole disk to yourself
If there's no other OS to protect, this is close to the easy case. Say you've got a 256 GB SSD (I'll call it sdb here, though the actual letter depends on the machine):
| # | Type | Space | Mount point | Purpose |
|---|---|---|---|---|
| sdb1 | FAT32 | 1 GB | /boot/efi | Boot OS |
| sdb2 | ext4 | 70 GB | / | Root (programs, system) |
| sdb3 | swap | 8 GB | — | Swap |
| sdb4 | ext4 | 74 GB | — | Storage drive 1 |
| sdb5 | ext4 | 100 GB | — | Storage drive 2 |
Take those numbers as illustrative, not prescriptive — this was a 256 GB disk, and the actual split should scale with whatever you're working with. The EFI partition genuinely doesn't need more than 1 GB regardless of disk size, but root and storage should flex with total capacity. Swap is its own question: the old "swap equals RAM" rule mostly existed for hibernation support, and with modern RAM sizes it's common to see much smaller swap (or none at all) on machines that never hibernate — worth deciding based on your actual RAM and whether you need suspend-to-disk, not just copying a number.
One thing worth knowing about that table, not just copying it: leave the storage partitions without a mount point during install. They'll show up afterward as separate drives in Nautilus (Files) instead of being folded silently into one big filesystem — much easier to find things later.
Case 2: dual-boot alongside Windows
This is the one that actually goes wrong for people, usually in one of two specific ways.
Shrink Windows from inside Windows
Use Windows' own Disk Management to shrink the NTFS partition and free up unallocated space before you ever boot the Ubuntu installer. Resizing NTFS from inside the Linux installer is riskier and more likely to leave Windows in a state where it won't boot afterward.
Don't touch the existing EFI partition — reuse it
Windows already created a small EFI partition (usually FAT32, a few hundred MB) the first time it was installed. During Ubuntu's manual partitioning step, select that existing partition and set its mount point to /boot/efi — but don't reformat it. Reformatting wipes Windows' boot entries, and that's the single most common way people accidentally lose the ability to boot into Windows at all.
The one that actually got me: BitLocker
Partway through, the Ubuntu installer wouldn't let me touch the drive at all. Turned out Windows had silently encrypted it — Device Encryption, the consumer version of BitLocker, had turned itself on automatically during Windows setup, tied to the Microsoft account, without anyone explicitly choosing it. And it wasn't just the main drive; separate partitions were locked independently too, which is why I had to boot back into Windows and unlock each one individually before the installer would cooperate.
If you hit a wall partway through partitioning and can't tell why, this is worth checking first: Settings → Privacy & Security → Device Encryption in Windows (or Control Panel → BitLocker Drive Encryption on Pro editions). Suspend or turn off encryption on every drive you're about to touch, not just C:.
Worth doing at the same time: turn off Fast Startup in Windows' power settings. It leaves NTFS in a half-hibernated state that Linux can't safely mount, and it's a common source of "why can't Linux see my Windows files" confusion later.
After the install
Once Ubuntu's up, it's worth a quick sanity check rather than assuming the installer did what you asked:
lsblk
Confirms the partition table actually matches what you intended. Then, to label the storage drives so they show up as something recognizable instead of anonymous blocks:
sudo e2label /dev/sdb4 <drive-name>
sudo e2label /dev/sdb5 <drive-name>
None of this is complicated once you've done it once. It's just unforgiving the first time, which is exactly why it's worth writing down.