CentOS7でNICデバイス起動時にパラメータを変更する(ベストな方法不明)

ethtoolでのパラメータを起動時に渡す必要があったので調べる。
昔はrc.localとかでやってたみたいだけど、標準パラメータがないわけがない。


なんか、それっぽいものがあった。
/etc/sysconfig/network-scripts/network-functions

ethtool_set()
{
    oldifs=$IFS;
    IFS=';';
    [ -n "${ETHTOOL_DELAY}" ] && /bin/usleep ${ETHTOOL_DELAY}
    for opts in $ETHTOOL_OPTS ; do
        IFS=$oldifs;
        if [[ "${opts}" =~ [[:space:]]*- ]]; then
            /sbin/ethtool $opts
        else
            /sbin/ethtool -s ${REALDEVICE} $opts
        fi
        IFS=';';
    done
    IFS=$oldifs;
}

/etc/sysconfig/network-scripts/ifcfg-[interface name]の中にETHTOOL_OPTSを書いて渡すようだ。
インターフェイス名とデバイス名のペアは、NetworkManagerで調べる。

# nmcli d
DEVICE       TYPE      STATE      CONNECTION
eno16780032  ethernet  connected  eno0
eno33559296  ethernet  connected  eno1
lo           loopback  unmanaged  --

もしくはこれでも。

# nmcli c
NAME  UUID                                  TYPE            DEVICE
eno1  9204023d-29ba-4674-adcb-54b63ad6f8db  802-3-ethernet  eno33559296
eno0  39eaa74e-742a-480e-b441-79709d0ae6b3  802-3-ethernet  eno16780032

ハイフン付きでない場合は-sでETHTOOL_OPTSの中身を渡して、ハイフン付きのオプションが指定されている時には、そのまま渡している感じ。
"-G"とかを使いたい時には、インターフェイス名をどっかからか突っ込まないと渡らないな...
${REALDEVICE}とか埋めておいてもダメかな。
複数行渡したいとかいうのは考慮されていない感じ。
うーん。イマイチ。


NetworkManager的には、nmtuiとかnmcliで設定するのかな...
なんか、それっぽい機能が見つからない。


それとも、Systemdでワンショットのサービスファイル起動するほうがいい?

# vi /etc/systemd/system/ethtool_eno0.service
[Unit]
Description=network ring buffer to 512 for eno0
Requires=network.target
After=network.target

[Service]
ExecStart=/usr/sbin/ethtool -G eno0 rx 512
Type=oneshot

[Install]
WantedBy=multi-user.target

# systemctl daemon-reload
# systemctl start ethtool_eno0.service
# systemctl enable ethtool_eno0.service

なんか美しくない。
いい方法はないかな...
なんか決まった方法がありそうだけど見つけられない。


ubuntuとかは、interfacesのifaceにpost-up行を加えて、その後に直接書いておけばいいようだ。


お作法いろいろでめんどくさい。
LFSで決めてしまってほしい。


最近のディストリって、レイヤー増えすぎて、いろいろめんどくさい。
生で触ればいいのよ、生で。