Difference between revisions of "Hdt (Hardware Detection Tool)"

From Syslinux Wiki
Jump to: navigation, search
(Roadmap: added "Release" in all sub-sub headings)
(Wiki formatting. Updates, corrections, dead links.)
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
'''[http://www.hdt-project.org THE PROJECT HAS ITS OWN WEBSITE NOW!]'''
+
<!-- Keywords hdt Hdt HDT Hardware Detection Tool -->
  
 +
<!-- '''[http://www.hdt-project.org THE PROJECT HAS ITS OWN WEBSITE NOW!]''' -->
 +
The project used to have its own website,
 +
[https://web.archive.org/web/20160110082130/http://hdt-project.org/ now archived].
 +
 +
'''This document might be partially outdated.'''
 +
 +
<!-- Insert Horizontal Line: -->
 
----
 
----
  
 
[[Category:Release Documentation]]
 
[[Category:Release Documentation]]
 
[[Category:Comboot]]
 
[[Category:Comboot]]
==What is HDT ?==
+
[[Category:Modules]]
HDT (for "'''H'''ardware '''D'''etection '''T'''ool") is a Syslinux com32 module designed to display low-level information for any x86 compatible system.
+
== What is HDT ? ==
 +
HDT (for "'''H'''ardware '''D'''etection '''T'''ool") is a Syslinux com32  
 +
module designed to display low-level information for any x86 compatible system.
  
 
HDT can inspect multiple subsystems:
 
HDT can inspect multiple subsystems:
Line 28: Line 37:
  
 
== Release ==
 
== Release ==
Current stable release is 0.3.3
+
Current stable release is <s>0.3.3</s> 0.5.2.
  
Current development version is 0.3.4
+
Current development version is <s>0.3.4</s> in the main Syslinux git repository.
  
 
== Download ==
 
== Download ==
[http://konilope.linuxeries.org/hdt/hdt_0_3_3.c32 HDT 0.3.3] for Syslinux 3.75
+
<!-- The following links used to be posted in the wiki page. -->
 
+
<!-- The following links are dead, -->
[http://konilope.linuxeries.org/hdt/hdt_0_3_2.c32 HDT 0.3.2] for Syslinux 3.75
+
<!-- and the specified versions are no longer relevant / up-to-date. -->
 +
<!-- -->
 +
<!-- [http://konilope.linuxeries.org/hdt/hdt_0_3_3.c32 HDT 0.3.3] for Syslinux 3.75 -->
 +
<!-- -->
 +
<!-- [http://konilope.linuxeries.org/hdt/hdt_0_3_2.c32 HDT 0.3.2] for Syslinux 3.75 -->
 +
<!-- -->
 +
<!-- [http://konilope.linuxeries.org/hdt/hdt_0_3_1.c32 HDT 0.3.1] for Syslinux 3.75 -->
 +
<!-- -->
 +
<!-- Additionally, for potential historic or tracking relevance: -->
 +
<!-- https://web.archive.org/web/20100331203655/http://konilope.linuxeries.org:80/hdt/ -->
 +
<!-- -->
  
[http://konilope.linuxeries.org/hdt/hdt_0_3_1.c32 HDT 0.3.1] for Syslinux 3.75
+
HDT is included in the official Syslinux distribution [[Download|archives]].
  
 
== History ==
 
== History ==
Syslinux 3.74 is featuring HDT 0.2.7
+
Syslinux 3.74 features HDT 0.2.7.
  
Syslinux 3.75 is featuring HDT 0.2.7 with a [http://git.kernel.org/?p=boot/syslinux/syslinux.git;a=commit;h=c0e760fdb7ce04a67f0c7f47535eb710bc5a6e7f fix] to prevent hard lock during pci detection
+
Syslinux 3.75 features HDT 0.2.7 with a  
 +
[http://git.kernel.org/?p=boot/syslinux/syslinux.git;a=commit;h=c0e760fdb7ce04a67f0c7f47535eb710bc5a6e7f fix]  
 +
to prevent hard lock during pci detection.
  
 
== Projects known to use HDT ==
 
== Projects known to use HDT ==
  
* [http://www.mandriva.com/fr Mandriva Linux] since 2009.1
+
* Mandriva Linux since 2009.1 (no longer active since 2015)
* [http://www.ultimatebootcd.com/ Ultimate boot CD] since version 5.0
+
* [http://www.ultimatebootcd.com/ Ultimate Boot CD] since version 5.0
* [http://partedmagic.com/programs.html Parted Magic] since 0.4.0
+
* Parted Magic since 0.4.0
* [http://rip.7bf.de/current/ Rescue Is Possible] since 8.0
+
* Recovery Is Possible since 8.0 (no longer active since 2012)
* Any other ? Please tell us.
+
* Many others
  
==How can I try HDT ?==
+
== How can I try HDT ? ==
 
Since Syslinux 3.74, HDT is available in the Syslinux archive under the "com32/hdt" directory.
 
Since Syslinux 3.74, HDT is available in the Syslinux archive under the "com32/hdt" directory.
  
HDT is a com32 module that requires syslinux 3.74 or later. As every com32 module it can be booted as a kernel like :
+
HDT is a com32 module that requires syslinux 3.74 or later.  
 +
As every com32 module, it can be booted as a kernel like:
  
  label hdt
+
LABEL hdt
    KERNEL hdt.c32
+
  KERNEL hdt.c32
  
 
=== Testing using kvm/qemu ===
 
=== Testing using kvm/qemu ===
  
Since qemu 0.9.0, it is possible to boot a virtual machine while using a local dir as a local pxe server. This is pretty usefull because this allow a local PXE booting without the need of a complete infrastructure (dhcp/tftp).
+
Since qemu 0.9.0, it is possible to boot a virtual machine while using a local directory as a local pxe server.  
 +
This allows a local PXE booting without needing a complete infrastructure (dhcp/tftp).
  
First, install kvm/qemu, then setup you environment by creating a local pxe directory like "~/pxe".
+
* Install kvm/qemu.
In this pxe dir, create another 'pxelinux.cfg' directory where you'll put the following configuration file named "default" :
+
* Setup you environment by creating a local pxe directory like "<tt>~/pxe</tt>".
 +
* In this pxe dir, create another directory, named "<tt>pxelinux.cfg</tt>".
 +
* Within the "<tt>pxelinux.cfg</tt>" directory, create the following configuration file named "<tt>default</tt>":
 +
DEFAULT hdt
 +
PROMPT 1
 +
TIMEOUT 5
 +
LABEL hdt
 +
  KERNEL hdt.c32
 +
* Copy the "<tt>pxelinux.0</tt>" (and "<tt>ldlinux.c32</tt>") file(s) from <!--
 +
--> the Syslinux archive to the "<tt>~/pxe</tt>" dir.
 +
* Copy the hdt.c32 file (and the relevant [[library modules]]) in the same directory.
 +
* Create a dummy disk file with
 +
dd if=/dev/zero of=~/pxe/dummy.img bs=1M count=5
 +
* Start qemu/kvm to use that local configuration:
 +
kvm -hda ~/pxe/dummy.img -net nic -net user -boot n -tftp ~/pxe -bootp /pxelinux.0
  
  default hdt
 
  prompt 1
 
  timeout 5
 
  label hdt
 
    KERNEL hdt.c32
 
  
The copy the pxelinux.0 file from the syslinux archive to the ~/pxe dir.
+
== Menu mode ==
At last, copy the hdt.c32 file in the same directory.
+
The menu mode will try to do some best effort to manage
 +
the little space in which we display so much information.
  
Create a dummy disk file with
+
Screenshots taken on HDT 0.2.6.
  dd if=/dev/zero of=dummy.img bs=1M count=5
+
  
It's now time to start qemu/kvm to use that local configuration.
+
''Main menu:''
  
  kvm -hda ~/pxe/dummy.img -net nic -net user -boot n -tftp ~/pxe -bootp /pxelinux.0
+
[[Image:hdt-menu.png]]
  
That's it !
+
''Cpu mode:''
  
==How do I configure HDT ?==
+
[[Image:hdt-menu-cpu.png]]
=== pci stuff ===
+
HDT requires very few configuration. To improve the PCI reporting, please copy the pci.ids & modules.pcimap in a directory.
+
By default, hdt will search this files in the root dir of the bootable device. If you want to override the directory you can use the following parameters.
+
  
* modules=your_path/modules.pcimap
+
=== Starting memtest ===
* pciids=your_path/pci.ids
+
Under the memory menu, it is possible to start memtest.
* memtest=label_name
+
To make it successful, you have to:
  
This can be configured like this :
+
* Download memtest
  label hdt
+
* gunzip it
    KERNEL hdt.c32
+
* Setup in your current Syslinux configuration file an entry like
    APPEND modules=images/modules.pcimap pciids=images/pci.ids memtest=mymemtest
+
  
The pci.ids can usally be found in the /usr/share/ directory of a Linux System or just [http://pciids.sourceforge.net/v2.2/pci.ids here].
+
LABEL memtest
 +
  LINUX memtest86+-2.11.bin
  
The modules.pcimap is available in the /lib/modules/`uname -r`/ directory of your Linux system. If you don't have have one, you can try with [http://konilope.linuxeries.org/tmp/modules.pcimap this one] taken on Mandriva Linux 2009 for a 2.6.27.7-server-1mnb Linux Kernel.
+
'''Make sure to use the keyword "<u>LINUX</u>", not "KERNEL"!'''
  
'''Warning !''' When hdt is used with isolinux, remember the file must be in a 8.3 format. So if your file is named modules.pcimap, the parameter given to hdt __must__ be : "modules=images/modules.pci"
+
Then, when selecting the memory test from the memory submenu, the "<tt>memtest</tt>" label will be launched.
  
If this files aren't available, HDT will generate some information messages to warn the user.
+
The label name could be changed using the "<code>memtest=<label></code>" boot option of HDT.
 +
The default value is set to "<tt>memtest</tt>".
  
The memtest=<label> option allow users to override the default entry name in the current config file of syslinux. Default value is set to "memtest".
 
  
=== menu mode ===
+
== How do I configure HDT ? ==
 +
HDT can be configured by APPENDing parameters,
 +
as described in the following sections.
  
HDT support two modes : a menu system and a cli (command line interface). The menu system is enabled by default.
+
=== pci stuff ===
To enable the cli mode, just append "nomenu" at startup time like in :
+
HDT requires very little configuration.  
 +
To improve the PCI reporting, copy "<tt>pci.ids</tt>" and "<tt>modules.pcimap</tt>" in a directory.
 +
By default, hdt will search for these files in the root dir of the boot device.
 +
If you want to override the directory you can use the following parameters:
  
  label hdt
+
* modules=your_path/modules.pcimap
    KERNEL hdt.c32
+
* pciids=your_path/pci.ids
    APPEND nomenu
+
* memtest=label_name
  
==Menu mode==
+
This can be configured as:
Nothing much to say as it will try to do some best effort to manage the few space we have to display so much information.
+
LABEL hdt
 +
  KERNEL hdt.c32
 +
  APPEND modules=images/modules.pcimap pciids=images/pci.ids memtest=mymemtest
  
As anyone expect, here come some screenshots taken on the 0.2.6 version.
+
The "<tt>pci.ids</tt>" file can usually be found in the "<tt>/usr/share/</tt>" directory of
 +
a Linux System or just [http://pciids.sourceforge.net/v2.2/pci.ids download] it from sf.net.
  
''A screenshot featuring the main menu:''
+
The "<tt>modules.pcimap</tt>" file is usually available in the "<code>/lib/modules/`uname -r`/</code>" directory of your Linux system.
 +
<!-- (The following link is no longer available / relevant). -->
 +
<!-- If you don't have one, you can try with [http://konilope.linuxeries.org/tmp/modules.pcimap this one] -->
 +
<!-- taken from Mandriva Linux 2009 for a 2.6.27.7-server-1mnb Linux Kernel. -->
  
[[Image:hdt-menu.png]]
+
'''Warning!''' When HDT is used with ISOLINUX, the file name must be in an "8.3" format.
 +
So if your file is named "<tt>modules.pcimap</tt>",
 +
then the parameter given to HDT must be: "<code>modules=path/to/modules.pci</code>".
  
''A screenshot featuring the cpu mode :''
+
If these files are not available, HDT will generate some information messages to warn the user.
  
[[Image:hdt-menu-cpu.png]]
+
The <code>memtest=<label></code> option allows users to override the default entry name in the current config file of Syslinux.
 
+
The default value is set to "<tt>memtest</tt>".
=== Starting memtest ===
+
Under the memory menu, it is possible to start memtest. To make it successful, you have to :
+
 
+
* Download memtest here -> [http://www.memtest.org/download/2.11/memtest86+-2.11.bin.gz]
+
* gunzip it
+
* Setup in your current syslinux configuration file an entry like
+
  
  Label memtest
+
=== CLI mode ===
    linux memtest86+-2.11.bin
+
  
'''Make sure to use the keyword "linux", not "kernel"!'''
+
HDT supports two modes: a menu system and a CLI (command line interface).
 +
The menu system is enabled by default.
 +
To enable the CLI mode, just append "<tt>nomenu</tt>" at startup time like in:
  
Then, when you'll select the memory test from the memory submenu, memtest will be launched.
+
LABEL hdt
 +
  KERNEL hdt.c32
 +
  APPEND nomenu
  
The label name could be changed using the "memtest=<label>" boot option. Default value is set to "memtest".
 
  
==Syntax of the CLI==
+
== Syntax of the CLI ==
This syntax may change in the future as its currently under development.
+
This syntax may change in the future.
  
The main menu display a "hdt> " prompt to indicate the user that he reach the top menu.
+
The main menu displays a "<tt>hdt>&nbsp;</tt>" prompt indicating the top menu.
  
Today, other submenu exists : pci, dmi, cpu, kernel, pxe, syslinux. This topics will be discussed later.
+
Other submenus exist: pci, dmi, cpu, kernel, pxe, syslinux.  
 +
These topics will be discussed later.
  
The ''help'' command shows the available commands :
+
The ''<tt>help</tt>'' command shows the available commands:
  
 
* clear  : obviously, clear the screen
 
* clear  : obviously, clear the screen
Line 167: Line 206:
 
* exit  : to return to the top menu
 
* exit  : to return to the top menu
  
Note its possible to use the show command for having a summary of given mode, like in :
+
Note that it is possible to use "<tt>show</tt>"
 +
in order to obtain a summary of the given mode, like in:
  
  hdt> show pci
+
  hdt> show pci
  PCI: 17 devices detected                   
+
  PCI: 17 devices detected                   
  PCI: Resolving names
+
  PCI: Resolving names
  PCI: Resolving class names
+
  PCI: Resolving class names
  PCI Resolving module names                 
+
  PCI Resolving module names                 
  PCI                                         
+
  PCI                                         
    NB Devices  : 17         
+
  NB Devices  : 17         
  hdt>  
+
  hdt>  
 
    
 
    
or  
+
or:
  
 
   hdt> show dmi     
 
   hdt> show dmi     
 
   DMI Table version 2.3 found
 
   DMI Table version 2.3 found
 
   Available DMI modules: base_board bios chassis memory bank<bank_number> cpu system           
 
   Available DMI modules: base_board bios chassis memory bank<bank_number> cpu system           
   hdt>
+
   hdt>  
  
The ''show dmi'' command will display the version of the DMI table and the available modules.
+
The "<tt>show dmi</tt>" command will display the version of the DMI table and the available modules.
  
or
+
Other examples:
  
 
   hdt> show cpu                                               
 
   hdt> show cpu                                               
Line 194: Line 234:
 
   Product      :  Intel(R) Pentium(R) D CPU 3.00GHz                               
 
   Product      :  Intel(R) Pentium(R) D CPU 3.00GHz                               
 
   Features    :  3000 MhZ : x86_64 64bits SMP
 
   Features    :  3000 MhZ : x86_64 64bits SMP
   hdt>
+
   hdt>  
 +
 
  
or
 
 
 
   hdt> show pxe                               
 
   hdt> show pxe                               
 
   PXE                         
 
   PXE                         
Line 206: Line 245:
 
   hdt>  
 
   hdt>  
  
or
 
  
 
   hdt> show syslinux  
 
   hdt> show syslinux  
Line 215: Line 253:
 
   Max API    : 35     
 
   Max API    : 35     
 
   Copyright  : Copyright (C) 1994-2009 H. Peter Anvin                 
 
   Copyright  : Copyright (C) 1994-2009 H. Peter Anvin                 
   hdt>
+
   hdt>  
  
or
 
  
 
   hdt> show kernel                                   
 
   hdt> show kernel                                   
 
   Kernel modules                                                                   
 
   Kernel modules                                                                   
 
   (intel-rng | iTCO_wdt) # (piix | ata_piix) # i2c-i801 # tg3 # sisfb #
 
   (intel-rng | iTCO_wdt) # (piix | ata_piix) # i2c-i801 # tg3 # sisfb #
   hdt>
+
   hdt>  
  
or
 
  
 
   hdt> show vesa
 
   hdt> show vesa
Line 235: Line 271:
 
   Memory (KB)  : 16384                       
 
   Memory (KB)  : 16384                       
 
   Modes        : 32
 
   Modes        : 32
   hdt>
+
   hdt>  
  
  
 
=== Summary ===
 
=== Summary ===
The "show summary" command reports a global summary of the current host :
+
The "<tt>show summary</tt>" command reports a global summary of the current host:
  
 
   hdt>show summary
 
   hdt>show summary
Line 265: Line 301:
 
   Kernel modules
 
   Kernel modules
 
   (intel-rng | iTCO_wdt) # (piix | ata_piix) # i2c-i801 # tg3 # sisfb #
 
   (intel-rng | iTCO_wdt) # (piix | ata_piix) # i2c-i801 # tg3 # sisfb #
   hdt>
+
   hdt>  
  
  
 
=== PCI mode ===
 
=== PCI mode ===
From the main menu, type "pci". The prompt changes to "pci> ".
+
From the main menu, type "pci". The prompt changes to "<tt>pci>&nbsp;</tt>".
Today the available commands are :
+
The available commands are:
  
==== show list====
+
==== show list ====
  
The ''show list'' commands reports the available pci devices like in :
+
The "<tt>show list</tt>" command reports the available pci devices like in:
  pci> show list
+
  pci> show list
  21 PCI devices detected
+
  21 PCI devices detected
  01: Intel Corporation E7230/3000/3010 Memory Controller Hub
+
  01: Intel Corporation E7230/3000/3010 Memory Controller Hub
      # Host bridge              # Kmod: unknown
+
      # Host bridge              # Kmod: unknown
 
    
 
    
  02: Intel Corporation E7230/3000/3010 PCI Express Root Port
+
  02: Intel Corporation E7230/3000/3010 PCI Express Root Port
      # PCI bridge                # Kmod: unknown
+
      # PCI bridge                # Kmod: unknown
  [....]
+
  [....]
  12: Intel Corporation 82801G (ICH7 Family) IDE Controller
+
  12: Intel Corporation 82801G (ICH7 Family) IDE Controller
      # IDE interface            # Kmod: piix | ata_piix
+
      # IDE interface            # Kmod: piix | ata_piix
  [....]  
+
  [....]  
  
  
The first numerical field (01, 02 or 12 in this example) represents the PCI device number followed by the vendor name & product name.
+
The first numerical field (01, 02 or 12 in this example) represents  
 +
the PCI device number followed by the vendor and product names.
  
The second line display the device class and the associated kernel module. If no module match this pci device, the kernel module (Kmod) is reported as ''unknown''. If the module match one or more kernel module, the ''Kmod'' field show their name ''piix'' or ''ata_piix'' in this example.
+
The second line displays the device class and the associated kernel module.  
 +
If no module matches this pci device, the kernel module (Kmod) is reported as ''unknown''.  
 +
If the device matches one or more kernel modules,  
 +
the ''Kmod'' field shows their name, ''piix'' or ''ata_piix'' in this example.
  
====show device <number>====
+
==== show device <number> ====
The ''show device <number>'' command reports more detailed information on the selected pci device. Let's see what report the PCI device number 12 reported in the previous example.
+
The "<tt>show device <number></tt>" command reports more detailed information on the selected pci device.  
 +
Let's see a report for the PCI device number 12 from the previous example:
  
  pci> show device 12
+
  pci> show device 12
  PCI Device 12
+
  PCI Device 12
  Vendor Name  : Intel Corporation
+
  Vendor Name  : Intel Corporation
  Product Name  : 82801G (ICH7 Family) IDE Controller
+
  Product Name  : 82801G (ICH7 Family) IDE Controller
  Class Name    : IDE interface
+
  Class Name    : IDE interface
  Kernel module : piix | ata_piix
+
  Kernel module : piix | ata_piix
  Vendor ID    : 8086
+
  Vendor ID    : 8086
  Product ID    : 27df
+
  Product ID    : 27df
  SubVendor ID  : 1028
+
  SubVendor ID  : 1028
  SubProduct ID : 01b6
+
  SubProduct ID : 01b6
  Class ID      : 01.01.8a
+
  Class ID      : 01.01.8a
  Revision      : 01
+
  Revision      : 01
  PCI Bus      : 00
+
  PCI Bus      : 00
  PCI Slot      : 31
+
  PCI Slot      : 31
  PCI Func      : 01
+
  PCI Func      : 01
  pci>
+
  pci>  
 
   
 
   
The output is pretty obvious, no need to say more about it except about the pxe stuff.
+
The output is pretty obvious, no need to say more about it except about the pxe stuff.  
If the current device have a running pxe rom, this pxe information the following information will be displayed :
+
If the current device has a running pxe rom, its pxe information will be displayed:
  
  Mac Address  : 00:13:72:3b:ce:85
+
  Mac Address  : 00:13:72:3b:ce:85
  PXE          : Current boot device
+
  PXE          : Current boot device
  
If the device have a valid IRQ, an "IRQ: <irq>" line is displayed.
+
If the device has a valid IRQ, an "<tt>IRQ:&nbsp;<irq></tt>" line is displayed.
  
====show irq====
+
==== show irq ====
HDT can show IRQs set to some PCI devices. Most of PCI devices doesn't really have a legacy IRQ.
+
HDT can show IRQs set to some PCI devices.  
 +
Most PCI devices do not really have a legacy IRQ.  
 
Only valid IRQs (>0 & <255) are shown.
 
Only valid IRQs (>0 & <255) are shown.
  
Line 331: Line 373:
 
   05  : Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI Express
 
   05  : Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI Express
 
   03  : Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI Express
 
   03  : Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI Express
   pci>
+
   pci>  
  
 
=== DMI mode ===
 
=== DMI mode ===
Inside the dmi mode, you can use the ''show list'' to display the available modules.
+
Inside the dmi mode, "<tt>show list</tt>" displays the available modules.
  
  dmi> show list
+
  dmi> show list
  Available DMI modules: base_board bios chassis memory bank<bank_number> cpu system   
+
  Available DMI modules: base_board bios chassis memory bank<bank_number> cpu system   
  
Note that only available modules will be displayed by this command. If your system doesn't have a battery, the ''battery'' module will not be reported.
+
Note that only available modules will be displayed by this command.  
 +
If your system doesn't have a battery, the ''battery'' module will not be reported.
  
To display the content of each module, you just have to use the ''show <module>'' command like in :
+
To display the content of each module, use {{nowrap|1="<tt>show <module></tt>":}}
  dmi> show system
+
 
  System
+
  dmi> show system
  Manufacturer : Dell Computer Corporation
+
  System
  Product Name : PowerEdge 850
+
  Manufacturer : Dell Computer Corporation
  Version      : Not Specified
+
  Product Name : PowerEdge 850
  Serial      : XXXX
+
  Version      : Not Specified
  UUID        : XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX
+
  Serial      : XXXX
  Wakeup Type  : Power Switch
+
  UUID        : XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX
  SKU Number  :
+
  Wakeup Type  : Power Switch
  Family      :
+
  SKU Number  :
  dmi>
+
  Family      :
 +
  dmi>  
  
 
Nothing more to say except about the memory module.
 
Nothing more to say except about the memory module.
  
 
==== memory display ====
 
==== memory display ====
The ''show memory'' command will display the status of each memory bank reported by the DMI table.
+
The "<tt>show memory</tt>" command will display the  
 +
status of each memory bank reported by the DMI table.
  
 
   dmi> show memory
 
   dmi> show memory
Line 365: Line 410:
 
   bank 02      : Free DDR2@533 MHz
 
   bank 02      : Free DDR2@533 MHz
 
   bank 03      : Free DDR2@533 MHz
 
   bank 03      : Free DDR2@533 MHz
   dmi>
+
   dmi>  
  
As reported by the command, to have more details of a given memory bank, you can use the ''show bank<bank number>'' command.
+
As reported by the command, to have more details of a given memory bank,  
 +
use {{nowrap|1="<tt>show bank<bank number></tt>".}}
  
 
   dmi> show bank1         
 
   dmi> show bank1         
Line 386: Line 432:
 
   Asset Tag    : XXXXXXXXX
 
   Asset Tag    : XXXXXXXXX
 
   Part Number  : XXXXXXXX
 
   Part Number  : XXXXXXXX
   dmi>
+
   dmi>  
  
 
==== IPMI base board display ====
 
==== IPMI base board display ====
Since 0.2.6, hdt can detect if an IPMI BMC is present.
+
Since 0.2.6, HDT can detect whether an IPMI BMC is present;
If yes, it displays the interface type, the version and its address.
+
if it is, it displays the interface type, the version and its address.
  
 
   dmi> show ipmi
 
   dmi> show ipmi
Line 400: Line 446:
 
   Base Address      : 0000000000000CA8
 
   Base Address      : 0000000000000CA8
 
   IRQ                : 0
 
   IRQ                : 0
   dmi>
+
   dmi>  
  
  
===CPU mode===
+
=== CPU mode ===
Inside the CPU mode, you can use the ''show cpu'' command to display the cpu information :
+
Inside the CPU mode, use "<tt>show cpu</tt>" to display the cpu information:
  
 
   cpu> show cpu
 
   cpu> show cpu
Line 423: Line 469:
 
   Flags    : cmov pat pse_36 clflsh dts acpi mmx sse sse2 ss
 
   Flags    : cmov pat pse_36 clflsh dts acpi mmx sse sse2 ss
 
   Flags    : ht acc nx lm                                             
 
   Flags    : ht acc nx lm                                             
   cpu>
+
   cpu>  
  
 
=== Kernel mode ===
 
=== Kernel mode ===
The kernel mode feature the "show list" command that display for each hardware category the needed kernel modules.
+
The kernel mode features the "<tt>show list</tt>" command that displays,
 +
for each hardware category, the needed kernel modules.
  
 
   kernel> show list
 
   kernel> show list
Line 434: Line 481:
 
   Bridge : intel-rng iTCO_wdt
 
   Bridge : intel-rng iTCO_wdt
 
   Serial bus controller : i2c-i801
 
   Serial bus controller : i2c-i801
   kernel>
+
   kernel>  
 
+
  
 
=== PXE mode ===
 
=== PXE mode ===
The PXE mode display information about the pxe environment
+
The PXE mode displays information about the pxe environment.
  
pxe> show list                                                 
+
  pxe> show list                                                 
PXE                                                           
+
  PXE                                                           
PCI device no: 15                             
+
  PCI device no: 15                             
Manufacturer : Broadcom Corporation                           
+
  Manufacturer : Broadcom Corporation                           
Product      : NetXtreme BCM5721 Gigabit Ethernet PCI Express
+
  Product      : NetXtreme BCM5721 Gigabit Ethernet PCI Express
Addresses    : 192.168.3.8 @ 00:13:72:3b:ce:85
+
  Addresses    : 192.168.3.8 @ 00:13:72:3b:ce:85
pxe>  
+
  pxe>  
  
 
=== Syslinux mode ===
 
=== Syslinux mode ===
The Syslinux mode display the current syslinux versions :
+
The Syslinux mode displays the current syslinux versions:
  
syslinux> show list
+
  syslinux> show list
SYSLINUX               
+
  SYSLINUX               
Bootloader : PXElinux           
+
  Bootloader : PXElinux           
Version    : PXELINUX 3.72 3.72
+
  Version    : PXELINUX 3.72 3.72
Version    : 840
+
  Version    : 840
Max API    : 30                                     
+
  Max API    : 30                                     
Copyright  : Copyright (C) 1994-2008 H. Peter Anvin
+
  Copyright  : Copyright (C) 1994-2008 H. Peter Anvin
               
+
  syslinux>  
syslinux>
+
  
 
=== VESA mode ===
 
=== VESA mode ===
The syslinux mode can display a synthesis of the vesa configuration :
+
The vesa mode displays a synthesis of the vesa configuration:
  
 
   vesa> show list
 
   vesa> show list
Line 473: Line 518:
 
   Memory (KB)  : 16384
 
   Memory (KB)  : 16384
 
   Modes        : 32                               
 
   Modes        : 32                               
   vesa>
+
   vesa>  
  
In this example, the vga card supports 32 video modes. To display them, use the ''show modes'' command.
+
In this example, the vga card supports 32 video modes.  
 +
To display them, use "<tt>show modes</tt>".
  
 
Note that "Kernel mode" is the value requested by the "vga=" command line for a linux kernel.
 
Note that "Kernel mode" is the value requested by the "vga=" command line for a linux kernel.
Line 514: Line 560:
 
   1600  1200    32      830        0x013e
 
   1600  1200    32      830        0x013e
 
   vesa>
 
   vesa>
 +
  
 
== Roadmap ==
 
== Roadmap ==
 
=== Release 0.3.0 ===
 
=== Release 0.3.0 ===
* Merging Pam's branch to feature the new CLI [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=baaa1ac2e15a3ab2152bc510a8059c0cd763b34d commit]
+
* [http://git.zytor.com/users/erwan/hdt.git;a=commit;h=baaa1ac2e15a3ab2152bc510a8059c0cd763b34d Merging Pam's branch to feature the new CLI]
  
=== [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=98bd2d140d31e5ce4b83589a546a70183a22b4e1 Release 0.3.1] ===
+
=== [http://git.zytor.com/users/erwan/hdt.git/tag/?h=hdt-0.3.1 Release 0.3.1] ===
* Adding more coherence in the more_printf() usage -> [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=9ed3df89eb355c0e55d1157961516f02a4d1836f commit]
+
* [http://git.zytor.com/users/erwan/hdt.git;a=commit;h=9ed3df89eb355c0e55d1157961516f02a4d1836f Adding more coherence in the more_printf() usage]
* Adding more coherence about screen clearing -> [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=9ed3df89eb355c0e55d1157961516f02a4d1836f commit]
+
* [http://git.zytor.com/users/erwan/hdt.git;a=commit;h=9ed3df89eb355c0e55d1157961516f02a4d1836f Adding more coherence about screen clearing]
* Adding VPD support -> [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=c31b535638176cf076b8a5adaac6f711cea0eb41 commit] [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=569617a6dceca02dea5c72f48911f8987a34f6d4 commit] [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=13c60849867ecc575b8f28dc259705b772611402 commit]
+
* Adding VPD support; <!--
* Adding missing dmi chassis in the CLI : done by merging pam's branch in 0.3.0
+
--> [http://git.zytor.com/users/erwan/hdt.git;a=commit;h=c31b535638176cf076b8a5adaac6f711cea0eb41 commit], <!--
* When using ISOLINUX default kernel modules file must be modules.pci instead of modules.pcimap: this will solve a common problem reported by users -> [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=6528356ce321942cf2d1060f84f4fc5f73408249 commit]
+
--> [http://git.zytor.com/users/erwan/hdt.git;a=commit;h=569617a6dceca02dea5c72f48911f8987a34f6d4 commit], <!--
* Removing multiple spaces (some tools reports strings features multiple space) -> [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=5f036aa1ec3557f444fb8c49f782d31dd53979e7 commit]
+
--> [http://git.zytor.com/users/erwan/hdt.git;a=commit;h=13c60849867ecc575b8f28dc259705b772611402 commit]
* Using NULL to end CLI's structures -> [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=780c8f8361ff8f6ebd3b4b4a82e991c81c0c3562 commit]
+
* Adding missing dmi chassis in the CLI: done by merging pam's branch in 0.3.0
 +
* When using ISOLINUX default kernel modules file must be modules.pci instead of modules.pcimap: <!--
 +
--> this will solve a common problem reported by users; <!--
 +
--> [http://git.zytor.com/users/erwan/hdt.git;a=commit;h=6528356ce321942cf2d1060f84f4fc5f73408249 commit]
 +
* Some tools report strings features multiple spaces; <!--
 +
--> [http://git.zytor.com/users/erwan/hdt.git;a=commit;h=5f036aa1ec3557f444fb8c49f782d31dd53979e7 Removing multiple spaces]
 +
* [http://git.zytor.com/users/erwan/hdt.git;a=commit;h=780c8f8361ff8f6ebd3b4b4a82e991c81c0c3562 Using NULL to end CLI's structures]
 +
   
 +
=== [http://git.zytor.com/users/erwan/hdt.git/tag/?h=hdt-0.3.2 Release 0.3.2] ===
 +
* [http://git.zytor.com/users/erwan/hdt.git;a=commit;h=ecc21733bb9be5b9b8185389ab7cffe9d6f2e1ff Adding hotkey for VPD (menu)]
 +
* [http://git.zytor.com/users/erwan/hdt.git;a=commit;h=3058efaac90bbc57c1e332a80d76094382cec138 Menu: Don't display non populated VPD' items]
 +
* [http://git.zytor.com/users/erwan/hdt.git;a=commit;h=fdd21ff85b3fa41641f711311f7e62081442dbe2 Adding hdt&gt; show vpd]
 +
* [http://git.zytor.com/users/erwan/hdt.git;a=commit;h=9c5868d154656e3832822dd24dd9701fe55eb2a4 Adding disk's partition detection]
 +
* [http://git.zytor.com/users/erwan/hdt.git;a=commit;h=81910f64ece4b1ca9e7e1ff276d673ef2321b1ea Adding a cli mode for detecting disks]
 +
* [http://git.zytor.com/users/erwan/hdt.git;a=commit;h=db265a9a03849966ec9183f675d539fc3b0d6ecd Using modules.alias to manage kernel modules]
 +
* [http://git.zytor.com/users/erwan/hdt.git;a=commit;h=d222f57d5fce7908f7cca3f32546ac789e8b3f4d Menu must use 25 lines instead of 24]
 +
* [http://git.zytor.com/users/erwan/hdt.git;a=commit;h=c9621dba0331d0024f9c43fc2a5a9f91decded67 Removing dmi&gt; show memory clear screen]
  
=== [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=485b4c07c607e2860b4ad96d94627a4394c48721 Release 0.3.2] ===
+
=== [http://git.zytor.com/users/erwan/hdt.git/tag/?h=hdt-0.3.3 Release 0.3.3]===
* Adding hotkey for VPD (menu) [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=ecc21733bb9be5b9b8185389ab7cffe9d6f2e1ff commit]
+
* Menu: Don't display non populated VPD' items [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=3058efaac90bbc57c1e332a80d76094382cec138 commit]
+
* Adding hdt> show vpd [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=fdd21ff85b3fa41641f711311f7e62081442dbe2 commit]
+
* Adding disk's partition detection [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=9c5868d154656e3832822dd24dd9701fe55eb2a4 commit]
+
* Adding a cli mode for detecting disks [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=81910f64ece4b1ca9e7e1ff276d673ef2321b1ea commit]
+
* Using modules.alias to manage kernel modules [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=db265a9a03849966ec9183f675d539fc3b0d6ecd commit]
+
* Menu must use 25 lines instead of 24 [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=d222f57d5fce7908f7cca3f32546ac789e8b3f4d commit]
+
* Removing dmi> show memory clear screen [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=c9621dba0331d0024f9c43fc2a5a9f91decded67 commit]
+
 
+
=== [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=b691a5d99c460e6aefe60d9557bde2dc2c98fe34 Release 0.3.3]===
+
 
* Adding more memory information (mostly integrating memdump.c32) (done with several commits)
 
* Adding more memory information (mostly integrating memdump.c32) (done with several commits)
* Fixing Backspace behavior [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=3e5b7b7a03bc8264c2b68b2a3a174ec548b65f37 commit]
+
* [http://git.zytor.com/users/erwan/hdt.git;a=commit;h=3e5b7b7a03bc8264c2b68b2a3a174ec548b65f37 Fixing Backspace behavior]
* Cursor is blinking [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=16da4bf8a346e3fc7abf75d0ad903a088301dccc commit]
+
* [http://git.zytor.com/users/erwan/hdt.git;a=commit;h=16da4bf8a346e3fc7abf75d0ad903a088301dccc Cursor is blinking]
* Prevent cursor from disappearing [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=b7817ae596d1f9b79d027210f0e7958da3516cb6 commit]
+
* [http://git.zytor.com/users/erwan/hdt.git;a=commit;h=b7817ae596d1f9b79d027210f0e7958da3516cb6 Prevent cursor from disappearing]
* Optmizing screen usage in "show help" [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=3e761dad4cfec0f2dcafb859fb13b8692daf8882 commit]
+
* [http://git.zytor.com/users/erwan/hdt.git;a=commit;h=3e761dad4cfec0f2dcafb859fb13b8692daf8882 Optmizing screen usage in "show help"]
  
=== [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=daba7ba9c40e257fcb6da033c54dd807f81b1a25 Release 0.3.4] ===
+
=== [http://git.zytor.com/users/erwan/hdt.git/tag/?h=hdt-0.3.4 Release 0.3.4] ===
 
* Fixing int10/13 conflict
 
* Fixing int10/13 conflict
 
* Improving menu's layout to maximize display usage
 
* Improving menu's layout to maximize display usage
Line 552: Line 605:
 
* Memory detection fall-back to dmi type 6 when type 17 isn't available
 
* Memory detection fall-back to dmi type 6 when type 17 isn't available
 
* Adding filesystem detection
 
* Adding filesystem detection
* Adding mbr detection (info can be grav at http://sourceforge.net/projects/bootinfoscript/)
+
* Adding mbr detection (grab info at <!--
 +
--> (older) [http://sf.net/projects/bootinfoscript/] or <!--
 +
--> (newer) {{nowrap|1=[http://github.com/arvidjaar/bootinfoscript] )}}
  
 
=== Release 0.4.0 ===
 
=== Release 0.4.0 ===
Line 559: Line 614:
  
 
== Development ==
 
== Development ==
hdt is currently under development here:  
+
The development of HDT is here:  
http://git.zytor.com/?p=users/erwan/hdt.git
+
http://git.zytor.com/users/erwan/hdt.git
  
== Mailing List ==
+
Additional changes could be merged directly into the main Syslinux git repository.
You can subscribe to the mailing list [http://www.zytor.com/mailman/listinfo/hdt here]
+
  
HDT's [http://www.zytor.com/pipermail/hdt/ archives] can be reach [http://www.zytor.com/pipermail/hdt/ here]
+
== Mailing List ==
 +
You can subscribe to the  [http://www.zytor.com/mailman/listinfo/hdt mailing list]  
 +
and/or read the [http://www.zytor.com/pipermail/hdt/ archives].
  
 
== Ideas ==
 
== Ideas ==
The following ideas represents possible new features for hdt. If users reports which ideas they really needs, priorities to develop items could change ;o)
+
The following ideas represent possible new features for HDT.  
 +
If users report which ideas they really need,  
 +
priorities to develop items could change ;o)
  
 
=== Lua Scripting ===
 
=== Lua Scripting ===
HDT currently detects hardware and generate an output using a menu or via a cli. It could be interesting to add a lua support to manage scripting.
+
HDT currently detects hardware and generates an output using a menu or via a CLI.  
It could be possible to load a file that describes items that user want to detect.
+
It could be interesting to add lua support to manage scripting.  
 +
It could be possible to load a file that describes items that the user wants to detect.
  
 
=== Saving reports ===
 
=== Saving reports ===
Line 580: Line 639:
  
 
=== Improving disks detection ===
 
=== Improving disks detection ===
Implementing a simple IDE stack would help in detecting PATA & ATAPI devices. Detecting SATA devices would require implementing specific drivers. The Coreboot project features some, why not doing some teaming on that.
+
Implementing a simple IDE stack would help in detecting PATA & ATAPI devices.  
 +
Detecting SATA devices would require implementing specific drivers.  
 +
The Coreboot project features some; why not doing some teaming on that?
  
 
=== Implementing SMART ===
 
=== Implementing SMART ===
Once the previous items would be complete, it could be possible to add a smartmontools like feature to display smart status of devices.
+
Once the previous items would be complete, it could be possible to  
 +
add a smartmontools-like feature to display smart status of devices.
  
 
=== Adding IPMI ===
 
=== Adding IPMI ===
IPMI could give hdt more information about the current hardware like sensors, etc... While using the "open" interface we can reach the local BMC but sounds it needs a lot of code.
+
IPMI could give HDT more information about the current hardware like sensors, etc...  
 +
While using the "open" interface, we can reach the local BMC, but sounds as it needs a lot of code.
  
 
=== Adding VPD ===
 
=== Adding VPD ===
Virtual Product Data displays the following :
+
Virtual Product Data displays the following:
BIOS Build ID, Product Name, Box Serial Number, Motherboard Serial Number, Machine Type/Model,
+
BIOS Build ID, Product Name, Box Serial Number, Motherboard Serial Number, Machine Type/Model.
  
 
=== Detecting Disk's Partitions ===
 
=== Detecting Disk's Partitions ===
Line 596: Line 659:
  
 
=== Adding more benchmark/diagnose tools ===
 
=== Adding more benchmark/diagnose tools ===
For every kind of component, it could be possible to launch a benchmark/diagnose tool. UBCD have many of them, why not trying to load some from both menu & cli mode.
+
For every kind of component, it could be possible to launch a benchmark/diagnose tool.  
 +
UBCD has many of them; why not trying to load some from both menu and CLI mode.

Latest revision as of 17:52, 30 November 2018


The project used to have its own website, now archived.

This document might be partially outdated.


What is HDT ?

HDT (for "Hardware Detection Tool") is a Syslinux com32 module designed to display low-level information for any x86 compatible system.

HDT can inspect multiple subsystems:

  • CPU (via cpuid)
  • PCI
  • DMI
    • Memory modules
    • BIOS
    • Motherboard
    • IPMI base board
    • Chassis
    • Batteries
    • CPU
  • Disks (work in progress)
  • Syslinux
  • Linux Kernel modules needed by this host
  • PXE environment
  • VESA
  • ...

Release

Current stable release is 0.3.3 0.5.2.

Current development version is 0.3.4 in the main Syslinux git repository.

Download

HDT is included in the official Syslinux distribution archives.

History

Syslinux 3.74 features HDT 0.2.7.

Syslinux 3.75 features HDT 0.2.7 with a fix to prevent hard lock during pci detection.

Projects known to use HDT

  • Mandriva Linux since 2009.1 (no longer active since 2015)
  • Ultimate Boot CD since version 5.0
  • Parted Magic since 0.4.0
  • Recovery Is Possible since 8.0 (no longer active since 2012)
  • Many others

How can I try HDT ?

Since Syslinux 3.74, HDT is available in the Syslinux archive under the "com32/hdt" directory.

HDT is a com32 module that requires syslinux 3.74 or later. As every com32 module, it can be booted as a kernel like:

LABEL hdt
 KERNEL hdt.c32

Testing using kvm/qemu

Since qemu 0.9.0, it is possible to boot a virtual machine while using a local directory as a local pxe server. This allows a local PXE booting without needing a complete infrastructure (dhcp/tftp).

  • Install kvm/qemu.
  • Setup you environment by creating a local pxe directory like "~/pxe".
  • In this pxe dir, create another directory, named "pxelinux.cfg".
  • Within the "pxelinux.cfg" directory, create the following configuration file named "default":
DEFAULT hdt
PROMPT 1
TIMEOUT 5
LABEL hdt
 KERNEL hdt.c32
  • Copy the "pxelinux.0" (and "ldlinux.c32") file(s) from the Syslinux archive to the "~/pxe" dir.
  • Copy the hdt.c32 file (and the relevant library modules) in the same directory.
  • Create a dummy disk file with
dd if=/dev/zero of=~/pxe/dummy.img bs=1M count=5
  • Start qemu/kvm to use that local configuration:
kvm -hda ~/pxe/dummy.img -net nic -net user -boot n -tftp ~/pxe -bootp /pxelinux.0


Menu mode

The menu mode will try to do some best effort to manage the little space in which we display so much information.

Screenshots taken on HDT 0.2.6.

Main menu:

Hdt-menu.png

Cpu mode:

Hdt-menu-cpu.png

Starting memtest

Under the memory menu, it is possible to start memtest. To make it successful, you have to:

  • Download memtest
  • gunzip it
  • Setup in your current Syslinux configuration file an entry like
LABEL memtest
 LINUX memtest86+-2.11.bin

Make sure to use the keyword "LINUX", not "KERNEL"!

Then, when selecting the memory test from the memory submenu, the "memtest" label will be launched.

The label name could be changed using the "memtest=<label>" boot option of HDT. The default value is set to "memtest".


How do I configure HDT ?

HDT can be configured by APPENDing parameters, as described in the following sections.

pci stuff

HDT requires very little configuration. To improve the PCI reporting, copy "pci.ids" and "modules.pcimap" in a directory. By default, hdt will search for these files in the root dir of the boot device. If you want to override the directory you can use the following parameters:

  • modules=your_path/modules.pcimap
  • pciids=your_path/pci.ids
  • memtest=label_name

This can be configured as:

LABEL hdt
 KERNEL hdt.c32
 APPEND modules=images/modules.pcimap pciids=images/pci.ids memtest=mymemtest

The "pci.ids" file can usually be found in the "/usr/share/" directory of a Linux System or just download it from sf.net.

The "modules.pcimap" file is usually available in the "/lib/modules/`uname -r`/" directory of your Linux system.

Warning! When HDT is used with ISOLINUX, the file name must be in an "8.3" format. So if your file is named "modules.pcimap", then the parameter given to HDT must be: "modules=path/to/modules.pci".

If these files are not available, HDT will generate some information messages to warn the user.

The memtest=<label> option allows users to override the default entry name in the current config file of Syslinux. The default value is set to "memtest".

CLI mode

HDT supports two modes: a menu system and a CLI (command line interface). The menu system is enabled by default. To enable the CLI mode, just append "nomenu" at startup time like in:

LABEL hdt
 KERNEL hdt.c32
 APPEND nomenu


Syntax of the CLI

This syntax may change in the future.

The main menu displays a "hdt> " prompt indicating the top menu.

Other submenus exist: pci, dmi, cpu, kernel, pxe, syslinux. These topics will be discussed later.

The help command shows the available commands:

  • clear  : obviously, clear the screen
  • help  : this help ;o)
  • show  : the command to display items
  • pci  : to enter the PCI mode
  • dmi  : to enter the DMI mode
  • cpu  : to enter the CPU mode
  • kernel : to enter the kernel mode
  • syslinux : to enter the syslinux mode
  • vesa  : to enter the vesa mode
  • exit  : to return to the top menu

Note that it is possible to use "show" in order to obtain a summary of the given mode, like in:

 hdt> show pci
 PCI: 17 devices detected                   
 PCI: Resolving names
 PCI: Resolving class names
 PCI Resolving module names                
 PCI                                        
  NB Devices   : 17         
 hdt> 
  

or:

 hdt> show dmi     
 DMI Table version 2.3 found
 Available DMI modules: base_board bios chassis memory bank<bank_number> cpu system          
 hdt> 

The "show dmi" command will display the version of the DMI table and the available modules.

Other examples:

 hdt> show cpu                                              
 CPU                        
  Manufacturer :  Intel                     
  Product      :  Intel(R) Pentium(R) D CPU 3.00GHz                              
  Features     :  3000 MhZ : x86_64 64bits SMP
 hdt> 


 hdt> show pxe                              
 PXE                        
  PCI device no: 15         
  Manufacturer : Broadcom Corporation              
  Product      : NetXtreme BCM5721 Gigabit Ethernet PCI Express                  
  Addresses    : 192.168.3.8 @ 00:13:72:3b:ce:85
 hdt> 


 hdt> show syslinux 
 SYSLINUX                            
  Bootloader : PXElinux              
  Version    : PXELINUX 3.74 pre1-110-g37bfb1c
  Version    : 842      
  Max API    : 35     
  Copyright  : Copyright (C) 1994-2009 H. Peter Anvin                
 hdt> 


 hdt> show kernel                                  
 Kernel modules                                                                  
 (intel-rng | iTCO_wdt) # (piix | ata_piix) # i2c-i801 # tg3 # sisfb #
 hdt> 


 hdt> show vesa
 VESA
  Vesa version : 3.0
  Vendor       : XGI Technology, Inc.
  Product      : Volari Z7
  Product rev. : 1.02.04
  Software rev.: Y 
  Memory (KB)  : 16384                      
  Modes        : 32
 hdt> 


Summary

The "show summary" command reports a global summary of the current host:

 hdt>show summary
 CPU
  Manufacturer :  Intel
  Product      :  Intel(R) Pentium(R) D CPU 3.00GHz
  Features     :  3000 MhZ : x86_64 64bits SMP
 System
  Manufacturer : Dell Computer Corporation
  Product Name : PowerEdge 850
  Serial       : XXXXX
 Bios
  Version      : A02
  Release      : 10/12/2005
 Memory Banks
  bank 00      : 512 MB DDR2@533 MHz
  bank 01      : 512 MB DDR2@533 MHz
 PCI
  NB Devices   : 17
 PXE
  PCI device no: 15
  Manufacturer : Broadcom Corporation
  Product      : NetXtreme BCM5721 Gigabit Ethernet PCI Express
  Addresses    : 192.168.3.8 @ 00:13:72:3b:ce:85
 Kernel modules
 (intel-rng | iTCO_wdt) # (piix | ata_piix) # i2c-i801 # tg3 # sisfb #
 hdt> 


PCI mode

From the main menu, type "pci". The prompt changes to "pci> ". The available commands are:

show list

The "show list" command reports the available pci devices like in:

 pci> show list
 21 PCI devices detected
 01: Intel Corporation E7230/3000/3010 Memory Controller Hub
     # Host bridge               # Kmod: unknown
 
 02: Intel Corporation E7230/3000/3010 PCI Express Root Port
     # PCI bridge                # Kmod: unknown
 [....]
 12: Intel Corporation 82801G (ICH7 Family) IDE Controller
     # IDE interface             # Kmod: piix | ata_piix
 [....] 


The first numerical field (01, 02 or 12 in this example) represents the PCI device number followed by the vendor and product names.

The second line displays the device class and the associated kernel module. If no module matches this pci device, the kernel module (Kmod) is reported as unknown. If the device matches one or more kernel modules, the Kmod field shows their name, piix or ata_piix in this example.

show device <number>

The "show device <number>" command reports more detailed information on the selected pci device. Let's see a report for the PCI device number 12 from the previous example:

 pci> show device 12
 PCI Device 12
 Vendor Name   : Intel Corporation
 Product Name  : 82801G (ICH7 Family) IDE Controller
 Class Name    : IDE interface
 Kernel module : piix | ata_piix
 Vendor ID     : 8086
 Product ID    : 27df
 SubVendor ID  : 1028
 SubProduct ID : 01b6
 Class ID      : 01.01.8a
 Revision      : 01
 PCI Bus       : 00
 PCI Slot      : 31
 PCI Func      : 01
 pci> 

The output is pretty obvious, no need to say more about it except about the pxe stuff. If the current device has a running pxe rom, its pxe information will be displayed:

 Mac Address   : 00:13:72:3b:ce:85
 PXE           : Current boot device

If the device has a valid IRQ, an "IRQ: <irq>" line is displayed.

show irq

HDT can show IRQs set to some PCI devices. Most PCI devices do not really have a legacy IRQ. Only valid IRQs (>0 & <255) are shown.

 pci>show irq
 17 PCI devices detected
  IRQ : product
  -------------
  11  : Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1
  05  : Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI Express
  03  : Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI Express
 pci> 

DMI mode

Inside the dmi mode, "show list" displays the available modules.

 dmi> show list
 Available DMI modules: base_board bios chassis memory bank<bank_number> cpu system  

Note that only available modules will be displayed by this command. If your system doesn't have a battery, the battery module will not be reported.

To display the content of each module, use "show <module>":

 dmi> show system
 System
 Manufacturer : Dell Computer Corporation
 Product Name : PowerEdge 850
 Version      : Not Specified
 Serial       : XXXX
 UUID         : XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX
 Wakeup Type  : Power Switch
 SKU Number   :
 Family       :
 dmi> 

Nothing more to say except about the memory module.

memory display

The "show memory" command will display the status of each memory bank reported by the DMI table.

 dmi> show memory
 Memory Banks
  bank 00      : 512 MB DDR2@533 MHz
  bank 01      : 512 MB DDR2@533 MHz
  bank 02      : Free DDR2@533 MHz
  bank 03      : Free DDR2@533 MHz
 dmi> 

As reported by the command, to have more details of a given memory bank, use "show bank<bank number>".

 dmi> show bank1        
 Memory Bank 1          
 Form Factor  : DIMM        
 Type         : DDR2   
 Type Detail  : Synchronous
 Speed        : 533 MHz
 Size         : 512 MB 
 Device Set   : 1      
 Device Loc.  : DIMM1_B
 Bank Locator : Not Specified
 Total Width  : 72 bits
 Data Width   : 64 bits    
 Error        : Not Provided
 Vendor       : C100000000000000
 Serial       : XXXXXXX
 Asset Tag    : XXXXXXXXX
 Part Number  : XXXXXXXX
 dmi> 

IPMI base board display

Since 0.2.6, HDT can detect whether an IPMI BMC is present; if it is, it displays the interface type, the version and its address.

 dmi> show ipmi
 IPMI
  Interface Type     : KCS (Keyboard Control Style)
  Specification Ver. : 1.5
  I2C Slave Address  : 0x10
  Nv Storage Address : 0
  Base Address       : 0000000000000CA8
  IRQ                : 0
 dmi> 


CPU mode

Inside the CPU mode, use "show cpu" to display the cpu information:

 cpu> show cpu
 CPU 
 Vendor    : Intel
 Model     : Intel(R) Pentium(R) D CPU 3.00GHz
 Vendor ID : 0    
 Family ID : 15                               
 Model  ID : 4                                
 Stepping  : 7 
 FSB       : 800 MHz
 Cur. Speed: 3000 MHz
 Max Speed : 3800 MHz
 Upgrade   : ZIF Socket
 SMP       : yes     
 x86_64    : yes       
 Flags     : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
 Flags     : cmov pat pse_36 clflsh dts acpi mmx sse sse2 ss
 Flags     : ht acc nx lm                                            
 cpu> 

Kernel mode

The kernel mode features the "show list" command that displays, for each hardware category, the needed kernel modules.

 kernel> show list
 Mass storage controller : piix ata_piix
 Network controller : tg3
 Display controller : sisfb
 Bridge : intel-rng iTCO_wdt
 Serial bus controller : i2c-i801
 kernel> 

PXE mode

The PXE mode displays information about the pxe environment.

 pxe> show list                                                
 PXE                                                           
  PCI device no: 15                             
  Manufacturer : Broadcom Corporation                          
  Product      : NetXtreme BCM5721 Gigabit Ethernet PCI Express
  Addresses    : 192.168.3.8 @ 00:13:72:3b:ce:85
 pxe> 

Syslinux mode

The Syslinux mode displays the current syslinux versions:

 syslinux> show list
 SYSLINUX              
  Bootloader : PXElinux          
  Version    : PXELINUX 3.72 3.72
  Version    : 840
 Max API    : 30                                    
  Copyright  : Copyright (C) 1994-2008 H. Peter Anvin
 syslinux> 

VESA mode

The vesa mode displays a synthesis of the vesa configuration:

 vesa> show list
 VESA
  Vesa version : 3.0
  Vendor       : XGI Technology, Inc.
  Product      : Volari Z7
  Product rev. : 1.02.04
  Software rev.: Y 
  Memory (KB)  : 16384
  Modes        : 32                               
 vesa> 

In this example, the vga card supports 32 video modes. To display them, use "show modes".

Note that "Kernel mode" is the value requested by the "vga=" command line for a linux kernel.

 vesa> show modes
  ResX x ResY x Bits : Kernel Mode : Vesa Mode
 ---------------------------------------------
   800   600      4       770        0x0102
   640   480      8       769        0x0101
   640   400      8       768        0x0100
   800   600      8       771        0x0103
  1024   768      4       772        0x0104
  1024   768      8       773        0x0105
  1280  1024      8       775        0x0107
  1600  1200      8       816        0x0130
  1600  1200     16       817        0x0131
   320   200     15       781        0x010d
   320   200     16       782        0x010e
   640   480     15       784        0x0110
   640   480     16       785        0x0111
   800   600     15       787        0x0113
   800   600     16       788        0x0114
  1024   768     15       790        0x0116
  1024   768     16       791        0x0117
  1280  1024     15       793        0x0119
  1280  1024     16       794        0x011a
   320   240      8       818        0x0132
   400   300      8       819        0x0133
   512   384      8       820        0x0134
   320   240     16       821        0x0135
   400   300     16       822        0x0136
   512   384     16       823        0x0137
   320   200      8       824        0x0138
   640   400     16       825        0x0139
   640   480     32       826        0x013a
   800   600     32       827        0x013b
  1024   768     32       828        0x013c
  1280  1024     32       829        0x013d
  1600  1200     32       830        0x013e
 vesa>


Roadmap

Release 0.3.0

Release 0.3.1

Release 0.3.2

Release 0.3.3

Release 0.3.4

  • Fixing int10/13 conflict
  • Improving menu's layout to maximize display usage
  • Adding more external benchmark/diagnose tools (cpu/disks/...)
  • Adding more Fn keys (F1-F12)
  • Memory detection fall-back to dmi type 6 when type 17 isn't available
  • Adding filesystem detection
  • Adding mbr detection (grab info at (older) [1] or (newer) [2] )

Release 0.4.0

  • Adding a saving inventory feature
  • Adding IPMI

Development

The development of HDT is here: http://git.zytor.com/users/erwan/hdt.git

Additional changes could be merged directly into the main Syslinux git repository.

Mailing List

You can subscribe to the mailing list and/or read the archives.

Ideas

The following ideas represent possible new features for HDT. If users report which ideas they really need, priorities to develop items could change ;o)

Lua Scripting

HDT currently detects hardware and generates an output using a menu or via a CLI. It could be interesting to add lua support to manage scripting. It could be possible to load a file that describes items that the user wants to detect.

Saving reports

Current versions can't save a report as we can't reach a writable storage. When using PXELINUX, we can imagine using a tftp put method. Using GPXELINUX, we can imagine using some http/ftp put methods.

Improving disks detection

Implementing a simple IDE stack would help in detecting PATA & ATAPI devices. Detecting SATA devices would require implementing specific drivers. The Coreboot project features some; why not doing some teaming on that?

Implementing SMART

Once the previous items would be complete, it could be possible to add a smartmontools-like feature to display smart status of devices.

Adding IPMI

IPMI could give HDT more information about the current hardware like sensors, etc... While using the "open" interface, we can reach the local BMC, but sounds as it needs a lot of code.

Adding VPD

Virtual Product Data displays the following: BIOS Build ID, Product Name, Box Serial Number, Motherboard Serial Number, Machine Type/Model.

Detecting Disk's Partitions

Title is pretty obvious ;o)

Adding more benchmark/diagnose tools

For every kind of component, it could be possible to launch a benchmark/diagnose tool. UBCD has many of them; why not trying to load some from both menu and CLI mode.