确定嵌入式Linux系统是否运行uClinux

确定嵌入式Linux系统是否运行uClinux

我有一个运行内核版本 2.4 的 ARM Linux 系统,但我不确定处理器是否有内存管理单元,那么我如何判断系统运行的是 uClinux 内核还是 vanilla Linux 内核?系统没有uname

答案1

我认为2.4支持乌纳梅系统调用。尝试这个

/*
 * Author: NagaChaitanya Vellanki
 */
#include <sys/utsname.h>
#include <stdio.h>
#include <errno.h>

int main() {
  struct utsname buf;
  if(uname(&buf) != -1) {
    printf("Operating System name: %s\n", buf.sysname);
    printf("Node name: %s\n", buf.nodename);
    printf("Release: %s\n", buf.release);
    printf("Version: %s\n", buf.version);
    printf("Machine: %s\n", buf.machine);
  } else {
    printf("Error: %s\n", strerror(errno));
  }
  return 0;
}

编译

  gcc -o uname uname.c

我的树莓派上的示例输出

./uname                                                                                                     
Operating System name: Linux
Node name: naga-playground
Release: 4.4.11-v7+
Version: #888 SMP Mon May 23 20:10:33 BST 2016
Machine: armv7l

如果按照手册页的建议可用,请尝试这些

cat /proc/sys/kernel/osrelease                                                                              
4.4.11-v7+

cat /proc/sys/kernel/ostype                                                                                 
Linux

cat /proc/sys/kernel/version                                                                                
#888 SMP Mon May 23 20:10:33 BST 2016

相关内容