|
由于N5105系列的CPU本身固有的一些缺陷,导致这个系列的处理器无论是PVE还是UNRAID下的虚拟机稳定性都不好,经常在有大量并发io或其他负载的时候导致虚拟机崩溃。之前搜索到网上有PVE相关的教程,利用Intel的early load update功能在系统内核层面加载微代码补丁来解决这个问题,但是一直没有看到UNRAID有相关的内容。对于N5105系列来说,通过查询得知6.12.2版本的系统自带的是0x24000023版本的补丁,但是为了修正上述问题,需要更新到0x24000024,因此需要通过以下的方法手动更新微代码补丁文件让系统加载。
首先使用任意工具连接主机,创建并切换到类似 /mnt/user/main/tmp的目录,然后运行以下命令,解压系统自带的微代码文件。
dd if=/boot/bzroot bs=512 count=$(cpio -ivt -H newc < /boot/bzroot 2>&1 > /dev/null | awk '{print $1}') of=/mnt/user/main/tmp/ucode.orig.cpio
dd if=/boot/bzroot bs=512 skip=$(cpio -ivt -H newc < /boot/bzroot 2>&1 > /dev/null | awk '{print $1}') of=/mnt/user/main/tmp/others
dd if=/mnt/user/main/tmp/ucode.orig.cpio bs=512 | cpio -i -d -H newc --no-absolute-filenames
从网上下载Intel最新的微代码补丁文件,https://slackware.pkgs.org/curre ... noarch-1cf.txz.html
解压缩下载的补丁文件,复制boot目录中的intel-ucode.cpio文件,上传到前述的/mnt/user目录
运行dd if=/mnt/user/intel-ucode.cpio bs=512 | cpio -i -d -H newc --no-absolute-filenames,在解压出的目录中得到GenuineIntel.bin
将上述得到的GenuineIntel.bin文件,复制到前面从系统文件中解压缩出的目录中,覆盖/mnt/user/main/tmp/kernel/x86/microcode/下的同名文件
使用以下命令重新将文件打包
find kernel/ | cpio -o -H newc >ucode.cpio
cat ucode.cpio others > bzroot
sha256sum bzroot >bzroot.sha256
备份并替换文件
mv /boot/bzroot /boot/bzroot.bak
mv /boot/bzroot.sha256 /boot/bzroot.sha256.bak
mv bzroot /boot/
mv bzroot.sha256 /boot/
reboot -f重启之后,微代码就应该已经更新了。可以使用dmesg | grep microcode命令查看升级前后的微代码作为对比。
|
|