Update any crucial ssd firmware from linux/grub
crucial-fw.pl: a Perl script that generates a GRUB menu to update the firmware of any Crucial SSD from Linux, without burning a boot CD.
May 26, 2019: Updated version here:
Github
Crucial is selling many good ssds, and frequently releases new firmware.
When you have to manage many version of these ssds, it is really time consuming to keep them up-to-date.
‘crucial-fw.pl’ is a little script to generate a single grub config for any crucial ssd firmware upgrade.
It’s a perl script.
LWP::UserAgent
File::Copy
Archive::Extract (debian like: apt-get install libarchive-extract-perl)
Archive::Zip (debian like: apt-get install libarchive-zip-perl)
‘crucial-fw.pl’ generates a file for grub (default is /etc/grub.d/45_crucial-fw).
Depending on the iso file, it will switch between two loading mode and grab the isolinux.cfg if needed.
This configuration is creating a submenu entry for grub containing one menu entry for each ssd reference specified in the configuration.
Your linux kernel must be able to mount a loopback iso file (loop and isofs modules). Any vanilla kernel is.
$ sudo ./crucial-fw.pl
Target: BX100 (BX100_UPDATE_MU02_BOOTABLE.zip, BX100_UPDATE_MU02_BOOTABLE.iso)
Uncompressing.. BX100_UPDATE_MU02_BOOTABLE.iso done
Moving to BX100.iso done
Mounting done
Grub -> mode initrd done
Unmounting done
Target: BX200 (BX200_UPDATE_MU02_BOOTABLE.zip, BX200_UPDATE_MU02_BOOTABLE.iso)
Uncompressing.. BX200_UPDATE_MU02_BOOTABLE.iso done
Moving to BX200.iso done
Mounting done
Grub -> mode initrd done
Unmounting done
Target: C300 (hp-crucial-5or6-to-7-05.zip, hp-crucial-5or6-to-7-05.iso)
Uncompressing.. hp-crucial-5or6-to-7-05.iso done
Moving to C300.iso done
Mounting done
Grub -> mode linux16 done
done
Unmounting done
Target: M4 (crucial-m4-070h-07-00.zip, crucial-m4-070h-07-00.iso)
Uncompressing.. crucial-m4-070h-07-00.iso done
Moving to M4.iso done
Mounting done
Grub -> mode linux16 done
done
Unmounting done
Target: M500 (crucial-m500.mu05-01-S0-tcg.zip, crucial-m500.mu05-01-S0-tcg.iso)
Uncompressing.. crucial-m500.mu05-01-S0-tcg.iso done
Moving to M500.iso done
Mounting done
Grub -> mode linux16 done
done
Unmounting done
Target: M550 (m550-sed-update-mu02-bootable.zip, m550-sed-update-mu02-bootable.iso)
Uncompressing.. M550_SED_UPDATE_MU02_BOOTABLE.iso done
Moving to M550.iso done
Mounting done
Grub -> mode initrd done
Unmounting done
Target: MX100 (MX100_MU02_BOOTABLE_ALL_CAP.zip, MX100_MU02_BOOTABLE_ALL_CAP.iso)
Uncompressing.. MX100_MU02_BOOTABLE_ALL_CAP.iso done
Moving to MX100.iso done
Mounting done
Grub -> mode initrd done
Unmounting done
Target: MX200 (MX200_MU03_BOOTABLE.zip, MX200_MU03_BOOTABLE.iso)
Uncompressing.. MX200_MU03_BOOTABLE.iso done
Moving to MX200.iso done
Mounting done
Grub -> mode initrd done
Unmounting done
Generated in: /etc/grub.d/45_crucial-fw
ISO in: /boot/crucial-fw
You need to run: 'update-grub2' and reboot to apply one FW now
The configuration file is named ‘crucial-fw.cfg’, content:
BX200 http://www.crucial.com/wcsstore/CrucialSAS/firmware/BX200/MU02/BX200_UPDATE_MU02_BOOTABLE.zip
BX100 http://www.crucial.com/wcsstore/CrucialSAS/firmware/BX100/MU02/BX100_UPDATE_MU02_BOOTABLE.zip
M550 http://www.crucial.com/wcsstore/CrucialSAS/firmware/M550/MU02/m550-sed-update-mu02-bootable.zip
M500 http://www.crucial.com/wcsstore/CrucialSAS/firmware/M500/MU05/crucial-m500.mu05-01-S0-tcg.zip
MX200 http://www.crucial.com/wcsstore/CrucialSAS/firmware/mx200/MU03/MX200_MU03_BOOTABLE.zip
MX100 http://www.crucial.com/wcsstore/CrucialSAS/firmware/MX100/MU02/MX100_MU02_BOOTABLE_ALL_CAP.zip
M4 http://www.crucial.com/wcsstore/CrucialSAS/firmware/m4/070H/crucial-m4-070h-07-00.zip
C300 http://www.crucial.com/wcsstore/CrucialSAS/firmware/C300/0007/hp-crucial-5or6-to-7-05.zip
You can comment anything you don’t need.
If Crucial is releasing a new firmware, you will have to refresh the url.
Crucial firmware are linked here: crucial.
The files we are interested in are “Manual Boot File for Windows and Mac”.
Since these isos are using isolinux … an unfair nonsense.
Why didn’t they add “and Linux and BSD and everything x86”? or simply put “for PC and Mac” (another possible nonsense since a Mac is a classic x86 hardware platform).