Move part of Windows partition to Linux

At first when I installed Linux on my system (duaboot), I expected to spend most of my time in Windows as usual. However, I use Linux most of the time. When I made partitions, I left only 120GB for Linux and everything else (800+GB for Windows). Now I have countless problems with running out of space. Is there a way to safely move the partition so as not to touch the files and move part of the Windows partition to Linux (say 400GB)?

System:
Kernel: 6.12.8-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc v: 14.2.1
clocksource: tsc avail: hpet,acpi_pm
parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
root=UUID=162f422b-411b-4f26-9b23-eb689b33696b rw rootflags=subvol=@
quiet loglevel=3 ibt=off
Desktop: KDE Plasma v: 6.2.5 tk: Qt v: N/A info: frameworks v: 6.9.0
wm: kwin_x11 tools: avail: swayidle,swaylock vt: 1 dm: SDDM Distro: Garuda
base: Arch Linux
Machine:
Type: Desktop Mobo: Intel model: DQ67OW v: AAG12528-308
serial: <superuser required> uuid: <superuser required> BIOS: Intel
v: SWQ6710H.86A.0055.2011.0921.1044 date: 09/21/2011
CPU:
Info: model: Intel Core i5-2400 bits: 64 type: MCP arch: Sandy Bridge
gen: core 2 level: v2 built: 2010-12 process: Intel 32nm family: 6
model-id: 0x2A (42) stepping: 7 microcode: 0x2F
Topology: cpus: 1x dies: 1 clusters: 4 cores: 4 smt: <unsupported> cache:
L1: 256 KiB desc: d-4x32 KiB; i-4x32 KiB L2: 1024 KiB desc: 4x256 KiB
L3: 6 MiB desc: 1x6 MiB
Speed (MHz): avg: 3285 min/max: 1600/3400 scaling: driver: intel_cpufreq
governor: performance cores: 1: 3285 2: 3285 3: 3285 4: 3285 bogomips: 24745
Flags: avx ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
Vulnerabilities: <filter>
Graphics:
Device-1: Intel 2nd Generation Core Processor Family Integrated Graphics
driver: i915 v: kernel arch: Gen-6 code: Sandybridge process: Intel 32nm
built: 2011 ports: active: VGA-1 empty: DP-1,HDMI-A-1 bus-ID: 00:02.0
chip-ID: 8086:0102 class-ID: 0380
Device-2: Advanced Micro Devices [AMD/ATI] Ellesmere [Radeon RX
470/480/570/570X/580/580X/590] vendor: Sapphire driver: amdgpu v: kernel
arch: GCN-4 code: Arctic Islands process: GF 14nm built: 2016-20 pcie:
gen: 2 speed: 5 GT/s lanes: 16 link-max: gen: 3 speed: 8 GT/s ports:
active: HDMI-A-2 empty: DP-2,DVI-D-1 bus-ID: 01:00.0 chip-ID: 1002:67df
class-ID: 0300 temp: 54.0 C
Display: x11 server: X.Org v: 21.1.15 with: Xwayland v: 24.1.4
compositor: kwin_x11 driver: X: loaded: amdgpu,modesetting
alternate: fbdev,intel,vesa dri: radeonsi,crocus gpu: amdgpu,i915
display-ID: :0 screens: 1
Screen-1: 0 s-res: 2944x1080 s-dpi: 96 s-size: 776x285mm (30.55x11.22")
s-diag: 827mm (32.55")
Monitor-1: HDMI-A-2 mapped: HDMI-A-1 pos: top-right
model: ViewSonic V3D245 serial: <filter> built: 2011 res: 1920x1080 hz: 60
dpi: 94 gamma: 1.2 size: 520x290mm (20.47x11.42") diag: 595mm (23.4")
ratio: 16:9 modes: max: 1920x1080 min: 720x400
Monitor-2: VGA-1 mapped: VGA-1-1 pos: primary,bottom-l
model: Samsung SyncMaster serial: <filter> built: 2001 res: 1024x768 hz: 60
dpi: 86 gamma: 1.66 size: 304x228mm (11.97x8.98") diag: 380mm (15")
ratio: 4:3 modes: max: 1024x768 min: 720x400
API: EGL v: 1.5 hw: drv: intel crocus drv: amd radeonsi platforms:
device: 0 drv: crocus device: 1 drv: radeonsi device: 2 drv: swrast gbm:
drv: crocus surfaceless: drv: crocus x11: drv: radeonsi inactive: wayland
API: OpenGL v: 4.6 compat-v: 3.3 vendor: amd mesa v: 24.3.3-arch1.1
glx-v: 1.4 direct-render: yes renderer: AMD Radeon RX 570 Series (radeonsi
polaris10 LLVM 18.1.8 DRM 3.59 6.12.8-zen1-1-zen) device-ID: 1002:67df
memory: 7.81 GiB unified: no
API: Vulkan v: 1.4.303 layers: 10 device: 0 type: discrete-gpu name: AMD
Radeon RX 570 Series (RADV POLARIS10) driver: N/A device-ID: 1002:67df
surfaces: xcb,xlib device: 1 type: cpu name: llvmpipe (LLVM 18.1.8 256
bits) driver: N/A device-ID: 10005:0000 surfaces: xcb,xlib
Audio:
Device-1: Intel 6 Series/C200 Series Family High Definition Audio
driver: snd_hda_intel v: kernel bus-ID: 00:1b.0 chip-ID: 8086:1c20
class-ID: 0403
Device-2: Advanced Micro Devices [AMD/ATI] Ellesmere HDMI Audio [Radeon
RX 470/480 / 570/580/590] vendor: Sapphire driver: snd_hda_intel v: kernel
pcie: gen: 2 speed: 5 GT/s lanes: 16 link-max: gen: 3 speed: 8 GT/s
bus-ID: 01:00.1 chip-ID: 1002:aaf0 class-ID: 0403
API: ALSA v: k6.12.8-zen1-1-zen status: kernel-api with: aoss
type: oss-emulator tools: alsactl,alsamixer,amixer
Server-1: sndiod v: N/A status: off tools: aucat,midicat,sndioctl
Server-2: PipeWire v: 1.2.7 status: active with: 1: pipewire-pulse
status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
4: pw-jack type: plugin tools: pactl,pw-cat,pw-cli,wpctl
Network:
Device-1: Intel 82579LM Gigabit Network driver: e1000e v: kernel port: f080
bus-ID: 00:19.0 chip-ID: 8086:1502 class-ID: 0200
IF: eno1 state: down mac: <filter>
Device-2: Ralink MT7601U Wireless Adapter driver: mt7601u type: USB
rev: 2.0 speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 2-1.1:3
chip-ID: 148f:7601 class-ID: 0000 serial: <filter>
IF: wlan0 state: up mac: <filter>
Info: services: NetworkManager, systemd-timesyncd, wpa_supplicant
Drives:
Local Storage: total: 931.51 GiB used: 900.23 GiB (96.6%)
SMART Message: Unable to run smartctl. Root privileges required.
ID-1: /dev/sda maj-min: 8:0 vendor: Silicon Power
model: SPCC Solid State Disk size: 931.51 GiB block-size: physical: 512 B
logical: 512 B speed: 6.0 Gb/s tech: SSD serial: <filter> fw-rev: 840H
scheme: MBR
Partition:
ID-1: / raw-size: 117.92 GiB size: 117.92 GiB (100.00%)
used: 109.11 GiB (92.5%) fs: btrfs dev: /dev/sda4 maj-min: 8:4
ID-2: /home raw-size: 117.92 GiB size: 117.92 GiB (100.00%)
used: 109.11 GiB (92.5%) fs: btrfs dev: /dev/sda4 maj-min: 8:4
ID-3: /var/log raw-size: 117.92 GiB size: 117.92 GiB (100.00%)
used: 109.11 GiB (92.5%) fs: btrfs dev: /dev/sda4 maj-min: 8:4
ID-4: /var/tmp raw-size: 117.92 GiB size: 117.92 GiB (100.00%)
used: 109.11 GiB (92.5%) fs: btrfs dev: /dev/sda4 maj-min: 8:4
Swap:
Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default) zswap: no
ID-1: swap-1 type: zram size: 31.23 GiB used: 924.8 MiB (2.9%)
priority: 100 comp: zstd avail: lzo-rle,lzo,lz4,lz4hc,deflate,842
max-streams: 4 dev: /dev/zram0
Sensors:
System Temperatures: cpu: 64.0 C mobo: N/A gpu: amdgpu temp: 54.0 C
Fan Speeds (rpm): N/A gpu: amdgpu fan: 1334
Info:
Memory: total: 32 GiB available: 31.23 GiB used: 11.2 GiB (35.8%)
Processes: 268 Power: uptime: 1d 15h 17m states: freeze,mem,disk
suspend: deep avail: s2idle wakeups: 0 hibernate: platform avail: shutdown,
reboot, suspend, test_resume image: 12.48 GiB services: org_kde_powerdevil,
power-profiles-daemon, upowerd Init: systemd v: 257 default: graphical
tool: systemctl
Packages: pm: pacman pkgs: 2080 libs: 590 tools: octopi,paru Compilers:
gcc: 14.2.1 Shell: garuda-inxi default: fish v: 3.7.1 running-in: konsole
inxi: 3.3.36
Garuda (2.6.26-1.1):
System install date:     2023-12-06
Last full system update: 2025-02-02
Is partially upgraded:   No
Relevant software:       snapper NetworkManager dracut
Windows dual boot:       <superuser required>
Failed units:            ldconfig.service systemd-journal-catalog-update.service systemd-random-seed.servicesystemd-sysusers.service systemd-update-done.service systemd-update-utmp.service

Boot in to M$, shrink your M$ partition (M$ hold the minimum of space automatically), shutdown, boot in to Garuda, open gparted and check if you can resize the Garuda part or you can add the new space with btrfs to use.

For details, use forum and web search please :slight_smile:

5 Likes

I put all my Garuda installations onto 120 GB SSD’s. My current drive has 83 GB free. You simply need to learn how to manage your space better.

Store your large data files (video, music, etc) on another drive or partition, then symlink your data into your home directory. The OS itself isn’t very large, it’s all the cruft that builds up that sucks up the space.

Flush your pacman and AUR package caches, internet browser caches, thumbnails. orphaned packages, etc. Your biggest space taker is likely your stored snapshots. Delete all snapshots then take a fresh snapshot, then reboot. After that scrub and balance your drives, the reboot again.

I think you’ll be amazed at how much space you’ve recovered if you follow those steps.

Be sure to do backups first, resizing partitions is risky business.

7 Likes

Seem shrink is not solution for me because root doesn’t let me to change space on linux. I need to make Live-USB and boot from USB to make changes. Forums usually says it may cause data loss so I don’t want to risk. I making everyday stream (everyday progress in one game - Heavely Modded Minecraft to be honest) and once I already ruined system so almost all mods got reset and I lost lots of items.
I need space on disk to make continous backups (yea I do now since last mods reset) so I could restore game back if something happens.
However I found in forums - there is a way to mount directory from other disk (would be Windows disk in my case) - this way all backups would be automatically saved to this mound directory and I don’t need to manually move them every time.
How directory mount works? It would be really live saver.

Read gain please!

Do not use Linux, shrink with M$, it’s so easy that I forget how it works.

1 Like

I really able to free up space in windows. I can shrink free space in windows (need too defrag first) and it makes empty block called “unused space” (somekind empty partition). However I can’t extend Linux partition in Windows because windows won’t recognize Linux partition. Saying like Unknown partition or smth (it’s Windows 10, may be 11 do).
If I go to Linux - I can again make another part of unused space in cost of Linux free space. But I can’t extent - just slider don’t go further.

Forum says it is because I’m logged as root in the same linux disk. Need to be logged/boot elsewhere like Live-USB or smth.

Please post from Garuda

lsblk -f

Maybe you can post a screenshot from gparted (all disks), you can use the kde parted app too, but I never use it :smiley:

unmount all drives, do not use a file explorer.

1 Like
╰─λ lsblk -f
NAME   FSTYPE FSVER LABEL           UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
fd0
sda
├─sda1 ntfs         System Reserved F030FA1C30F9E98C
├─sda2 ntfs                         3EF2FC2CF2FBE5D5
├─sda3 ntfs                         5EECE5DBECE5AE09
└─sda4 btrfs                        162f422b-411b-4f26-9b23-eb689b33696b    4,8G    94% /var/tmp
/var/log
/var/cache
/srv
/home
/root
/
sdb
sdc
sdd
sde
zram0  swap   1     zram0           bffff228-868c-43bc-9c69-a3939d93613c                [SWAP]

Now it must be possible to expand sda4, you are root with gparted.
Left click on sda4 resize.
Or you must use the btrfs trick, I am not sure how it works. :slight_smile:
Maybe @filo or @BluishHumility knoow it exectly :slight_smile:

After resizing (extending sda4 to the left, in this case, with a live USB of course), I used to use (I’ve not been playing with partitions for quite some time :smiling_face:)

sudo btrfs filesystem resize max /
2 Likes

This is what I see. Slider already set to max and it is 120GB (as been before). All I can do is move slider to minimum making 111 GB. Unallocated 112GB still untouched.

Can you swap them, so that sda4 is to the left of the free space, then extend to the right?

1 Like

Are you on live ISO?

Backup files you need!

Yes I can. But it wont let me extend (back) more than set on Linux installation

No I’m not. But perhaps I need to do Live disk. So it takes some time. I’ll write feedback later (need to find some flashdisk first). :slight_smile:

Of course you have to use a live disk, otherwise the system won’t let you change a partition you’re using.

2 Likes