Last active
October 17, 2023 05:35
-
-
Save rmamba/edc2e0afc7562ccec5c1957aff74167e to your computer and use it in GitHub Desktop.
Unraid persistent rulles to fix NVME serial
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# do not edit this file, it will be overwritten on update | |
# persistent storage links: /dev/disk/{by-id,by-uuid,by-label,by-path} | |
# scheme based on "Linux persistent device names", 2004, Hannes Reinecke <[email protected]> | |
ACTION=="remove", GOTO="persistent_storage_end" | |
ENV{UDEV_DISABLE_PERSISTENT_STORAGE_RULES_FLAG}=="1", GOTO="persistent_storage_end" | |
SUBSYSTEM!="block", GOTO="persistent_storage_end" | |
KERNEL!="loop*|mmcblk*[0-9]|msblk*[0-9]|mspblk*[0-9]|nvme*|sd*|sr*|vd*|xvd*|bcache*|cciss*|dasd*|ubd*|scm*|pmem*|nbd*", GOTO="persistent_storage_end" | |
# ignore partitions that span the entire disk | |
TEST=="whole_disk", GOTO="persistent_storage_end" | |
# for partitions import parent information | |
ENV{DEVTYPE}=="partition", IMPORT{parent}="ID_*" | |
# NVMe | |
KERNEL=="nvme*", ENV{ID_SERIAL}!="?*", IMPORT{program}="nvme_id --export $devnode" | |
# This works for my NMVE cache | |
KERNEL=="nvme*", ENV{DEVTYPE}=="disk", ATTRS{serial}!="00000000", SYMLINK+="disk/by-id/nvme-%s{serial}" | |
KERNEL=="nvme*", ENV{DEVTYPE}=="disk", ATTRS{serial}=="00000000", SYMLINK+="disk/by-id/nvme-$env{ID_BUS}-%s{model}-$env{ID_WWN}" | |
KERNEL=="nvme*", ENV{DEVTYPE}=="partition", ATTRS{serial}!="00000000", SYMLINK+="disk/by-id/nvme-%s{serial}-part%n" | |
KERNEL=="nvme*", ENV{DEVTYPE}=="partition", ATTRS{serial}=="00000000", SYMLINK+="disk/by-id/nvme-$env{ID_BUS}-%s{model}-$env{ID_WWN}-part%n" | |
# this rules to not get correct serial as ID_SERIAL is empty? | |
KERNEL=="nvme*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL_SHORT}!="00000000", SYMLINK+="disk/by-id/nvme-$env{ID_SERIAL}" | |
KERNEL=="nvme*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL_SHORT}=="00000000", SYMLINK+="disk/by-id/nvme-$env{ID_BUS}-$env{ID_MODEL}-$env{ID_WWN}" | |
KERNEL=="nvme*", ENV{DEVTYPE}=="partition", ENV{ID_SERIAL_SHORT}!="00000000", SYMLINK+="disk/by-id/nvme-$env{ID_SERIAL}-part%n" | |
KERNEL=="nvme*", ENV{DEVTYPE}=="partition", ENV{ID_SERIAL_SHORT}=="00000000", SYMLINK+="disk/by-id/nvme-$env{ID_BUS}-$env{ID_MODEL}-$env{ID_WWN}-part%n" | |
# virtio-blk | |
KERNEL=="vd*[!0-9]", ATTRS{serial}=="?*", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="disk/by-id/virtio-$env{ID_SERIAL}" | |
KERNEL=="vd*[0-9]", ATTRS{serial}=="?*", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="disk/by-id/virtio-$env{ID_SERIAL}-part%n" | |
# ATA | |
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="scsi", ATTRS{vendor}=="ATA", IMPORT{program}="ata_id --export $devnode" | |
# ATAPI devices (SPC-3 or later) | |
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="scsi", ATTRS{type}=="5", ATTRS{scsi_level}=="[6-9]*", IMPORT{program}="ata_id --export $devnode" | |
# Run ata_id on non-removable USB Mass Storage (SATA/PATA disks in enclosures) | |
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", ATTR{removable}=="0", SUBSYSTEMS=="usb", IMPORT{program}="ata_id --export $devnode" | |
# Fall back usb_id for USB devices | |
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id" | |
# SCSI devices | |
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $devnode", ENV{ID_BUS}="scsi" | |
KERNEL=="cciss*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $devnode", ENV{ID_BUS}="cciss" | |
# KERNEL=="sd*|sr*|cciss*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}" | |
KERNEL=="sd*|sr*|cciss*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL_SHORT}!="00000000", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}" | |
# KERNEL=="sd*|cciss*", ENV{DEVTYPE}=="partition", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}-part%n" | |
KERNEL=="sd*|cciss*", ENV{DEVTYPE}=="partition", ENV{ID_SERIAL_SHORT}!="00000000", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}-part%n" | |
KERNEL=="sd*|sr*|cciss*", ENV{DEVTYPE}=="disk", ENV{ID_WWN}=="0x5000c500b045384b", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}" | |
KERNEL=="sd*|cciss*", ENV{DEVTYPE}=="partition", ENV{ID_WWN}=="0x5000c500b045384b", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}-part%n" | |
KERNEL=="sd*|sr*|cciss*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL_SHORT}=="00000000", ENV{ID_WWN}!="0x5000c500b045384b", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_MODEL}-$env{ID_WWN}" | |
KERNEL=="sd*|cciss*", ENV{DEVTYPE}=="partition", ENV{ID_SERIAL_SHORT}=="00000000", ENV{ID_WWN}!="0x5000c500b045384b", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_MODEL}-$env{ID_WWN}-part%n" | |
# FireWire | |
KERNEL=="sd*[!0-9]|sr*", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}" | |
KERNEL=="sd*[0-9]", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}-part%n" | |
# MMC | |
KERNEL=="mmcblk[0-9]", SUBSYSTEMS=="mmc", ATTRS{name}=="?*", ATTRS{serial}=="?*", \ | |
ENV{ID_NAME}="$attr{name}", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="disk/by-id/mmc-$env{ID_NAME}_$env{ID_SERIAL}" | |
KERNEL=="mmcblk[0-9]p[0-9]*", ENV{ID_NAME}=="?*", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/mmc-$env{ID_NAME}_$env{ID_SERIAL}-part%n" | |
# Memstick | |
KERNEL=="msblk[0-9]|mspblk[0-9]", SUBSYSTEMS=="memstick", ATTRS{name}=="?*", ATTRS{serial}=="?*", \ | |
ENV{ID_NAME}="$attr{name}", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="disk/by-id/memstick-$env{ID_NAME}_$env{ID_SERIAL}" | |
KERNEL=="msblk[0-9]p[0-9]|mspblk[0-9]p[0-9]", ENV{ID_NAME}=="?*", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/memstick-$env{ID_NAME}_$env{ID_SERIAL}-part%n" | |
# by-path | |
ENV{DEVTYPE}=="disk", DEVPATH!="*/virtual/*", IMPORT{builtin}="path_id" | |
KERNEL=="mmcblk[0-9]boot[0-9]", ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}-boot%n" | |
KERNEL!="mmcblk[0-9]boot[0-9]", ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}" | |
ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}-part%n" | |
# legacy virtio-pci by-path links (deprecated) | |
KERNEL=="vd*[!0-9]", ENV{ID_PATH}=="pci-*", SYMLINK+="disk/by-path/virtio-$env{ID_PATH}" | |
KERNEL=="vd*[0-9]", ENV{ID_PATH}=="pci-*", SYMLINK+="disk/by-path/virtio-$env{ID_PATH}-part%n" | |
# probe filesystem metadata of optical drives which have a media inserted | |
KERNEL=="sr*", ENV{DISK_EJECT_REQUEST}!="?*", ENV{ID_CDROM_MEDIA_TRACK_COUNT_DATA}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="?*", \ | |
IMPORT{builtin}="blkid --offset=$env{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}" | |
# single-session CDs do not have ID_CDROM_MEDIA_SESSION_LAST_OFFSET | |
KERNEL=="sr*", ENV{DISK_EJECT_REQUEST}!="?*", ENV{ID_CDROM_MEDIA_TRACK_COUNT_DATA}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="", \ | |
IMPORT{builtin}="blkid --noraid" | |
# probe filesystem metadata of disks | |
KERNEL!="sr*", IMPORT{builtin}="blkid" | |
# by-label/by-uuid links (filesystem metadata) | |
ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}" | |
ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}" | |
# by-id (World Wide Name) | |
ENV{DEVTYPE}=="disk", ENV{ID_WWN_WITH_EXTENSION}=="?*", SYMLINK+="disk/by-id/wwn-$env{ID_WWN_WITH_EXTENSION}" | |
ENV{DEVTYPE}=="partition", ENV{ID_WWN_WITH_EXTENSION}=="?*", SYMLINK+="disk/by-id/wwn-$env{ID_WWN_WITH_EXTENSION}-part%n" | |
# by-partlabel/by-partuuid links (partition metadata) | |
ENV{ID_PART_ENTRY_UUID}=="?*", SYMLINK+="disk/by-partuuid/$env{ID_PART_ENTRY_UUID}" | |
ENV{ID_PART_ENTRY_SCHEME}=="gpt", ENV{ID_PART_ENTRY_NAME}=="?*", SYMLINK+="disk/by-partlabel/$env{ID_PART_ENTRY_NAME}" | |
LABEL="persistent_storage_end" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment