0

I plan on setting up a dualboot with Windows10 and ArchLinux. They will share a 1TB SSD and a 3 TB HDD. How should I format the partitions on the different drives?

What are the advantages of ext4 vs NTFS? Should I run linux on something other than ext4?

Edit:

To be clear I am asking about choices of formats for the main system SSD and any HDD I will later add to expand storage. My main use-case for Windows10 is Gaming and for Linux it will be programming and data crunching.

Here's my current Idea:

System SSD:

+-------------------------------------------------------------------------------+
|500MB EFI     | 250GB NTFS Windows10  | 250GB ext4(?) Arch  | 500GB ?? Shared  |
+-------------------------------------------------------------------------------+

Future Expansion 3TB+ HDD:

+-----------------+
| 3TB+ exFat(?)   | 
+-----------------+

What should I choose for the shared space on the SSD? Is this a good layout for the SSD? What should I choose for the internal expansion drive that I'll add in the future?

6
  • If you use EXT4 you will have to use a third-party application to add support for that file system. Linux out of the box has stable NTFS support.
    – Ramhound
    Sep 29, 2019 at 20:32
  • 1
    Linux won't run on NTFS (or exFAT). You have those options for separated data partitions, not system ones, Windows requires NTFS for its system partition and Linux typically uses EXT4. It's really important that you understand this.
    – user931000
    Sep 29, 2019 at 21:51
  • 2
    Possible duplicate of Cross-platform file system
    – Moab
    Sep 29, 2019 at 22:26
  • Have you considered running one is as a VM inside the other? In this way you can use Windows Filesharing or NFS to share data and have access to both OS's at the same time.
    – davidgo
    Sep 30, 2019 at 7:18
  • @Moab not a duplicate, I am looking for boot drive partition management, not external drive formating.
    – jaaq
    Oct 1, 2019 at 20:29

3 Answers 3

2

