On 08.04.2014 14:25, Tom Gundersen wrote: > On Tue, Apr 8, 2014 at 2:10 PM, poma <pomidorabelis...@gmail.com> wrote: >> On 08.04.2014 04:03, poma wrote: >>> On 07.04.2014 19:55, Zbigniew Jędrzejewski-Szmek wrote: >>>> On Mon, Apr 07, 2014 at 05:34:10PM +0200, Lukáš Nykrýn wrote: >>>>> The reason why this was not rewritten a long time ago is that the >>>>> initscript tries to figure some of those values by itself (for >>>>> example the MAC address). But yes, we need to do something with >>>>> netconsole. It is a blocker for my initscripts evil plan. >>>> Doesn't netconsole figure out most of those settings by itself, and >>>> others default to sensible values, so if the network card is up >>>> and has an address configured, only the device and target ip must be given? >>>> >>>>> Dne 6.4.2014 17:59, poma napsal(a): >>>>>> >>>>>> /etc/sysconfig/netconsole: >>>>>> # This is the EnvironmentFile for the netconsole service. Starting this >>>>>> # service enables the capture of dmesg output on a destination machine. >>>>>> >>>>>> # Source port >>>>>> SRC_PORT=12345 >>>> This should default to empty... Kernel will pick something. >>>> >>>>>> >>>>>> # Source IP address >>>>>> SRC_IP=192.168.1.2 >>>> This should default to empty... Kernel will use configured address, >>>> since we order after network.target anyway. >>>> >>>>>> # Source network device >>>>>> SRC_DEV=enp1s2 >>>> Maybe this can be made into a instance argument? >>>> >>>>>> # Destination port >>>>>> DST_PORT=12345 >>>> I think this should default to 514/syslog, and can be left unset. >>>> >>>>>> # Destination IP address >>>>>> DST_IP=192.168.1.1 >>>>>> >>>>>> # Destination ethernet address >>>>>> DST_EHA=00:11:22:33:44:55 >>>> This should default to unset. The kernel will query it if not set. >>>> >>>>>> /usr/lib/systemd/system/netconsole.service: >>>>>> [Unit] >>>>>> Description=Adds the netconsole module with the configured parameters >>>>>> After=network.target >>>>>> >>>>>> [Service] >>>>>> EnvironmentFile=/etc/sysconfig/netconsole >>>> This is Fedora/RH specific. But I don't know what the proper path should >>>> be, so maybe this is OK for now. >>>> >>>>>> Type=simple >>>> This is the default... No need to specify. >>>> >>>>>> RemainAfterExit=yes >>>>>> ExecStart=/usr/sbin/modprobe netconsole >>>> This should be /sbin/modprobe for compatibility with split root. >>>> >>>>>> netconsole=${SRC_PORT}@${SRC_IP}/${SRC_DEV},${DST_PORT}@${DST_IP}/${DST_EHA} >>>>>> ExecStop=/usr/sbin/modprobe -r netconsole >>>> Ditto. >>>> >>>>>> >>>>>> [Install] >>>>>> WantedBy=multi-user.target >>>> That's a really late... But I don't see a better place unfortunately. >>>> >>>>>> The original SysV netconsole service with related config - still in use, >>>>>> https://git.fedorahosted.org/cgit/initscripts.git/plain/rc.d/init.d/netconsole >>>>>> https://git.fedorahosted.org/cgit/initscripts.git/plain/sysconfig/netconsole >>>>>> >>>>>> Feel free to comment. >>>> Looks like an improvement on status quo. >>>> >>>> Zbyszek >>>> >>> >>> Shall we still leave something for users to configure. >>> Thanks for your review. >>> >> >> $ cat /usr/lib/systemd/system/netconsole-zbyszek.service >> [Unit] >> Description=Adds the netconsole module with the configured parameters >> After=network.target >> >> [Service] >> EnvironmentFile=/etc/sysconfig/netconsole-zbyszek >> RemainAfterExit=yes >> ExecStart=/sbin/modprobe netconsole netconsole=@/${SRC_DEV},@${DST_IP}/ >> ExecStop=/sbin/modprobe -r netconsole >> >> [Install] >> WantedBy=multi-user.target >> >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> >> $ cat /etc/sysconfig/netconsole-zbyszek >> # This is the EnvironmentFile for the netconsole service. Starting this >> # service enables the capture of dmesg output on a destination machine. >> >> # Source network device >> SRC_DEV=enp1s2 >> >> # Destination IP address >> DST_IP=192.168.1.1 >> >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> >> $ dmesg | grep netcon >> [ 24.361611] netpoll: netconsole: local port 6665 >> [ 24.361764] netpoll: netconsole: local IPv4 address 0.0.0.0 >> [ 24.361893] netpoll: netconsole: interface 'enp1s2' >> [ 24.362061] netpoll: netconsole: remote port 6666 >> [ 24.362344] netpoll: netconsole: remote IPv4 address 192.168.1.1 >> [ 24.362635] netpoll: netconsole: remote ethernet address >> ff:ff:ff:ff:ff:ff >> [ 24.362909] netpoll: netconsole: no IP address for enp1s2, aborting >> [ 24.363186] netconsole: cleaning up >> >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> This turns out to be a bare minimum, i.e. >> # modprobe netconsole netconsole=@/enp1s2,@192.168.1.1/ >> but that is also squeeze breeze ... >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> >> $ cat /usr/lib/systemd/system/netconsole-poma.service >> [Unit] >> Description=Adds the netconsole module with the configured parameters >> After=network.target >> >> [Service] >> EnvironmentFile=/etc/sysconfig/netconsole-poma >> RemainAfterExit=yes >> ExecStart=/sbin/modprobe netconsole >> netconsole=@${SRC_IP}/${SRC_DEV},@${DST_IP}/ >> ExecStop=/sbin/modprobe -r netconsole >> >> [Install] >> WantedBy=multi-user.target >> >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> >> $ cat /etc/sysconfig/netconsole-poma >> # This is the EnvironmentFile for the netconsole service. Starting this >> # service enables the capture of dmesg output on a destination machine. >> >> # Source IP address >> SRC_IP=192.168.1.2 >> >> # Source network device >> SRC_DEV=enp1s2 >> >> # Destination IP address >> DST_IP=192.168.1.1 >> >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> >> $ dmesg | grep netcon >> [ 23.156730] netpoll: netconsole: local port 6665 >> [ 23.156735] netpoll: netconsole: local IPv4 address 192.168.1.2 >> [ 23.156736] netpoll: netconsole: interface 'enp1s2' >> [ 23.156737] netpoll: netconsole: remote port 6666 >> [ 23.156738] netpoll: netconsole: remote IPv4 address 192.168.1.1 >> [ 23.156739] netpoll: netconsole: remote ethernet address >> ff:ff:ff:ff:ff:ff >> [ 23.156742] netpoll: netconsole: device enp1s2 not up yet, forcing it >> [ 25.539701] console [netcon0] enabled >> [ 25.539720] netconsole: network logging started >> >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> And this turns out to be a true bare minimum, i.e. >> # modprobe netconsole netconsole=@192.168.1.2/enp1s2,@192.168.1.1/ >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > This looks like a definitive improvement. > > Maybe one day we want to take things one step further and unify the > logic for built-in and modular netconsole (the current way feels a bit > odd). > > Cheers, > > Tom >
In fact, this method has long been known from the Lm_sensors - Linux hardware monitoring http://lm-sensors.org/browser/lm-sensors/trunk/prog/init/lm_sensors.service [Unit] Description=Initialize hardware monitoring sensors [Service] EnvironmentFile=/etc/sysconfig/lm_sensors Type=oneshot RemainAfterExit=yes ExecStart=-/sbin/modprobe -qab $BUS_MODULES $HWMON_MODULES ExecStart=/usr/bin/sensors -s ExecStop=-/sbin/modprobe -qabr $BUS_MODULES $HWMON_MODULES [Install] WantedBy=multi-user.target poma _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel