From 1df6380151bebebc1bfc793e790e15a0c4ac6502 Mon Sep 17 00:00:00 2001 From: Luflosi Date: Tue, 20 Jul 2021 15:05:08 +0200 Subject: [PATCH] lsirec: init at unstable-2019-03-03 This adds lsirec, a utility that can be used to modify and recover certain LSI HBA PCIe cards. My Dell R610 Server has an anti-feature that prevents the machine from booting, if any PCIe card not blessed by Dell for such usage is installed in the "storage slot" of the server. I used lsiutil to flash a different firmware to my "Dell PERC H310" to convert it into a "Dell 6Gbps SAS HBA Adapter". I was then able to use lsirec and the included sbrtool python script to modify my "Dell 6Gbps SAS HBA Adapter" card into pretending to be a "Dell PERC H200 Integrated" card, finally making it work in the storage slot and circumventing the stupid firmware check. --- pkgs/os-specific/linux/lsirec/default.nix | 36 +++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 38 insertions(+) create mode 100644 pkgs/os-specific/linux/lsirec/default.nix diff --git a/pkgs/os-specific/linux/lsirec/default.nix b/pkgs/os-specific/linux/lsirec/default.nix new file mode 100644 index 000000000000..cf2da7d16480 --- /dev/null +++ b/pkgs/os-specific/linux/lsirec/default.nix @@ -0,0 +1,36 @@ +{ lib +, stdenv +, fetchFromGitHub +, python3 +}: + +stdenv.mkDerivation rec { + pname = "lsirec"; + version = "unstable-2019-03-03"; + + src = fetchFromGitHub { + owner = "marcan"; + repo = "lsirec"; + rev = "2dfb6dc92649feb01a3ddcfd117d4a99098084f2"; + sha256 = "sha256-8v+KKjAJlJNpUT0poedRTQfPiDiwahrosXD35Bmh3jM="; + }; + + buildInputs = [ python3 ]; + + installPhase = '' + runHook preInstall + + install -Dm755 'lsirec' "$out/bin/lsirec" + install -Dm755 'sbrtool.py' "$out/bin/sbrtool" + + runHook postInstall + ''; + + meta = with lib; { + description = "LSI SAS2008/SAS2108 low-level recovery tool for Linux"; + homepage = "https://github.com/marcan/lsirec"; + platforms = platforms.linux; + license = licenses.bsd2; + maintainers = with maintainers; [ Luflosi ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c780aaeff3ca..84fe45477315 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -22605,6 +22605,8 @@ with pkgs; lockdep = callPackage ../os-specific/linux/lockdep { }; + lsirec = callPackage ../os-specific/linux/lsirec { }; + lsiutil = callPackage ../os-specific/linux/lsiutil { }; kaitai-struct-compiler = callPackage ../development/compilers/kaitai-struct-compiler { };