Based on personal experience with a dual-boot setup used for exactly the same purposes (just with Gentoo instead of Arch), you need 5 primary partitions:

  • EFI System Partition (assumign you're using UEFI to boot, which you really should be for this as it's way easier to manage than a legacy multi-boot configuration). Needs to be formatted as FAT32, will be automatically created by Windows during install. You probably only need 128MB of space here unless you're having it double as a Linux boot partition (MS bootloader plus a basic GRUB install is currently about 64MB and not likely to grow all that much).
  • Microsoft Reserved Partition. This is that weird ~100MB empty partition that the Windows installer creates for reasons usually unspecified. It's largely unused these days, but some stuff on Windows still chokes if it's not there.
  • Widows C: drive. Needs to be NTFS formatted (Windows has long since dropped support for using anything but NTFS for the C drive, and ReFS isn't exactly ready for consumer usage). DO NOT MOUNT THIS VOLUME BY DEFAULT FROM LINUX, it will eventually bite you in the arse (though do set things up so you can mount it read-write from Linux if you need to). Assuming you configure Windows and whatever game launchers you use to put things on the shared partition, this only needs to be about 32GB plus however much space you need for data that will be stored here.
  • Linux root partition. Needs to be a standard Linux filesystem (such as ext4, XFS, or BTRFS). Doesn't really matter which you choose, as you won't be able to access any of them reliably from Windows. Personally, I'd actually use BTRFS on top of LVM, but you would need a dedicated boot partition for Linux to pull that off (which should again be a standard Linux filesystem, since pretty much all the standard boot loaders have better support for them), and would require some more effort to sanely maintain. If you choose to use the shared data partition for your home directory, you can easily (and safely) make this as small as 16GB without issue.
  • Shared data partition. Should be either NTFS or exFAT. If using NTFS, use NTFS-3G instead of the kernel driver and set up proper user mappings (check the NTFS-3G documentation about how to do this). If using exFAT, probably use the FUSE driver and not the Samsung driver (and hope that MS can pull their heads out of their arses and propose patches on LKML that will actually get merged in the near future). This should ideally be most of your disk space, especially if you configure both Windows and Linux to utilize it to the fullest.

Updated to address comments:

Installing games in Windows on exFAT may or may not hurt performance when compared to NTFS. Most of the performance differences only really matter when writing files, not reading them (so you'll see some differences during updates or installs, but not generally during game-play), and even then the software would have to be pretty pathologically bad to show significant issues.

As far as installing Linux software on the shared data partition, you probably can't if you're using exFAT or NTFS, unless you add another layer on top to give POSIX semantics (and even then, you probably just can't, at least not through the package manager). However, you shouldn't need to. Unlike Windows, Linux doesn't waste huge amounts of disk space with dozens of copies of essentially the same libraries, so it's fully possible to have a working install of Linux with a full desktop environment including a complete office suite and a complete development environment for multiple languages/frameworks in under 8GB of space provided you store your documents and development work-spaces in a separate partition.

5
  • does installing games to exFat under Windows have any performance hits? How about installing linux packages to ntfs via ntfs-3g? Or will I hit compatability issues somewhere? For example if I install larger packages like Nvidia drivers or Libraries for linux on exFat/NTFS?
    – jaaq
    Oct 1, 2019 at 13:27
  • 1
    @jaaq I've updated the answer to address your extra questions. Oct 1, 2019 at 14:43
  • Thanks! So just to get my reasoning checked: I'll Install Windows10, on a 100GB NTFS Partition first, then install ArchLinux on another 100GB ext4 Partition, just to for sure have the space for all the libs and drivers I'll need. Then create a shared partition that's ~800GB with NTFS. Reason being, it works for windows10 and I know NTFS-3G and I'd rather wait for patches to ArchLinux NTFS-3G than for the MS guys to pulling their heads out of their arses. Reading and writing to NTFS from linux should work from an executable from the ext4 partition right?
    – jaaq
    Oct 1, 2019 at 20:13
  • 1
    @jaaq Yep, that should work perfectly fine. Just make sure you get the configuration and mount options for NTFS-3G right though, otherwise you may end up causing more headaches (the windows_names and hide_hid_files options are of particular interest for maintaining consistency). Oct 1, 2019 at 20:31
  • thanks for the heads up! I will follow the ArchWiki when setting it up. Worst case you'll see another post from me :)
    – jaaq
    Oct 1, 2019 at 20:33
2

I recommend you use exFAT. Here is why:

  • No file system exists to my knowledge, that allows to set permissions in a way, that both Windows and Linux can use them. This means, we don't need take file system security into our considerations.
  • exFAT is perfectly supported in Windows, and Linux support works via FUSE, but in my experience even better with the Samsung kernel module at github. In addition to that, Microsoft has pledged to make exFAT a first-tier FS on Linux.
  • Real world performance under Linux (with the kernel driver) is nearly double that of NTFS, especially if you have concurrent access patterns.
4
  • Thanks, I didn't even consider exFAT before, as I was oblivious that MS was working an a more widely supported standard. I updated my answer where I better explained the usecase I am talking about. Should be fairly standard, I just haven't found any examples of what worked and didn't work for people.
    – jaaq
    Sep 30, 2019 at 14:16
  • 1
    NTFS used through NTFS-3G with UID <-> SID mapping set up correctly actually works very well for managing ownership and permissions in a way both Windows and Linux understand. The only real issue is that Windows defaults to giving out execute permissions by default (it provides 'Read and Execute' on everything by default instead of just 'Read' permissions). Sep 30, 2019 at 19:13
  • @AustinHemmelgarn The way you propose works fine for "normal" users (if you don't need any performance) but the fundamental differences between Windows and Linux stand in the way quite often: Windows tends to run all system services as the LOCALSYSTEM account, while Linux typically sets up a seperate system user. Oct 1, 2019 at 8:10
  • 1
    @EugenRieck Most users are 'normal' users. They don't need anything involving system services to be shared, or any complicated ACL's, they just need ownership set properly, and that's trivial to do using NTFS-3G. And, barring some special cases, the performance difference just doesn't matter enough for most users to really matter. Oct 1, 2019 at 11:44
0

Consider a multi-partition approach. I would look at an EFI (small FAT partition for UEFI/bootloader support) then a dedicated Linux - maybe EXT4 and a dedicated windows NTFS partition.

I would make a third (or 2 if you want HDD and ssd) partitions for data, which I would format with VFAT (but you can use NTFS). You might want to consider using truecrypt if you want this data encrypted and readable under both OS's

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .