Skip to content

MarxChangMRT/tocp-check

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TOCP CF 卡健康檢查工具 v1.0.2

程式用途

此工具透過網路線直接連接 TOCP 設備(QNX 6.4.1 作業系統),以 Telnet 對設備的 CF 卡(/dev/hd0t79)執行健康檢查,並將結果即時顯示於螢幕,並自動存檔至 Log。


下載

前往 Releases 下載最新版 disk_checker.exe,無需安裝 Python 環境。


執行方式

直接執行打包好的 exe:

disk_checker.exe

系統需求

  • 作業系統:Windows

  • 網路:電腦需與 TOCP 設備位於同一網段,且能連通以下至少一個 IP:

    • 192.168.100.99(TOCP 前 Port)
    • 192.169.100.99(TOCP 後 Port)
  • TOCP 設備:QNX 6.4.1,TCP Port 23(Telnet)需開放 備註:若設備連線IP不同,請修改程式碼以實際設定之IP位址為準。


注意事項

  • 執行 chkfsysdcheck 時,建議設備先登出系統,否則可能影響檢查結果
  • 工具以 root 帳號登入設備(無密碼),請確保設備在受信任的內部網路環境中使用

連線階段

  1. 裝置探測:程式會並行掃描兩個 IP 位址的 TCP Port 23(Telnet):
    • 192.168.100.99(TOCP 前 Port)
    • 192.169.100.99(TOCP 後 Port)
    • 超時門檻為 1.5 秒,取第一個回應的裝置連線
  2. Telnet 登入:以 root 帳號自動登入(無密碼),清除歡迎訊息後進入可操作狀態
  3. 自動偵測分區:登入後自動執行 ls /dev/hd0t* 偵測可用分區(如 /dev/hd0t79

檢查項目(互動式選單)

操作方式:使用鍵盤 ↑↓ 選擇,按 Enter 確認。


1. CF卡檔案系統檢查 (chkfsys)

chkfsys -uv /dev/hd0t79
  • -u:強制執行,即使 CF 卡已標記為 CLEAN 也照樣掃描
  • -v(verbose):詳細輸出,列出每一個目錄與檔案的掃描過程
  • yes |:自動回應 chkfsys 執行過程中可能出現的互動確認提示
  • 逾時:120 秒
  • 即時輸出:掃描過程會即時顯示在螢幕上

2. 完整 CF卡 磁區壞軌掃描 (dcheck)

dcheck -rv /dev/hd0
  • -r(random read):以隨機讀取方式對每個磁區進行讀取測試
  • -v(verbose):詳細輸出,顯示掃描進度
  • 掃描目標為整顆 CF 卡的原始裝置(/dev/hd0),涵蓋全部磁區
  • 逾時:600 秒(約 10 分鐘);實際時間依儲存媒體而異,CF 卡/SSD 較快,傳統硬碟較慢
  • 掃描期間會即時顯示 Spinner 與已耗時秒數(如 ⠸ 正在掃描中... 已耗時: 38.0 秒

3. 全面檢查 (CF卡檔案系統 + 完整磁區壞軌掃描)

依序執行以下兩個指令:

  1. chkfsys -uv /dev/hd0t79(完整檔案系統檢查)
  2. dcheck -rv /dev/hd0(完整磁區壞軌掃描)

全部完成後一起顯示摘要報告並存檔。


4. 系統日誌

sloginfo
  • 讀取 QNX 記憶體中的系統事件日誌
  • 可用於觀察是否有硬體異常、驅動程式失敗等事件記錄
  • 逾時:10 秒

結果判定邏輯

chkfsys 結果解析

條件 狀態 意義
輸出含 corruptionerrorcross-link ERROR 偵測到嚴重損壞或交叉連結
輸出含 fixeddeletedrecovered FIXED ⚠️ 有問題但已自動修復
輸出含 dirty FIXED ⚠️ 檔案系統標記為髒,已執行修復
輸出含 ok 或為空 OK 掃描完成,未發現異常
無法辨識關鍵字 MANUAL_CHECK 👀 請參閱螢幕上的原始輸出自行判斷

dcheck 結果解析

條件 狀態 意義
輸出含 is bad BAD_BLOCKS 發現物理壞軌,計算壞軌數量
輸出含 read errorseek errorfail ERROR 掃描過程發生硬體通訊異常
輸出含其他 error ERROR ⚠️ 未預期的錯誤
有輸出但無關鍵字 MANUAL_CHECK 👀 請參閱螢幕上的原始輸出自行判斷
正常完成 OK 掃描完成,CF 卡狀況良好,未發現壞軌

備註RANDOM Read check of /dev/hd0 without bad block marking,dcheck 正常的啟動提示,不代表錯誤。


摘要報告與日誌

  • 每次檢查完成後,自動顯示結果摘要(✅ 正常 / ⚠️ 已修復或警告 / 👀 請人工確認 / ❌ 異常)
  • 自動將完整報告存至執行檔同層的 disk_checker_log/disk_check_YYYYMMDD_HHMMSS.log
  • Log 內容包含:裝置資訊、CF 卡使用率、指令輸出及結果摘要
  • [Log 過濾]:chkfsys 掃描過程中的「倒數計數」及 Comparing new bitmap... 等無意義進度訊息,會自動從 Log 中移除

指令執行機制

程式使用帶唯一序號的 echo marker(__CMD_DONE_N__)來判斷指令何時結束,避免跨指令殘留資料誤判。每次執行前都會先 flush reader buffer,確保輸出乾淨。


手動 Telnet 操作教學

不使用本程式,也可以透過 Windows 內建的 Telnet 手動連線至 TOCP 設備執行指令。

啟用 Windows Telnet 用戶端

Windows 預設未啟用 Telnet,請先開啟:

控制台 → 程式和功能 → 開啟或關閉 Windows 功能 → 勾選「Telnet 用戶端」→ 確定

連線步驟

開啟 CMD,輸入:

telnet 192.168.100.99

若前 Port 無回應,改用後 Port:telnet 192.169.100.99

連線成功後輸入帳號:

root

(無需密碼,直接按 Enter)

常用指令

# 查看可用分區
ls /dev/hd0t*

# CF 卡檔案系統檢查
chkfsys -uv /dev/hd0t79

# CF 卡磁區壞軌掃描
dcheck -rv /dev/hd0

# 查看磁碟使用率
df

# 查看系統日誌
sloginfo

chkfsys 執行過程中出現 (y/n) 確認提示,手動輸入 y 後按 Enter 繼續。


QNX 指令參考

About

透過網路線直接連接 TOCP 設備(QNX 6.4.1),以 Telnet 執行 CF 卡檔案系統檢查(chkfsys)與壞軌掃描(dcheck),結果自動存檔。

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages