Zum Inhalt springen

Hdparm/Anwendung: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
 
'''Hdparm/Anwendung'''
<syntaxhighlight lang="bash" highlight="1" line>
</syntaxhighlight>
 
 
<syntaxhighlight lang="bash" highlight="1" line>
</syntaxhighlight>


== Informationen anzeigen ==
== Informationen anzeigen ==
Zeile 317: Zeile 311:
  Issuing SECURITY_DISABLE command, password="Test", user=user</pre>Die Festplatte ist dauerhaft entsperrt:
  Issuing SECURITY_DISABLE command, password="Test", user=user</pre>Die Festplatte ist dauerhaft entsperrt:
<pre>        not    enabled</pre>
<pre>        not    enabled</pre>
Das Master-Passwort ließe sich so setzen:
Das Master-Passwort ließe sich so setzen:
{{RootShell|hdparm --user-master m --security-set-pass Passwort2 /dev/sdg}}
sudo hdparm --user-master m --security-set-pass Passwort2 /dev/sdg  
<pre>security_password="Passwort2"
security_password="Passwort2"


/dev/sdg:
/dev/sdg:
  Issuing SECURITY_DISABLE command, password="Passwort2", user=master</pre>
  Issuing SECURITY_DISABLE command, password="Passwort2", user=master
Den aktuellen Schutzzustand ''einfrieren'':
 
<pre>hdparm --security-freeze /dev/sdg
Den aktuellen Schutzzustand ''einfrieren''
 
hdparm --security-freeze /dev/sdg


/dev/sdg:
/dev/sdg:
  issuing security freeze command</pre>Das fehlende ''not'' zeigt wieder den Zustand:
  issuing security freeze command</pre>Das fehlende ''not'' zeigt wieder den Zustand:
<pre>                frozen</pre>
                frozen
Ein Versuch, den Schutz danach ein zu schalten:
 
Ein Versuch, den Schutz danach ein zu schalten
{{RootShell|hdparm --security-set-pass TEST /dev/sdg}}
{{RootShell|hdparm --security-set-pass TEST /dev/sdg}}
schlägt dann fehl:
schlägt dann fehl:

Version vom 15. März 2025, 10:18 Uhr

Hdparm/Anwendung

Informationen anzeigen

sudo hdparm -I /dev/sdb
 
 /dev/sdb:
 
 ATA device, with non-removable media
 Model Number: Hitachi HDS722020ALA330
 Serial Number: JK1160YAGMUVRT
 Firmware Revision: JKAOA3MA
 Transport: Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6; Revision: ATA8-AST T13 Project D1697 Revision 0b
 Standards:
 Used: unknown (minor revision code 0x0029)
 Supported: 8 7 6 5
 Likely used: 8
 Configuration:
 Logical max current
 cylinders 16383 16383
 heads 16 16
 sectors/track 63 63
 --
 CHS current addressable sectors: 16514064
 LBA user addressable sectors: 268435455
 LBA48 user addressable sectors: 3907029168
 Logical/Physical Sector size: 512 bytes
 device size with M = 1024*1024: 1907729 MBytes
 device size with M = 1000*1000: 2000398 MBytes (2000 GB)
 cache/buffer size = 29999 KBytes (type=DualPortCache)
 Form Factor: 3.5 inch
 Nominal Media Rotation Rate: 7200
 Capabilities:
 LBA, IORDY(can be disabled)
 Queue depth: 32
 Standby timer values: spec'd by Standard, no device specific minimum
 R/W multiple sector transfer: Max = 16 Current = 0
 Advanced power management level: disabled
 DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
 Cycle time: min=120ns recommended=120ns
 PIO: pio0 pio1 pio2 pio3 pio4
 Cycle time: no flow control=120ns IORDY flow control=120ns
 Commands/features:
 Enabled Supported:
 * SMART feature set
 Security Mode feature set
 * Power Management feature set
 Write cache
 * Look-ahead
 * Host Protected Area feature set
 * WRITE_BUFFER command
 * READ_BUFFER command
 * DOWNLOAD_MICROCODE
 Advanced Power Management feature set
 Power-Up In Standby feature set
 * SET_FEATURES required to spinup after power up
 SET_MAX security extension
 * 48-bit Address feature set
 * Device Configuration Overlay feature set
 * Mandatory FLUSH_CACHE
 * FLUSH_CACHE_EXT
 * SMART error logging
 * SMART self-test
 Media Card Pass-Through
 * General Purpose Logging feature set
 * WRITE_{DMA|MULTIPLE}_FUA_EXT
 * 64-bit World wide name
 * URG for READ_STREAM[_DMA]_EXT
 * URG for WRITE_STREAM[_DMA]_EXT
 * WRITE_UNCORRECTABLE_EXT command
 * Segmented DOWNLOAD_MICROCODE
 * Gen1 signaling speed (1.5Gb/s)
 * Gen2 signaling speed (3.0Gb/s)
 * Native Command Queueing (NCQ)
 * Host-initiated interface power management
 * Phy event counters
 * NCQ priority information
 Non-Zero buffer offsets in DMA Setup FIS
 * DMA Setup Auto-Activate optimization
 Device-initiated interface power management
 In-order data delivery
 * Software settings preservation
 * SMART Command Transport (SCT) feature set
 * SCT Write Same (AC2)
 * SCT Error Recovery Control (AC3)
 * SCT Features Control (AC4)
 * SCT Data Tables (AC5)
 Security:
 Master password revision code = 65534
 supported
 not enabled
 not locked
 not frozen
 not expired: security count
 not supported: enhanced erase
 500min for SECURITY ERASE UNIT.
 Logical Unit WWN Device Identifier: 5000cca221c90422
 NAA : 5
 IEEE OUI : 000cca
 Unique ID : 221c90422
 Checksum: correct
