[Risolto] riconoscimento degli HD interni

Scrivo in questa sezione, ma l’argomento riguarda qualsiasi versione di SO.

Da un pò di tempo girovago su vari SO. Linux per capire come potere organizzare la configurazione fisica e logica del mio pc in modo da potere avviare, secondo le mie necessità uno dei 3 SO che di solito tengo installati su 3 partizioni diverse dello stesso HD (sda1, sda2, sda3).
A parte l’unità sda, sono presenti altre 2 unità che in fedora vengono riconosciute come sdb e sdc. Esse contengono rispettivamente dati e salvataggio dei dati.
La difficoltà nasce in occasione dell’installazione di un SO. diverso da installare in una delle 3 partizioni, al posto di uno precedente. Infatti, a secondo del SO: di nuova installazione, la procedura di partizionamento disco in esso contenuta, non sempre attribuisce all’unità in cui tengo i SO. l’idendificativo sda, Infatti può capitare che la mia sda, diventi sdb, mentre sda diventa quella contenente dati.
Ciò comporta il mio totale blocco mentale nel proseguire e mi porta ad abbandonare la procedura di installazione, con inevitabile contrarietà personale sull’esito negativo ottenuto.

Ora mi viene da chiedere un parere in base alla vostra esperienza. Supponiamo che io installi il nuovo SO. sulla partizione riconosciuta dalla procedura di nuovo partizionamento come sdb2, di assegnarle il punto di mount e di aggiornare pure il grub2, assegnandolo, secondo il nuovo riconoscimenti delle unità alla sdb.
Mi immagino che al successivo avvio del nuovo SO. Linux si avvii bene e conformemente alla nuova identificazione attribuita alle unità.

Quello che non riesco ad immaginare è che cosa succederebbe, avviando fedora? La mia unità contenente i SO. sarà diventata sdb anche per fedora o invece continuerà a rimanere sda?

Dipende dalla scheda madre. Il mio consiglio è di usare gli UUID per riferimenti assoluti, che non devono mutare, così anche se li avvii in maniera diversa, o cambi le impostazioni del BIOS, o cambi fisicamente la posizione del disco, non hai problemi.

$ $ ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx. 1 root root 10 Jun 20 10:22 27ed8941-8bad-4ce5-bfb5-5b620cc08e7c -> ../../sda3
lrwxrwxrwx. 1 root root 10 Jun 20 10:22 43fe5cde-eb65-4711-857b-0ef1f4c4e2fb -> ../../sdb7
lrwxrwxrwx. 1 root root 10 Jun 20 10:22 65554f7c-6ff8-4aaf-97ad-a85ce5f760b6 -> ../../sdb1
lrwxrwxrwx. 1 root root 10 Jun 20 10:22 6af04376-30ba-419a-b5cb-e4221dca23ef -> ../../sdb5
lrwxrwxrwx. 1 root root 10 Jun 20 10:22 C913-4EC0 -> ../../sda1
lrwxrwxrwx. 1 root root 10 Jun 20 10:22 d12a90e6-0b4c-4b70-9b8b-deb1aa52d4b9 -> ../../sdb6
lrwxrwxrwx. 1 root root 10 Jun 20 10:22 dd75b89d-77d8-4709-a24e-bf7c6c2bc32f -> ../../sda2
lrwxrwxrwx. 1 root root 10 Jun 20 10:22 ed111304-0fe7-4fca-a69f-f824067593b8 -> ../../sda4

Si certo, i riferimenti assoluti non cambiano, ma essi, se non ricordo male, nella procedura di partizionamento non compaiono ed in ogni caso nella risposta al comando

ls -l /dev/disk/by-uuid/

manca il nome del volume a cui appartiene il riferimento assoluto dl un dato gruppto di partizioni. Quindi non potro’ mai conoscerne il collegamento, a meno che non mi costruisca a manina su carta una tabella di corrispondenza sicura fra volume, partizioni e riferimenti assoluti.

In definitiva, resta tutto alquanto logicamente nebuloso e praticamente pericoloso da gestire nelle scelte di partizionamento durante l’installazione di un nuovo SO.

Mi sento di dire, forse anche in maniera un po’ contestataria, che almneo in detto trattamento tutti i kernel dovrebbero trovarsi sulla stezza lunghezza d’onda.

Quando partizioni sai il tipo di dispositivo, modello, situazione e via dicendo, quindi non dovrebbe essere un problema, o sbaglio?
Il problema non riguarda il kernel, ma la scheda madre che a volte può mostrare un dispositivo prima dell’altro. Se tu noti Fedora usa gli UUID in fstab proprio per evitare questo problema. Quindi non dovresti incontrare problemi particolari all’avvio.

