DMIDECODE(8) System Manager's Manual DMIDECODE(8)

dmidecode - رمزگشای جدول DMI

dmidecode [گزینه‌ها]

دستور dmidecode ابزاری برای تخلیه و نمایش محتویات جدول DMI (که برخی آن را SMBIOS می‌نامند) یک رایانه به قالبی خوانا برای انسان است. این جدول شامل توصیفی از مؤلفه‌های سخت‌افزاری سیستم و همچنین سایر اطلاعات مفید مانند شماره سریال‌ها و نگارش سفت‌افزار (firmware) است. به لطف این جدول، شما می‌توانید بدون نیاز به بررسی مستقیم سخت‌افزار واقعی، این اطلاعات را بازیابی کنید. اگرچه این امر از نظر سرعت گزارش‌گیری و ایمنی یک مزیت محسوب می‌شود، اما همزمان موجب می‌شود اطلاعات ارائه‌شده احتمالاً غیرقابل اعتماد باشند.

جدول DMI نه تنها وضعیت فعلی قطعات سیستم را شرح می‌دهد، بلکه می‌تواند قابلیت‌های ارتقا و تحولات احتمالی (مانند سریع‌ترین CPU پشتیبانی‌شده یا حداکثر حافظه رم قابل پشتیبانی) را نیز گزارش کند.

عبارت SMBIOS مخفف System Management BIOS بوده و DMI مخفف Desktop Management Interface است. هر دو استاندارد ارتباط نزدیکی با یکدیگر دارند و توسط DMTF (کارگروه مدیریت دسکتاپ) توسعه یافته‌اند.

هنگام اجرا، dmidecode تلاش خواهد کرد جدول DMI را پیدا کند. ابتدا سعی می‌کند جدول DMI را از sysfs بخواند و در صورت عدم موفقیت در دسترسی به sysfs، تلاش می‌کند مستقیماً از حافظه بخواند. اگر dmidecode موفق به یافتن یک جدول معتبر DMI شود، سپس این جدول را تجزیه کرده و فهرستی از رکوردها مانند نمونه زیر را نمایش می‌دهد:

Handle 0x0002, DMI type 2, 8 bytes.
Base Board Information
        Manufacturer: Intel
        Product Name: C440GX+
        Version: 727281-001
        Serial Number: INCY92700942

هر رکورد شامل موارد زیر است:

  • یک دستگیره (Handle). این یک شناسه یکتا است که به رکوردها اجازه می‌دهد به یکدیگر ارجاع دهند. به عنوان مثال، رکوردهای پردازنده معمولاً با استفاده از handleهایشان به رکوردهای حافظه نهان (cache) ارجاع می‌دهند.
  • یک نوع (Type). مشخصات SMBIOS انواع مختلفی از عناصری را که یک رایانه می‌تواند از آن‌ها تشکیل شود تعریف می‌کند. در این مثال، نوع ۲ است، به این معنی که رکورد حاوی «اطلاعات برد اصلی» (Base Board Information) است.
  • یک اندازه (Size). هر رکورد دارای یک سرآیند ۴ بایتی است (۲ بایت برای handle، ۱ بایت برای type، ۱ بایت برای size)، و مابقی فضا توسط داده‌های رکورد استفاده می‌شود. این مقدار رشته‌های متنی را شامل نمی‌شود (این رشته‌ها در انتهای رکورد قرار می‌گیرند)، بنابراین طول واقعی رکورد ممکن است (و اغلب اوقات) بیشتر از مقدار نمایش‌داده‌شده باشد.
  • مقادیر رمزگشایی‌شده (Decoded values). اطلاعات ارائه‌شده طبیعتاً به نوع رکورد بستگی دارد. در اینجا، ما درباره سازنده، مدل، نسخه و شماره سریال برد اطلاعات کسب می‌کنیم.

خواندن حافظه از پرونده دستگاه FILE (پیش‌فرض: /dev/mem)
خروجی مختصرتر (کم‌حرف). ورودی‌های ناشناخته، غیرفعال و مختص OEM نمایش داده نمی‌شوند. فراداده‌ها و ارجاعات handle پنهان می‌شوند.
--no-quirks
رمزگشایی همه‌چیز دقیقاً همان‌گونه که در جدول وجود دارد، بدون تلاش برای اصلاح اشتباهات رایج یا پنهان‌سازی فیلدهای نامربوط. این حالت در درجه اول برای توسعه‌دهندگان سفت‌افزار در نظر گرفته شده است.
تنها نمایش مقدار رشته DMI مشخص‌شده با KEYWORD. این شناسه باید یک کلیدواژه از فهرست زیر باشد: bios-vendor, bios-version, bios-release-date, bios-revision, firmware-revision, system-manufacturer, system-product-name, system-version, system-serial-number, system-uuid, system-sku-number, system-family, baseboard-manufacturer, baseboard-product-name, baseboard-version, baseboard-serial-number, baseboard-asset-tag, chassis-manufacturer, chassis-type, chassis-version, chassis-serial-number, chassis-asset-tag, processor-family, processor-manufacturer, processor-version, processor-frequency. در این زمینه، به دلایل تاریخی، "bios" سفت‌افزار پلتفرم را مشخص می‌کند (صرف‌نظر از اینکه از نظر فنی استاندارد BIOS را پیاده‌سازی کرده باشد یا خیر)، در حالی که "firmware" در صورت وجود، سفت‌افزار کنترل‌کننده تعبیه‌شده (embedded controller) را مشخص می‌کند. هر کلیدواژه با یک نوع DMI مشخص و یک آفست معین در این نوع ورودی مطابقت دارد. همه رشته‌ها ممکن است در تمام سیستم‌ها دارای مفهوم یا حتی تعریف‌شده نباشند. برخی از کلیدواژه‌ها ممکن است در برخی سیستم‌ها بیش از یک نتیجه برگردانند (مثلاً processor-version در یک سیستم چندپردازنده‌ای). اگر KEYWORD ارائه نشود یا نامعتبر باشد، فهرستی از تمام کلیدواژه‌های معتبر چاپ شده و dmidecode با خطا خارج می‌شود. این گزینه نمی‌تواند بیش از یک بار استفاده شود.

نکته: در لینوکس، بیشتر این رشته‌ها را می‌توان به صورت جایگزین مستقیماً از sysfs خواند، به طور معمول از فایل‌های موجود در زیرمسیر /sys/devices/virtual/dmi/id. بیشتر این فایل‌ها حتی توسط کاربران عادی نیز قابل خواندن هستند.

--list-strings
فهرست کردن کلیدواژه‌های متنی موجود که می‌توانند به گزینه --string داده شوند.
تنها نمایش ورودی‌های از نوع TYPE. این مقدار می‌تواند یک شماره نوع DMI، یا فهرستی از شماره‌های نوع جداشده با کاما، یا یک کلیدواژه از فهرست زیر باشد: bios, system, baseboard, chassis, processor, memory, cache, connector, slot. برای جزئیات بیشتر به بخش «انواع DMI (DMI TYPES)» در زیر مراجعه کنید. در این زمینه، به دلایل تاریخی، "bios" سفت‌افزار پلتفرم را مشخص می‌کند، صرف‌نظر از اینکه از نظر فنی استاندارد BIOS را پیاده‌سازی کرده باشد یا خیر. اگر از این گزینه بیش از یک بار استفاده شود، مجموعه ورودی‌های نمایش‌داده‌شده اجتماع تمام انواع داده‌شده خواهد بود. اگر TYPE ارائه نشود یا نامعتبر باشد، فهرستی از تمام کلیدواژه‌های معتبر چاپ شده و dmidecode با خطا خارج می‌شود.
--list-types
فهرست کردن کلیدواژه‌های نوع موجود که می‌توانند به گزینه --type داده شوند.
تنها نمایش ورودی‌ای که دستگیره (handle) آن با HANDLE مطابقت دارد. HANDLE یک عدد صحیح ۱۶ بیتی است.
عدم رمزگشایی ورودی‌ها و در عوض تخلیه (dump) محتویات آن‌ها به صورت هگزادسیمال. توجه داشته باشید که این خروجی همچنان متنی است و داده‌های دودویی خام نمایش داده نخواهند شد. رشته‌های پیوست‌شده به هر ورودی هم به صورت هگزادسیمال و هم به صورت ASCII نمایش داده می‌شوند. این گزینه عمدتاً برای اشکال‌زدایی مفید است.
--dump-bin FILE
عدم رمزگشایی ورودی‌ها و در عوض تخلیه داده‌های DMI در یک فایل به صورت دودویی (باینری). فایل تولیدشده برای استفاده بعدی همراه با --from-dump مناسب است. FILE نباید از قبل وجود داشته باشد.
--from-dump FILE
خواندن داده‌های DMI از یک فایل باینری که قبلاً با استفاده از --dump-bin تولید شده است.
--no-sysfs
عدم تلاش برای خواندن داده‌های DMI از فایل‌های sysfs. این گزینه عمدتاً برای اشکال‌زدایی مفید است.
--oem-string N
تنها نمایش مقدار رشته OEM شماره N. اولین رشته OEM دارای شماره 1 است. با مقدار ویژه count، به جای آن تعداد رشته‌های OEM بازگردانده می‌شود.
نمایش اطلاعات نحوه استفاده و خروج
نمایش نسخه و خروج

گزینه‌های --string, --type, --dump-bin و --oem-string فرمت خروجی را تعیین می‌کنند و مانعة‌الجمع هستند.

لطفاً توجه داشته باشید در صورتی که dmidecode روی سیستمی اجرا شود که سفت‌افزار آن از مشخصات جدیدتر SMBIOS برخوردار است که هنوز توسط این ابزار پشتیبانی نمی‌شود، پیامی مرتبط علاوه بر داده‌های درخواستی در بالاترین بخش خروجی چاپ خواهد شد؛ بنابراین اطلاع می‌دهد که داده‌های خروجی قابل اعتماد نیستند.

