UNPKG

arch-wiki-md-repo

Version:

All arch-wiki articles in markdown format, updated every two days.

181 lines (113 loc) 7.35 kB
Questo articolo descrive come utilizzare dei nomi univoci e non modificabili per l'identificazione delle periferiche(o partizioni). Questo è stato reso possibile con l'introduzione di udev, e risulta vantaggioso anche rispetto ai nomi basati sul bus di connessione. Se la macchina ha più di un controller per i dischi SATA, SCSI o IDE, può succedere che l'ordine dei file nodo creati sia casuale. Questo può comportare ad esempio che le periferiche `/dev/**sda**` ed `/dev/**sdb**` siano invertite in modo casuale ad ogni avvio, impedendo al sistema di avviarsi, oppure determinando la scomparsa dei dispositivi a blocchi che vengono erroneamente rilevati. L'uso di nomi univoci risolve quindi il problema. **Nota:** Non è necessario seguire questa guida nel caso in cui si stia utilizzando [LVM2](/index.php/LVM_(Italiano) "LVM (Italiano)"), dato che LVM2 si occupa anche di questo automaticamente. ## Contents * [1 Metodi di nomenclatura univoca](#Metodi_di_nomenclatura_univoca) * [1.1 By-label](#By-label) * [1.2 By-uuid](#By-uuid) * [1.3 By-id e by-path](#By-id_e_by-path) * [2 Utilizzare i nomi univoci](#Utilizzare_i_nomi_univoci) * [2.1 fstab](#fstab) * [2.2 Boot manager](#Boot_manager) ## Metodi di nomenclatura univoca Ci sono quattro differenti modi per assegnare dei nomi univoci alle periferiche:by-label,by-uuid,by-id e by-path. Nei paragrafi successivi verranno descritte le differenze tra i vari metodi e come vengono utilizzati. ### By-label Quasi tutti i filesystem supportano le etichette. Tutte le partizioni che ne hanno una sono elencate nella cartella `/dev/disk/by-label`. **Nota:** Questa cartella viene creata (e rimossa) dinamicamente, a seconda delle partizioni presenti ed aventi una etichetta. `$ ls -lF /dev/disk/by-label` ``` total 0 lrwxrwxrwx 1 root root 10 Oct 16 10:27 data -> ../../sdb2 lrwxrwxrwx 1 root root 10 Oct 16 10:27 data2 -> ../../sda2 lrwxrwxrwx 1 root root 10 Oct 16 10:27 fat -> ../../sda6 lrwxrwxrwx 1 root root 10 Oct 16 10:27 home -> ../../sda7 lrwxrwxrwx 1 root root 10 Oct 16 10:27 root -> ../../sda1 lrwxrwxrwx 1 root root 10 Oct 16 10:27 swap -> ../../sda5 lrwxrwxrwx 1 root root 10 Oct 16 10:27 windows -> ../../sdb1 ``` Le etichette possono essere cambiate utilizzando i seguenti comandi: swap  ``` # mkswap -L <label> /dev/XXX ``` **Attenzione:** Questo comando cancellerà l'area di swap. Se la swap è montata, eseguire `swapoff /dev/XXX` prima e `swapon /dev/XXX` dopo. ext2/ext3/ext4  ``` # e2label /dev/XXX <label> ``` btrfs  ``` # btrfs filesystem label /dev/XXX <label> ``` reiserfs  ``` # reiserfstune -l <label> /dev/XXX ``` jfs  ``` # jfs_tune -L <label> /dev/XXX ``` xfs  ``` # xfs_admin -L <label> /dev/XXX ``` fat/vfat (contenuto nel pacchetto mtools)  ``` # mlabel -i /dev/XXX ::<label> ``` ntfs (contenuto nel pacchetto [ntfs-3g](https://www.archlinux.org/packages/?name=ntfs-3g))  ``` # ntfslabel /dev/XXX <label> ``` **Attenzione:** Le etichette dovranno essere uniche per rendere efficace questo metodo, e non superare i 16 caratteri. ### By-uuid Gli [UUID](https://en.wikipedia.org/wiki/UUID "wikipedia:UUID"), ovvero *Universally Unique Identifier(identificatore unico universale)*, è un meccanismo che assegna ad ogni filesystem un identificatore unico. Esso è studiato in modo da evitare conflitti. Tutti i filesystem GNU/Linux (inclusa l'area di swap) supportano gli UUID. I filesystem FAT ed NTFS non supportano gli UUID, ma sono comunque elencate in `/dev/disk/by-uuid` con un identificatore unico: `$ ls -lF /dev/disk/by-uuid/` ``` total 0 lrwxrwxrwx 1 root root 10 Oct 16 10:27 2d781b26-0285-421a-b9d0-d4a0d3b55680 -> ../../sda1 lrwxrwxrwx 1 root root 10 Oct 16 10:27 31f8eb0d-612b-4805-835e-0e6d8b8c5591 -> ../../sda7 lrwxrwxrwx 1 root root 10 Oct 16 10:27 3FC2-3DDB -> ../../sda6 lrwxrwxrwx 1 root root 10 Oct 16 10:27 5090093f-e023-4a93-b2b6-8a9568dd23dc -> ../../sda2 lrwxrwxrwx 1 root root 10 Oct 16 10:27 912c7844-5430-4eea-b55c-e23f8959a8ee -> ../../sda5 lrwxrwxrwx 1 root root 10 Oct 16 10:27 B0DC1977DC193954 -> ../../sdb1 lrwxrwxrwx 1 root root 10 Oct 16 10:27 bae98338-ec29-4beb-aacf-107e44599b2e -> ../../sdb2 ``` Come si può notare, le partizioni FAT ed NTFS (le partizioni aventi etichetta *fat* e *windows* nell'esempio precedente) hanno nomi più corti, ma vengono comunque elencate. Il vantaggio nell'uso degli UUID sta nel fatto che è molto meno probabile avere conflitti rispetto al metodo delle etichette. Uno svantaggio è invece che i nomi sono molto meno immediati da leggere o ricordare. ### By-id e by-path In `by-id` viene creato un nome dipendente dal numero seriale dell'hardware. In `by-path` invece viene creato un nome unico dipendente dal più corto percorso fisico (secondo sysfs). In entrambi i percorsi sono contenute delle stringhe per indicare il tipo a cui appartengono(es. "-ide-" in 'by-path', ed "-ata-" in 'by-id'), comunque entrambi i metodi non sono adatti alla risoluzione del problema menzionato all'inizio dell'articolo. Non saranno quindi approfonditi oltre. ## Utilizzare i nomi univoci A seconda del metodo scelto, ecco come abilitarlo sul proprio sistema: ### fstab Per abilitare i nomi univoci in `/etc/fstab` sostituire il nome della periferica assegnata dal kernel nella prima colonna con il corrispondente percorso: ``` /dev/disk/by-label/home ... /dev/disk/by-uuid/31f8eb0d-612b-4805-835e-0e6d8b8c5591 ... ``` oppure specificare direttamente il nome univoco usando un prefisso: ``` LABEL=home ... UUID=1f8eb0d-612b-4805-835e-0e6d8b8c5591 ... ``` ### Boot manager Per usare i nomi univoci nel proprio boot manager, sarà necessario soddisfare i seguenti requisiti: * Il sistema usa un initramfs creato mediante [mkinitcpio](/index.php/Mkinitcpio_(Italiano) "Mkinitcpio (Italiano)") * Nel file `/etc/mkinitcpio.conf` sia abilitato l'hook udev * L'immagine initramfs è stata generata, con una versione di *klibc-udev* superiore alla **101-3**(**con le versioni precedenti i nomi univoci non funzionano correttamente.**). Se si aggiorna *klibc-udev* da una versione precedente e si intende usare i nomi univoci, rigenerare l'immagine initramfs prima di riavviare. Nell'esempio precedente, `/dev/sda1` è la partizione di root. Nel file `/boot/grub/menu.lst` di [GRUB Legacy](/index.php/GRUB_Legacy_(Italiano) "GRUB Legacy (Italiano)"), la riga *kernel* sarà simile a questa: ``` kernel /boot/vmlinuz-linux root=/dev/sda1 ro quiet ``` A seconda del metodo che si intende utilizzare, cambiare la riga come una delle seguenti: ``` kernel /boot/vmlinuz-linux root=/dev/disk/by-label/root ro quiet ``` oppure ``` kernel /boot/vmlinuz-linux root=/dev/disk/by-uuid/2d781b26-0285-421a-b9d0-d4a0d3b55680 ro quiet ``` Se si usa [LILO](/index.php/LILO "LILO"), non inserire il nome univoco nell'opzione `root=...`, non funzionerebbe. Sarà invece necessario usare le opzioni `append="root=..."` o `addappend="root=..."`. Consultare il manuale di LILO per maggiori informazioni riguardo alle opzioni *append* ed *addappend*. C'è un metodo alternativo per usare le etichette dei filesystem. Ad esempio se (come nell'esempio) il filesystem `/dev/sda1` ha l'etichetta "root", sarà possibile usare la seguente linea in GRUB: ``` kernel /boot/vmlinuz-linux root=LABEL=root ro quiet ```