SMBIOS 정보 읽기

SMBIOS 정보 읽기

Windows에서 UEFI/BIOS를 저장하기 위해 컴퓨터에 설치된 ROM 칩의 용량을 어떻게 확인할 수 있습니까? 다른 응용 프로그램을 설치하지 않고 Windows 도구나 명령을 사용하는 방법을 선호합니다.

답변1

SMBIOS 정보 읽기

위키피디아에서:

~ 안에컴퓨팅,시스템 관리 BIOS(SMBIOS) 사양 정의데이터 구조(및 액세스 방법)에 저장된 정보를 읽는 데 사용할 수 있습니다.바이오스~의컴퓨터. 1999년경, 그것은 도메인의 일부가 되었습니다.분산관리 태스크포스(DMTF). [...] 거의 동시에마이크로소프트그것을 요구하기 시작했다OEMBIOS 공급업체는 Microsoft를 위해 인터페이스/데이터 세트를 지원합니다.인증.

원천:시스템 관리 BIOS

SMBIOS 정보는 다양한 데이터 테이블에 저장됩니다. 첫 번째 항목(유형 0)에는 공급업체, 버전, 출시 날짜와 같은 기본 세부 정보가 포함됩니다. BIOS가 포함된 물리적 장치의 크기는 다음 위치에 있는 단일 바이트에 해당합니다.공격하다 0x9그 테이블의.

실제 크기는 다음과 같이 계산할 수 있습니다.

64K * (value + 1)

값은 0크기가 64임을 의미합니다.KiB, 1128KiB 등을 의미합니다.

