web-dev-qa-db-ja.com

組み込みLinuxシステムがuClinuxを実行しているかどうかの判断

ARM Linuxシステムでカーネルバージョン2.4を実行していますが、プロセッサにメモリ管理ユニットがあるかどうかわからないので、システムがuClinuxカーネルを実行しているかどうかを確認するにはどうすればよいですか? Vanilla Linuxカーネル?システムにunameがありません。

1
Billy

2.4は name システムコールをサポートしていると思います。これを試して

/*
 * 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