Quelles sont les causes / dev / disk / by-label à remplir?

J'ai remarqué que les dissortingbutions Linux ont généralement un directory / dev / disk / by-label, mais ce n'est pas toujours le cas (par exemple, l'image de test de CirrOS Linux n'en possède pas).

Qu'est-ce qui est requirejs sur un système Linux pour que le directory / dev / disk / by-label soit correctement rempli?

Sur la plupart des systèmes Linux modernes, à peu près tout ce qui est sous /dev est placé par udev.

Sur ma machine Debian, /dev/disk/by-label provient de plusieurs files sous /lib/udev/rules.d Par exemple, voici une règle de 60-persistent-storage.rules :

 ENV{ID_FS_LABEL_ENC}=="?*", ENV{ID_FS_USAGE}=="filesystem|other", \ SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}" 

Quelques lignes plus tôt est l'origine de ID_FS_LABEL_ENC :

 # probe filesystem metadata of disks KERNEL!="sr*", IMPORT{program}="/sbin/blkid -o udev -p $tempnode" 

Vous pouvez exécuter blkid vous-même pour voir datatables passer à udev:

 root@Zia:~# /sbin/blkid -o udev -p /dev/sda2 ID_FS_SEC_TYPE=msdos ID_FS_LABEL=xfer1 ID_FS_LABEL_ENC=xfer1 ID_FS_UUID=B140-C934 ID_FS_UUID_ENC=B140-C934 ID_FS_VERSION=FAT16 ID_FS_TYPE=vfat ID_FS_USAGE=filesystem ID_PART_ENTRY_SCHEME=dos ID_PART_ENTRY_TYPE=0xc ID_PART_ENTRY_NUMBER=2 ID_PART_ENTRY_OFFSET=257040 ID_PART_ENTRY_SIZE=257040 ID_PART_ENTRY_DISK=8:0 

Et en effet:

 root@Zia:~# ls -l /dev/disk/by-label/xfer1 lrwxrwxrwx 1 root root 10 Nov 19 10:02 /dev/disk/by-label/xfer1 -> ../../sda2 

Vous pouvez append des files de règles supplémentaires dans /etc/udev/rules.d/ si vous souhaitez créer des noms supplémentaires pour les périphériques, modifier les permissions, etc. Par exemple, nous en avons un qui remplit et définit les permissions sur un /dev/disk/for-asm .

udisks-daemon fait probablement (bien que HAL ou DBUS le puisse aussi). Vous pouvez regarder cela arriver si vous êtes si enclin. Ouvrez un termanal et exécutez:

 udisks --monitor-detail 

et twigz ensuite un lecteur. Vous obtiendrez quelque chose comme:

 job-changed: /org/freedesktop/UDisks/devices/sdb1 job underway: FilesystemMount, initiated by uid 1000 changed: /org/freedesktop/UDisks/devices/sdb1 Showing information for /org/freedesktop/UDisks/devices/sdb1 native-path: /sys/devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/host3/target3:0:0/3:0:0:0/block/sdb/sdb1 device: 8:17 device-file: /dev/sdb1 presentation: /dev/sdb1 by-id: /dev/disk/by-id/usb-SanDisk_Cruzer_20054858820EEB607D7D-0:0-part1 by-id: /dev/disk/by-uuid/D033-D063 by-path: /dev/disk/by-path/pci-0000:00:1a.7-usb-0:4:1.0-scsi-0:0:0:0-part1 detected at: Wed 21 Nov 2012 07:45:47 AM EST system internal: 0 removable: 0 has media: 1 (detected at Wed 21 Nov 2012 07:45:47 AM EST) detects change: 0 detection by polling: 0 detection inhibitable: 0 detection inhibited: 0 is read only: 0 is mounted: 1 mount paths: /media/CRUZER mounted by uid: 1000 presentation hide: 0 presentation nopolicy: 0 presentation name: presentation icon: size: 8000094208 block size: 512 job underway: no usage: filesystem type: vfat version: FAT32 uuid: D033-D063 label: CRUZER partition: part of: /org/freedesktop/UDisks/devices/sdb scheme: mbr number: 1 type: 0x0b flags: offset: 16384 alignment offset: 0 size: 8000094208 label: uuid: