The software on this pages will slowly be moved to GitHub https://github.com/hilbix/. The CVS repository will be migrated to GIT as well, so the history will be preserved, a bit. See FAQ.
The tools are developed under Linux with
release early, release often
So you can consider this beta software, or alpha, or pre-alpha, or even worse ;)
Have a look in the download directory for all downloads.
As always here, all you get is the source. No binaries here.
Disk geometry checking and repair tool
⇒ ⇒ ⇒ The development shifted to another location. All future versions will be published at https://github.com/hilbix/diskus ⇐ ⇐ ⇐
DISKUS is a high level harddrive diagnostic and limited repair tool.
It checks the disk geometry by writing sectors with a numbered ID to the harddrive. (THIS ERASES ALL DATA ON THE DEVICE!) Later you can verify if the sector-IDs on the disk are still correct, thereby detecting any case where some data was written to the wrong sector (or was not written at all). One example use is to check if some elder SD-card-readers are able to access the second GB - some just overwrite the first GB two times, and diskus will detect such a bug.
Now you can "freshen" the data on your harddrive, too, this will read and re-write the sectors. With modern drives this will re-map all defective sectors. (I needed this new function to successfully revive one of my drives while keeping all data intact.) Note that this option was not thoroughly tested (it was not yet tested with drives with read errors), so if you use this new option, be sure to have a backup (or some filesystem like ZFS which is able to fix any left over data error).
You can also NUL the drive (like dd if=/dev/zero of=/dev/hdwhatever), just checkread it or do a hexdump. Diskus uses O_DIRECT/O_SYNC to lessen memory cache impact and has a little progress meter.
Please note that diskus is no tool to erase your harddrive according to DOD algorithms or write certain bit check patterns or data onto it like dd.
This fixes a bug in a library part, from which it is unknown if diskus is affected.
CygWin Bugfixes: Now compiles under CygWin.
Bugfixes: Option -xd now works
Previously Option -x always was active, this was not intended.
Bugfixes: Option -null now works again. Option -jump (experimental feature) now works for small blocksizes.
There still is no way to use -jump and -freshen such, that defective sectors are overwritten, to give the drive a chance to remap the sector.
Option -xd added check mode changed dump mode now uses extended xd from tinolib
Warning: Install path now is /usr/local/bin/ so be sure to rm old version in $HOME/bin/
Output changed (using my scale library) Also some small changes to make read mode more reliable.
-freshen mode and -to option added
This new feature is again somehwat experimental. With -freshen, all data read is rewritten to disk. It is done overlapping, such that each sector is read and written two times. The idea is to "freshen" the magnetic data by overwriting it with itself. Before you ask: I needed this to have some drives remap weakened (eroded) sectors which took ages to read.
The -to option is to give an end option for operation. This way you can give an end-position (positive value) or delta (number of bytes to operate on with a negative value). For example this will read a drive from 200MiB to 400MiB:
diskus -start 200M -to -200M -read /dev/sda
Error reporting changed to be better readable, some library changes.
Option -jump added (because I needed it)
This feature is very experimental and only works for read modes currently. It tries to jump over errors by skipping to the next 4096 byte boundary. It has not been tested thoroughly and if run with the -async option (which automatically might kick in in several cases) this will behave a little bit unreliably.
More suffixes: SC and PEZY
IO buffer now is aligned to a page boundary, such that the -async option is no more needed in most times.
-write mode now no more valid for read modes
I always mix this myself, so added a fatal error for this.
The result printed with -gen mode differed from that with -check mode, which was really puzzling. Now both shall show the same counts.
(Previously the read-loop showed the correct count, while the write-loop showed the count which would be reached if not EOF interfered, which was too high.)
(216553 bytes archive)
Bugfix release, better reporting and return value, Option -quiet to suppress progress status
Diskus previously was not very detailed in the output, it now prints more information if -quiet is not present.
The "dump" function 0.2.x did no more work correctly if option -expand was not present, this is fixed now.
(210950 bytes archive)
New option -expand
Because I needed it
(208623 bytes archive)
Removed bug in -dump.
On characters above DEL -dump was unable to detect repeated sequences.
(208569 bytes archive)
Removed minor bugs.
There was a bug when reading devices without option -async present. Newer kernels apparently do not allow to do that. The workaround was to add the -async option. This is now automatically applied.
Also if the start value was not a multiple of the sector size strange things happened. The start value now is rounded.
(189475 bytes archive)
Looking at the sources I already found the first bug.
Wasn't that quick?
(189311 bytes archive)
Just a first version.
There is a bug in that it tries to read past the device end. In this case you do not get EOF, instead you see an IO error and see some ugly kernel entries in the syslog.
License and Disclaimer
All you can see here is free software according to the GNU GPL.