Tengo el mismo problema que tú: renombrar por núcleo /dev/sd**
después de reiniciar:
Por supuesto, /etc/fstab
LABEL o UUID hacen referencia a todos mis montajes automáticos , por lo que básicamente no hay problema para eso. Y todos los comandos anteriores, blkid o lsblk, brindan este tipo de información.
Pero el problema comienza como en mi caso, cuando está utilizando la partición en modo RAW, en el punto de vista del sistema actualmente arrancado: por ejemplo, ya sea: la partición se usa como dispositivo sin formato, para hacer un disco virtual para VirtualBox (entonces la referencia a esta partición es algo como: /dev/sdf3
) o la partición se utiliza como dispositivo en bruto, para hacer un LUN para iSCSI (por lo que la referencia a esta partición es algo como: /dev/sdc6
)
Entonces, ahora en el arranque, por ejemplo en rc.local, debe encontrar de manera confiable cuál es el /dev/sdXX
dispositivo de su partición RAW dedicada y adaptar algún archivo:
EJEMPLO 1
La descripción del disco VirtualBox * .vmk de este disco sin formato, en la parte algo así como:
\# Extent description
RW 488397167 FLAT "/dev/sdXX" 0
y luego reinicie el servicio VirtualBox
EJEMPLO 2
en la configuración tgtd, un objetivo: target0 estaba asociado /dev/sdd6
en el momento de la compilación. Después de reiniciar, obtienes el mismo nombre de partición. /deb/sdc6
Esto sucede con un disco extraíble, USB o eSATA Entonces, ¿cómo encontrar el nuevo dispositivo automáticamente? De nuevo en /etc/rc.d/rc.local
Entonces, en este caso, necesitamos una manera confiable para encontrar cuál es el nuevo nombre del dispositivo. La partición GPT ofrece un GUID único para cualquier partición GPT, escrita en la tabla GPT.
gdisk no proporciona esta información con el modo de listado, sino solo en modo interactivo con: comando i. Afortunadamente, ¡blkid lo hace!
Por lo tanto, debe escribir un script de shell para buscar en todos sus discos, que es el dispositivo /dev/sdXX
, asociado al GUID detectado en el momento de la creación de la partición.
Algo así como, 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
y luego use /dev/shm/blkdevice
, en su script rc.local.