Quick Help

Knowledgebase is a categorized collection of answers to frequently asked questions (FAQ) and articles. You can read articles in this category or select a subcategory that you are interested in.



 ramroot

Solution

Enabling ramroot feature that resides in Euphony Expert settings section means that Euphony OS root filesystem (partition on the boot disk with kernel, system packages and application packages) will be loaded to RAM after boot. After boot to ramroot the kernel and all programs will start by using their program files located on 'virtual' disk in RAM memory (named zram0), as opposed to being loaded from actual storage device). This usually benefits SQ. It's not entirely clear why but a lot of people agree that it does (not just on Euphony).

Before you decide to use it permanently make sure to do honest comparison with and without it. If you don't hear clear improvements in SQ with ramroot there are no other reasons to use it - it does bring additional consideration and potential risks. 

In addition to the system disk partition Euphony uses 3 more partitions:

  1. backup/reserve system partition - used for updates 
  2. EFI boot partition - used for EFI boot
  3. data partition

For ramroot topic it's crucial to understand item 3. - data partition.

Euphony uses data partition (mounted on /data) to store:

  1. Music files and cache - (/data/Music, /data/Music/E_CACHE, /data/.cover-art-cache)
  2. App configs for Stylus, StylusEP, Roon Core, Roon Bridge, HQplayer etc.. (/data/.appdata)
  3. Music databases with song metadata for Stylus and Roon Core (/data/.appdata, /data/.appdata/roon)

Here is the most important part to understand: when you enable ramroot with default options (nothing selected) only system partition will be loaded to RAM. Other partitions, including data partition will be not!

Let me assure you that this is already enough to see a bump in SQ and with this default configuration all Music services should be able to function as usual. Some system wide changes should be applied with caution and it's always better to be out of ramroot before applying them: changing hostname, turning on WIFI access (another Expert option), update, revert etc...

There is one change though you have no control of: Roon Core automatically updating to newer version.

Roon program files are on system disk and when Roon updates itself (you should be able to see pending update on your Roon client) while in ramroot, changes to Roon program files will not be persisted automatically. You will have to save those changes to system partition by clicking: 'Save root fs to disk'. Note that this is the only case when 'Save root fs to disk' is needed. 

If you forgot to do that Roon will next time start again with old version. Hopefully, the newest version of Roon will not have introduced config changes incompatible with previous Roon version (remember, data partition is not in RAM and all roon config changes made by new version would be saved to disk as they happen and used by old Roon version when you restart the system).

Now, knowing and understanding everything above should be enough to use ramroot to your satisfaction or decide not to use it at all.

 

However, some people that run Euphony from removable device expect, (either because of their previous experience with ramroot on other systems or because they hope that by eliminating any disk access in the system they can further improve SQ), that they can completely remove that boot device after booting in ramroot.

This is not the case! At least not with default configuration which still fully uses /data partition on the disk. With default configuration removing boot device while in ramroot will produce unpredictable and most likely harmful results!

 

For those who still want to see if their system can sound even better when disk access is completely eliminated we have provided couple of options:  'Copy app config to RAM' and, if selected, additional 'Exclude roon dir' option appears.

Before we are going to explain them note that these options are not actually intended for running Stylus or Roon Core in ramroot! They are intended for people who want to run Endpoint music services like StylusEP, RoonBridge, NAA, HQPlayer. These services don't need music files, music db or cache, they only need their config files.

If the above is completely understood we can proceed to explain these options.

When 'Copy app config to RAM' is selected prior to enabling ramroot this will, upon reboot, after system partition is already loaded to RAM, copy content of .appdata folder from disk data partition to /data/.appdata folder on RAM disk.

It is very important to notice that we use data partition for 3 things and with 'Copy app config to RAM' we omitted item 1. - Music files and cache. These will be unavailable while using ramroot with 'Copy app config to RAM' option selected.

While your Stylus/Roon music library may contain content on NAS, all your musical content on /data/Music will become unavailable. Cover art cache for Stylus (which also stores covers for albums on NAS storage) will also be unavailable. Stylus should be able to handle that without issues but for Roon Core we have some problems reported. On one user's installation Roon Core became confused when losing access to library folder /data/Music while in ramroot and getting it back out of ramroot - Roon Core doesn't want to scan /data/Music anymore. This is a pending issue you should be aware of if you use Roon and want to, against our advice, run Roon Core in ramroot with 'Copy app config to RAM' selected.