Bestimmte Information anzeigen
sudo hdparm -I /dev/sdb | grep "cache"
 cache/buffer size = 29999 KBytes (type=DualPortCache)
 Write cache

Datenträger sdb hat eine "cache size" von 29,999 MB

Akkustik Management

Akkustiklevel anzeigen

sudo hdparm -M /dev/sda
 /dev/sda:
 acoustic = 254 (128=quiet ... 254=fast)

Akkustiklevel des Datenträgers sda ist auf "fast" eingestellt => schnell, aber laut.

Akkustiklevel einstellen

Hier auf "quiet" => geringere Performance

sudo hdparm -M 128 /dev/sda
 /dev/sda:
 setting acoustic management to 128
 acoustic = 128 (128=quiet ... 254=fast)

Power Management

Advanced Power Management einstellen
sudo hdparm -B 254 /dev/sda
 /dev/sda:
 setting Advanced Power Management level to 0xfe (254)
 APM_level = 254

Datenträger sda ist auf höchst mögliche Leistung eingestellt => beste Performance, aber höchster Stromverbrauch.

Standby-Modus

Standby-Modus (Spindown)

Standby-Zeitlimit von 2min

sudo hdparm -S 24 /dev/sda
 /dev/sda:
 setting standby to 24 (2 minutes)

Geschwindigkeit

Geschwindigkeit messen

Lesegeschwindigkeit messen

Mit Cache

sudo hdparm -Tt /dev/sda
 /dev/sda:
 Timing cached reads: 6962 MB in 2.00 seconds = 3482.67 MB/sec
 Timing buffered disk reads: 358 MB in 3.01 seconds = 119.12 MB/sec

Ohne Cache

sudo hdparm -Tt --direct /dev/sda
 /dev/sda:
 Timing O_DIRECT cached reads: 498 MB in 2.00 seconds = 248.49 MB/sec
 Timing O_DIRECT disk reads: 360 MB in 3.01 seconds = 119.60 MB/sec

Read-Lookahead

Read-Lookahead-Funktion

Aktivierung bei /dev/sda

sudo hdparm -A 1 /dev/sda
 /dev/sda:
 setting drive read-lookahead to 1 (on)
 look-ahead = 1 (on)

Erweiterte Funktionen

Warnung

Folgende Befehle können auch bei richtiger Anwendung einen kompletten Datenverlust oder gar Hardware-Schaden verursachen!

Hinweis

Hdparm verlangt bei jeder potentiell gefährlichen Operation ein "--yes-i-know-what-i-am-doing"-Flag, um zu vermeiden, solch ein Kommando aus versehen abzusetzen

Eine kleine Sammlung nützlicher Hdparm-Anwendungen
-z
Zwingt den Kernel, die Partitionstabelle des gegebenen Gerätes neu einzulesen. Erfüllt die gleiche Aufgabe wie "sfdisk -R", "blockdev --rereadpt" oder "blktool <device> reread-part". Kann nützlich sein, um eine manuell geänderte Partitionstabelle ohne Neustart zu aktualisieren (Beispielsweise MBR mit dd überschrieben oder Partitionstabelle zurück gespielt).
-w
Führt einen Laufwerksreset durch. Diese Funktion ist sehr gefährlich, da sie das ganze System gefährden kann.