내가 아는 한, Windows는 ROM 크기와 같은 특정 SMBIOS 데이터를 검색할 수 있는 내장 유틸리티를 제공하지 않습니다. 하지만 여전히 스크립트를 직접 작성할 수 있습니다. 몇 가지 작업 예제는 아래를 참조하세요. 대안으로 타사 프로그램(예:dmidecode윈도우 포트.


배치 스크립트

@echo off
setlocal enabledelayedexpansion

set key=HKLM\SYSTEM\CurrentControlSet\services\mssmbios\Data

for /f "tokens=3" %%G in (
'reg query "%key%" /v "SMBiosData" ^| findstr /i /c:"REG_"'
) do (
set "size=%%~G"
set /a size=64 * 0x!size:~34,2! + 64
)

echo ROM Size: %size% KiB
PAUSE
exit /b

VB스크립트

Set tables = GetObject("winmgmts:\\.\root\wmi").ExecQuery _
    ("SELECT * FROM MSSmBios_RawSMBiosTables")

For Each obj In tables
    WScript.Echo "ROM Size: " & (64 * obj.SMBiosData(9) + 64) & " KiB"
Next

파워셸

$tables = Get-WmiObject -ComputerName . -Namespace root\wmi -Query "
    SELECT * FROM MSSmBios_RawSMBiosTables"

foreach ($obj in $tables)
{
    echo $("ROM Size: " + (64 * $obj.SMBiosData[9] + 64) + " KiB")
}

비고

WMI(Windows Management Instrumentation)는 Windows에서 SMBIOS 정보를 읽는 데 선호되는 방법입니다.

원천:장치\물리적 메모리 개체

[SMBIOS] 드라이버는 이 정보를 레지스트리의 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Mssmbios\Data. SMBIOS 정보는 이 위치의 레지스트리에 저장되지만 소비자는 계속해서 WMI 또는 GetSystemFirmwareTable()API를 사용하여 SMBIOS 데이터를 검색해야 합니다. 모든 후속 Windows 릴리스에서 이 정보가 이 레지스트리 하위 키에 저장된다는 보장은 없습니다.

원천:Windows의 SMBIOS 지원

추가 읽기

답변2

내 생각엔 당신이 할 수 없을 것 같아요.적어도 일반적인 방식은 아닙니다.

기본적으로 그렇기 때문이죠BIOS 코드의 크기는 유용한 정보를 제공하지 않습니다.사용자인 당신에게.IBM PC 호환 컴퓨터의 BIOS몇 가지 주요 책임이 있으며, 대부분은 다른 플랫폼에도 적용되지만 다르게 구현될 수 있습니다.

  • POST(Power-On Self Test)를 수행합니다.
  • 기본적인 하드웨어 감지 및 초기화를 수행합니다.
  • 기본 실행 환경을 설정하며 이에 대한 세부 사항은원래 IBM 5150 PC1981년부터(CPU는리얼 모드, 여러 CPU 레지스터가 알려진 값으로 초기화되고 여러 CPU 플래그가 알려진 값으로 설정됩니다.
  • 이는 (매우 원시적인) 하드웨어 액세스 및 감지 기능을 갖춘 운영 체제를 제공합니다. 이는 CPU의 기술적 제한으로 인해 최신 운영 체제에서는 사용되지 않습니다.장거리 모드, 예를 들어) 또는 성능 제약으로 인해(실제 또는V86 모드16비트 BIOS 코드를 실행하는 데 시간이 오래 걸리므로 보호 모드나 장기 모드를 유지하고 OS에서 직접 실행하는 것이 더 빠릅니다.)
  • 운영 체제의 첫 번째 단계 부트 로더를 RAM의 알려진 고정 위치에 로드하고 실행을 해당 위치로 전송합니다.
  • 기본 시스템 설정을 위한 사용자 인터페이스를 제공합니다. 엄밀히 말하면 이는 선택사항이며1980년대의 BIOS는 종종 그렇지 않았습니다.대신에 그러한 인터페이스를 제공하십시오.소프트웨어는 별도로 배송됨아니면 하드웨어에서딥 스위치그래픽 카드 유형, 설치된 RAM 용량 등 기본적인 시스템 설정까지 구성할 수 있습니다.

이 작업을 구현하는 데 얼마나 많은 코드가 사용되는지 사용자가 알 수 있는 이점은 없습니다. 초기(여기서는 Windows 3.0~3.1 이전, 즉 1980년대 초반~1990년대 초반의 DOS에 대해 이야기하고 있음)에는 BIOS가 기본 기능을 수행하는 데 자주 의존했기 때문에 BIOS 코드 크기는잠재적으로적어도 부분적으로는 성능에 해당하지만 최신 컴퓨터에서는 BIOS가 기본적으로 운영 체제의 역할로 격하되었습니다.부트스트래퍼및 낮은 수준의 하드웨어 구성 인터페이스. 또한 그 시대의 컴퓨터에서는 BIOS 코드를 교체할 수 있다면 마더보드에서 ROM 칩을 물리적으로 제거하고 다시 설치하는 방식으로만 가능했습니다.플래시 업그레이드 가능한 BIOS훨씬 나중에 발명되었습니다.

이를 저장 장치나 RAM의 크기를 찾는 것과 비교합니다. 차이점은그 크기를 알 수 있다는 것은 실제로 사용자에게 알 만한 가치가 있는 사실을 알려줍니다.장치별로 또는 총체적으로 사용 가능한 저장 공간의 양은 컴퓨터에 저장할 수 있는 데이터의 양을 결정하는 요소이며, RAM 크기는 얼마나 많은 데이터를 저장할 수 있는지를 결정하는 요소 중 하나입니다. 동시에 작업할 수 있는 데이터와 해당 데이터 작업 속도가 얼마나 빨라질지.

할 수 있다,원칙적으로 특정 마더보드 제조업체의 웹사이트로 이동하여 다운로드 가능한 BIOS 업데이트 이미지를 찾아보세요. 해당 이미지 파일의 크기는 매우 높은 확실성으로 BIOS 코드가 들어 있는 플래시 ROM 칩의 크기와 일치합니다.특정 마더보드에.오늘날 일반적인 크기는 몇 메가바이트 정도라고 생각합니다.원래 IBM 5150 PC BIOS는 8KB였습니다.XT(IBM 5160)부터 IBM에서는 32KB로 늘어났습니다. 나는 어딘가에서 초기 클린룸 IBM PC BIOS 클론이 적어도 한 번은 관련된 사람들이 훨씬 적은 코드로 수행할 수 있었기 때문에 뭔가 누락된 것이 있는지 궁금해했다는 일화를 읽었습니다.

물론 그것은 가능성을 완전히 무시합니다.시스템에 다른 펌웨어가 있습니다PC BIOS 외에. 그래픽 카드, 네트워크 카드, 디스크 컨트롤러 카드 및 기타 모든 종류의 주변 장치자체 BIOS 제공구현 관점에서 볼 때 웹 브라우저가 운영 체제와 완전히 분리되어 있는 것처럼 마더보드의 PC BIOS와 완전히 분리되어 있습니다.

답변3

리눅스에서는 다양한 방법으로 플래시 ROM의 용량을 찾을 수 있습니다. dmidecode 명령은 칩 용량을 포함하여 BIOS에 대한 많은 유용한 정보를 제공합니다. 드디어 1MB인 것을 발견했습니다. 나는 모든 사람에게 자신의 마더보드를 살펴보거나 Linux가 포함된 라이브 CD를 사용해 볼 것을 제안합니다.

관련 정보