use uname for BSD detection, seems more cross platform