diff --git a/src/cmd/dist/metadata.go b/src/cmd/dist/metadata.go
index f0a125f..76f108e 100644
--- a/src/cmd/dist/metadata.go
+++ b/src/cmd/dist/metadata.go
@@ -12,6 +12,7 @@
 package main
 
 import (
+	"cmd/internal/osinfo"
 	"fmt"
 	"internal/sysinfo"
 	"runtime"
@@ -20,5 +21,13 @@
 func logMetadata() error {
 	fmt.Printf("# GOARCH: %s\n", runtime.GOARCH)
 	fmt.Printf("# CPU: %s\n", sysinfo.CPU.Name())
+
+	fmt.Printf("# GOOS: %s\n", runtime.GOOS)
+	ver, err := osinfo.Version()
+	if err != nil {
+		return fmt.Errorf("error determining OS version: %v", err)
+	}
+	fmt.Printf("# OS Version: %s\n", ver)
+
 	return nil
 }
diff --git a/src/cmd/internal/osinfo/doc.go b/src/cmd/internal/osinfo/doc.go
new file mode 100644
index 0000000..c2f74be
--- /dev/null
+++ b/src/cmd/internal/osinfo/doc.go
@@ -0,0 +1,6 @@
+// Copyright 2021 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package osinfo provides OS metadata information.
+package osinfo
diff --git a/src/cmd/internal/osinfo/os_js.go b/src/cmd/internal/osinfo/os_js.go
new file mode 100644
index 0000000..8e86464
--- /dev/null
+++ b/src/cmd/internal/osinfo/os_js.go
@@ -0,0 +1,18 @@
+// Copyright 2021 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//go:build js
+
+package osinfo
+
+import (
+	"fmt"
+)
+
+// Version returns the OS version name/number.
+func Version() (string, error) {
+	// TODO(prattmic): Does wasm have any version/runtime detection
+	// functionality?
+	return "", fmt.Errorf("unimplemented")
+}
diff --git a/src/cmd/internal/osinfo/os_plan9.go b/src/cmd/internal/osinfo/os_plan9.go
new file mode 100644
index 0000000..ad1d324
--- /dev/null
+++ b/src/cmd/internal/osinfo/os_plan9.go
@@ -0,0 +1,21 @@
+// Copyright 2021 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//go:build plan9
+
+package osinfo
+
+import (
+	"os"
+)
+
+// Version returns the OS version name/number.
+func Version() (string, error) {
+	b, err := os.ReadFile("/dev/osversion")
+	if err != nil {
+		return "", err
+	}
+
+	return string(b), nil
+}
diff --git a/src/cmd/internal/osinfo/os_unix.go b/src/cmd/internal/osinfo/os_unix.go
new file mode 100644
index 0000000..4587cb2
--- /dev/null
+++ b/src/cmd/internal/osinfo/os_unix.go
@@ -0,0 +1,36 @@
+// Copyright 2021 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris
+
+package osinfo
+
+import (
+	"bytes"
+
+	"golang.org/x/sys/unix"
+)
+
+func utsString(b []byte) string {
+	i := bytes.IndexByte(b, 0)
+	if i == -1 {
+		return string(b)
+	}
+	return string(b[:i])
+}
+
+// Version returns the OS version name/number.
+func Version() (string, error) {
+	var uts unix.Utsname
+	if err := unix.Uname(&uts); err != nil {
+		return "", err
+	}
+
+	sysname := utsString(uts.Sysname[:])
+	release := utsString(uts.Release[:])
+	version := utsString(uts.Version[:])
+	machine := utsString(uts.Machine[:])
+
+	return sysname + " " + release + " " + version + " " + machine, nil
+}
diff --git a/src/cmd/internal/osinfo/os_windows.go b/src/cmd/internal/osinfo/os_windows.go
new file mode 100644
index 0000000..05fab9b
--- /dev/null
+++ b/src/cmd/internal/osinfo/os_windows.go
@@ -0,0 +1,19 @@
+// Copyright 2021 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//go:build windows
+
+package osinfo
+
+import (
+	"fmt"
+
+	"golang.org/x/sys/windows"
+)
+
+// Version returns the OS version name/number.
+func Version() (string, error) {
+	major, minor, patch := windows.RtlGetNtVersionNumbers()
+	return fmt.Sprintf("%d.%d.%d", major, minor, patch), nil
+}
