[lfs-dev] Persistent Net Rules in Systemd Udev are not working.
bruce.dubbs at gmail.com
Tue Jul 24 22:48:55 PDT 2012
Bryan Kadzban wrote:
> Bruce Dubbs wrote:
>> Bryan Kadzban wrote:
>>> Bruce Dubbs wrote:
>>>> Armin K. wrote:
>>>>> Bruce, some guy came on the irc saying that network rules creation
>>>>> does not work in systemd extracted udev.
>>>>> <Zenther> working my way through the cvs book and get to 7.2.1.
>>>>> Creating stable names for network interfaces and I am getting a
>>>>> cat: /etc/udev/rules.d/70-persistent-net.rules: No such file or
>>>>> directory. Above that I see it list out my eth0 and wlan0.
>>>>> Can you check and/or confirm that?
>>>> I can confirm that in chroot. I think he is referring to section
>>>> 7.5. That needs to be changed. The 'udevadm test' command no longer
>>>> runs aux programs, e.g. /lib/udev/write_net_rules.
>>>> However, the first time the system is booted, udevd will run the
>>>> rules and the 70-persistent-net.rules file will be written at that
>>> Well, they finally killed it.
>> Yes, but we can fix that. In the udev-lfs tarball we have the needed files:
>> We need to change two places in rule_generator.functions where it has
>> RUNDIR=$(udevadm info --run) with a constant RUNDIR=/run/udev
>> Then in section 7.2 (inside chroot), we need to do a couple of things:
>> cd ~
>> mkdir -p /run/udev
>> cat set_persistent_net_rules.sh << EOF
>> #! /bin/bash
>> for NIC in /sys/class/net/eth* ; do
>> if [ "$IF" == "eth*" ]; then break; fi
>> export INTERFACE="$IF"
>> export MATCHADDR="$(cat $NIC/address)"
>> export MATCHDEVID="$(cat $NIC/dev_id)"
>> export MATCHIFTYPE="$(cat $NIC/type)"
> ...And /etc is writable here, so I think this should generate something
> usable at least. (Might need a couple more environment vars for stuff
> like the vendor/device ID and the driver, but whatever.)
> I think we used to do it this way, actually. :-)
> One problem (I think) is that this won't follow the whitelist/blacklist
> rules in the existing 75-persistent-net-generator.rules file. So it'll
> try to generate rules for NICs that are known to be buggy (locally
> administered MACs that change per boot, qemu-created devices that change
> MACs at every boot, etc.). :-/
Thanks for pointing that out. I guess I can convert the 75-rules to a
script and add it to the udev-lfs tarball and incorporate the other net
rules there too. Then in Chapter 7 we will only have to run it.
>> We need to be careful that someone doesn't remove /run/udev after
>> booting or outside of chroot.
> Oh, the rm -rf. Can we make it a tmpfs in chapter 7, and fix it that
> way? Then we don't need the rm in the instructions; it just needs to be
> unmounted at shutdown time. :-)
I actually thought of that first, but wasn't sure how things would work
if someone exited chroot without umounting first.
> (I still like the idea of indirection in the network bootscripts; it
> seems to match how udev handles storage, input, and sound devices, much
> better. If I get some time this week or weekend or something, I'll
> replace my network scripts with whatever is current in the book -- I'm
> still using really old stuff since this system is pretty old -- and
> assuming that works, I'll look into adding the indirection, then see how
> I like the results.)
OK. I'll be interested in what you come up with.
More information about the lfs-dev