Fragmentierung

Fragmentierung einer Datei

--fibmap
Wenn man herausfinden möchte, welche Sektoren eine Datei belegt, oder wie fragmentiert sie ist, bietet sich diese Option an. Hdparm benötigt nach dieser Option ausschließlich den Absoluten Pfad zur gewünschten Datei. Bei Erfolg wird eine Liste der belegten Bereiche ausgegeben. Die Sektorzahlen sind absolute LBA Nummern der betreffenden Festplatte und keine Blockzahlen des Dateisystems! Laut Manpage scheint diese Option mit fast jedem Dateisystem umgehen zu können. Nur nach einem sync soll es auch bei ext4/xfs gut funktionieren.
Hinweis
Erst ab hdparm Version 8.7 und Debian Lenny verfügbar
Beispiel
sudo hdparm --fibmap /boot/vmlinuz-2.6.38.3-1000hz 

/boot/vmlinuz-2.6.38.3-1000hz:
 filesystem blocksize 4096, begins at LBA 63; assuming 512 byte sectors.
 byte_offset  begin_LBA    end_LBA    sectors
          0   10682503   10682558         56
      28672   10685159   10685174         16
      36864   10687167   10687190         24
      49152   10687199   10687278         80
      90112   10693263   10693270          8
      94208   10693919   10693966         48
     118784   10694047   10694670        624
     438272   10695807   10696190        384
     634880   10696639   10698814       2176
    1748992   10699647   10700294        648
    2080768   10700415   10701102        688
    2433024   10702399   10702702        304

Funktion freischalten

--dco-freeze
--dco-identify
--dco-restore

Seit ATA/ATAPI 6 gibt es das Device Configuration Overlay (DCO). Damit haben OEM Hersteller die Möglichkeit, bestimmte, in den Identify-Informationen gelisteten Werte, zu deaktivieren. Mit hdparm lassen sich diese anzeigen.

Hinweis
Erst ab hdparm Version 9.0 und Debian Squeeze verfügbar.
Abschaltbare Funktionen anzeigen
# hdparm --dco-identify /dev/sdj

/dev/sdj:
DCO Revision: 0x0001
The following features can be selectively disabled via DCO:
       Transfer modes:
                mdma0 mdma1 mdma2
                udma0 udma1 udma2 udma3 udma4 udma5 udma6(?)
       Real max sectors: 312581808
       ATA command/feature sets:
                SMART self_test error_log security HPA 48_bit
       SATA command/feature sets:
                (?): NCQ interface_power_management SSP}}

Anschließend würde man die Ausgabe mit den Identify "-I" Werten vergleichen. Ist dort eine deaktivierte aber gewünschte Funktion dabei, kann man laut Manpage versuchen, diese auf Werkseinstellung zurück zu setzen:

# hdparm --yes-i-know-what-i-am-doing --dco-restore /dev/sdj

/dev/sdj:
issuing DCO restore command
HDIO_DRIVE_CMD(dco_restore) failed: Input/output error }}

... wie gesagt, mit etwas Glück.

Mit einem "--dco-freeze" ließe sich die aktuelle, vielleicht vollwertige Konfiguration, bis zum nächsten Start/Reset einfrieren.

Sicherheit

Das "security feature set" ist Teil des ATA Standards und ermöglicht das Sperren der Festplatte durch ein Passwort, sowie deren automatische Löschung.

Passwort-Schutz

Die Passwörter werden direkt auf den Plattern der Festplatte gespeichert, lassen sich so durch Tausch der Laufwerkselektronik (wovon generell abzuraten ist) nicht umgehen. Die Passwörter sollten also mit Vorsicht gesetzt werden, denn theoretisch kann selbst der Hersteller diese nicht umgehen. Es ist jedoch möglich. Für hohe Sichereitsansprüche ist eine Vollverschlüsselung der Daten deshalb effektiver.

