Saya memiliki masalah yang sama dengan Anda: mengganti nama dengan kernel /dev/sd**
setelah reboot:
Tentu saja semua pemasangan otomatis saya /etc/fstab
direferensikan oleh LABEL atau oleh UUID, jadi pada dasarnya tidak ada masalah untuk itu. Dan semua perintah di atas, blkid atau lsblk, berikan informasi seperti ini.
Tetapi masalahnya dimulai seperti dalam kasus saya, ketika Anda menggunakan partisi dalam mode RAW, dalam sistem point-of-view saat ini boot: misalnya baik: partisi digunakan sebagai perangkat mentah, untuk membuat disk virtual untuk VirtualBox (jadi referensi ke partisi ini adalah sesuatu seperti /dev/sdf3
:) atau partisi tersebut digunakan sebagai perangkat mentah, untuk membuat LUN untuk iSCSI (jadi referensi ke partisi ini adalah seperti /dev/sdc6
:)
Jadi sekarang saat boot, misalnya di rc.local, Anda harus menemukan dengan cara yang dapat diandalkan, apa /dev/sdXX
perangkat partisi RAW khusus Anda, dan mengadaptasi beberapa file:
CONTOH 1
Disk VirtualBox * .vmk deskripsi disk mentah ini, pada bagian seperti ini:
\# Extent description
RW 488397167 FLAT "/dev/sdXX" 0
dan kemudian restart layanan VirtualBox
CONTOH 2
dalam konfigurasi tgtd, target: target0 dikaitkan pada /dev/sdd6
saat membangun. Setelah reboot Anda mendapatkan partisi yang sama diganti namanya. /deb/sdc6
Ini terjadi dengan removable disk, USB atau eSATA! Jadi bagaimana cara menemukan perangkat baru secara otomatis? Lagi-lagi di /etc/rc.d/rc.local
Jadi dalam hal ini kita perlu cara yang dapat diandalkan untuk menemukan apa nama perangkat baru. Partisi GPT menawarkan GUID unik untuk setiap partisi GPT, ditulis dalam tabel GPT.
gdisk tidak memberikan info ini dengan mode daftar, tetapi hanya dalam mode interaktif dengan: perintah i. Untungnya, blkid melakukannya!
Jadi, Anda perlu menulis skrip shell, untuk melihat semua disk Anda, yang merupakan perangkat /dev/sdXX
, yang terkait dengan GUID yang diperhatikan pada waktu pembuatan partisi.
Sesuatu seperti, 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
dan kemudian gunakan /dev/shm/blkdevice
, dalam skrip rc.local Anda.