diff -Nru openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp openjdk/hotspot/src/os/linux/vm/os_linux.cpp
--- openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp	2010-09-01 01:23:45.000000000 +0100
+++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp	2010-09-19 14:41:48.029975576 +0100
@@ -1888,6 +1888,37 @@
   return true;
 }
 
+bool _print_lsb_file(const char* filename, outputStream* st) {
+  int fd = open(filename, O_RDONLY);
+  if (fd == -1) {
+     return false;
+  }
+
+  char buf[512], *d_i, *d_r, *d_c;
+  int bytes;
+
+  if ((bytes = read(fd, buf, sizeof(buf)-1)) == sizeof(buf)-1) {
+     close(fd);
+     return false;
+  }
+  close(fd);
+
+  buf[bytes] = '\n';
+  buf[bytes+1] = '\0';
+  d_i = strstr(buf, "DISTRIB_ID=");
+  d_r = strstr(buf, "DISTRIB_RELEASE=");
+  d_c = strstr(buf, "DISTRIB_CODENAME=");
+  if (!d_i || !d_r || !d_c) {
+     return false;
+  }
+  d_i = strchr(d_i, '=') + 1;  *strchrnul(d_i, '\n') = '\0';
+  d_r = strchr(d_r, '=') + 1;  *strchrnul(d_r, '\n') = '\0';
+  d_c = strchr(d_c, '=') + 1;  *strchrnul(d_c, '\n') = '\0';
+  st->print("%s %s (%s)", d_i, d_r, d_c);
+
+  return true;
+}
+
 void os::print_dll_info(outputStream *st) {
    st->print_cr("Dynamic libraries:");
 
@@ -1916,6 +1947,7 @@
       !_print_ascii_file("/etc/SuSE-release", st) &&
       !_print_ascii_file("/etc/turbolinux-release", st) &&
       !_print_ascii_file("/etc/gentoo-release", st) &&
+      !_print_lsb_file("/etc/lsb-release", st) &&
       !_print_ascii_file("/etc/debian_version", st) &&
       !_print_ascii_file("/etc/ltib-release", st) &&
       !_print_ascii_file("/etc/angstrom-version", st)) {
