Soluzione 1:
Su un sistema moderno, un dispositivo di partizione apparirà solo se la partizione esiste effettivamente.
Su un disco con una tabella delle partizioni MBR, i numeri di partizione da 1 a 4 corrispondono ai quattro slot nella tabella delle partizioni, chiamati partizioni "primarie". Non devono essere riempiti in sequenza, quindi è possibile, ad esempio, avere un sda2 ma non un sda1. I numeri di partizione 5 e superiori corrispondono alle "unità logiche" in una partizione estesa, e quelle sono sempre numerate in sequenza, quindi non puoi avere un sda6 senza avere anche un sda5.
Su un disco con una tabella delle partizioni GPT, possono esserci molte più partizioni (in genere fino a 128) e tutte sono "primarie". Quindi potresti avere un disco la cui unica partizione è sda9, per esempio.
Se il disco non ha una tabella delle partizioni, ovviamente non avrà dispositivi di partizione.
I sistemi più vecchi, quelli che utilizzano una /dev statica piuttosto che una gestita da udev, in genere avranno nodi di dispositivo per tutti i possibili numeri di partizione, indipendentemente dal fatto che le partizioni esistano effettivamente. (Il tentativo di aprire il file del dispositivo per una partizione inesistente fallirà, ovviamente.)
È possibile rinunciare al partizionamento e mettere un filesystem direttamente su un disco. Quando si monta un dispositivo a blocchi, il driver del filesystem in genere cerca un superblocco a un offset predeterminato dall'inizio del dispositivo e poiché l'inizio di una partizione non è l'inizio del disco stesso, il superblocco per un filesystem in una partizione si trova in una posizione diversa sul disco rispetto al superblocco per un filesystem creato sul dispositivo "intero disco".
Quindi, se il disco aveva solo un filesystem, e poi è stato partizionato e un filesystem è stato creato in una partizione, il vecchio superblocco potrebbe essere ancora lì, ad es. nel piccolo spazio prima dell'inizio della prima partizione. Quindi il disco sembra ancora avere un filesystem sia sul dispositivo del disco grezzo che sul dispositivo di partizione, perché qualunque sia quello che provi a montare, quando il driver del filesystem cerca il superblocco ne troverà uno.
Tuttavia, in realtà non è sicuro montare e utilizzare entrambi i filesystem, poiché si sovrappongono sul disco. Uno può avere dati contabili importanti in quello che l'altro pensa sia spazio libero. Ecco perché è una buona idea azzerare l'inizio di un dispositivo a blocchi, per rimuovere eventuali superblocchi indesiderati, quando si desidera modificare un disco grezzo in uno partizionato, o viceversa, o modificare il tipo di filesystem utilizzato su una partizione, ecc. .
Soluzione 2:
Per quanto ne so, quando il kernel rileva un nuovo dispositivo a blocchi su un bus simile a scsi (incl. sata), oltre ad aggiungere un nodo in /dev
per l'intero disco stesso, ad es. /dev/sda
tenterà di vedere se c'è una tabella delle partizioni. Se sono presenti partizioni leggibili, creerà quindi i nodi della partizione numerati a seconda che si tratti di partizioni fisiche o logiche (credo che le partizioni logiche inizino al numero 5).
Se vedi un nodo del disco ma senza nodi di partizione, ciò significherebbe che non sono state rilevate partizioni. Non sono a conoscenza di alcuna istanza in cui è possibile montare il dispositivo fisico, poiché ciò implicherebbe che esiste un filesystem scritto direttamente sul dispositivo fisico senza alcuna tabella delle partizioni. Potrebbe essere che nel caso in cui ci sia solo una singola partizione, mount
interpreterà un mount /dev/sda
comando con significato /dev/sda1
, ma non l'ho mai testato.
Soluzione 3:
/dev/sda - dispositivo grezzo
/dev/sda1 - dispositivo 'virtuale', come una partizione.
Una differenza interessante è che se un dispositivo ha partizioni (ha dati MBR o simili) non puoi leggere i dati MBR da nessuno dei dispositivi virtuali, poiché i dati MBR risiedono al di fuori di qualsiasi partizione su un dispositivo. MBR risiede nel primo settore del dispositivo (CHS:0 0 1). C'è una buona pratica per creare la prima partizione a 1MiB dopo l'inizio di un dispositivo.
Per leggere i dati MBR, devi utilizzare il dispositivo raw (/dev/sda), ovvero:
dd if=/dev/sda of=mbr.bin bs=512 count=1