[systemd-devel] udev device mapper rules for early boot?

Nikolaus Rath Nikolaus at rath.org
Tue Dec 11 09:52:45 PST 2012


On 12/11/2012 09:47 AM, Colin Guthrie wrote:
> 'Twas brillig, and Nikolaus Rath at 11/12/12 16:31 did gyre and gimble:
>> On 12/11/2012 03:00 AM, Colin Guthrie wrote:
>>> 'Twas brillig, and Nikolaus Rath at 10/12/12 19:03 did gyre and gimble:
>>>> Hello,
>>>>
>>>> I have created a udev rule to set the owner of a specific block device:
>>>>
>>>> SUBSYSTEM=="block",
>>>> ENV{DM_UUID}=="LVM-yYuoI8k05GWxZnz9BeEIwPUGGeojzF3dZZmXTYRqC051Tllj76OHdDlzYhKZUu7u",
>>>> OWNER="1000"
>>>>
>>>> If I disable and re-enable this logical volume with lvchange, it gets
>>>> created with the correct owner.
>>>>
>>>> However, when I boot the computer, the device is always owned by
>>>> root:disk instead.
>>>>
>>>> I checked my initrd, and the rule is present in lib/udev/rules.d as
>>>> 99-udev-custom.rules.
>>>>
>>>> Does anyone have a suggestion of how I could debug this further? Why is
>>>> my rule ignored when the volume comes up the first time?
>>> Random guess: does that user exist in the context of the initrd?
>> No. But that shouldn't be a problem. The other rules in the initrd also
>> refer to non-existing users (e.g. disk).
> Are you sure that "disk" is the user here and not the group? Keep in
> mind that dracut copies /etc/group to the initrd but only includes a cut
> down /etc/passwd with just root and nobody defined...
Yes, it's the group rather than the user. But no, that doesn't make a
difference. My initrd has neither /etc/group nor /etc/passwd. I'm using
Debian, so it's created with initramfs-tools rather than Dracut.

>
>> I guess udev just waits until
>> passwd becomes available. Also, I tried specifying the UID instead of
>> the name, but that didn't help either.
> I don't think udev "waits until passwd becomes available". It's just a
> hit and hope effort AFAIUI.
>
> You'll need to teach your initrd about your user if you want it to be
> owned by your user (i.e. somehow modify the dracut module
> modules.d/99base/module-setup.sh or better add a new module "99myuser"
> or whatever, that is just a basic stub that just adds your user - that
> way your change survives distro updates).
If that's the problem, why doesn't it help to specify the uid?


Thanks,
Niko


More information about the systemd-devel mailing list