Commit graph

427 commits

Author SHA1 Message Date
a35ffdda23
Open ddrescueview during recovery
Addresses issue #182
2022-02-20 18:10:13 -07:00
147c35f0c6
Add support for tech notes in ddrescue-tui
Addresses issue #11
2022-02-19 18:47:12 -07:00
b3f4a31ed2
Move detect drives logic to its own function 2022-02-19 18:42:41 -07:00
4550b13565
Add osTicket pane to ddrescue-tui
Addresses issue #10
2022-02-18 17:21:56 -07:00
7dc64fb73b
Merge remote-tracking branch 'upstream/dev' into dev 2021-12-14 15:34:27 -07:00
a19714d735
Skip CPU tests by default for TestStations
Addresses #179
2021-12-14 14:08:22 -07:00
af6119feb5
Fix more pylint warnings 2021-09-30 17:48:10 -06:00
c747b66455
Merge remote-tracking branch 'upstream/dev' into dev 2021-09-30 17:42:31 -06:00
90fb97ad91
Fix various pylint warnings 2021-09-27 21:48:11 -06:00
7dfd399e6e
Update __init__.py files 2021-09-13 18:42:36 -06:00
29dc4694b4
Merge remote-tracking branch 'upstream/dev' into dev 2021-06-23 23:36:03 -06:00
9c5767f71f
Update CPU testing sections 2021-06-23 23:33:45 -06:00
8e0fdf641b
Retest temps with sysbench if Prime95 runs too hot
If the CPU reaches the failing temps during Prime95 then sysbench will be
run to emulate a less artificial workload.  The both the overall and sysbench
max temps are recorded and shown in the results.

Added new option to track an alternate max temp value in wk.hw.sensors.
This was needed so show two different max temps recorded during CPU testing.

Sysbench was added to the Linux package list and is compiled for macOS.
Without manually compiling the package it brings in way too many dependencies
to support SQL DB testing (which we don't need).
2021-06-17 03:16:34 -06:00
eaa367a5c9
Fix imports under Windows 2021-05-02 02:14:28 -06:00
2a90a381a4
Merge remote-tracking branch 'upstream/dev' into dev 2021-05-02 01:17:13 -06:00
ffa2df416b
Set source drive to sleep instead of detaching it 2021-04-16 01:07:56 -06:00
da9563f870
Merge remote-tracking branch 'upstream/dev' into dev 2021-04-15 01:37:18 -06:00
20fe08dbb4
Get correct size for child dev under macOS 2021-04-14 02:16:58 -06:00
a4ee7b890c
Disable image mode in ddrescue-tui (for now) 2021-04-13 23:16:55 -06:00
d781038e88
Enable ddrescue-tui under macOS
Currently limited to only cloning whole disks, not select partitions.
We need to specify the --size due to a bug under macOS; it fails to
detect the size of the device/partition and reports 8192 PiB instead.
2021-04-13 02:18:17 -06:00
c90bc0ef37
Merge remote-tracking branch 'upstream/dev' into dev 2021-04-11 15:32:16 -06:00
535455813c
Use the new command name for pipes.sh 2021-04-11 15:30:32 -06:00
c6ca5228ac
Merge remote-tracking branch 'upstream/dev' into dev 2021-04-11 15:28:27 -06:00
b047b28f30
Fix typo 2021-04-11 15:27:51 -06:00
bed7e79758
Add questionable argument to hw-diags
I, the author of this script, strongly recommend against using this!

References issue #139
2021-04-09 04:15:20 -06:00
4b956cb488
Disable benchmarks only for smaller USB drives
Addresses issue #128
2021-04-09 03:51:13 -06:00
a42d5e06f4
Merge remote-tracking branch 'upstream/dev' into dev 2021-04-09 03:08:19 -06:00
66bf189e55
Disable benchmark tests on surface scan failures 2021-04-09 03:02:28 -06:00
b3a667641d
Show failed attributes during surface scans 2021-04-09 02:29:06 -06:00
ce8dddd9b7
Include note if attributes fail mid-diagnostics 2021-04-09 02:27:11 -06:00
d0b8b3ad57
Add even more pylint cleanup fixes 2021-04-09 00:18:18 -06:00
af09772d67
Merge remote-tracking branch 'upstream/dev' into dev 2021-04-09 00:16:41 -06:00
812fd15011
Add more pylint cleanup fixes 2021-04-09 00:15:59 -06:00
8689a68c2f
Skip asking for a ticket ID twice
For this to happen the tech has to disable osTicket integration first
so in that case just set ticket to the date.  No need asking again.

Addresses issue #132 (I think, couldn't reproduce)
2021-04-08 23:58:44 -06:00
388c6302cb
Merge remote-tracking branch 'upstream/dev' into dev 2021-04-08 23:41:01 -06:00
9d3508909a
Add DRIVE_POWEROFF_TIMEOUT to wk.cfg.ddrescue
This replaces a magic number
2021-04-08 23:40:00 -06:00
249e868c3d
Merge remote-tracking branch 'upstream/dev' into dev 2021-04-08 23:22:56 -06:00
830e088ccf
Report if the dest starts failing during recovery 2021-04-08 23:17:00 -06:00
5a2d35d3cc
Prevent recovering to wrong devices or paths
Before starting a recovery run verify the source and destination have
not changed.  This will prevent issues on some extreme edge cases but
the main goal is for disappearing source drives with heavy damage.

e.g. A very damaged source drive disappears mid-recovery, drops off and
before would need a restart, or unplug/replug, to continue.  Now we can
attempt to re-detect the drive and resume recovery without leaving the
script.  If for some reason the drive order were to change then we'll
avoid using the wrong source or destination device.
2021-04-08 23:09:00 -06:00
43fd30322e
Expand checks for missing source or destination
Addresses issue #155
2021-04-08 22:43:13 -06:00
18bc139d25
Add 'Detect drives' option to ddrescue-tui 2021-04-08 20:55:28 -06:00
c452256fe7
Fix pylint issues in wk/hw/ddrescue.py 2021-04-08 20:49:21 -06:00
1a3b57da66
Poweroff source drives after ddrescue errors
Addresses issue #165
2021-04-08 19:41:05 -06:00
a5766a8a1e
Avoid more possibles crashes when uploading graphs 2021-04-06 17:27:44 -06:00
86f0f14c34
Merge remote-tracking branch 'upstream/dev' into dev 2021-04-06 17:06:30 -06:00
9478000cdf
Add Clock Sync option to HW-Diags menu under macOS 2021-04-06 16:57:31 -06:00
61f2b00a2a
Export SMC data in HW Diagnostics
Addresses issue #154
2021-04-06 15:53:19 -06:00
641695a2be
Avoid crash if benchmark image fails to generate 2021-04-01 23:22:04 -06:00
586e3fc61c
Merge remote-tracking branch 'upstream/dev' into dev 2021-03-26 01:24:35 -06:00
ae42634a8e
Add SMART override for some Samsung devices
* Addresses issue #163
2021-03-26 00:57:08 -06:00
1e09ddc9ff
Merge remote-tracking branch 'upstream/dev' into dev 2021-03-25 21:28:50 -06:00
9818d5196f
Export state objects as pickle files
This should better ensure debugging an issue will have all the relevant
info at the ready.
2021-03-25 21:15:56 -06:00
3f48b10942
Apply "temp" fix for macOS HW-Diags 2021-03-25 21:11:21 -06:00
60e5d86f8e
Merge remote-tracking branch 'upstream/dev' into dev 2021-03-24 22:22:54 -06:00
2Shirt
7147ef1753 Fix get_serial() 2021-03-19 15:23:49 -06:00
2Shirt
080383d9a9 Fix bad call to mount_disk() 2021-03-19 03:37:40 -06:00
2Shirt
207c52663b Allow mounting of protected macOS partitions
Renamed mount_volumes() to mount_disk() to better match diskutil naming.
Dropped read_write from mount_disk() since it isn't used
2021-03-18 22:23:07 -06:00
2Shirt
7c1a9f4bdc Fix osTicket volume report 2021-03-18 21:52:29 -06:00
2Shirt
2b98eeabca Include GPT info when saving hw-diaqs debug data 2021-03-18 21:41:59 -06:00
2Shirt
908ffdc999 Add mount_volumes() to wk.os.mac
Supports both CoreStorage and APFS containers
2021-03-18 03:23:09 -06:00
2Shirt
bc3f6946f7 Add support for macOS High Sierra Base Images 2021-03-17 01:23:12 -06:00
2Shirt
4dc5c51beb Include Mac serial number in OST Post 2021-03-13 03:20:51 -07:00
2Shirt
314675c32e Unknown 2021-03-13 03:15:30 -07:00
7d77aa81b0 Update sensors.py to improve CPU data
Include AMD CCD sensors
Exclude current sensors
2021-01-09 21:08:53 -07:00
a4df2f41d3
Added wk.exe.stop_process()
* Replaced wk.hw.ddrescue.stop_ddrescue()
2020-02-25 20:52:08 -07:00
45a6b31910
Added periodic destination health check
* Addresses issue #158
2020-02-25 20:45:59 -07:00
94a428f6da
Added check for missing source/destination
* Addresses issue #155
2020-02-25 20:15:13 -07:00
0a00e17536
Avoid another rare crash when saving average temps 2020-02-17 16:54:51 -07:00
1f1fdfc738
Avoid rare crash when saving average temps 2020-02-17 16:44:33 -07:00
1b7c248102
Merge remote-tracking branch 'upstream/dev' into dev 2020-02-03 18:16:12 -07:00
3b640ac85b
Addressed issue #153 2020-02-03 18:09:46 -07:00
c1970b8c23
Merge remote-tracking branch 'upstream/dev' into dev 2020-01-30 14:09:13 -07:00
e8522bf2bb
Added pause if fan speed can't be set under macOS
* This can be removed after a bit of real-world testing
2020-01-30 14:08:05 -07:00
a66c27be84
Updated get_disk_details_macos() 2020-01-30 14:01:30 -07:00
ebbdedef6c
Added get_fstype_macos() 2020-01-30 13:59:12 -07:00
ad1adba837
Add APFS and HFS/HFS+ to RECOMMENDED_MAP_FSTYPES 2020-01-30 13:51:23 -07:00
385b2158fd
Improved method to avoid crash during self-tests 2020-01-30 13:28:52 -07:00
dc6dcfb845
Revert "Avoid crash during SMART self-test"
This reverts commit cc8c0992f6.
2020-01-30 13:25:46 -07:00
c8f95d866a
Typo fix 2020-01-30 13:24:49 -07:00
86f0f1e5fd
Avoid rare crash concerning disk attributes
* Crash would occur under these circumstances:
  * Disk Attributes test was not selected
  * One or more other disk tests were selected
  * A non-blocking attribute error was detected
2020-01-30 13:16:48 -07:00
98032a0fed
Removed stale TODO statements 2020-01-28 19:00:47 -07:00
1a26aead44
Network test working under macOS 2020-01-28 18:38:33 -07:00
869293ced9
Merge remote-tracking branch 'upstream/dev' into dev 2020-01-28 18:30:35 -07:00
f14f5e0d72
Adjusted logging 2020-01-28 18:21:24 -07:00
5cc0456f40
Improve performance under macOS by using rdisks 2020-01-28 18:12:53 -07:00
0c8701e3e4
Support get_disks_macOS() on older macOS versions 2020-01-28 18:10:10 -07:00
cc8c0992f6
Avoid crash during SMART self-test 2020-01-28 18:09:33 -07:00
fe50ce8994
Use new Mac fan sections in HW Diags 2020-01-28 18:08:26 -07:00
f7c6d5d3c3
Only include graph links in osTicket posts 2020-01-22 20:10:17 -07:00
fd8f46be13
Don't export/upload graphs for skipped tests
* e.g. USB device which USB benchmarks disabled
2020-01-22 19:51:01 -07:00
701d647a91
Added I/O Benchmark PNG graph sections 2020-01-22 19:19:54 -07:00
8643ec2c7c
Fixed setting CPU max temp in osTicket 2020-01-22 19:19:00 -07:00
5f9aec8233
Merge remote-tracking branch 'upstream/dev' into dev 2020-01-22 15:38:20 -07:00
5cbb86abd8
Clear screen before starting diags 2020-01-22 15:37:26 -07:00
0348d708d9
Merge remote-tracking branch 'upstream/dev' into dev 2020-01-22 11:29:18 -07:00
bfc17942cd
Added header to SMART self-test output
* Matches badblocks header
* Also added Initializing message
2020-01-22 11:22:47 -07:00
e92ceb070c
Adjusted I/O Benchmark screen layout 2020-01-22 11:21:49 -07:00
79abbcfaf8
Avoid crash when getting NVMe attributes 2020-01-22 11:20:39 -07:00
e09216012f
List failed tests with overall result in osTicket 2020-01-20 19:08:10 -07:00
710fcc29dc
Catch non-blocking SMART errors between tests
* This doesn't block further tests, just ensures Disk Attributes fails
2020-01-20 18:31:29 -07:00
daffb606ee
Merge remote-tracking branch 'upstream/dev' into dev 2020-01-19 16:00:29 -07:00
1b473b1ab0
Fix pipes when run from hw-diags 2020-01-19 15:14:03 -07:00
5fbd33e845
Fixed HDD checkbox logic 2020-01-17 16:14:29 -07:00
3265b19f3d
Merge remote-tracking branch 'upstream/dev' into dev 2020-01-16 20:38:39 -07:00
d3597f339e
Added volume report to hw diags 2020-01-16 20:29:07 -07:00
c161ebac2a
Save ddrescue results to log at exit
* Instead of printing them since it should be run in tmux
  * And as such the results would be obscured from the user anyway
2020-01-13 22:11:07 -07:00
e9b1fe7819
Adjusted clone settings filename
* Use source path if the model wasn't detected
  * Avoids names like "Clone_.json"
2020-01-13 21:59:40 -07:00
65284860fb
Adjusted HW Diag main menu 2020-01-13 18:40:48 -07:00
47b4ab6636
Merge remote-tracking branch 'upstream/dev' into dev 2020-01-13 17:35:26 -07:00
16dbffd91c
Enable SAT usage for USBs to expand SMART support
* Only enabled for USB devices
* Only enabled if attributes weren't found using --device=auto
* Addresses issue #109
2020-01-13 17:12:58 -07:00
d8617df871
Adjusted self-test results formatting 2020-01-13 15:45:07 -07:00
b9d0527c52
Added osTicket checkbox sections 2020-01-11 21:23:49 -07:00
9c12dacfb2
Post CPU/Disk results to osTicket 2020-01-11 20:31:39 -07:00
96b755be49
Added osTicket report sections 2020-01-11 19:54:07 -07:00
fef8323282
Pass Disk Attribute test for devices lacking SMART 2020-01-11 19:53:34 -07:00
ea9a9f9a46
Pass Disk Attribute test for devices lacking SMART
* Since these can't fail I think passing them makes sense
2020-01-11 19:51:57 -07:00
a573a7e1c3
Reset top_text before returning to main menu 2020-01-11 16:59:42 -07:00
28c1d61d20
osTicket integration complete for ddrescue TUI 2020-01-11 16:46:06 -07:00
2f2bfacbb7
Started integrating osTicket functions in ddrescue 2020-01-10 19:32:25 -07:00
ceee0495eb
Started integrating osTicket functions in HW Diags 2020-01-10 18:50:21 -07:00
76a9d90ecb
Adjusted ddrescue TUI results report 2020-01-08 20:35:32 -07:00
6e3f02961c
Made load_settings() and save_settings() private
* Clears a pylint issue and makes sense to me
2020-01-08 19:50:04 -07:00
43cf4e2727
Added generate_report() to wk.hw.ddrescue.State() 2020-01-08 19:46:40 -07:00
0a2976d9ce
Set pass/fail attributes in disk_attribute_check() 2020-01-08 19:02:09 -07:00
72787d5c24
Fix destination checks when imaging 2020-01-04 18:42:55 -07:00
b79deefdd6
Fix map name when using loopback devices 2020-01-04 18:28:43 -07:00
383b7c331a
Safety wheels are off 2020-01-04 18:07:28 -07:00
64645cdf1f
Expanded logging (slightly) 2020-01-04 18:06:57 -07:00
5926c3170d
Reworked retry sections
* Edit the map file directly instead of using --retrim and --try-again
  * Allows for more accurate pass status reporting
  * Allows for simpler pass break/continue logic
* Create the map file before running ddrescue
  * Allows file to be edited by the current user instead of just root/ddrescue
* Added check for empty map files
  * Avoids incorrectly marking a pass as complete
2020-01-04 18:01:39 -07:00
470524dfff
Added pause after "No actions performed" message 2020-01-04 16:54:28 -07:00
4acdab8c0f
Mark passes Skipped as appropriate 2020-01-04 16:53:56 -07:00
c71e30e4fb
Adjusted debug reports 2020-01-04 15:58:43 -07:00
a68e52322c
Fixed aborting when multiple parts selected 2020-01-04 15:41:15 -07:00
e6e51498dd
Clear ddrescue pane every minute 2020-01-03 18:36:53 -07:00
30a5df8a00
Fix timezone in SMART pane 2020-01-03 18:36:40 -07:00
4a2b18e4f7
Added confirmation to Quit if recovery < 100% 2020-01-03 17:55:23 -07:00
848ccc3ef1
Made several State() functions "private" 2020-01-03 17:54:55 -07:00
097360ca0a
Always ask GPT/MBR/Source when formatting a disk
* This fixes cloning partitions when not creating a boot partiton
2020-01-03 17:32:51 -07:00
6eaf5c2bc2
Get accurate size from ddrescuelog
* Reported size is off by one sector in some cases
2020-01-03 17:25:12 -07:00
eb702577ae
Mark clones as started to allow resuming 2020-01-03 16:45:47 -07:00
276e2e0dda
Made mode a State() variable 2020-01-03 16:38:48 -07:00
a4b5e81ef1
Made working_dir a State() variable 2020-01-03 16:08:38 -07:00
4f2b31c705
Avoid crash while stopping ddrescue
* Killall is needed because of sudo
2020-01-03 01:14:06 -07:00
2b18da7244
Added real ddrescue command logic
* Still needs testing!!
* Set all dry_run keywords to default to True
2020-01-03 00:47:33 -07:00
c22c3da493
Expanded safety checks
* Added destination NVMe/SMART checks
2020-01-02 23:33:21 -07:00
2983eb9bd3
Updated run_ddrescue()
* Added SMART pane logic
2020-01-02 23:24:23 -07:00
299b075eef
Fixed BlockPair().safety_check() 2020-01-02 22:32:18 -07:00
9ae8810282
Added real disk format section
* --dry-run=True safety wheels still engaged
2020-01-02 21:22:47 -07:00
ac04a3ddc5
Added another safety check for block pairs
* Needed one more check since clone pairs were assumed to be okay
2020-01-02 21:14:25 -07:00
5d0ed475a6
Added option to match source partition table type 2020-01-02 20:07:46 -07:00
9702d7665f
Added limited support for converting MBR/GPT types 2020-01-02 19:54:18 -07:00
6dc887b04e
Added initial disk formatting sections 2020-01-02 15:50:26 -07:00
764d35836b
Force running all passes if retry selected 2020-01-01 15:06:16 -07:00
1dacdd4637
Abort if an invalid image destination selected 2020-01-01 15:02:23 -07:00
f45a10395f
Added --force-local-map option 2020-01-01 15:02:11 -07:00
df6f3ba8e1
Added initial ddrescue pass logic 2019-12-30 20:21:37 -07:00
e88e4ab3eb
Added ddrescue settings sections 2019-12-30 19:29:32 -07:00
bcd46d4017
Added SMART/Journal panes 2019-12-30 19:25:46 -07:00
d9561a0159
pylint cleanup 2019-12-30 18:47:35 -07:00
e7fbc21721
Added EToC logic 2019-12-30 17:43:15 -07:00
0ddafe8a42
Updated side pane sections 2019-12-30 16:40:28 -07:00
631449e40a
Added format_status_string() 2019-12-30 16:40:03 -07:00
89de1d52bb
Updated BlockPair __init__() and pass_complete() 2019-12-30 16:37:49 -07:00
6ad68c37d4
Added update_progress_pane()
* Still a WIP
2019-12-29 19:29:09 -07:00
fa39801523
Adjusted block pair report 2019-12-26 20:18:17 -07:00
7d7dc70630
Added map data loading sections 2019-12-26 20:16:35 -07:00
fc0a37999b
Added size safety check to ddrescue TUI 2019-12-26 19:27:08 -07:00
bd3601e0c8
Ask for ticket ID and use in working_dir 2019-12-26 17:35:58 -07:00
20ffa0c6db
Added --start-fresh argument 2019-12-24 18:01:04 -07:00
ef6abce6ab
Skip source partition selection if using JSON data 2019-12-24 17:35:38 -07:00
f542b62f3c
Use source model name in clone settings save file 2019-12-24 16:44:26 -07:00
4c50a1fb8a
Added first run flag to clone settings
* If the loaded settings are for a non-attempted recovery discard settings
2019-12-24 16:43:07 -07:00
67bb9223aa
Moved block pair report to new function 2019-12-24 16:42:18 -07:00
e7e3261b0a
Fixed partition separators 2019-12-24 16:38:42 -07:00
f71cc8ad68
Expanded block pair sections and confirmations 2019-12-22 21:24:02 -07:00
1ed6309971
Include selected source parts in 1st confirmation 2019-12-22 19:05:32 -07:00
6d6380dc6a
Added clone load/save and add block pair sections 2019-12-22 18:49:07 -07:00
0f2007f5dc
Set working directory for ddrescue TUI
* If cloning use backup server share
* If imaging use destination directory
* If a preferred directory and fstype can't be used then warn the user
2019-12-22 16:14:03 -07:00
428d255538
Added selection confirmation sections 2019-12-21 16:53:55 -07:00
0f0c47bbe4
Force selecting at least one partition/device 2019-12-20 12:54:42 -07:00
59ef06f402
Added select_path() 2019-12-19 11:59:34 -07:00
2fb2c3fa6e
Adjusted loopback device descriptions 2019-12-19 11:31:32 -07:00
b20e6cc4ad
Mount passed filepath as raw image
* Also unmount atexit
2019-12-18 20:47:06 -07:00
c3245c92da
Handle passing dir/file paths to ddrescue-tui 2019-12-18 19:28:52 -07:00
3fc9a843fc
Added select_disk_parts()
* Differentiate between all parts selected and whole disk selected
2019-12-13 20:04:15 -07:00
c72372d55c
Replaced platform.system() with PLATFORM var
* Better?
2019-12-13 19:01:26 -07:00
bc2c3a2c80
Expanded source/dest disk selection sections 2019-12-13 18:37:36 -07:00
da5f521f92
Added wk.hw.ddrescue.select_disk() 2019-12-12 19:29:32 -07:00
b746cda6e7
Bugfix 2019-12-12 18:46:44 -07:00
3733da17fc
Moved get_disks() from wk/hw/diags to wk/hw/obj 2019-12-12 18:36:57 -07:00
48a6b3200b
Added init_recovery()
* Set mode
* Select/verify source/dest
2019-12-12 17:22:02 -07:00
3a8c052d5a
Updated ddrescue menu sections
* Support loading presets
2019-12-12 16:43:23 -07:00
045d2b2571
Updates ddrescue-tui tmux sections 2019-12-12 16:39:42 -07:00
7a880e2ee7
Added initial ddrescue sections
* Very early outline, very broken still
2019-12-10 15:56:12 -07:00
07cb287eb0
Updated wk.net.connected_to_private_network()
* Can either return True/False or return None/raise Exception
* Added network check to mount_backup_shares()
2019-12-09 20:53:42 -07:00
8e5bfa12f4
Added NVMe SMART status checks
* Addresses issue #130
2019-12-09 16:48:35 -07:00
23c99084b5
Drop SIGWINCH sections 2019-12-09 16:48:15 -07:00
cc85e3e8ed
Improve abort handling 2019-12-09 16:32:35 -07:00
081658550b
Added debug report sections
* HW-Diags debug reports are saved after showing results or atexit
2019-12-09 15:55:30 -07:00
82341dbbb3
Moved disk safety checks to after the test
* This way failures during the last test should be caught
2019-12-08 17:02:10 -07:00