مشخصات SMBIOS انواع DMI زیر را تعریف می‌کند:

Type Information
0 Platform Firmware
1 System
2 Baseboard
3 Chassis
4 Processor
5 Memory Controller
6 Memory Module
7 Cache
8 Port Connector
9 System Slots
10 On Board Devices
11 OEM Strings
12 System Configuration Options
13 Firmware Language
14 Group Associations
15 System Event Log
16 Physical Memory Array
17 Memory Device
18 32-bit Memory Error
19 Memory Array Mapped Address
20 Memory Device Mapped Address
21 Built-in Pointing Device
22 Portable Battery
23 System Reset
24 Hardware Security
25 System Power Controls
26 Voltage Probe
27 Cooling Device
28 Temperature Probe
29 Electrical Current Probe
30 Out-of-band Remote Access
31 Boot Integrity Services
32 System Boot
33 64-bit Memory Error
34 Management Device
35 Management Device Component
36 Management Device Threshold Data
37 Memory Channel
38 IPMI Device
39 Power Supply
40 Additional Information
41 Onboard Devices Extended Information
42 Management Controller Host Interface

علاوه بر این، نوع ۱۲۶ برای ورودی‌های غیرفعال استفاده می‌شود و نوع ۱۲۷ نشانگر پایان جدول است. انواع ۱۲۸ تا ۲۵۵ برای داده‌های مختص OEM هستند. dmidecode این ورودی‌ها را به طور پیش‌فرض نمایش می‌دهد، اما تنها زمانی می‌تواند آن‌ها را رمزگشایی کند که تولیدکنندگان، مستندات یا کدی برای آن‌ها ارائه کرده باشند.

می‌توان به جای شماره نوع از کلیدواژه‌ها با --type استفاده کرد. هر کلیدواژه معادل فهرستی از شماره‌های نوع است:

Keyword Types
bios 0, 13
system 1, 12, 15, 23, 32
baseboard 2, 10, 41
chassis 3
processor 4
memory 5, 6, 16, 17
cache 7
connector 8
slot 9

کلیدواژه‌ها به بزرگی و کوچکی حروف حساس نیستند (case-insensitive). خطوط فرمان زیر همگی معادل یکدیگرند:

  • dmidecode --type 0 --type 13
  • dmidecode --type 0,13
  • dmidecode --type bios
  • dmidecode --type BIOS

فایل‌های تخلیه باینری تولیدشده توسط --dump-bin و خوانده‌شده با استفاده از --from-dump به صورت زیر قالب‌بندی شده‌اند:

  • نقطه ورود SMBIOS یا DMI در آفست 0x00 قرار دارد. این بخش طوری طراحی شده است که آدرس جدول در آفست 0x20 به صورت ثابت (hard-code) قرار گیرد.
  • جدول DMI در آفست 0x20 قرار دارد.

در نسخه‌های پیش از ۲٫۶ مشخصات SMBIOS، در مورد نحوه تفسیر فیلدهای UUID ابهاماتی وجود دارد. در آن مشخصات هیچ اشاره‌ای به جابه‌جایی بایت‌ها (byte swapping) نشده بود، و RFC 4122 نیز بیان می‌کند که به طور پیش‌فرض نباید هیچ جابه‌جایی بایتی اعمال شود. با این حال، مشخصات SMBIOS نسخه ۲٫۶ (و نسخه‌های بعدی) صراحتاً بیان می‌کند که ۳ فیلد اول UUID باید به صورت اعداد لیتل-اندین (little-endian با بایت‌های جابه‌جاشده) خوانده شوند. علاوه بر این، این استاندارد دلالت بر این دارد که همین موضوع برای نسخه‌های قدیمی‌تر مشخصات نیز صادق بوده است، حتی اگر ذکر نشده باشد. در عمل، بسیاری از تولیدکنندگان سخت‌افزار بایت‌های UUID را جابه‌جا نمی‌کردند. بنابراین، برای حفظ سازگاری، تصمیم گرفته شد که در صورت قدیمی‌تر بودن نسخه SMBIOS از ۲٫۶، فیلدهای UUID بر اساس RFC 4122 (بدون جابه‌جایی بایت) تفسیر شوند و در صورت ۲٫۶ یا بالاتر بودن نسخه SMBIOS، ۳ فیلد اول به صورت لیتل-اندین (با بایت‌های جابه‌جاشده) تفسیر گردند. هسته لینوکس نیز از همین منطق پیروی می‌کند.

/dev/mem
/sys/firmware/dmi/tables/smbios_entry_point (فقط لینوکس)
/sys/firmware/dmi/tables/DMI (فقط لینوکس)

در اغلب مواقع، اطلاعات موجود در جداول DMI نادرست، ناقص یا به کلی اشتباه هستند.

Alan Cox, Jean Delvare

biosdecode(8), mem(4), ownership(8), vpddecode(8)

June 2025 dmidecode