给定一个装有 Linux 的 SD 卡,如何找出它是哪个平台和版本?

给定一个装有 Linux 的 SD 卡,如何找出它是哪个平台和版本?

我拥有多个使用装有 Linux 的 SD 卡的不同平台:Raspberry Pi、O-Droid、SabreLite、LS1021A、Panda、LattePanda……

我找到了三张 SD 卡,在 Linux PC 上读取它们时,我可以看到文件系统。但我显然无法执行uname -a- 我没有启动它们,因为我不知道将它们插入哪个系统。

有人能建议一种合理可靠但又简单的方法,至少可以知道它们适用于哪个系统,如果不知道它们的具体版本?我希望有一个我可以访问的合理标准文件,恰好提到这些关键细节。

我可以想象需要设置一个每个系统表:

  • “对于 RPi,请查看此处”
  • “对于 SabreLite,请查看此处”
  • “对于 1021A,请查看此处”

但我希望不是!

答案1

我实际上没有使用过 RPi 以外的任何东西,但我将从以下方面开始:

  1. 找到内核文件 (vmlinuz) – 通常位于单独的“启动”分区中 – 并运行file它。它会显示与 uname 大致相同的版本信息。(这意味着,如果它只是通用的 Raspbian,那么两者都同样没用。)

  2. 在同一个“启动”分区中查找设备树数据(*.dtb 文件)。将它们转换回文本格式,然后dtc -I dtb -O dts在“兼容”字段中查找平台名称。

  3. 查看主文件系统的 /var/log(可能使用journalctl --directory=)。早期启动日志将包含与平台相关的消息。

答案2

假设没有安装多个体系结构,则应该有一个/lib名为 egx86_64-linux-gnu或 的目录arm-linux-gnueabihf。因此,要获得有关体系结构的提示,应该这样做:

find <mountpoint>/lib -maxdepth 1 -type d -name '*linux*'

然后列出可能的内核版本/lib/modules- 您可能只想按数字排序以获取最新版本。

ls <mountpoint>/lib/modules | sort -rn | head -1

操作系统名称和版本通常以 命名/etc/issue

相关内容