操作系统级别是否有可用的序列号?


12

我想确定哪个RaspberryPI硬件实例正在我的网络上启动。

我已经计划在更大的解决方案中将其中很多(不只是10个)用作客户端,但是我想为所有人重用SD映像。

除非我将某种串行代码放在操作系统中某个文件中,否则有什么办法可以相互识别它们?

顺便说一句。我使用MONO / C#进行编程,但我只是想知道PI是否以某种方式具有硬件序列号?

Answers:


3

在C#Mono中,我正在这样做:

private string GetRpiSerial()
{
    CommandSync("cat /proc/cpuinfo | grep Serial | cut -d ':' -f 2 > /home/pi/serial.txt");

    using (var sr = new StreamReader("/home/pi/serial.txt"))
    {
        return sr.ReadLine().Trim();
    }
}

public static void CommandSync(string cmd, string args)
{
    var info = new ProcessStartInfo();
    info.FileName = "/bin/bash";
    info.Arguments = string.Format("-c \"sudo {0} {1}\"", cmd, args);
    info.UseShellExecute = false;
    info.RedirectStandardOutput = true;

    var p = Process.Start(info);
    p.WaitForExit();
}

并在任何地方检索:

var rpiSerial = GetRpiSerial();

这个答案甚至比Remo的原始答案还要好,因为它包含了我最初要求的C#解决方案。你们非常高兴为我们所有人生产这一产品。
BerggreenDK

13

您可以使用与购买MPEG许可证相同的号码。

引用MPEG-2许可证密钥

要找到您的序列号,请cat /proc/cpuinfo在命令行中键入,如下所示:

pi@raspberrypi:~$ cat /proc/cpuinfo

Processor       : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS        : 697.95
Features        : swp half thumb fastmult vfp edsp java tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xb76
CPU revision    : 7
Hardware        : BCM2708
Revision        : 1000002
Serial          : 000000000000000d

Serial 是您要寻找的。


啊,好主意。您是否有关于如何从Mono检索此消息的任何线索?
BerggreenDK

唯一的问题是客户/用户仅出于此目的就必须购买MPEG许可证。
BerggreenDK

@BerggreenDK。不明白你的意思。与cpuinfo命令一起显示的序列号是CPU的序列号。无论您是否拥有MPEG许可证,都在那里。
Remo.D

1
不,以“ 00000 ... d”为例。尝试在覆盆子上做,您会得到的。
Remo.D

1
它是任何Raspberry(我有两个)唯一的硬件代码,它不是基于文件的。如果您从Virtual Box获得它,我会感到惊讶。
Remo.D

6

您可以使用以太网适配器的MAC地址。使用类似这样的语句将其提取到变量中:

mysn=`ifconfig eth0 | grep HWaddr |sed -e's/.*HWaddr\s\(\S*\).*/\1/'`

一个很好的建议。如果我只能看到我应该如何从MONO中撤出这一点。但是这个主意很棒。完全忘了考虑板载LAN。MAC号确实足够。只需要弄清楚如何从System.Net库中获取该信息即可。
BerggreenDK


1
请注意,您可以修改树莓的MAC地址。仅当您不需要绝对确定Raspberry Pi的身份时,这才是可行的解决方案。可通过cpuinfo获取的CPU序列号不可更改。
Remo.D

好的,那也很重要。是的,可以在某些LAN硬件上更改MAC。确实如此。但是我很担心有人会克隆我的SDCARD,然后在我不知情的情况下将它用于多个客户。这对于我的解决方案体系结构是不利的。
BerggreenDK

抱歉,@ TomG我真的采纳了您的想法,并且将其用作“后备”来检测那些没有Raspberry PI硬件的设备,因为我的客户端程序将是跨平台的。在这种情况下,我希望能给出两个答案。
BerggreenDK
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.