However, the current Elasticsearch source only supports seccomp on x86 and amd84 platforms. When starting Elasticsearch on an ARM platform, you will see bootstrap failed to install seccomp filters:
[2016-06-15 22:11:00,078][WARN ][bootstrap ] unable to install syscall filter: seccomp unavailable: 'arm' architecture unsupported
To add support for ARM platforms, it is just a matter of finding the correct audit code of ARM architecture and the appropriate syscall number of blocked functions.
Here is the code change required:
diff --git a/core/src/main/java/org/elasticsearch/bootstrap/Seccomp.java b/core/src/main/java/org/elasticsearch/bootstrap/Seccomp.java
index 46908e6..d94c848 100644
--- a/core/src/main/java/org/elasticsearch/bootstrap/Seccomp.java
+++ b/core/src/main/java/org/elasticsearch/bootstrap/Seccomp.java
@@ -243,6 +243,9 @@ final class Seccomp {
Map<String,Arch> m = new HashMap<>();
m.put("amd64", new Arch(0xC000003E, 0x3FFFFFFF, 57, 58, 59, 322, 317));
m.put("i386", new Arch(0x40000003, 0xFFFFFFFF, 2, 190, 11, 358, 354));
+ // ARM syscall number ref based on kernel 4.6
+ // https://github.com/torvalds/linux/blob/v4.6/arch/arm/kernel/calls.S
+ m.put("arm", new Arch(0x40000028, 0xFFFFFFFF, 2, 190, 11, 387, 383));
ARCHITECTURES = Collections.unmodifiableMap(m);
}
Also forked the Elasticsearch github source for that.