How do I mount a NTFS drive for use with steam?

System:
Kernel: 5.17.9-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc v: 12.1.0
parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
root=UUID=2a579e0b-5949-4320-b36c-be216438f88f rw rootflags=subvol=@
quiet quiet splash rd.udev.log_priority=3 vt.global_cursor_default=0
loglevel=3
Desktop: KDE Plasma v: 5.24.5 tk: Qt v: 5.15.4 info: latte-dock
wm: kwin_x11 vt: 1 dm: SDDM Distro: Garuda Linux base: Arch Linux
Machine:
Type: Desktop Mobo: ASUSTeK model: PRIME B350M-A v: Rev X.0x
serial: <superuser required> UEFI: American Megatrends v: 5603
date: 07/28/2020
CPU:
Info: model: AMD Ryzen 5 2600 bits: 64 type: MT MCP arch: Zen+
family: 0x17 (23) model-id: 8 stepping: 2 microcode: 0x800820D
Topology: cpus: 1x cores: 6 tpc: 2 threads: 12 smt: enabled cache:
L1: 576 KiB desc: d-6x32 KiB; i-6x64 KiB L2: 3 MiB desc: 6x512 KiB
L3: 16 MiB desc: 2x8 MiB
Speed (MHz): avg: 1766 high: 2445 min/max: 1550/3400 boost: enabled
scaling: driver: acpi-cpufreq governor: ondemand cores: 1: 2124 2: 1595
3: 1444 4: 1460 5: 2445 6: 1716 7: 2053 8: 1710 9: 1454 10: 1467 11: 1725
12: 2002 bogomips: 81436
Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm
Vulnerabilities:
Type: itlb_multihit status: Not affected
Type: l1tf status: Not affected
Type: mds status: Not affected
Type: meltdown status: Not affected
Type: spec_store_bypass
mitigation: Speculative Store Bypass disabled via prctl
Type: spectre_v1
mitigation: usercopy/swapgs barriers and __user pointer sanitization
Type: spectre_v2
mitigation: Retpolines, IBPB: conditional, STIBP: disabled, RSB filling
Type: srbds status: Not affected
Type: tsx_async_abort status: Not affected
Graphics:
Device-1: AMD Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT]
vendor: Gigabyte driver: amdgpu v: kernel pcie: gen: 4 speed: 16 GT/s
lanes: 16 ports: active: DP-1,HDMI-A-1 empty: DP-2,DP-3 bus-ID: 0a:00.0
chip-ID: 1002:731f class-ID: 0300
Display: x11 server: X.Org v: 21.1.3 with: Xwayland v: 22.1.2
compositor: kwin_x11 driver: X: loaded: amdgpu unloaded: modesetting,radeon
alternate: fbdev,vesa gpu: amdgpu display-ID: :0 screens: 1
Screen-1: 0 s-res: 3840x1080 s-dpi: 96 s-size: 1016x285mm (40.00x11.22")
s-diag: 1055mm (41.54")
Monitor-1: DP-1 mapped: DisplayPort-0 pos: primary,right
model: ViewSonic VX2458 Series serial: <filter> built: 2021 res: 1920x1080
dpi: 94 gamma: 1.2 size: 521x293mm (20.51x11.54") diag: 600mm (23.6")
ratio: 16:9 modes: max: 1920x1080 min: 720x400
Monitor-2: HDMI-A-1 mapped: HDMI-A-0 pos: primary,left model: LED MONITOR
serial: <filter> built: 2018 res: 1920x1080 hz: 60 dpi: 102 gamma: 1.2
size: 477x268mm (18.78x10.55") diag: 547mm (21.5") ratio: 15:9, 16:9
modes: max: 1920x1080 min: 720x400
OpenGL: renderer: AMD Radeon RX 5700 XT (navi10 LLVM 13.0.1 DRM 3.44
5.17.9-zen1-1-zen)
v: 4.6 Mesa 22.1.0 direct render: Yes
Audio:
Device-1: AMD Navi 10 HDMI Audio driver: snd_hda_intel v: kernel pcie:
gen: 4 speed: 16 GT/s lanes: 16 bus-ID: 0a:00.1 chip-ID: 1002:ab38
class-ID: 0403
Device-2: AMD Family 17h HD Audio vendor: ASUSTeK driver: snd_hda_intel
v: kernel pcie: gen: 3 speed: 8 GT/s lanes: 16 bus-ID: 0c:00.3
chip-ID: 1022:1457 class-ID: 0403
Device-3: ESI Audiotechnik GmbH MAYA22 type: USB
driver: hid-generic,snd-usb-audio,usbhid bus-ID: 3-1.1:4 chip-ID: 2573:0017
class-ID: 0102
Device-4: Kingston HyperX Cloud Flight Wireless Headset type: USB
driver: hid-generic,snd-usb-audio,usbhid bus-ID: 3-1.4:7 chip-ID: 0951:16c4
class-ID: 0300
Sound Server-1: ALSA v: k5.17.9-zen1-1-zen running: yes
Sound Server-2: PulseAudio v: 15.0 running: no
Sound Server-3: PipeWire v: 0.3.51 running: yes
Network:
Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet
vendor: ASUSTeK PRIME B450M-A driver: r8169 v: kernel pcie: gen: 1
speed: 2.5 GT/s lanes: 1 port: f000 bus-ID: 06:00.0 chip-ID: 10ec:8168
class-ID: 0200
IF: enp6s0 state: up speed: 1000 Mbps duplex: full mac: <filter>
IF-ID-1: anbox0 state: down mac: <filter>
Drives:
Local Storage: total: 2.96 TiB used: 2.02 TiB (68.4%)
SMART Message: Unable to run smartctl. Root privileges required.
ID-1: /dev/sda maj-min: 8:0 vendor: Samsung model: SSD 850 EVO 250GB
size: 232.89 GiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s
type: SSD serial: <filter> rev: 2B6Q scheme: GPT
ID-2: /dev/sdb maj-min: 8:16 vendor: Western Digital
model: WDS100T2B0A-00SM50 size: 931.51 GiB block-size: physical: 512 B
logical: 512 B speed: 6.0 Gb/s type: SSD serial: <filter> rev: 20WD
scheme: GPT
ID-3: /dev/sdc maj-min: 8:32 vendor: Samsung model: HD103SJ
size: 931.51 GiB block-size: physical: 512 B logical: 512 B speed: 3.0 Gb/s
type: HDD rpm: 7200 serial: <filter> rev: 0001 scheme: MBR
ID-4: /dev/sdd maj-min: 8:48 vendor: Western Digital
model: WD10EZEX-21M2NA0 size: 931.51 GiB block-size: physical: 4096 B
logical: 512 B speed: 6.0 Gb/s type: HDD rpm: 7200 serial: <filter>
rev: 1A01 scheme: MBR
Partition:
ID-1: / raw-size: 122.43 GiB size: 122.43 GiB (100.00%)
used: 27.57 GiB (22.5%) fs: btrfs dev: /dev/sda7 maj-min: 8:7
ID-2: /boot/efi raw-size: 100 MiB size: 96 MiB (96.00%)
used: 29.8 MiB (31.1%) fs: vfat dev: /dev/sda1 maj-min: 8:1
ID-3: /home raw-size: 122.43 GiB size: 122.43 GiB (100.00%)
used: 27.57 GiB (22.5%) fs: btrfs dev: /dev/sda7 maj-min: 8:7
ID-4: /var/log raw-size: 122.43 GiB size: 122.43 GiB (100.00%)
used: 27.57 GiB (22.5%) fs: btrfs dev: /dev/sda7 maj-min: 8:7
ID-5: /var/tmp raw-size: 122.43 GiB size: 122.43 GiB (100.00%)
used: 27.57 GiB (22.5%) fs: btrfs dev: /dev/sda7 maj-min: 8:7
Swap:
Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default)
ID-1: swap-1 type: zram size: 15.62 GiB used: 0 KiB (0.0%) priority: 100
dev: /dev/zram0
ID-2: swap-2 type: partition size: 3.91 GiB used: 0 KiB (0.0%)
priority: -2 dev: /dev/sda5 maj-min: 8:5
Sensors:
System Temperatures: cpu: N/A mobo: N/A gpu: amdgpu temp: 66.0 C
mem: 68.0 C
Fan Speeds (RPM): N/A gpu: amdgpu fan: 482
Info:
Processes: 365 Uptime: 39m wakeups: 0 Memory: 15.62 GiB
used: 7.08 GiB (45.3%) Init: systemd v: 251 tool: systemctl Compilers:
gcc: 12.1.0 clang: 13.0.1 Packages: pacman: 1545 lib: 367 Shell: fish
v: 3.4.1 default: Bash v: 5.1.16 running-in: konsole inxi: 3.3.16
Garuda (2.6.3-2):
System install date:     2022-05-09
Last full system update: 2022-05-26 ↻
Is partially upgraded:   No
Relevant software:       NetworkManager
Windows dual boot:       Probably (Run as root to verify)
Snapshots:               Snapper
Failed units:            bluetooth-autoconnect.service systemd-networkd-wait-online.service

I can't find how to properly mount a ntfs drive to use it with steam, the way they mount by default seems to not allow me to modify files, I can't delete or create files in them from dolphin even with root access, and steam recognizes the library but it can't update games, one of the available updates says "disk write error", but for a split second all of them say that when I try to continue the updates.

I looked around on the internet and most of what I found were people saying not to use ntfs, which isn't really helpful, and only a handful of people saying they got it working and vaguely explaining how, most of them from years ago, stuff as recent as 2019 and as old as 2007.

I tried changing a few things in the "edit mount options" on the included kde partition manager, but everything I could try caused steam to not accept the drive and say something about it needing a disk with execute permission. Unfortunately I can't really say which exact changes I tried, because I was just winging it trying every small change I could find on the internet and trying it in different ways because they were very vague.

I use steam (runtime), I tried installing (native) and it did not make a difference.

In case it's necessary, I know ntfs sucks, I still use windows and have to share some storage.

And what way is that?

Would this work? Steam Support :: Installing Steam for Linux on an NTFS Partition
Also some other assistance here Ntfs-3g driver must be used in fstab to properly mount NTFS format drives

Maybe there are good reasons for that, then. But let’s first see what the above URL does (or doesn’t do) for you.

1 Like

I interpret those two as opening the /etc/fstab file and adding a line at the end with either

UUID=7C1A71921A714A62 /mnt/7C1A71921A714A62 ntfs-3g nofail,noatime,rw,user,uid=1000,gid=1000,dmask=022,fmask=133,windows_names,auto 0 0

or

UUID=yourUUID  
/data  ntfs-3g  defaults,locale=en_US.utf8  0 0

of course, changing it to the drive’s corresponding UUID and rebooting between changes, to be safe I also tried it again after dismounting and remounting
If I interpreted it correctly, then neither of them changed it, I still can’t delete or add files from dolphin and steam says it must be mounted on a filesystem with execute permissions.

Did I do something wrong?

Also, is this issue for arch in general?

Cool, I did say I knew it beforehand.

It’s more an issue for Linux in general.

Linux support for NTFS has always been kind of hacky because obviously NTFS is written for a different OS and has to be reverse-engineered to work on Linux. Before kernel 5.15, this was working somewhat okay if you installed the right packages and drivers and tried to be careful.

Back in October, Paragon Software submitted a bunch of code to bring NTFS drivers into the kernel. The idea was this would be helpful and work better. And maybe at first it did…but they haven’t maintained the code like they said they would, and over time it has kind of gone to seed.

Some folks have had better luck switching to the old version of ntfs-3g package, which contains its own driver and thus sidesteps whatever is broken in the kernel driver.

The newer (default) NTFS package is ntfsprogs-ntfs3, which does not contain the driver (since it is built into the kernel now). Here they both are to see:

paru ntfs-3g
1 extra/ntfs-3g 2021.8.22-1 [557.40KiB 1.76MiB]
    NTFS filesystem driver and utilities
2 chaotic-aur/ntfsprogs-ntfs3 2021.8.22-9 [581.08KiB 1.54MiB] [Installed]
    NTFS filesystem utilities without NTFS-3G driver. For system with kernel >= 5.15

You can see it says for kernel >= 5.15; that’s when the NTFS drivers were built into the kernel, so in theory you wouldn’t need the driver in the package anymore.

To install the old version (that includes the driver):

sudo pacman -Syu ntfs-3g

You will have to confirm to replace ntfsprogs-ntfs3.

From there, I would go by the Arch Wiki page for ntfs-3g.

If you are running on a single user machine, you may like to own the file system yourself and grant all possible permissions:

/dev/NTFS-partition  /mnt/windows  ntfs-3g   uid=userid,gid=groupid    0       0

This option is close to one of the ones you tried, but you can drop the dmask/fmask stuff if you would like to keep it simple.

Another note:

This looks like an auto-generated mount point. I would suggest making a proper directory for your device:

sudo mkdir /mnt/windows_is_garbage

Then give yourself ownership of the directory (instead of root):

sudo chown -R fierro:fierro /mnt/windows_is_garbage

Use your new directory as the mount point in the fstab entry you are working on.

Good luck. :blush:

5 Likes

The new NTFS software is terrible I can attest to that. I am no longer using NTFS with linux anymore. It cost me some very old MP3's. The older software is better, yet still the damage was done.

3 Likes
2 Likes

Not fancy but works without issue.

# /dev/nvme0n1p3 LABEL=Windows-SSD
UUID=6A5E21CD5E21933D	/windows  	ntfs3      	defaults,noatime,uid=1000,gid=1000,umask=077	0 0
For the NTFS3 kernel driver:

mount -t ntfs3 -o ro,iocharset=utf8,dmask=027,fmask=137,uid=$user,gid=$group /dev/mapper/vmvg-workdrive_snap /mnt/place-to-mount

As you can see, some of the -o options have changed, others like windows_names are gone!

Source

5 Likes

This works! Thanks a lot, and thanks to everyone else who also gave it a shot! I can now edit files with no issue

2 Likes

You should also use the windows_names flag, or your drive will inevitably be corrupted because of a violation of the Windows naming conventions.

4 Likes

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.