Ubuntu如何知道笔记本电脑的品牌和型号?


33

我刚刚在新笔记本电脑上安装了15.04,安装程序建议使用计算机名称carl-lenovo-g710

笔记本电脑确实是联想G710,但是安装程序是怎么知道的呢?

我尝试了sudo lshw | grep -i product,结果是:

product: Intel(R) Pentium(R) CPU 3550M @ 2.30GHz
product: Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller
product: 4th Gen Core Processor Integrated Graphics Controller
product: Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller
product: 8 Series/C220 Series Chipset Family USB xHCI
product: xHCI Host Controller
product: xHCI Host Controller
product: Flash Card Reader/Writer
product: Card  Reader
product: Lenovo EasyCamera
product: 8 Series/C220 Series Chipset Family MEI Controller #1
product: 8 Series/C220 Series Chipset Family USB EHCI #2
product: EHCI Host Controller
product: 8 Series/C220 Series Chipset High Definition Audio Controller
product: 8 Series/C220 Series Chipset Family PCI Express Root Port #2
product: QCA9565 / AR9565 Wireless Network Adapter
product: 8 Series/C220 Series Chipset Family PCI Express Root Port #3
product: QCA8172 Fast Ethernet
product: 8 Series/C220 Series Chipset Family USB EHCI #1
product: EHCI Host Controller
product: HM86 Express LPC Controller
product: 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode]
product: 8 Series/C220 Series Chipset Family SMBus Controller
product: DVDRAM GTA0N
product: ST1000LM024 HN-M

然后,我尝试了一下sudo lshw | grep -i 710,但没有发现任何问题。

所以lshw不知道品牌和型号。那么,这些信息存储在哪里?


1
也许是dmidecode?
hanetzer

为了澄清,您想知道在系统中哪里找到了信息/什么可以检测到它?还是如何自己找到这些信息?
2015年

@HiltonShumway在系统中找到信息的位置。
卡尔·H

Answers:


37

Ubuntu的安装程序被称为无处不在。该更新日志无处不在2.3.18提到

"Use dmidecode to get a more unique suffix for the hostname (LP: #628087)."

确切的python代码是:

def dmimodel():
    model = ''
    kwargs = {}
    if os.geteuid() != 0:
        # Silence annoying warnings during the test suite.
        kwargs['stderr'] = open('/dev/null', 'w')
    try:
        proc = subprocess.Popen(
            ['dmidecode', '--quiet', '--string', 'system-manufacturer'],
            stdout=subprocess.PIPE, universal_newlines=True, **kwargs)
        manufacturer = proc.communicate()[0]
        if not manufacturer:
            return
        manufacturer = manufacturer.lower()
        if 'to be filled' in manufacturer:
            # Don't bother with products in development.
            return
        if 'bochs' in manufacturer or 'vmware' in manufacturer:
            model = 'virtual machine'
            # VirtualBox sets an appropriate system-product-name.
        else:
            if 'lenovo' in manufacturer or 'ibm' in manufacturer:
                key = 'system-version'
            else:
                key = 'system-product-name'
            proc = subprocess.Popen(
                ['dmidecode', '--quiet', '--string', key],
                stdout=subprocess.PIPE,
                universal_newlines=True)
            model = proc.communicate()[0]
        if 'apple' in manufacturer:
            # MacBook4,1 - strip the 4,1
            model = re.sub('[^a-zA-Z\s]', '', model)
        # Replace each gap of non-alphanumeric characters with a dash.
        # Ensure the resulting string does not begin or end with a dash.
        model = re.sub('[^a-zA-Z0-9]+', '-', model).rstrip('-').lstrip('-')
        if model.lower() == 'not-available':
            return
        if model.lower() == "To be filled by O.E.M.".lower():
            return
    except Exception:
        syslog.syslog(syslog.LOG_ERR, 'Unable to determine the model from DMI')
    finally:
        if 'stderr' in kwargs:
            kwargs['stderr'].close()
    return model

LP:#628087

编辑:您可以通过下载以下代码来浏览自己的代码:

cd /tmp
apt-get source ubiquity

1
那么,dmidecode从何处获得此信息?
–ζ

9
@hexafraction它由PC生产商(在这种情况下为Lenovo)存储在只读存储器中,并且可通过名为DMI的接口供系统管理员使用。就是这样dmidecode。Windows也可以知道。
2015年

20

dmidecode显示有关系统的所有信息。使用命令看一下:

sudo dmidecode | grep -A 9 "System Information"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.