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

From Syslinux Wiki
Jump to: navigation, search
(0.3.3)
(Modify Categories. Add, update, correct (some) info.)
 
(27 intermediate revisions by 5 users not shown)
Line 1: Line 1:
[[Category:Release Documentation]]
+
<!-- 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: -->
 +
----
 +
<br />
 +
 
 +
<!-- --><!--
 +
--><!-- [[Category:Release Documentation]]
 +
--><!-- This wiki page is based on the documents and wiki pages that were
 +
--><!--  available at the old http://hdt-project.org (wiki) site.
 +
--><!-- The page used to be updated with each release; but...
 +
--><!-- There is no relevant specific document about HDT included in
 +
--><!--  the official Syslinux distribution archives.
 +
--><!-- -->
 
[[Category:Comboot]]
 
[[Category:Comboot]]
==What is HDT ?==
+
[[Category:Examples]]
HDT (for "'''H'''ardware '''D'''etection '''T'''ool") is a Syslinux com32 module designed to display low-level information for any x86 compatible system.
+
[[Category:Modules]]
 +
__NOEDITSECTION__
 +
 
 +
<br />
 +
== 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.
 +
It provides a command line interface and a semi-graphical menu mode for browsing.
  
 
HDT can inspect multiple subsystems:
 
HDT can inspect multiple subsystems:
Line 8: Line 35:
 
* CPU (via cpuid)
 
* CPU (via cpuid)
 
* PCI
 
* PCI
 +
* Memory
 +
** e820 memory map
 +
** e801 memory map
 +
** 8800h memory size
 
* DMI
 
* DMI
 
** Memory modules
 
** Memory modules
Line 16: Line 47:
 
** Batteries
 
** Batteries
 
** CPU
 
** CPU
 +
** System
 +
** Security
 +
** System reset
 
* Disks (work in progress)
 
* Disks (work in progress)
 
* Syslinux
 
* Syslinux
Line 23: Line 57:
 
* ...
 
* ...
  
 +
<br />
 
== Release ==
 
== Release ==
Current stable release is 0.3.1
 
  
Current development version is 0.3.2
+
Current stable release is <s>0.3.3</s> 0.5.2.
  
 +
Current development version is <s>0.3.4</s> in the main Syslinux git repository.
 +
 +
<br />
 
== Download ==
 
== Download ==
[http://konilope.linuxeries.org/hdt/hdt_0_3_1.c32 HDT 0.3.1] for Syslinux 3.75
 
  
== History ==
+
<!-- --><!--
Syslinux 3.74 is featuring HDT 0.2.7
+
--><!-- The following links used to be posted in the wiki page;
 +
--><!--  they are dead 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/
 +
--><!-- -->
  
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
+
HDT is included in the official Syslinux distribution [[Download|archives]].
  
 +
<br />
 
== 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 ?==
+
<br />
Since Syslinux 3.74, HDT is available in the Syslinux archive under the "com32/hdt" directory.
+
== How can I try HDT ? ==
  
HDT is a com32 module that requires syslinux 3.74 or later. As every com32 module it can be booted as a kernel like :
+
Since Syslinux 3.74,
 +
HDT is available in the Syslinux archive under the "<tt>com32/hdt</tt>" directory.
  
  label hdt
+
HDT is a com32 module that requires syslinux 3.74 or later.
    KERNEL hdt.c32
+
As every com32 module, it can be booted as a kernel like:
  
==How do I configure HDT ?==
+
LABEL hdt
=== pci stuff ===
+
  KERNEL hdt.c32
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
+
<br />
* pciids=your_path/pci.ids
+
=== Testing using kvm/qemu ===
* memtest=label_name
+
  
This can be configured like this :
+
Since qemu 0.9.0,
  label hdt
+
it is possible to boot a virtual machine while using a local directory as a local pxe server.  
    KERNEL hdt.c32
+
This allows a local PXE booting without needing a complete infrastructure (dhcp/tftp).
    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].
+
* Install kvm/qemu.
 +
* 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
 +
|}
  
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.
+
<br />
 +
== Menu mode ==
  
'''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"
+
The menu mode will try to do some best effort to manage
 +
the little space in which we display so much information.
  
If this files aren't available, HDT will generate some information messages to warn the user.
+
Screenshots taken on HDT 0.2.6.
  
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".
+
''Main menu:''
  
=== menu mode ===
+
[[Image:hdt-menu.png]]
  
HDT support two modes : a menu system and a cli (command line interface). The menu system is enabled by default.
+
''Cpu mode:''
To enable the cli mode, just append "nomenu" at startup time like in :
+
  
  label hdt
+
[[Image:hdt-menu-cpu.png]]
    KERNEL hdt.c32
+
    APPEND nomenu
+
  
==Menu mode==
+
<br />
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.
+
=== Starting memtest ===
  
As anyone expect, here come some screenshots taken on the 0.2.6 version.
+
Under the memory menu, it is possible to start memtest.  
 +
To make it successful, you have to:
  
''A screenshot featuring the main menu:''
+
* Download memtest
 +
* gunzip it
 +
* Setup in your current Syslinux configuration file an entry like
  
[[Image:hdt-menu.png]]
+
LABEL memtest
 +
  LINUX memtest86+-2.11.bin
  
''A screenshot featuring the cpu mode :''  
+
'''Make sure to use the keyword "<u>LINUX</u>", not "KERNEL"!'''
  
[[Image:hdt-menu-cpu.png]]
+
Then, when selecting the memory test from the memory submenu,
 +
the "<tt>memtest</tt>" label will be launched.
  
=== Starting memtest ===
+
The label name could be changed using the "<code>memtest=<label></code>" boot option of HDT.
Under the memory menu, it is possible to start memtest. To make it successful, you have to :
+
The default value is set to "<tt>memtest</tt>".
  
* Download memtest here -> [http://www.memtest.org/download/2.11/memtest86+-2.11.bin.gz]
+
<br />
* gunzip it
+
== How do I configure HDT ? ==
* Setup in your current syslinux configuration file an entry like
+
  
  Label memtest
+
HDT can be configured by APPENDing parameters,
    linux memtest86+-2.11.bin
+
as described in the following sections.
 +
<!-- See https://web.archive.org/web/20160128080744/http://hdt-project.org/wiki/BootParameters -->
 +
<!-- Examples: https://repo.or.cz/syslinux.git/blob/HEAD:/com32/hdt/floppy/hdt.cfg -->
  
'''Make sure to use the keyword "linux", not "kernel"!'''
+
<br />
 +
=== pci stuff ===
  
Then, when you'll select the memory test from the memory submenu, memtest will be launched.
+
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:
  
The label name could be changed using the "memtest=<label>" boot option. Default value is set to "memtest".
+
* modules_alias=your_path/modules.alias
 +
* modules_pcimap=your_path/modules.pcimap
 +
* pciids=your_path/pci.ids
 +
* memtest=label_name
  
==Syntax of the CLI==
+
Optionally, the files can be gzipped.
This syntax may change in the future as its currently under development.
+
  
The main menu display a "hdt> " prompt to indicate the user that he reach the top menu.
+
This can be configured as:
 +
{|
 +
|
 +
LABEL hdt
 +
  KERNEL hdt.c32
 +
  APPEND modules_alias=images/modules.alias modules_pcimap=images/modules.pcimap pciids=images/pci.ids memtest=mymemtest
 +
|}
  
Today, other submenu exists : pci, dmi, cpu, kernel, pxe, syslinux. This topics will be discussed later.
+
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.sf.net/v2.2/pci.ids download] it from sf.net.
 +
<!-- --><!--
 +
--><!-- "The PCI ID Repository" can be found at several repositories / mirrors:
 +
--><!-- * [http://pciids.sf.net]
 +
--><!-- * [http://pci-ids.ucw.cz]
 +
--><!-- * [https://github.com/pciutils/pciids]
 +
--><!-- -->
  
The ''help'' command shows the available commands :
+
The "<tt>modules.pcimap</tt>" file is usually available in
 +
the "<code>/lib/modules/`uname -r`/</code>" directory of your Linux system.
 +
<!-- --><!--
 +
--><!-- 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.
 +
--><!--
 +
--><!-- (The above link used to be posted in the wiki page;
 +
--><!--  it is dead and
 +
--><!--  no longer relevant / available.)
 +
--><!-- -->
  
* clear  : obviously, clear the screen
+
'''Warning!''' When HDT is used with ISOLINUX, the file name must be in an "8.3" format.
* help  : this help ;o)
+
So if your file is named "<tt>modules.pcimap</tt>",
* show  : the command to display items
+
then the parameter given to HDT must be: "<code>modules_pcimap=path/to/modules.pci</code>".
* 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 its possible to use the show command for having a summary of given mode, like in :
+
If these files are not available, HDT will generate some information messages to warn the user.
  
  hdt> show pci
+
The <code>memtest=<label></code> option allows users to override
  PCI: 17 devices detected                 
+
the default entry name in the current config file of Syslinux.
  PCI: Resolving names
+
The default value is set to "<tt>memtest</tt>".
  PCI: Resolving class names
+
  PCI Resolving module names               
+
  PCI                                       
+
    NB Devices  : 17       
+
  hdt>  
+
 
+
or
+
  
  hdt> show dmi   
+
<br />
  DMI Table version 2.3 found
+
=== CLI mode ===
  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.
+
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:
  
or
+
LABEL hdt
 +
  KERNEL hdt.c32
 +
  APPEND nomenu
  
  hdt> show cpu                                             
+
<br />
  CPU                       
+
== Syntax of the CLI ==
  Manufacturer :  Intel                   
+
  Product      :  Intel(R) Pentium(R) D CPU 3.00GHz                             
+
  Features    :  3000 MhZ : x86_64 64bits SMP
+
  hdt> 
+
  
or
+
This syntax may change in the future.
+
  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>
+
  
or
+
The main menu displays a "<tt>hdt>&nbsp;</tt>" prompt indicating the top menu.
  
  hdt> show syslinux  
+
Other submenus exist: pci, dmi, cpu, kernel, pxe, syslinux.  
  SYSLINUX                           
+
These topics will be discussed later.
  Bootloader : PXElinux             
+
  Version    : PXELINUX 3.74 pre1-110-g37bfb1c
+
  Version    : 842     
+
  Max API    : 35   
+
  Copyright  : Copyright (C) 1994-2009 H. Peter Anvin               
+
  hdt> 
+
  
or
+
The ''<tt>help</tt>'' command shows the available commands:
  
  hdt> show kernel                                
+
{| style=" border: 0px; padding: 0px; border-spacing: 0px; " >
  Kernel modules                                                                 
+
| clear
  (intel-rng | iTCO_wdt) # (piix | ata_piix) # i2c-i801 # tg3 # sisfb #
+
| : obviously, clear the screen
  hdt> 
+
|-
 +
| 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
 +
|}
  
or
+
Note that it is possible to use "<tt>show</tt>"
 +
in order to obtain a summary of the given mode, like in:
  
  hdt> show vesa
+
hdt> show pci
  VESA
+
PCI: 17 devices detected
  Vesa version : 3.0
+
PCI: Resolving names
  Vendor      : XGI Technology, Inc.
+
PCI: Resolving class names
  Product      : Volari Z7
+
PCI Resolving module names
  Product rev. : 1.02.04
+
  PCI
  Software rev.: Y
+
  NB Devices  : 17
  Memory (KB) : 16384                     
+
hdt>  
  Modes        : 32
+
  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 "<tt>show dmi</tt>" 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>
 +
|}
 +
 +
<br />
 
=== Summary ===
 
=== Summary ===
The "show summary" command reports a global summary of the current host :
 
  
  hdt>show summary
+
The "<tt>show summary</tt>" command reports a global summary of the current host:
  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>
+
  
 +
{|
 +
|
 +
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>
 +
|}
  
 +
<br />
 
=== PCI mode ===
 
=== PCI mode ===
From the main menu, type "pci". The prompt changes to "pci> ".
 
Today the available commands are :
 
  
==== show list====
+
From the main menu, type "pci". The prompt changes to "<tt>pci>&nbsp;</tt>".
 +
The available commands are:
  
The ''show list'' commands reports the available pci devices like in :
+
<br />
  pci> show list
+
==== 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 "<tt>show list</tt>" 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 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>====
+
<br />
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.
+
==== show device <number> ====
  
  pci> show device 12
+
The "<tt>show device <number></tt>" command reports
  PCI Device 12
+
more detailed information on the selected pci device.  
  Vendor Name  : Intel Corporation
+
Let's see a report for the PCI device number 12 from the previous example:
  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 have a running pxe rom, this pxe information the following information will be displayed :
+
  
  Mac Address   : 00:13:72:3b:ce:85
+
{|
   PXE          : Current boot device
+
|
 +
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>
 +
|}
  
If the device have a valid IRQ, an "IRQ: <irq>" line is displayed.
+
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:
  
====show irq====
+
Mac Address  : 00:13:72:3b:ce:85
HDT can show IRQs set to some PCI devices. Most of PCI devices doesn't really have a legacy IRQ.
+
PXE          : Current boot device
 +
 
 +
If the device has a valid IRQ, an "<tt>IRQ:&nbsp;<irq></tt>" line is displayed.
 +
 
 +
<br />
 +
==== 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.
 
Only valid IRQs (>0 & <255) are shown.
  
  pci>show irq
+
{|
  17 PCI devices detected
+
|
  IRQ : product
+
pci>show irq
  -------------
+
17 PCI devices detected
  11  : Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1
+
  IRQ : product
  05  : Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI Express
+
  -------------
  03  : Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI Express
+
  11  : Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1
  pci>
+
  05  : Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI Express
 +
  03  : Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI Express
 +
pci>  
 +
|}
  
 +
<br />
 
=== DMI mode ===
 
=== DMI mode ===
Inside the dmi mode, you can use the ''show list'' to display the available modules.
 
  
  dmi> show list
+
Inside the dmi mode, "<tt>show list</tt>" displays the available modules.
  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.
+
{|
 +
|
 +
dmi> show list
 +
Available DMI modules: base_board bios chassis memory bank<bank_number> cpu system
 +
|}
  
To display the content of each module, you just have to use the ''show <module>'' command like in :
+
Note that only available modules will be displayed by this command.
  dmi> show system
+
If your system doesn't have a battery, the ''battery'' module will not be reported.
  System
+
 
  Manufacturer : Dell Computer Corporation
+
To display the content of each module, use {{nowrap|1="<tt>show <module></tt>":}}
  Product Name : PowerEdge 850
+
 
  Version      : Not Specified
+
{|
  Serial      : XXXX
+
|
  UUID        : XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX
+
dmi> show system
  Wakeup Type  : Power Switch
+
System
  SKU Number  :
+
Manufacturer : Dell Computer Corporation
  Family      :
+
Product Name : PowerEdge 850
  dmi>
+
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.
 
Nothing more to say except about the memory module.
  
 +
<br />
 
==== memory display ====
 
==== memory display ====
The ''show memory'' command will display the status of each memory bank reported by the DMI table.
 
  
  dmi> show memory
+
The "<tt>show memory</tt>" command will display the
  Memory Banks
+
status of each memory bank reported by the DMI table.
  bank 00      : 512 MB DDR2@533 MHz
+
 
  bank 01      : 512 MB DDR2@533 MHz
+
dmi> show memory
  bank 02      : Free DDR2@533 MHz
+
Memory Banks
  bank 03      : Free DDR2@533 MHz
+
  bank 00      : 512 MB DDR2@533 MHz
  dmi>
+
  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, 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
  Memory Bank 1        
+
Memory Bank 1
  Form Factor  : DIMM      
+
Form Factor  : DIMM
  Type        : DDR2  
+
Type        : DDR2
  Type Detail  : Synchronous
+
Type Detail  : Synchronous
  Speed        : 533 MHz
+
Speed        : 533 MHz
  Size        : 512 MB  
+
Size        : 512 MB
  Device Set  : 1    
+
Device Set  : 1
  Device Loc.  : DIMM1_B
+
Device Loc.  : DIMM1_B
  Bank Locator : Not Specified
+
Bank Locator : Not Specified
  Total Width  : 72 bits
+
Total Width  : 72 bits
  Data Width  : 64 bits  
+
Data Width  : 64 bits
  Error        : Not Provided
+
Error        : Not Provided
  Vendor      : C100000000000000
+
Vendor      : C100000000000000
  Serial      : XXXXXXX
+
Serial      : XXXXXXX
  Asset Tag    : XXXXXXXXX
+
Asset Tag    : XXXXXXXXX
  Part Number  : XXXXXXXX
+
Part Number  : XXXXXXXX
  dmi>
+
dmi>  
  
 +
<br />
 
==== IPMI base board display ====
 
==== IPMI base board display ====
Since 0.2.6, hdt can detect if an IPMI BMC is present.
 
If yes, it displays the interface type, the version and its address.
 
  
  dmi> show ipmi
+
Since 0.2.6, HDT can detect whether an IPMI BMC is present;
  IPMI
+
if it is, it displays the interface type, the version and its address.
  Interface Type    : KCS (Keyboard Control Style)
+
  Specification Ver. : 1.5
+
  I2C Slave Address  : 0x10
+
  Nv Storage Address : 0
+
  Base Address      : 0000000000000CA8
+
  IRQ                : 0
+
  dmi>
+
  
 +
{|
 +
|
 +
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===
+
<br />
Inside the CPU mode, you can use the ''show cpu'' command to display the cpu information :
+
=== CPU mode ===
  
  cpu> show cpu
+
Inside the CPU mode, use "<tt>show cpu</tt>" to display the cpu information:
  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>
+
  
 +
{|
 +
|
 +
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>
 +
|}
 +
 +
<br />
 
=== Kernel mode ===
 
=== Kernel mode ===
The kernel mode feature the "show list" command that display for each hardware category the needed kernel modules.
 
  
  kernel> show list
+
The kernel mode features the "<tt>show list</tt>" command that displays,
  Mass storage controller : piix ata_piix
+
for each hardware category, the needed kernel modules.
  Network controller : tg3
+
  Display controller : sisfb
+
  Bridge : intel-rng iTCO_wdt
+
  Serial bus controller : i2c-i801
+
  kernel>
+
  
 +
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>
  
 +
<br />
 
=== PXE mode ===
 
=== PXE mode ===
The PXE mode display information about the pxe environment
 
  
pxe> show list                                               
+
The PXE mode displays information about the pxe environment.
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> 
+
  
 +
{|
 +
|
 +
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>
 +
|}
 +
 +
<br />
 
=== Syslinux mode ===
 
=== Syslinux mode ===
The Syslinux mode display the current syslinux versions :
 
  
syslinux> show list
+
The Syslinux mode displays the current syslinux versions:
SYSLINUX             
+
Bootloader : PXElinux         
+
Version    : PXELINUX 3.72 3.72
+
Version    : 840
+
Max API    : 30                                   
+
Copyright  : Copyright (C) 1994-2008 H. Peter Anvin
+
               
+
syslinux>
+
  
 +
{|
 +
|
 +
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>
 +
|}
 +
 +
<br />
 
=== VESA mode ===
 
=== VESA mode ===
The syslinux mode can display a synthesis of the vesa configuration :
 
  
  vesa> show list
+
The vesa mode displays a synthesis of the vesa configuration:
  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 the ''show modes'' command.
+
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 "<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.
  vesa> show modes
+
{|
  ResX x ResY x Bits : Kernel Mode : Vesa Mode
+
|
  ---------------------------------------------
+
vesa> show modes
    800  600      4      770        0x0102
+
  ResX x ResY x Bits : Kernel Mode : Vesa Mode
    640  480      8      769        0x0101
+
---------------------------------------------
    640  400      8      768        0x0100
+
  800  600      4      770        0x0102
    800  600      8      771        0x0103
+
  640  480      8      769        0x0101
  1024  768      4      772        0x0104
+
  640  400      8      768        0x0100
  1024  768      8      773        0x0105
+
  800  600      8      771        0x0103
  1280  1024      8      775        0x0107
+
  1024  768      4      772        0x0104
  1600  1200      8      816        0x0130
+
  1024  768      8      773        0x0105
  1600  1200    16      817        0x0131
+
  1280  1024      8      775        0x0107
    320  200    15      781        0x010d
+
  1600  1200      8      816        0x0130
    320  200    16      782        0x010e
+
  1600  1200    16      817        0x0131
    640  480    15      784        0x0110
+
  320  200    15      781        0x010d
    640  480    16      785        0x0111
+
  320  200    16      782        0x010e
    800  600    15      787        0x0113
+
  640  480    15      784        0x0110
    800  600    16      788        0x0114
+
  640  480    16      785        0x0111
  1024  768    15      790        0x0116
+
  800  600    15      787        0x0113
  1024  768    16      791        0x0117
+
  800  600    16      788        0x0114
  1280  1024    15      793        0x0119
+
  1024  768    15      790        0x0116
  1280  1024    16      794        0x011a
+
  1024  768    16      791        0x0117
    320  240      8      818        0x0132
+
  1280  1024    15      793        0x0119
    400  300      8      819        0x0133
+
  1280  1024    16      794        0x011a
    512  384      8      820        0x0134
+
  320  240      8      818        0x0132
    320  240    16      821        0x0135
+
  400  300      8      819        0x0133
    400  300    16      822        0x0136
+
  512  384      8      820        0x0134
    512  384    16      823        0x0137
+
  320  240    16      821        0x0135
    320  200      8      824        0x0138
+
  400  300    16      822        0x0136
    640  400    16      825        0x0139
+
  512  384    16      823        0x0137
    640  480    32      826        0x013a
+
  320  200      8      824        0x0138
    800  600    32      827        0x013b
+
  640  400    16      825        0x0139
  1024  768    32      828        0x013c
+
  640  480    32      826        0x013a
  1280  1024    32      829        0x013d
+
  800  600    32      827        0x013b
  1600  1200    32      830        0x013e
+
  1024  768    32      828        0x013c
  vesa>
+
  1280  1024    32      829        0x013d
 +
  1600  1200    32      830        0x013e
 +
vesa>  
 +
|}
 +
 
 +
<br />
 +
== History ==
 +
 
 +
Syslinux 3.74 features HDT 0.2.7.
 +
 
 +
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.
  
 +
<br />
 
== Roadmap ==
 
== Roadmap ==
=== 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/?p=users/erwan/hdt.git;a=commit;h=98bd2d140d31e5ce4b83589a546a70183a22b4e1 0.3.1] ===
+
=== Release 0.3.0 ===
* 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/commit/?id=baaa1ac2e15a3ab2152bc510a8059c0cd763b34d Merging Pam's branch to feature the new CLI]
* Adding more coherence about screen clearing -> [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=9ed3df89eb355c0e55d1157961516f02a4d1836f commit]
+
* 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 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/?p=users/erwan/hdt.git;a=commit;h=6528356ce321942cf2d1060f84f4fc5f73408249 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]
+
* Using NULL to end CLI's structures -> [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=780c8f8361ff8f6ebd3b4b4a82e991c81c0c3562 commit]
+
  
=== 0.3.2 ===
+
=== [http://git.zytor.com/users/erwan/hdt.git/tag/?h=hdt-0.3.1 Release 0.3.1] ===
* Adding hotkey for VPD (menu) [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=ecc21733bb9be5b9b8185389ab7cffe9d6f2e1ff commit]
+
* [http://git.zytor.com/users/erwan/hdt.git/commit/?id=9ed3df89eb355c0e55d1157961516f02a4d1836f Adding more coherence in the more_printf() usage]
* Menu: Don't display non populated VPD' items [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=3058efaac90bbc57c1e332a80d76094382cec138 commit]
+
* [http://git.zytor.com/users/erwan/hdt.git/commit/?id=9ed3df89eb355c0e55d1157961516f02a4d1836f Adding more coherence about screen clearing]
* Adding hdt> show vpd [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=fdd21ff85b3fa41641f711311f7e62081442dbe2 commit]
+
* Adding VPD support; <!--
* Adding disk's partition detection [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=9c5868d154656e3832822dd24dd9701fe55eb2a4 commit]
+
--> [http://git.zytor.com/users/erwan/hdt.git/commit/?id=c31b535638176cf076b8a5adaac6f711cea0eb41 commit], <!--
* Adding a cli mode for detecting disks [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=81910f64ece4b1ca9e7e1ff276d673ef2321b1ea commit]
+
--> [http://git.zytor.com/users/erwan/hdt.git/commit/?id=569617a6dceca02dea5c72f48911f8987a34f6d4 commit], <!--
* Using modules.alias to manage kernel modules [http://git.zytor.com/?p=users/erwan/hdt.git;a=commit;h=db265a9a03849966ec9183f675d539fc3b0d6ecd commit]
+
--> [http://git.zytor.com/users/erwan/hdt.git/commit/?id=13c60849867ecc575b8f28dc259705b772611402 commit]
* Adding filesystem detection
+
* 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/commit/?id=6528356ce321942cf2d1060f84f4fc5f73408249 commit]
 +
* Some tools report strings featuring multiple spaces; <!--
 +
--> [http://git.zytor.com/users/erwan/hdt.git/commit/?id=5f036aa1ec3557f444fb8c49f782d31dd53979e7 Removing multiple spaces]
 +
* [http://git.zytor.com/users/erwan/hdt.git/commit/?id=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/commit/?id=ecc21733bb9be5b9b8185389ab7cffe9d6f2e1ff Adding hotkey for VPD (menu)]
 +
* [http://git.zytor.com/users/erwan/hdt.git/commit/?id=3058efaac90bbc57c1e332a80d76094382cec138 Menu: Don't display non populated VPD' items]
 +
* [http://git.zytor.com/users/erwan/hdt.git/commit/?id=fdd21ff85b3fa41641f711311f7e62081442dbe2 Adding hdt&gt; show vpd]
 +
* [http://git.zytor.com/users/erwan/hdt.git/commit/?id=9c5868d154656e3832822dd24dd9701fe55eb2a4 Adding disk's partition detection]
 +
* [http://git.zytor.com/users/erwan/hdt.git/commit/?id=81910f64ece4b1ca9e7e1ff276d673ef2321b1ea Adding a cli mode for detecting disks]
 +
* [http://git.zytor.com/users/erwan/hdt.git/commit/?id=db265a9a03849966ec9183f675d539fc3b0d6ecd Using modules.alias to manage kernel modules]
 +
* [http://git.zytor.com/users/erwan/hdt.git/commit/?id=d222f57d5fce7908f7cca3f32546ac789e8b3f4d Menu must use 25 lines instead of 24]
 +
* [http://git.zytor.com/users/erwan/hdt.git/commit/?id=c9621dba0331d0024f9c43fc2a5a9f91decded67 Removing dmi&gt; show memory clear screen]
 +
 
 +
=== [http://git.zytor.com/users/erwan/hdt.git/tag/?h=hdt-0.3.3 Release 0.3.3] ===
 +
* Adding more memory information (mostly integrating memdump.c32) (done with several commits)
 +
* [http://git.zytor.com/users/erwan/hdt.git/commit/?id=3e5b7b7a03bc8264c2b68b2a3a174ec548b65f37 Fixing Backspace behavior]
 +
* [http://git.zytor.com/users/erwan/hdt.git/commit/?id=16da4bf8a346e3fc7abf75d0ad903a088301dccc Cursor is blinking]
 +
* [http://git.zytor.com/users/erwan/hdt.git/commit/?id=b7817ae596d1f9b79d027210f0e7958da3516cb6 Prevent cursor from disappearing]
 +
* [http://git.zytor.com/users/erwan/hdt.git/commit/?id=3e761dad4cfec0f2dcafb859fb13b8692daf8882 Optimizing screen usage in "show help"]
  
=== 0.3.3 ===
+
=== [http://git.zytor.com/users/erwan/hdt.git/tag/?h=hdt-0.3.4 Release 0.3.4] ===
 +
* Fixing int10/13 conflict
 
* Improving menu's layout to maximize display usage
 
* Improving menu's layout to maximize display usage
 
* Adding more external benchmark/diagnose tools (cpu/disks/...)
 
* Adding more external benchmark/diagnose tools (cpu/disks/...)
* Adding more memory information (mostly integrating memdump.c32)
 
 
* Adding more Fn keys (F1-F12)
 
* Adding more Fn keys (F1-F12)
 
* 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 mbr detection (grab info at <!--
 +
--> (older) [http://sf.net/p/bootinfoscript/] or <!--
 +
--> (newer) {{nowrap|1=[http://github.com/arvidjaar/bootinfoscript] )}}
  
=== 0.3.4 ===
+
=== Release 0.4.0 ===
 
+
=== 0.4.0 ===
+
 
* Adding a saving inventory feature
 
* Adding a saving inventory feature
 
* Adding IPMI
 
* Adding IPMI
  
 +
<br />
 
== Development ==
 
== Development ==
hdt is currently under development here:
 
http://git.zytor.com/?p=users/erwan/hdt.git
 
  
 +
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.
 +
 +
<br />
 
== Mailing List ==
 
== Mailing List ==
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]
+
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].
  
 +
<br />
 
== 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 ===
Current versions can't save a report as we can't reach a writable storage.
+
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.
+
When using PXELINUX, we can imagine using a tftp put method.  
 
Using GPXELINUX, we can imagine using some http/ftp put methods.
 
Using GPXELINUX, we can imagine using some http/ftp put methods.
  
 
=== 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 555: Line 819:
  
 
=== 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 18:36, 9 May 2020


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. It provides a command line interface and a semi-graphical menu mode for browsing.

HDT can inspect multiple subsystems:

  • CPU (via cpuid)
  • PCI
  • Memory
    • e820 memory map
    • e801 memory map
    • 8800h memory size
  • DMI
    • Memory modules
    • BIOS
    • Motherboard
    • IPMI base board
    • Chassis
    • Batteries
    • CPU
    • System
    • Security
    • System reset
  • 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.


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_alias=your_path/modules.alias
  • modules_pcimap=your_path/modules.pcimap
  • pciids=your_path/pci.ids
  • memtest=label_name

Optionally, the files can be gzipped.

This can be configured as:

LABEL hdt
 KERNEL hdt.c32
 APPEND modules_alias=images/modules.alias modules_pcimap=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_pcimap=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> 


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.


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.