BIOS Setup Variable là gì?

Quicknote BIOS Setup Variable là gì?

3 phút đọc
Đọc bằng Tiếng Việt English 日本語
Boot / NVRAM / Device Path Terms cover

BIOS Setup Variable là dữ liệu phía sau các lựa chọn trong BIOS Setup menu. Người dùng nhìn thấy checkbox, dropdown hoặc menu boot; firmware thì nhìn thấy variable, varstore, offset, default value và policy áp dụng trong PEI/DXE/BDS.

Ví dụ UI có dòng “USB Boot: Enabled”. Ở sau nó có thể là một field trong setup variable, được HII setup browser ghi xuống NVRAM. BDS hoặc driver policy sẽ đọc field đó để quyết định có enumerate USB boot option hay không.

01 UI

Người dùng đổi setup

Ví dụ đổi SATA mode, bật TPM, tắt USB boot.

02 HII

Setup browser map field

Question trong form map tới varstore/offset.

03 NVRAM

Giá trị được lưu

Variable hoặc buffer setup được ghi xuống variable store.

04 POLICY

Driver đọc policy

PEI/DXE/BDS đọc lại để cấu hình silicon, boot, security.

Một setting trong BIOS Setup không đứng một mình; nó đi qua HII, variable store và policy firmware.

Ví dụ layout setup variable

Một platform có thể gom nhiều setting vào một struct:

typedef struct {
  UINT8  UsbBootEnable;     // 0 = Disabled, 1 = Enabled
  UINT8  SataMode;          // 0 = AHCI, 1 = RAID
  UINT8  SecureBootUiState; // UI state, không nhất thiết là SecureBoot variable chuẩn
  UINT8  TpmDevice;         // 0 = Hidden/Disabled, 1 = Enabled
  UINT16 BootTimeout;
} PLATFORM_SETUP_DATA;

Khi UI thay đổi SataMode, firmware không chỉ lưu số 1. Nó còn có thể dùng giá trị này rất sớm ở PEI để cấu hình storage controller. Vì vậy một setup variable sai có thể làm máy không thấy ổ boot, dù boot loader hoàn toàn không hỏng.

Đọc setup variable

PLATFORM_SETUP_DATA Setup;
UINTN Size = sizeof(Setup);
UINT32 Attr;

Status = gRT->GetVariable(
  L"Setup",
  &gPlatformSetupVariableGuid,
  &Attr,
  &Size,
  &Setup
);

if (!EFI_ERROR(Status) && Setup.UsbBootEnable == 0) {
  // BDS có thể bỏ qua USB boot policy.
}

Tên variable và GUID là platform-specific. Vì vậy khi debug, đừng đoán mọi máy đều có cùng Setup variable.

Mục Giá trị Ghi chú
Setup UI Checkbox/dropdown Thứ người dùng nhìn thấy.
HII question QuestionId / VarStoreInfo Cầu nối giữa UI và dữ liệu.
Setup variable Struct/buffer trong NVRAM Nơi lưu giá trị.
Policy driver PEI/DXE/BDS consumer Nơi biến setup thành hành vi thật.

Khi debug BIOS Setup

Nếu khách hàng nói “tôi đã disable USB boot nhưng máy vẫn boot USB”, có ba lớp cần kiểm tra:

  1. UI có thật sự ghi variable không?
  2. Variable sau reboot có giữ giá trị không?
  3. BDS có đọc đúng field để filter USB boot option không?

Checklist setup variable

Bài liên quan

Nguồn tham khảo public

Thấy nội dung này hữu ích?

Lưu lại hoặc chia sẻ cho người cũng đang học firmware, BIOS/UEFI và embedded systems.

Biến note thành bài viết hoàn chỉnh

Notes là nơi ghi nhanh khái niệm.