Типичный подход из командной строки - использовать dmidecode или lshw, которые читают область BIOS DMI и анализируют серийные номера. Однако это не будет работать, если ваше приложение не запускается от имени пользователя root, так как оно должно иметь возможность читать /dev/mem.
Вы можете получить часть этой информации через HAL. Я не совсем уверен, как сделать это напрямую через HAL, но вы можете сделать это с помощью команды lshal. Под одним из показанных устройств вы должны увидеть запись для «system.hardware.serial» и «system.hardware.uuid» - это серийный номер материнской платы и UUID.
Вы можете запросить HAL из Bash следующим образом:
PC=`hal-find-by-property --key info.product --string Computer`
PC_UUID=`hal-get-property --udi $PC --key system.hardware.uuid`
PC_SERIAL=`hal-get-property --udi $PC --key system.hardware.serial`
На старых машинах вместо этих ключей могут быть "smbios.system.uuid" и "smbios.system.serial". Кроме того, имейте в виду, что эта информация может существовать не на всех машинах или может быть ложной. У меня есть по крайней мере одна материнская плата с UUID, состоящим полностью из 1, а другая с серийным номером процессора, который почти полностью равен нулю.