Another problem with Roon Core is that it's database can become very big (especially if you use online music providers like Tidal or Qobuz). With 'Copy app config to RAM' Roon db, which resides in /data/.appdata/roon, may not fit in your available RAM. Euphony will calculate this and warn you, suggesting you also select: 'Exclude roon dir'. This will exclude /data/.appdata/roon folder while /data/.appdata is copied to RAM.

Admittedly, it seems confusing to provide options related to Roon if those options are not actually intended for running Roon Core under them. They are here for users who already have Roon Core installation in place, already have Roon database filled but the user decides he wants to try the machine as endpoint machine, running StylusEP, RoonBridge or some other endpoint music service on it. Without 'Exclude roon dir' option, Euphony would not be able to use 'Copy app config to RAM' because /data/.appdata would not fit in RAM with /data/.appdata/roon in it. Deleting Roon Core db is not an option since user can still decide to use the machine for running Roon Core in the end.

When you run ramroot with 'Copy app config to RAM' selected there is an additional button present: 'Save app config to disk'. It is not normally needed to use this button as Euphony will, upon graceful shutdown (using 'Shutdown' menu item), save all config changes from RAM to disk. However, If machine power is abruptly cut off, configuration changes will be lost. To prevent that you can use 'Save app config to disk' to ensure your recent changes are preserved. 

Important reminder: if you removed your boot device after booting to ramroot with 'Copy app config to RAM' remember to attach it again before shutdown - otherwise, any changes you made while in ramroot will be lost!

 

To summarize: 'Copy app config to RAM' is strongly not recommended for Roon Server and Stylus, and users who insist on trying it must be aware of the risks and reduced function:

  1. No access to Music on the /data partition
  2. Loss of cache and artwork on Stylus
  3. Possible errors/problems in Roon Core functionality 

We only recommend 'Copy app config to RAM' for users who are booting from ejectable media like USB sticks, and only if using Endpoint services like Roon Bridge, NAA, or StylusEP. It does not make that much sense to use this option when you boot Euphony from internal devices like SSD or Optane since you cannot remove them anyway which is the main point of this option.

 

RAM Requirements 

Generally, without using 'Copy App data to RAM' 8Gb total RAM will be enough.

4Gb is bare minimum and only works under some conditions - read below! 

When you enable ramroot Euphony will try to calculate if you have enough RAM to go into ramroot.
If A is the total RAM available on your system at the moment of calculation and S is the size of current boot partition then Euphony checks if A - S > 1.8Gb. 
If you chose 'Copy app data to RAM' and D is the size of your app data then the check is: A - S - D > 1.8Gb. 
If you chose 'Exclude roon dir' and R is the size of your roon dir then the check is: A - S - D + R > 1.8Gb. 

Euphony wants to keep 1.8GB of RAM free even in ramroot to ensure normal functioning.

While Euphony is up and not playing with empty playlist all running applications will not take more than 200MB of your memory so your A is fairly close to your total RAM.
The value of S (root filesystem size) depends on your installation:

When Euphony is booted from USB stick that was generated by burning a Euphony image to it then its default system partition occupies 2.5Gb!
When Euphony is booted from internal disk or other media which was made by Euphony Install function or when it is booted from secondary partition (generated by 'Complete Installation') on image-generated USB then the system partition occupies only 1.8Gb.

Why the difference? Because the Euphony USB installation generated from Euphony image additionally contains an archive (0.7Gb) of it's root filesystem. This archive is used in Install/Repair/Complete functions and it is not copied to target system partition - installed partitions are without it. 

So, for someone who has only 4Gb RAM and boots from USB stick made from Euphony image the only way to make ramroot work is to boot from secondary partition before enabling ramroot:

  1. If you didn't already perform Complete installation (you will now have two partitions with same root filesystem)
  2. If an update exists - perform System update (which will update this second partition and tell the system to boot from it). If there is no update - execute Revert (which will force the system to boot from second 1.8Gb partition instead from default 2.5Gb partition)

To check the current partition you booted from go to Settings -> Library, expand External drives, click on eye icon to show system partitions. Look for partition that has '/' in 'Attached to' column. If the last number in first column is 2 then you booted from primary system partition. If the last number is 3 then you booted from secondary partition. You will also be able to see that primary partition has less free space than secondary one.

So, with A=3.8 and S=1.8 you can just make it with 4Gb total RAM.

 

We are aware that all of this sounds rather complicated but be reminded that ramroot is an Expert option - don't use it if you are not comfortable with this complexity and always remember:  while it may work for many, it is not fully tested and we do not fully support it (like all Expert setting options as stated in Disclaimer at the start of the Expert section).

 

 

 
Was this article helpful? yes / no

 
Powered by Help Desk Software HESK, in partnership with SysAid Technologies