如何为 Cygwin 构建 openSeaChest 硬盘工具?

如何为 Cygwin 构建 openSeaChest 硬盘工具?

作为详细内容在这里,该hdparm工具在 Cygwin 上已经有一段时间没有得到积极维护了。这导致目前没有工具可以执行固件级安全擦除和块擦除 ATA 命令,这些命令指示 PATA 或 SATA 驱动器的固件擦除驱动器。

这些固件级擦除被广泛认为是擦除现代驱动器最安全、最可靠的方法——在 SSD 上,仅有的这样做是安全的,因为磨损均衡等功能使正常的零填充变得不可靠。本质上,这意味着——至少在 Cygwin 上——目前决不安全擦除 SSD。

在这种情况下,我最近遇到了打开海箱一套实用程序,由 Seagate 开发,但是开源且设计用于任何 SATA、SAS 或 NVMe 驱动器。openSeaChest 似乎定位能够替代hdparm和之类的工具sg3_utils,并且可以用来运行 ATA 固件命令,如安全擦除和块擦除等等。

我如何构建该套件的最新版本以便可以在 Cygwin 中使用其二进制文件?

答案1

为 Cygwin 和 Windows 编译 openSeaChest 实用程序

  • 安装管理系统2并运行MSYS2 MinGW 64位终端

  • 运行pacman -Syu并安装所有更新,忽略有关 Cygwin.dll 不匹配的任何警告

  • 再次打开MSYS2 MinGW 64位终端并pacman -Syu再运行一次

  • 获取用于编译 minGW w64 程序的 minGW-w64 工具链:

    pacman -S --needed base-devel mingw-w64-x86_64-toolchain
    

    当系统询问要安装哪些软件包时,请将所有软件包输入为一个范围。例如,如果列出的最高软件包是 19,请输入1-19

  • C:\msys64\usr\bin和添加C:\msys64\mingw64\bin到您的 Windows PATH(您可能需要重新启动)

  • 获取git及其依赖项:

    pacman -S --needed git
    
  • 获取项目当前分支的列表:

    git ls-remote --heads https://github.com/Seagate/openSeaChest.git | sed 's?.*refs/heads/??'
    
  • 要克隆release/Release-20.11分支并cd进入它(替换为您选择的分支):

    git clone --recurse-submodules  --branch release/Release-20.11 --single-branch  https://github.com/Seagate/openSeaChest.git openSeaChest && cd openseaChest 
    
  • 获取并更新每个子模块:

    git submodule foreach 'git config remote.origin.fetch refs/heads/*:refs/remotes/origin/*'
    git submodule foreach 'git fetch'
    git submodule foreach --recursive 'git checkout release/Release-20.11'
    
  • 最后,进入Make/gccWin/目录并开始构建实用程序:

    cd Make/gccWin/ && make -f Makefile.gccWin
    

编译后的可执行文件将位于openseachest_exes目录中。您可以安全地删除所有以数字结尾的文件 - 这是过时的举措由原始开发人员创建的构建过程,并且计划很快被删除。

要使用剩余的二进制文件,请将它们移动到 Cygwin PATH 中的某个位置,例如/usr/local/bin。我还建议重命名他们从冗长的openSeaChest_像这样:

$ ls     

openSeaChest_Basics.exe
openSeaChest_Configure.exe
openSeaChest_Erase.exe
openSeaChest_Firmware.exe
openSeaChest_Format.exe
openSeaChest_GenericTests.exe
openSeaChest_Info.exe
openSeaChest_Logs.exe
openSeaChest_NVMe.exe
openSeaChest_PassthroughTest.exe
openSeaChest_PowerControl.exe
openSeaChest_SMART.exe
openSeaChest_ZBD.exe

$ rename "openSeaChest" "osc" *.exe

osc_Basics.exe
osc_Configure.exe
osc_Erase.exe
osc_Firmware.exe
osc_Format.exe
osc_GenericTests.exe
osc_Info.exe
osc_Logs.exe
osc_NVMe.exe
osc_PassthroughTest.exe
osc_PowerControl.exe
osc_SMART.exe
osc_ZBD.exe

相关内容