В исходниках системд есть юнит для поддержки rc.local. Видимо, надо его включить и просто создать нужный rc.local. Альтернативно - можно создать для нужных действий простенький юнит системд
P.S. Вот ещё цитата, тоже может быть полезно
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.
Ну тогда либо создать свой собственный юнит и прямо там прописать ExecStart=/usr/bin/hdparm -ключики или сделать sudo systemctl enable rc-local.service и прописать команду в rc.local (если по каким-то причинам такого юнита нет, то вот тут моно подсмотреть как он в федоре должен выглядеть: http://cgit.freedesktop.org/systemd/systemd/tree/units/fedora/rc-local.service )
«Запили юнит к systemd, это же элементарно! Юнит сам себя не запилит!»
Вообще, это удивительно. Юнит-то даже готовый уже есть, в самом системд. Вот что им стоило по-умолчанию его включить? Я понимаю, что они за прогресс, неумножение сущностей и тп и тд, но ведь пользователи-то пока ещё не привыкли к новым подходам, зачем их зря мучать?
└► systemctl status rc-local.service
rc-local.service - /etc/rc.d/rc.local Compatibility
Loaded: loaded (/usr/lib/systemd/system/rc-local.service; static)
Active: active (exited) since Tue, 11 Sep 2012 12:44:56 +0400; 1h 47min ago
Process: 1351 ExecStart=/etc/rc.d/rc.local start (code=exited, status=0/SUCCESS)
CGroup: name=systemd:/system/rc-local.service
└► cat /usr/lib/systemd/system/rc-local.service
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# This unit gets pulled automatically into multi-user.target by
# systemd-rc-local-generator if /etc/rc.d/rc.local is executable.
[Unit]
Description=/etc/rc.d/rc.local Compatibility
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.d/rc.local start
TimeoutSec=0
RemainAfterExit=yes
SysVStartPriority=99
└► cat /etc/rc.d/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
То есть, rc.local как был, так и есть, по умолчанию включен (ЕМНИП, я его руками не включал и уж точно не «запиливал»). У меня какая-то особенная Федора?
Подозреваю, что это зависит от того, новая установка у тебя или ты апдейтил существующую федору. Если апдейтил и у тебя в системе был непустой rc.loсal, то его поддержка включается. Если ставишь с нуля, то установщик считает что и не нужен он тебе, а при необходимости справишься силами самого systemd.
Федору я ставил не с нуля, но 1) rc.local был дефолтным и 2) /usr/lib/systemd/system/rc-local.service и /etc/rc.d/rc.local принадлежат пакетам systemd и initscripts соответственно, а у этих пакетов в инсталляционных скриптах нету ничего касательно rc.local. rpm -V systemd initscripts тоже ничего про rc.local не говорит. Вывод: анаконда rc.local специально не обрабатывает