
공식 Intel 마이크로코드 데이터 파일로, Linux 시스템에서 프로세서 펌웨어를 업데이트하여 보안 취약점을 완화하고 기능적 문제를 해결합니다.
Intel 프로세서 마이크로코드 업데이트(MCU) 패키지는 보안 권고 및 기능 문제(에라타 포함)에 대한 업데이트를 릴리스하기 위한 메커니즘을 제공합니다. 또한 MCU는 (SGX 기능을 지원하는 프로세서에서) SGX 엔클레이브를 시작하고, 복잡한 동작(예: 어시스트)을 구현하는 등의 역할을 담당합니다. MCU를 적용하는 기본 방법은 시스템 BIOS를 사용하는 것입니다. Intel 프로세서의 일부에 대해서는 운영 체제를 사용하여 런타임에 MCU를 업데이트할 수도 있습니다. 여기에 공유되는 Intel 마이크로코드 패키지에는 MCU의 OS 로딩을 지원하는 프로세서에 대한 업데이트가 포함되어 있습니다.
마이크로코드를 업데이트하면 CPU의 특정 잠재적 보안 취약점을 완화하고, 예를 들어 시스템 정지, 충돌, 예기치 않은 재부팅, 데이터 오류 등과 같이 예측할 수 없는 시스템 동작을 유발할 수 있는 특정 기능 문제를 해결하는 데 도움이 될 수 있습니다. Intel 프로세서에 MCU를 적용하는 방법에 대한 자세한 내용은 마이크로코드 업데이트 가이드를 참조하십시오.
이 패키지는 Linux 배포판이 OS 릴리스에 포함할 수 있도록 제공됩니다. Intel은 OS 공급업체 업데이트 메커니즘을 통해 최신 MCU를 확보할 것을 권장합니다. 좋은 시작점은 OS 및 소프트웨어 공급업체입니다. 고급 사용자는 OS 공급업체 메커니즘 외부에서 마이크로코드를 직접 업데이트할 수 있습니다. 그러나 이 방법은 복잡하며 잘못 수행할 경우 오류가 발생할 수 있습니다. 이러한 오류에는 시스템 정지, 부팅 불가, 성능 영향, 논리 프로세서에 서로 다른 업데이트가 로드되는 현상, 일부 업데이트가 적용되지 않는 현상 등이 포함되지만 이에 국한되지는 않습니다. 따라서 이 방법은 숙련된 사용자만 시도해야 합니다.
MCU는 BIOS에서 로드하는 것이 가장 좋습니다. 특정 MCU는 반드시 BIOS에서만 적용해야 합니다. 이러한 MCU는 OS 배포에 적합하지 않으므로 이 패키지에 포함되지 않습니다. OEM은 BIOS에 포함하기 위해 이 패키지에 포함된 것의 상위 집합인 마이크로코드 업데이트 패키지를 받을 수 있습니다.
OS 공급업체는 커널이 초기 로드(early loading)에 사용할 수 있는 MCU를 제공할 수 있습니다. 예를 들어 Linux는 커널 부팅 시퀀스의 매우 초기 단계에서 MCU를 적용할 수 있습니다. BIOS 업데이트를 사용할 수 없는 상황에서는 초기 로드가 프로세서 마이크로코드를 업데이트하는 다음으로 좋은 대안입니다. 마이크로코드 상태는 전원 리셋 시 재설정되므로 부팅 프로세스 중에 매번 MCU를 로드해야 합니다.
initrd 방법을 사용하여 MCU를 로드하는 것이 권장됩니다. 이 방법은 가장 이른 시점에 MCU를 로드하여 최대 범위를 보장하기 때문입니다. 다운타임을 허용할 수 없는 시스템은 late-load 방법을 사용하여 재부팅 없이 실행 중인 시스템을 업데이트할 수 있습니다.
프로세서 시그니처는 Intel 프로세서의 모델과 버전을 식별하는 번호입니다. CPUID 명령을 통해, lscpu 명령을 통해, 또는 /proc/cpuinfo의 내용에서 얻을 수 있습니다. 일반적으로 Family, Model, Stepping의 3개 필드로 표시됩니다.
예를 들어 프로세서가 CPUID 명령에서 "0x000906eb" 값을 반환하는 경우:
해당하는 Linux 형식의 파일 이름은 "06-9e-0b"이 됩니다. 여기서:
프로세서는 여러 플랫폼 유형으로 구현될 수 있습니다. Intel 프로세서는 MSR(17H)에 최대 8가지 유형의 플랫폼 유형을 지정하는 3비트 Platform ID 필드를 가지고 있습니다. 특정 프로세서 모델에 대한 MCU 파일은 여러 플랫폼을 지원할 수 있습니다. MCU가 지원하는 Platform ID는 8비트 마스크이며, 설정된 각 비트는 MCU가 지원하는 플랫폼 유형을 나타냅니다. 프로세서의 Platform ID는 Linux에서 msr-tools의 rdmsr을 사용하여 읽을 수 있습니다.
intel-ucode 디렉터리에는 family-model-stepping 형식으로 이름이 지정된 바이너리 MCU 파일이 포함되어 있습니다. 이 파일 형식은 대부분의 최신 Linux 배포판에서 지원됩니다. 일반적으로 /lib/firmware 디렉터리에 있으며 아래의 late-load 업데이트 지침에 따라 마이크로코드 리로드 인터페이스를 통해 업데이트할 수 있습니다.
초기 로드 initrd를 업데이트하려면 MCU 파일을 초기 로드용으로 패키징하는 방법에 대해 Linux 배포판에 문의하십시오. 일부 배포판은 update-initramfs 또는 dracut을 사용합니다. 아래의 late-load 절차를 시도하기 전에 OS 공급업체가 권장하는 방법을 사용하여 초기 로드용 MCU 파일이 업데이트되었는지 확인하십시오.
intel-ucode 패키지를 시스템에 업데이트하려면:
/sys/devices/system/cpu/microcode/reload가 존재하는지 확인합니다.$ git clone https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files.git 또는$ wget https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/archive/main.zipintel-ucode 디렉터리를 /lib/firmware로 복사하여 /lib/firmware/intel-ucode/의 파일을 덮어씁니다.$ echo 1 > /sys/devices/system/cpu/microcode/reload$ sudo update-initramfs -u$ sudo reboot$ dmesg | grep microcode 또는$ cat /proc/cpuinfo | grep microcode | sort | uniqOS 공급업체 방법을 사용하여 MCU를 적용하는 경우 위 단계는 업데이트 프로세스 중에 자동으로 수행되었을 수 있습니다.
intel-ucode-with-caveats 디렉터리에는 특별한 처리가 필요한 MCU가 포함되어 있습니다. BDX-ML MCU는 Linux 커널에 특별한 커밋이 필요하며, 그렇지 않으면 업데이트 시 예기치 않은 시스템 동작이 발생할 수 있으므로 이 디렉터리에 제공됩니다. OS 공급업체는 BDX-ML MCU를 late-load용으로 패키징하기 전에 linux-kernel-patches에 제공된 late loader 패치가 배포판에 포함되어 있는지 확인해야 합니다.
linux-kernel-patches 디렉터리는 MCU 적용과 관련된 다양한 문제를 해결하는 커널 패치로 구성되어 있습니다.
$ printf "%x\n" <number_to_convert_to_hex>$ iucode_tool -l intel-ucode | grep -wF sig (iucode_tool 패키지가 필요합니다)$ od -t x4 <Family-Model-Stepping>은 <Family-Model-Stepping>에 지정된 마이크로코드 바이너리 헤더의 처음 16바이트를 읽습니다. 세 번째 블록이 마이크로코드 버전입니다. 예:
$ od -t x4 06-55-040000000 00000001 *02000065* 09052019 00050654자세한 내용은 license 파일을 참조하십시오.
자세한 내용은 security.md 파일을 참조하십시오.
자세한 내용은 releasenote.md 파일을 참조하십시오.
Intel 기술의 기능과 이점은 시스템 구성에 따라 달라지며 지원되는 하드웨어, 소프트웨어 또는 서비스 활성화가 필요할 수 있습니다. 성능은 시스템 구성에 따라 다릅니다. 시스템 제조업체 또는 판매점에 문의하거나 www.intel.com에서 자세히 알아보십시오.
어떤 제품이나 구성 요소도 절대적으로 안전할 수는 없습니다.
여기에 제공된 모든 정보는 예고 없이 변경될 수 있습니다. 최신 Intel 제품 사양 및 로드맵을 얻으려면 Intel 담당자에게 문의하십시오.
설명된 제품 및 서비스에는 게시된 사양에서 벗어날 수 있는 에라타라고 하는 결함 또는 오류가 포함될 수 있습니다. 현재 특성화된 에라타는 요청 시 제공됩니다.
Intel은 이러한 자료를 명시적 또는 묵시적 보증 없이 있는 그대로 제공합니다.
© Intel Corporation. Intel, Intel 로고 및 기타 Intel 마크는 Intel Corporation 또는 그 자회사의 상표입니다.
*기타 이름과 브랜드는 타사의 자산으로 주장될 수 있습니다.
| 예약됨 | 확장 Family | 확장 Model | 예약됨 | 프로세서 유형 | Family 코드 | 모델 번호 | Stepping ID |
|---|
| 31:28 | 27:20 | 19:16 | 15:14 | 13:12 | 11:8 | 7:4 | 3:0 |
| xxxx | 00000000b | 1001b | xx | 00b | 0110b | 1110b | 1011b |