Come posso sapere se il mio disco rigido è PATA o SATA?


8

Ho un disco rigido ATA sul mio laptop, con Fedora 11, kernel 2.6.30.10-105.2.23.fc11.i586. Sto cercando di aggiornare il disco qui (mi piacerebbe ottenere un SSD) ma ho dimenticato se è un ATA seriale o una vecchia interfaccia ATA parallela. Non è molto utile l'aggiornamento a un SSD se è PATA ...

Come posso sapere se il disco è collegato tramite un'interfaccia PATA o SATA?

Risposte:


7

Per vedere la descrizione del dispositivo per il controller (presupponendo un controller interno (PCI)), che di solito contiene SATA per controller SATA:

lspci -d $(cat /sys/block/sda/device/../../../vendor):$(cat /sys/block/sda/device/../../../device)

Se vuoi scrivere di meno, basta sfogliare l'output di lspciprobabilmente ti darà la risposta in un laptop (molti desktop hanno entrambi i tipi di interfacce, quindi dovresti cercare l'unità che ti interessa).

Se questo non ti dà la risposta, per vedere quale driver sta fornendo sda(puoi quindi cercare se quel driver è per un controller PATA o SATA):

readlink -f /sys/block/sda/device/../../../driver

Fantastico, grazie! Il primo comando mi ha confuso, ma il secondo ben prodotto /sys/bus/pci/drivers/pata_amd!
Josh,

@Gilles - Alla ricerca di queste informazioni nel 2018, quanto sopra non funziona (almeno sul mio sistema Arch Linux). I percorsi non esistono (nessun vendorfile, ecc.).
Starfry,

@starfry Su che autobus è? Penso che la mia risposta funzioni per qualsiasi kernel Linux non antico, ma non funzionerebbe per dispositivi che non sono collegati a un controller ATA che si trova su un bus PCI. Ad esempio, non sono sicuro che funzionerebbe per un SSD, a seconda del tipo di controller.
Gilles 'SO- smetti di essere malvagio' il

kernel 4.15.3-2-ARCH, esempio di dispositivo pci-0000:00:1f.2-ata-1 . Fare ls /sys/block/sdc/device/../../../rendimenti ata_port firmware_node host2 link3 power uevent. Tutti i normali dischi rigidi con spinning su porte SATA standard su una scheda madre i7 del 2009.
Starfry,

1

Aggiornamento : per la cronaca, la risposta di @Gilles è migliore.

Se si tratta di un'unità PATA (ide), la vedrai sotto /proc/ide. Ecco il mio IDE DVD-Drive, ad esempio, ecco il mio output:

$ cat /proc/ide/hdb/model 
Optiarc CDRWDVD CRX890A

Se si tratta di un'unità SATA, verrà visualizzata sotto /proc/scsi. Potresti essere sorpreso di trovarlo in "scsi". Ho dimenticato il motivo esatto (lo farò in un'altra domanda), ma penso che sia perché SATA utilizza i driver SCSI.

Ecco un elenco che mostra un'unità SATA sul mio sistema:

$ cat /proc/scsi/scsi 
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: WDC WD2500AAJS-6 Rev: 01.0
  Type:   Direct-Access                    ANSI  SCSI revision: 05

3
Questo non è sempre affidabile: a seconda del driver, della versione del kernel e delle opzioni di compilazione del kernel, alcuni driver SATA possono apparire come ide e alcuni driver PATA possono apparire come scsi. I kernel moderni tendono a far sì che ogni driver parli scsi al livello del disco generico, ed è quello che vedi qui.
Gilles 'SO- smetti di essere malvagio' il

Sì, mi dispiace Stefan, l'unità è elencata sotto /proc/scsi/scsi, in effetti il ​​mio sistema non ha nemmeno /proc/ide... ma secondo la risposta di Gilles, sembra che l'unità sia in realtà IDE.
Josh,

0

Puoi chiedere a udev:

$ udevadm info -q property /dev/sda | grep -Ee '^ID_(BUS|ATA_SATA)='

Se questo comando viene emesso ID_ATA_SATA=1, l'unità è un'unità SATA (nativa). In caso contrario, ma genera output ID_BUS=ata, l'unità è un'unità PATA. Se nessuno dei due genera, l'unità è qualcos'altro.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.