On Sun, Sep 3, 2017 at 6:41 PM, Grant <emailgr...@gmail.com> wrote:
>>>>> My new laptop uses /dev/nvme0n1 instead of /dev/sda which conflicts
>>>>> with the script I use to manage about 12 similar laptops running
>>>>> Gentoo.  Is there a udev method for renaming the disk that will work
>>>>> well with any USB disks that happen to also be attached?
>>>>
>>>> I'm not certain what you mean by that, but I would guess that you want
>>>> the nvme disk to show up as /dev/sda, and the USB disk(s) to show up
>>>> as /dev/sd[b-z].
>>>>
>>>> It is not possible to accomplish this using udev; the kernel owns the
>>>> /dev/sdX device namespace, and will sequentially create devices nodes
>>>> for SCSI-like block devices using that namespace. There is no way to
>>>> change that using a udev rule.
>>>
>>>
>>> Can I rename /dev/sda to /dev/sd[b-z] if it's attached via USB, and
>>> then rename /dev/nvme0n1 to /dev/sda if /dev/nvme0n1 exists?
>>>
>>> Alternatively, can I rename /dev/sda to /dev/sd[b-z] if /dev/sda and
>>> /dev/nvme0n1 exist, and then rename /dev/nvme0n1 to /dev/sda if
>>> /dev/nvme0n1 exists?
>>
>> You might technically be able to do it, but I would guess it would
>> cause some nasty race conditions between the kernel and udev. It's a
>> bad idea.
>
>
> Is it the conditionals that cause this to be a bad idea?  Because I
> believe udev has functionality designed to rename devices exactly like
> this.

udev doesn't provide any functionality to rename device nodes. You can
adjust their permissions, and create symlinks, but there is no direct
way to rename them.

To rename a device node in a udev rule, you would have to call an
external command, which udev knows nothing about. After having renamed
it this way, the information in the udev device database would no
longer be consistent, and any future device events would not work
properly.

I would suggest you utilize the existing symlinks in one of the
/dev/disk/ sub-directories, or create some udev rules to create your
own symlinks based on whatever metadata you wish. I would also suggest
you read the udev(7) manual page.

Trying to coerce your nvme device to look like an sd device is really
the wrong approach to solving your problem.

Reply via email to