
하이퍼스레딩이 필요한 i7-4700EQ 기반 임베디드 서버 시스템이 있습니다. 드물지만 CMOS의 하이퍼스레딩 플래그가 비활성화되는 경우를 제외하면 모든 것이 좋습니다. 하드웨어를 아직 소유하고 있는 동안 간단히 재부팅하고 CMOS로 들어가서 설정을 수정하면 됩니다. (CMOS의 다른 모든 설정은 시간/날짜를 포함하여 잘 유지되므로 배터리가 아닌 것으로 생각됩니다.)
그러나 일단 배포되면 콘솔에 액세스할 수 없습니다. CMOS 설정이 손실되면 장비를 "수리"할 수 있지만 이는 매우 간단한 문제에 비해 많은 작업처럼 보입니다.
내가 이해하는 바는 Linux 커널이 커널 변수를 초기화하기 위해서만 BIOS를 읽는다는 것입니다. 그 맞습니까?
이것이 맞다면 Linux 커널에 BIOS가 보고한 내용을 무시하고 커널에서 하이퍼스레딩을 활성화하도록 지시할 수 있는 방법이 있습니까?
가능하다면 이를 수행하는 쉬운 방법(예: grub 명령줄 설정)이 있습니까? 가능하지만 어려운 경우 커널 소스를 수정하고 다시 컴파일하여 BIOS의 내용을 무시하고 하이퍼스레딩을 활성화할 수 있습니까?
작동하지 않을 것이라고 생각했지만 이미 /etc/default/grub에서 시도했습니다.
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash maxcpus=8 nr_cpus=8"
update-grub을 사용하고 재부팅했습니다. (maxcpus와 nr_cpus를 개별적으로 설정해 보기도 했습니다.)
실행 중인 시스템에서 하이퍼스레딩을 비활성화한 다음 다시 활성화하는 수많은 예를 발견했습니다. 그러나 커널이 인간이 의도적으로 하이퍼스레딩을 비활성화했다고 잘못 인식하는 경우 활성화하는 예는 아닙니다.
마지막으로, "깨진 하드웨어"라고 주장할 수 있지만 그것만으로는 "전쟁"에서 승리할 수 없습니다. BIOS에도 불구하고 하이퍼스레딩을 강제로 활성화할 수 없다면 이는 유효한 답변입니다. 답변에 증거/설명이 포함되어 있으면 유용할 것입니다.
답변1
이것은 일반적으로 전적으로 사실이 아닙니다.
예시 1:SMI펌웨어(BIOS라고도 함) 인터럽트 핸들러는 커널이 부팅된 후에도 커널보다 더 높은 수준의 권한으로 계속 실행됩니다. SMM과 맞서 싸우는 것을 환영합니다. Linux가 당신을 돕는 데 특별히 관심을 가질 것이라고 기대하지 마십시오.
예 2: "보안 부팅" 펌웨어는 자체 업그레이드가 가능할 수 있지만 OS가 임의의 이미지로 펌웨어를 덮어쓰도록 하는 것은 일반적으로 좋은 생각으로 간주되지 않습니다. 따라서 OS/부트로더를 부팅하기 전에 펌웨어는 펌웨어 칩에 쓰기를 방지하기 위해 하드웨어 플래그를 설정해야 합니다. 일단 설정되면 재부팅하지 않고는 플래그 설정을 해제할 수 없어야 합니다. 아니면 그런 것. 물론 일부 펌웨어가 제대로 수행되지 않았기 때문에 나타나는 현상입니다. 한 가지 예는 다음과 같습니다.여기.
SMT를 허용하는 것이 또 다른 예인지 아닌지는 모르겠습니다.
펌웨어와 싸우는 것은 바람직하지 않습니다. OS(Linux)가 귀하를 지원하지 않는 경우 펌웨어와 싸우는 것은 특히 바람직하지 않습니다. (예를 들어ACPI ATA 명령에 대한 펌웨어와 싸웁니다.. 또는 더 건설적으로, Linux는 이미 정확한 C 상태 정보를 알고 있는 Intel CPU에서 실행 중인 경우 ACPI BIOS의 C 상태 정보를 무시합니다.
(또한 일반 규칙이 적용되는 경우 목표가 여전히 따르지 않을 수 있습니다. 예를 들어 레이아웃을 알려주기 위해 BIOS가 필요할 수도 있습니다. 그리고 레이아웃이 정적이라고 가정하고 싶지 않은 이유가 있을 수 있습니다. 즉, 그 이유는 다음과 같습니다. BIOS에서 제공하는 ACPI 테이블을 무시하고 대신 원하는 모든 BIOS 설정으로 부팅할 때 캡처한 ACPI 테이블을 사용하도록 커널을 패치하는 것은 좋지 않습니다.
귀하의 목표가 가능하더라도 하드웨어 관련 세부 정보를 얻을 것이라고 생각합니다. 커널에서 SMT를 활성화하는 방법을 찾았다면 매우 인상적일 것입니다.~ 아니다하드웨어 특정. 이 질문에 대한 대답이 일치하는 마더보드 및 펌웨어 버전에서 테스트되었음을 지정하지 않았고 귀하가 그 내용을 지정하지 않은 경우 정식이라고 전적으로 신뢰하지 않을 것입니다.
그런 점에서 저는 Linux 개발자가 여기서 여러분을 지원하려고 노력할 것이라고 생각하지 않습니다. 이는 매우 일반적인 문제가 아닙니다.