J'ai le même problème que vous: renommer le noyau /dev/sd**
après un redémarrage:
Bien sûr, tous mes montages automatiques /etc/fstab
sont référencés par LABEL ou par UUID, il n’ya donc aucun problème pour cela. Et toutes les commandes ci-dessus, blkid ou lsblk, donnent ce genre d’informations.
Mais le problème commence comme dans mon cas, lorsque vous utilisez une partition en mode RAW, du point de vue du système actuellement démarré: par exemple, soit: la partition est utilisée comme périphérique brut, pour créer un disque virtuel pour VirtualBox (donc la référence à cette partition est quelque chose comme: /dev/sdf3
) ou la partition est utilisée comme périphérique brut, pour faire un LUN iSCSI (donc la référence à cette partition est quelque chose comme: /dev/sdc6
)
Donc maintenant au démarrage, par exemple dans rc.local, vous devez trouver de manière fiable le /dev/sdXX
périphérique de votre partition RAW dédiée et adapter un fichier:
EXEMPLE 1
La description du disque VirtualBox * .vmk de ce disque brut, dans la partie suivante:
\# Extent description
RW 488397167 FLAT "/dev/sdXX" 0
puis redémarrez le service VirtualBox
Exemple 2
Dans la configuration tgtd, une cible: cible0 était associée /dev/sdd6
au moment de la construction. Après le redémarrage, vous obtenez la même partition renommée. /deb/sdc6
Cela se produit avec un disque amovible, USB ou eSATA! Alors, comment trouver le nouvel appareil automatiquement? Encore une fois dans /etc/rc.d/rc.local
Donc, dans ce cas, nous avons besoin d’une manière fiable pour trouver quel est le nom du nouveau périphérique. La partition GPT offre un GUID unique pour toute partition GPT, écrite dans une table GPT.
gdisk ne fournit pas ces informations avec le mode liste, mais uniquement en mode interactif avec: i commande. Heureusement, blkid le fait!
Vous devez donc écrire un script shell pour examiner tous vos disques, à savoir le périphérique /dev/sdXX
associé au GUID détecté au moment de la création de la partition.
Quelque chose comme, search_device_by_partUUID.sh:
\#!/bin/bash
PART_UUID=$1
if [ "$PART_UUID" = "" ]
then
echo "Syntax: $0 <a valid partition UUID>"
exit 3
fi
lsblk | grep '^sd' | awk '{print $1}' | while read DISK_DEVICE
do
INFO=`blkid /dev/${DISK_DEVICE}* | grep "PARTUUID=\"$PART_UUID\"" `
if [ "$INFO" != "" ]
then
echo INFO : "$INFO"
BLK_DEVICE=`echo "$INFO" | awk '{print $1}'`
echo $BLK_DEVICE > /dev/shm/blkdevice
echo -n "BLK_DEVICE : " ; cat /dev/shm/blkdevice
fi
done
puis utilisez /dev/shm/blkdevice
, dans votre script rc.local.