--user-master PASSWORT-TYP
Grundsätzlich lassen sich zwei unterschiedliche, 32 Byte lange Passwörter setzen. Mit "u" wird das User-Passwort gewählt; mit "m" das Master-Passwort, welches als Not-Schlüssel dient. Dieser Schalter lässt sich mit dem "security mode" und den anderen kombinieren, als Standard ist immer das User-Passwort gewählt.
--security-set-pass PASSWORT
Dieser Schalter setzt das gegebene Passwort und aktiviert damit die Sicherheitsfunktion, "NULL" für ein leeres. Ist dies das User-Passwort, wird die Sperrung aktiviert.
--security-mode SICHERHEITSSTUFE
Mit "h" wird die Stufe "high security", mit "m" "maximal security" gewählt. Bei ersterem ist die Entsperrung mit beiden Passwörtern, bei "maximal" nur mit dem User-Passwort möglich. Mit dem Master-Passwort lässt sich die Festplatte nur durch ein "security erase" entsperren, wobei alle Daten gelöscht werden. Ohne Angabe wird auf "high" gesetzt. Mit "user-master" und den anderen Schaltern kombinierbar.
--security-unlock PASSWORT
Hiermit wird die Festplatte temporär, also bis zum nächsten Start (Reset), entsperrt.
--security-disable PASSWORT
Im entsperrten Zustand lässt sich die Sicherheitsfunktion so dauerhaft ausschalten.
--security-freeze PASSWORT
Damit werden alle Sicherheitseinstellungen eingefroren, bis zum nächsten Start sind keine Änderungen mehr möglich. Diese Funktion wird von einigen BIOS beim Start gesetzt, um ein Sperren mit böswilliger Absicht zu verhindern.
Beispiele

Die Unterstützung prüfen:

Vorlage:RootShell

Security: 
        Master password revision code = 65534
                supported
        not     enabled
        not     locked
        not     frozen
        not     expired: security count
        not     supported: enhanced erase

Das "not" zeigt jeweils, was inaktiv ist. Je nach Gerät sind hier Informationen über die Dauer eines "security-erase" angegeben.

Die Aktivierung geschieht mit dem Setzen eines Passwortes. Vorlage:RootShellDa Passwortmode und Sicherheitsstufe nicht angegeben sind, wird der Standard verwendet.

security_password="Test"

/dev/sdg:
 Issuing SECURITY_SET_PASS command, password="Test", user=user, mode=high

Unter "Security" ist nun das not vor enabled verschwunden:

               enabled

Würde der Rechner oder die Festplatte jetzt neu gestartet werden, würde diese nicht mehr zugreifbar sein, ohne diese zu entsperren oder den Schutz ganz aufzuheben:

Vorlage:RootShell

security_password="Test"

/dev/sdg:
 Issuing SECURITY_UNLOCK command, password="Test", user=user

Schutz abschalten:

Vorlage:RootShell

security_password="Test"

/dev/sdg:
 Issuing SECURITY_DISABLE command, password="Test", user=user

Die Festplatte ist dauerhaft entsperrt:

        not     enabled

Das Master-Passwort ließe sich so setzen: sudo hdparm --user-master m --security-set-pass Passwort2 /dev/sdg security_password="Passwort2"

/dev/sdg:

Issuing SECURITY_DISABLE command, password="Passwort2", user=master

Den aktuellen Schutzzustand einfrieren

hdparm --security-freeze /dev/sdg

/dev/sdg:

issuing security freeze commandDas fehlende not zeigt wieder den Zustand:

                frozen

Ein Versuch, den Schutz danach ein zu schalten Vorlage:RootShell schlägt dann fehl:

security_password="TEST"

/dev/sda:
 Issuing SECURITY_SET_PASS command, password="TEST", user=user, mode=high
SECURITY_SET_PASS: Input/output error


Security Erase

--security-erase PASSWORT
Es wird eine gesperrte Festplatte so entsperrt und automatisch komplett mit Nullen beschrieben.
--security-erase-enhanced PASSWORT
Führt ein "enhanced security erase" aus und bewirkt ansonsten das selbe wie "security erase". Insbesondere bei SSDs kann es hier Unterschiede geben.

Vorlage:Hinweis

Beispiel:
Nachdem man zuvor den Schutz, durch setzen eines User-Passwortes, aktiviert hat, ist ein Security-Erase möglich mit: Vorlage:RootShell

security_password="TEST"

/dev/sdc:
 Issuing SECURITY_ERASE command, password="TEST", user=user

Ob die Festplatte ein enhanced erase unterstützt, wird mit "-I" angezeigt:

        not     supported: enhanced erase

Anmerkung: Wenn die Dauer des Löschens nicht angegeben ist, kann man abhängig von der Kapazität und der mittleren Schreibgeschwindigkeit auf die Zeit schließen. Unterstützt die Festplatte SMART, entspricht die benötigte Zeit ungefähr der, welche für einen erweiterten Selbsttest angegeben wird:

