Details
-
New Feature
-
Resolution: Unresolved
-
Minor
-
None
-
None
Description
see the following directory structure as an example;
DIR = directory, SUB = subvolume, LNK = symbolic link (for visibility shown in reverse: name -> target):
DIR \Subvolumes
|
DIR \Subvolumes\OS
|
SUB \Subvolumes\Programs
|
SUB \Subvolumes\ProgramData
|
SUB \Subvolumes\Users
|
DIR \Subvolumes\Snapshots
|
|
SUB \Subvolumes\OS\Current
|
SUB \Subvolumes\OS\{version}
|
DIR \Subvolumes\OS\{version}\ReactOS
|
DIR \Subvolumes\OS\{version}\Internet Explorer
|
|
SUB \Subvolumes\Snapshots\{snapshot_version}
|
|
DIR \Subvolumes\Programs\Program Files
|
DIR \Subvolumes\Programs\Program Files (x86)
|
DIR \Subvolumes\Programs\Games
|
DIR \Subvolumes\Programs\XboxGames
|
|
LNK \ReactOS -> \Subvolumes\OS\Current\ReactOS
|
LNK \Program Files -> \Subvolumes\Programs\Program Files
|
LNK \Program Files\Internet Explorer -> \Subvolumes\OS\Current\Internet Explorer
|
LNK \Program Files (x86) -> \Subvolumes\Programs\Program Files (x86)
|
LNK \Games -> \Subvolumes\Programs\Games
|
LNK \XboxGames -> \Subvolumes\Programs\XboxGames
|
LNK \Users -> \Subvolumes\Users
|
LNK \ProgramData -> \Subvolumes\ProgramData
|
i think you get the general idea:
- snapshots (e.g. at every boot - it's fast enough)
- by sending and receiving subvolumes as btrfs stream you could deliver and perform very quick system updates using a nested read-only \Subvolumes\OS\ {versions} \Image subvolume for example
- rollback and roll-forward take a mere second and would allow to install and switch between every nightly build, alpha etc. as you like. even windows versions could be inserted for developers to do quick testing
- make the need to use multiple virtual machines obsolete for developers, testers and users at the same time
- mark the \Subvolumes directory hidden to make it visible for advanced users only
- add compatibility options to run certain apps with libraries for a specific reactos (or windows) version
- add freeloader options for various snapshots, like os versions, various changed hardware configurations or user defined ones
- windows does directory localization using links anyways. i think that should work reliable
probably a better way might be the ubuntu/timeshift convention of this: mount a subvolume (@) as root and the top-level volume (5), where all subvolumes and snapshots are located, under \Snapshots. that would be more familiar to linux users and could create a reasonable cross-platform convention;
5 = top-level subvolume, MNT = mount (for visibility shown in reverse: name -> target), @ is the ubuntu convention for naming subvolumes:
SUB 5:\@ |
SUB 5:\@home |
SUB 5:\@programs |
SUB 5:\@programdata |
DIR 5:\os_versions (maybe instead of OS) |
DIR 5:\snapshots |
|
SUB 5:\os_versions\@current |
SUB 5:\os_versions\@{version} |
DIR 5:\os_versions\@{version}\ReactOS |
DIR 5:\os_versions\@{version}\Internet Explorer |
|
SUB 5:\snapshots\@{snapshot_version} |
|
DIR 5:\@programs\Program Files |
DIR 5:\@programs\Program Files (x86) |
DIR 5:\@programs\Games |
DIR 5:\@programs\XboxGames |
|
MNT \ -> 5:\@ |
MNT \Subvolumes -> 5: |
|
LNK \ReactOS -> \Subvolumes\os_versions\@current\ReactOS |
LNK \Program Files -> \Subvolumes\@programs\Program Files |
LNK \Program Files\Internet Explorer -> \Subvolumes\os_versions\@current\Internet Explorer |
LNK \Program Files (x86) -> \Subvolumes\@programs\Program Files (x86) |
LNK \Games -> \Subvolumes\@programs\Games |
LNK \XboxGames -> \Subvolumes\@programs\XboxGames |
LNK \Users -> \Subvolumes\@home |
LNK \ProgramData -> \Subvolumes\@programdata |