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で決めてしまってほしい。
最近のディストリって、レイヤー増えすぎて、いろいろめんどくさい。
生で触ればいいのよ、生で。