July 12, 20233 yr 以下内容是根据英文版的某位大佬的帖子,结合我自己的实践总结,供有需要的朋友参考。 由于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/current/slackers/intel-microcode-20230512-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命令查看升级前后的微代码作为对比。
July 14, 20233 yr Author On 7/12/2023 at 9:14 PM, strong0018 said: 以下内容是根据英文版的某位大佬的帖子,结合我自己的实践总结,供有需要的朋友参考。 由于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/current/slackers/intel-microcode-20230512-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命令查看升级前后的微代码作为对比。 为什么内容一直在审核中?
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.