Extended self-test routine
recommended polling time:        (  54) minutes.

So ist besonders bei Festplatten an einem langsamen IDE/SATA Chipsatz das Löschen mit der maximalen Geschwindigkeit erreichbar, da die Operation von der Festplattenfirmware selbst durchgeführt wird und so unabhängig von der Bus-Anbindung ist. Bei SSDs müssen nur die Blöcke der NAND Flash gelöscht werden, dadurch muss nicht jedes Byte geschrieben werden und die Gesamtdauer kann so wenige Minuten betragen. Das ist jedoch sehr Herstellerspezifisch.


HPA - Host Protect Area

-N
Zeigt und setzt die LBA Sektoren.
Mit ATA/ATAPI 4 wurde das Host Protect Area eingeführt. Damit lässt sich ein definierter Bereich der Festplatte selbst vor Partitionierprogrammen verstecken und die Gesamtkapazität so scheinbar schrumpfen. HPA verhält sich so wie eine unsichtbare Grenze, die nichts anderes bewirkt. Gerne für Wiederherstellungspartitionen in OEM Systemen verwendet und so manches BIOS kopiert sich ungefragt in einen selbst erstellten HPA-Bereich (Vorlage:DebianforumBeitrag). Vom Kernel standardmäßig zurückgesetzt, lässt sich dieser von hdparm erkennen und sogar setzen.

Vorlage:Hinweis

Beispiel:

hdparm -N /dev/sdc

/dev/sdc:
 max sectors   = 156250000/156250000, HPA is disabled

Die maximale LBA Zahl kann flüchtig wie folgt gesetzt werden:

hdparm --yes-i-know-what-i-am-doing -N156200000 /dev/sdc

/dev/sdc:
 setting max visible sectors to 156200000 (temporary)
 max sectors   = 156200000/156250000, HPA is enabled

Nach einem Reset oder Neustart wäre diese Einstellung zurückgesetzt. Das permanente, also nichtflüchtige, Setzen wird durch ein kleines p vor der Sektorzahl bewirkt:

hdparm --yes-i-know-what-i-am-doing -Np156200000 /dev/sdc

/dev/sdc:
 setting max visible sectors to 156200000 (permanent)
 max sectors   = 156200000/156250000, HPA is enabled

Hier hat die Ausführung funktioniert. Damit wissen aber fdisk, dd & Co noch nichts davon:

fdisk -luc /dev/sdc

Disk /dev/sdc: 80.0 GB, 80000000000 bytes
255 heads, 63 sectors/track, 9726 cylinders, total 156250000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000be68d
[...]

Erst nach einem Neustart wäre dies der Fall.


Als weiteres Beispiel folgend das Erkennen und rückgängig machen, eines vom BIOS gesetzten HPA. Die Meldung vom Kernel lässt Verdacht schöpfen: Vorlage:UserShell

hdparm -N /dev/sdd

/dev/sdd:
 max sectors   = 156247887/156250000, HPA is enabled

(156250000-156247887)*512 Byte = 1.081.856 Byte wurden geschluckt! Nun den HPA löschen:

hdparm -Np156250000 /dev/sdd

/dev/sdd:
 setting max visible sectors to 156250000 (permanent)
 max sectors   = 156250000/156250000, HPA is disabled

Danach neu starten um mit dd zu schauen ob, und was da nun versteckt war:

dd if=/dev/sdd of=hpa.bin bs=512 skip=156247887
2113+0 Datensätze ein
2113+0 Datensätze aus
1081856 Bytes (1,1 MB) kopiert, 0,00426143 s, 254 MB/s

Mit hexdump gucken:

hexdump -Cn40 hpa.bin
00000000  25 e4 2d 6c 68 35 2d 7f  42 01 00 00 00 02 00 00  |%.-lh5-.B.......|
00000010  00 00 50 20 01 0c 4b 38  4e 53 43 39 33 39 2e 42  |..P ..K8NSC939.B|
00000020  49 4e fe 0f 20 00 00 2c                           |IN.. ..,|
00000028c

Etwas lha-komprimiertes.

lha -x hpa.bin
k8nsc939.bin    - Melted   :  oooooooooooooooo
LHa: Error: CRC error k8nsc939.bin
ls -l k8nsc939.bin 
-rw-r--r-- 1 ich ich 131072 30. Nov 2019  k8nsc939.bin

So wurde in den versteckten Bereich ein BIOS Image gepackt. Bei manchen lässt sich das abstellen.


