diff --git a/libc/libc.cc b/libc/libc.cc
index 6599d84a8795f342492d179d2160a6c11c499eca..481687ab6ce00a49c4d5af06015a7ef637c4eca2 100644
--- a/libc/libc.cc
+++ b/libc/libc.cc
@@ -7,6 +7,7 @@
 #include <limits>
 #include <sys/resource.h>
 #include <pwd.h>
+#include <sys/utsname.h>
 
 int libc_error(int err)
 {
@@ -179,3 +180,14 @@ int getpwuid_r(uid_t uid, struct passwd *pwd,
     *result = pwd;
     return 0;
 }
+
+int uname(struct utsname* u)
+{
+    // lie, to avoid confusing the payload.
+    strcpy(u->sysname, "Linux");
+    strcpy(u->nodename, "home");
+    strcpy(u->release, "3.7");
+    strcpy(u->version, "#1 SMP");
+    strcpy(u->machine, "x86_64");
+    return 0;
+}