[quote=frafra]Quando partizioni sai il tipo di dispositivo, modello, situazione e via dicendo, quindi non dovrebbe essere un problema, o sbaglio?
Il problema non riguarda il kernel, ma la scheda madre che a volte può mostrare un dispositivo prima dell’altro. Se tu noti Fedora usa gli UUID in fstab proprio per evitare questo problema. Quindi non dovresti incontrare problemi particolari all’avvio.[/quote]
Ho ripreso questa discussione per chiuderla dopo avere fatto la dovuta esperienza sui mount attraverso i codici di riconoscimento univoco delle partizioni. Infatti ho lavorato, negli spazi che il caldo estivo mi ha lasciato, sul riconoscimento delle partizioni e migliorato i miei script di salvataggio dati. Riporto la parte degli script che riguarda l’identicazione delle partizioni di destinazione giornaliera dei miei archivi “dati”:

declare -a Tbyid     # tabella di destinazione delle rilevazione del volume Maxtor, contenente le partizioni assegnate al salvataggio giornaliero dei dati
  IFS=$'\n'   # IFS sta per "separatore di campo interno"
  Tbyid=(`ls -l /dev/disk/by-id | grep -i "ata-MAXTOR_STM3160215AS_9RA9A81C" | tr IFS ' '`)          # carica tabella coi risultati filtrati del comando
  TotEl1=${#Tbyid*]}
swcar=0
	{
	for ((ii=0;ii\<${TotEle};++ii)); do
		echo -n "Tbyid"${ii}"]="; echo ${Tbyid[ii]} 
 		echo -n "ultimo crt di Tbyid"${ii}"]= "; echo ${Tbyid[ii]: -1}
		{
		case ${Tbyid[ii]: -1}  in  			# ${Tbyid[ii]: -1} è il campo di ricerca dei valori possibili
		"1" )
			Tbsddest[swcar]=${Tbyid[ii]: -4}      #  Es. sdb1
			((++swcar)) ;;
		"2" )
			Tbsddest[swcar]=${Tbyid[ii]: -4}      #  Es. sdb2
			((++swcar)) ;;
		"3" )
			Tbsddest[swcar]=${Tbyid[ii]: -4}      #  Es. sdb3
			((++swcar)) ;;
		esac
		}	
	done
	}
       {     
	for ((ii=0;ii\<${swcar};++ii)); do
		striuuid=(`blkid | grep -i ${Tbsddest[ii]}`)          # carica riga contenente il nome logico della partizione interessata
#		echo "contenuto di striuuid dopo l'esecuzione di blkid"
#		echo  "striuuid= |"${striuuid}"|"
#		echo
		striuuid=${striuuid##* UUID=\"}    		# viene eliminato tutto ciò che precede ' UUID=' compreso   
#		echo "contenuto di striuuid dopo il troncamento della prima parte della variabile fino a UUID= compreso"
#		echo  "striuuid= |"${striuuid}"|"
#		echo
		striuuid=${striuuid%%\"*}   			 # viene eliminato tutto ciò che segue dal primo doppio_apice (compreso)
#		echo "contenuto di striuuid dopo il troncamento della parte finale della variabile fino al 1° doppio_apice compreso, dopo lo UUID"	
#		echo  "striuuid= |"${striuuid}"|"
		Tbuuiddest[ii]=${striuuid}
	done
	}	
        {	
	for ((ii=0;ii\<${swcar};++ii)); do
		echo
		echo -n "Tbsddest"${ii}"]="; echo ${Tbsddest[ii]} 
		echo -n "Tbuuiddest"${ii}"]="; echo ${Tbuuiddest[ii]} 
		echo
	done
	}
  fi
  }

che in esecuzione produce il seguente output sul terminale:

Grazie frafra. Ora i miei script di salvataggio hanno trovato il giusto livello di sicurezza nel riconoscimento delle partizioni di destinazione e mi sento in una botte di ferro.

bravo, punico!
anche se non capisco nulla del programmino che ti sei elaborato, penso che sia una risorsa MOLTO utile a chi è in grado di seguirti
:smiley:

Grazie Aiace.
Premesso che non sono un programmatore abituale di script bash, mi fa piacere sentire che tu abbia apprezzato lo scopo rivolto all’utilità che ne possa derivare a chi,come me, dovesse avere necessità di realizzare programmini bash con l’impiego di istruzioni simili.
Allo stesso tempo ho voluto ringraziare chi mi ha dato una mano a superare qualche ostacolo incontrato durante la stesura dello script.