HPA ignorieren: Es ist möglich den Kernel anzuweisen, eine eventuell gesetzte HPA Limitierung zu ignorieren. Es ist lediglich nötig, als Kernel Bootparameter folgendes mitzugeben:

libata.ignore_hpa=1 

Eine 0 ist Standard und würde die limits beibehalten. Äquivalent libata als Modulparameter ignore_hpa=1. Oder durch IDE Treiber unterstützte Controller ide-core.nohpa zum Boot mitgeben.

Schlechte Sektoren

Schlechte Sektoren schreiben/auslagern

--read-sector
--write-sector
Als schlecht erkannte Sektoren einer Festplatte, benötigen erst einen Schreibvorgang, um letztendlich ausgelagert und von Spare-Sektoren ausgetauscht zu werden, sofern sich diese nicht durch neu geschriebene ECC-Summen korrigieren lassen. Da Tools wie GNU-DD standardmäßig auf Block-Ebene agieren (außer man setzt direct-Flags), brechen sie dabei mit einem I/O-Fehler ab. Badblocks z. B. ist da etwas hartnäckiger. Ist der problematische Sektor bekannt, kann mit hdparm nun versucht werden, diesen auf "low-level"-Ebene zu überschreiben. Leider ist es nicht möglich, ein anderes Bitmuster vorzugeben. Parallel sollte man die Kernel-Meldungen im Auge behalten, um alle ATA-Fehler mitzubekommen.

Vorlage:Hinweis Beispiel: Im SMART Selftest-log:

=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed: read failure       40%        55         713318
[...]
hdparm --read-sector 713318 /dev/sdd

/dev/sdd:
reading sector 713318: FAILED: Input/output error

Der ist wirklich hin. Nun der Schreibversuch:

hdparm --yes-i-know-what-i-am-doing --write-sector 713318 /dev/sdd

/dev/sdd:
re-writing sector 713318: succeeded

Der Sektor wurde anscheinend intern ersetzt und ist nun mit dem Inhalt des letzten Schreibvorganges gefüllt: Vorlage:RootShell Anmerkung: Die SMART Attribute und vieles mehr lässt sich mit dem smartmontools auslesen. Dazu unter Festplattendiagnostik- und Überwachung mehr.

Schlechte Sektoren erzeugen

--make-bad-sector
Zum Test von Hardware oder Überwachungsdiensten/systemen braucht man einen praktischen und doch kontrollierten Ernstfall, also einen Lesefehler der Festplatte. Der Befehl setzt entweder ein "WRITE_LONG" oder ein neues für LBA48 taugliches "WRITE_UNCORRECTABLE_EXT" Kommando ab, um den gegebenen Sektor auf der Festplatte zu korrumpieren. Ein "f" vor der Sektorzahl würde diesen nur als schlecht markieren, nicht wirklich korrumpieren. Beim Korrumpieren werden natürlich nur die ECC Daten des Sektors verfälscht und nicht die physische Oberfläche beschädigt. Somit lässt sich dieser beim nächsten beschreiben auch wieder reparieren. Selbstverständlich nutzt man dafür keine Festplatte mit produktivem Inhalt und Funktion, eher eine ausrangierte oder wenigstens ungenutzte. Denn der betroffene Sektor wird gelöscht und bei falscher Anwendung kann mehr passieren!
hdparm --yes-i-know-what-i-am-doing --make-bad-sector 100 /dev/sdc

/dev/sdc:
Corrupting sector 100 (WRITE_LONG): succeeded

Erst nach einem fehlgeschlagenen Leseversuch:

hdparm --read-sector 100 /dev/sdc

/dev/sdc:
reading sector 100: FAILED: Input/output error

So taucht die erwartete und gewünschte Meldung im Syslog auf bzw. die betreffenden SMART Attribute erhöhen sich:

ata4.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
ata4.00: irq_stat 0x40000001
ata4.00: failed command: READ SECTOR(S)
ata4.00: cmd 20/00:01:64:00:00/00:00:00:00:00/e0 tag 0 pio 512 in
         res 51/40:00:64:00:00/00:00:00:00:00/e0 Emask 0x9 (media error)
ata4.00: status: { DRDY ERR }
ata4.00: error: { UNC }
ata4.00: configured for UDMA/133
ata4: EH complete
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       1
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       1

Anmerkung: Die SMART Attribute und vieles mehr lässt sich mit dem smartmontools auslesen. Dazu unter Festplattendiagnostik- und Überwachung mehr.