[arch-general] /etc/tmpfiles.d

Matthew Monaco dgbaley27 at 0x01b.net
Mon Sep 17 21:17:12 EDT 2012


On 09/17/2012 06:44 PM, Curtis Shimamoto wrote:
> On 09/17/12 at 10:31am, Matthew Monaco wrote:
>> On 09/17/2012 09:40 AM, Mart?n Cigorraga wrote:
>>> "[...]However, tmpfiles may also be used to write values into certain files
>>> on boot. For example, if you use /etc/rc.local to disable wakeup from USB
>>> devices with echo USBE > /proc/acpi/wakeup, you may use the following
>>> tmpfile instead:
>>>
>>>
>>> /etc/tmpfiles.d/disable-usb-wake.conf
>>>
>>>
>>> w /proc/acpi/wakeup - - - - USBE
>>>
>>> The tmpfiles method is recommended in this case since systemd doesn't
>>> actually support /etc/rc.local."
>>>
>>> Does that means that I need to move all the content from /etc/rc.local to
>>> /etc/tmpfiles.d? For example this is my actual /etc/rc.local:
>>> ~ $ cat /etc/rc.local
>>> #!/bin/bash
>>> #
>>> # /etc/rc.local: Local multi-user startup script.
>>> #
>>>
>>> #modprobe radeon # added by hybrid-video-ati-intel install script
>>> #echo IGD > /sys/kernel/debug/vgaswitcheroo/switch # added by
>>> hybrid-video-ati-intel install script
>>> echo OFF > /sys/kernel/debug/vgaswitcheroo/switch # completely deactivate
>>> radeon
>>>
>>> ## ATi
>>> # Source: https://wiki.archlinux.org/index.php/ATI#Performance_tuning
>>> echo low > /sys/class/drm/card0/device/power_profile
>>> #echo profile > /sys/class/drm/card0/device/power_method
>>> echo dynpm > /sys/class/drm/card0/device/power_method
>>> echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
>>>
>>> # CPUFREQ
>>> for i in 0 1 2 3; do cpufreq-set -c $i -g powersave; done  ## sets
>>> powersave cpufreq governor for all CPU cores
>>> #echo -n 90 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
>>> echo -n 20 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
>>>
>>> # Prepare the system for Wake-on-Lan
>>> /usr/sbin/ethtool -s eth0 wol pg
>>>
>>> # Activate laptop_mode
>>> echo 5 > /proc/sys/vm/laptop_mode
>>>
>>> # Performance tweaks for USB drivers under KDE SC
>>> echo madvise > /sys/kernel/mm/transparent_hugepage/enabled
>>> echo madvise > /sys/kernel/mm/transparent_hugepage/defrag
>>> echo 0 > /sys/kernel/mm/transparent_hugepage/khugepaged/defrag
>>>
>>>
>>> If this is the case, how do you guys would convert the FOR loop!?
>>>
>>
>> For ethtool, just create a separate service that executes that command.
>>
>> Everything else you do is writing to /sys, so you can have one giant tmpfiles.d
>> file.
>>
>> For the for loop:
>> w /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor - - - - powersave
>> w /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor - - - - powersave
>> w /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor - - - - powersave
>> w /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor - - - - powersave
>>
>> Also, I don't think it's an error if the file doesn't exist, so you can just do
>> cpu0..cpu16 or whatever if you feel like.
> 
> I am fairly certain that tmpfiles.d understands "*", so you could
> probably get away with one line for something like that.
> 

It doesn't for the 'w' type. Globbing is specified explicitly where it's
supported. I don't know if that was an explicit design decision though. You
might have yourself an easy patch if you want to contribute.


More information about the arch-general mailing list