7 votes

Dual-boot with a shared partition?

Tags: linux, windows

Hey,

I use Windows 10 and Arch in a dual boot configuration.

I use both of them for software development and want a shared partition to store all the projects.
Unfortunately, it's not as easy as I had thought.

Initially, I tried NTFS as the Linux support seemed fine. I tried both, ntfs-3g and the kernel implementation.
Besides the issue that hibernate could lock the drive - which you can disable - it periodically caused problems during compilation and other stages.

Especially Rust based projects have thrown weird errors during builds, but I also had this on certain Go projects as well.
It sometimes felt like, that the NTFS driver returned the wrong files when the compiler asked for them. Unmet dependencies, missing files, etc. Usually, when the project is huge.

In certain scenarios symbolic links didn't work and permissions were not set correctly - which you can fix by adding some args to the fstab mount - never got it really stable though.

I then tried to format to Ext4, and all issues were instantly gone on the Linux side.

Fortunately, there are tools such as Linux FileSystem from Paragon which promise to make it work (I even bought a proper license) - and it did for a while, until it didn't.

I once copied a bigger folder that included a bigger node_modules folder and during copy, files were missing, corrupted, the copy process hung - then crashed.

I was so desperate that I even tried out FAT32, but I quickly found out that it doesn't support symbolic links at all, and therefore breaks Git and other tools depending on it.

Is it still so hard in 2023 to have a shared partition between two OS? Has anyone made better experiences?
I really don't want to split the partitions as I sometimes work on the same project on different OSes.

Thanks in advance!

11 comments

  1. [2]
    Comment deleted by author
    Link
    1. lux
      Link Parent
      Yeah that sums it up pretty much I guess. I will try the NAS route, as I haven't yet. Otherwise I will maybe either split partitions, or have to change my workflow. The issues come up very rarely,...

      Yeah that sums it up pretty much I guess.

      I will try the NAS route, as I haven't yet. Otherwise I will maybe either split partitions, or have to change my workflow. The issues come up very rarely, but when they do, you never know if your project is just set up wrong, or if your driver is having problems. Never fun to debug this.

  2. [4]
    imperator
    Link
    What about a NAS? Would that impact compilation too much? Could use syncthing if you need work locally.

    What about a NAS? Would that impact compilation too much? Could use syncthing if you need work locally.

    7 votes
    1. [3]
      lux
      Link Parent
      If it can properly handle .git directories, and is fast enough it would be worth a thought. I have an Unraid server running that would have enough storage for this. I would be a bit concerned...

      If it can properly handle .git directories, and is fast enough it would be worth a thought.
      I have an Unraid server running that would have enough storage for this.

      I would be a bit concerned about decreased compilation times. I'm currently storing everything on NVME drives.

      1 vote
      1. [2]
        spit-evil-olive-tips
        Link Parent
        you could set up a git remote on the Unraid server (which could be over SSH, or a filesystem-based remote using NFS or Samba shares) that would let you push & pull changes between the machines,...

        you could set up a git remote on the Unraid server (which could be over SSH, or a filesystem-based remote using NFS or Samba shares)

        that would let you push & pull changes between the machines, while still having a local working copy and build artifacts on the local NVMe drives.

        alternately, you could configure the build so that the source code you're editing lives on the Unraid server, but local build artifacts are symlinked or redirected to faster local storage.

        compilation, especially highly-parallel compilation like Go and Rust use, tends to be a sort of "torture test" for filesystems. the source code can live on slower, possibly networked storage, but for intermediate and final build artifacts, caches of dependencies, and the like, you'll really want fast local storage, and using a native-to-that-OS filesystem.

        1. lux
          Link Parent
          Thanks! So I actually use Git (hosted on Github) already. What I really liked so far is, that I can switch the OS and just continue with the current state without having the need to commit / push...

          Thanks!

          So I actually use Git (hosted on Github) already. What I really liked so far is, that I can switch the OS and just continue with the current state without having the need to commit / push things all the time when I'm in middle of a bigger feature.

          I'll think about your points though, I would at least like to try out using the NAS, then I have more storage on my machine again - and I have proper backups of everything too. I have a lot of projects (300GB in total) and not everything is properly pushed to a repo..

          I like the idea with the artifacts. I will look a bit more into that!

  3. [2]
    MephTheCat
    Link
    Forgive me if I'm mistaken as I've never used it, but doesn't WSL come with an ext4 driver?

    Forgive me if I'm mistaken as I've never used it, but doesn't WSL come with an ext4 driver?

    5 votes
    1. lux
      Link Parent
      You are right, it does! But mounting it on Windows as a proper drive only works with Win 11.

      You are right, it does! But mounting it on Windows as a proper drive only works with Win 11.

      1 vote
  4. cycling_mammoth
    Link
    There is a windows implementation of btrfs on github, but you may still run into the same issues that you are running into now with compiling errors etc. I think I have to agree with imperator's...

    There is a windows implementation of btrfs on github, but you may still run into the same issues that you are running into now with compiling errors etc. I think I have to agree with imperator's comment about a NAS, otherwise I would consider using WSL instead of using a seperate Arch partition.

    4 votes
  5. imsoenthused
    Link
    I use WinBTRFS, and a simple BTRFS partition with no subvolumes to transfer between Arch and Windows. Works fine for me, might be worth a try.

    I use WinBTRFS, and a simple BTRFS partition with no subvolumes to transfer between Arch and Windows. Works fine for me, might be worth a try.

    3 votes
  6. Pistos
    Link
    I would go for a networked solution, like others have said. However, consider doing standard checks for physical drive errors or breakage. SMART tools, or whatever.

    I would go for a networked solution, like others have said. However, consider doing standard checks for physical drive errors or breakage. SMART tools, or whatever.

    2 votes
  7. tech10
    Link
    a solution is having 3 SSDs in the pc: -An SSD with Windows -An SSD with Linux -And a SSD formatted as NTFS to act as a transfer drive. janky but should work

    a solution is having 3 SSDs in the pc:
    -An SSD with Windows
    -An SSD with Linux
    -And a SSD formatted as NTFS to act as a transfer drive.

    janky but should work

    2 votes