Detecting Underlying Linux Distro
Novell Cool Solutions: Feature
By Arun Singh
|
Digg This -
Slashdot This
Posted: 11 Oct 2004 |
Arun Singh
Senior Software Engineer
Novell Developer Services
If you are the owner of the system, then you know which Linux is installed and running. This article will help you to understand how to determine which Linux distribution is installed. You can incorporate this into your application to detect Linux distro.
System Command: uname
Most of the Linux systems provide uname to detect system released information.
Release Information File
Most of the Linux distributions maintain release information file in an/etc/directory. Here is the list of files on some of the well known Linux distributions:
| Novell SUSE | /etc/SUSE-release |
| Red Hat | /etc/redhat-release, /etc/redhat_version |
| Fedora | /etc/fedora-release |
| Slackware | /etc/slackware-release, /etc/slackware-version |
| Debian | /etc/debian_release, /etc/debian_version, |
| Mandrake | /etc/mandrake-release |
| Yellow dog | /etc/yellowdog-release |
| Sun JDS | /etc/sun-release |
| Solaris/Sparc | /etc/release |
| Gentoo | /etc/gentoo-release |
| UnitedLinux | /etc/UnitedLinux-release |
| ubuntu | /etc/lsb-release |
Sample Script
Using system command uname and contents of the release files you can write scripts of programs to help your software to detect distribution.
#!/bin/sh
# Detects which OS and if it is Linux then it will detect which Linux Distribution.
OS=`uname -s`
REV=`uname -r`
MACH=`uname -m`
GetVersionFromFile()
{
VERSION=`cat $1 | tr "\n" ' ' | sed s/.*VERSION.*=\ // `
}
if [ "${OS}" = "SunOS" ] ; then
OS=Solaris
ARCH=`uname -p`
OSSTR="${OS} ${REV}(${ARCH} `uname -v`)"
elif [ "${OS}" = "AIX" ] ; then
OSSTR="${OS} `oslevel` (`oslevel -r`)"
elif [ "${OS}" = "Linux" ] ; then
KERNEL=`uname -r`
if [ -f /etc/redhat-release ] ; then
DIST='RedHat'
PSUEDONAME=`cat /etc/redhat-release | sed s/.*\(// | sed s/\)//`
REV=`cat /etc/redhat-release | sed s/.*release\ // | sed s/\ .*//`
elif [ -f /etc/SUSE-release ] ; then
DIST=`cat /etc/SUSE-release | tr "\n" ' '| sed s/VERSION.*//`
REV=`cat /etc/SUSE-release | tr "\n" ' ' | sed s/.*=\ //`
elif [ -f /etc/mandrake-release ] ; then
DIST='Mandrake'
PSUEDONAME=`cat /etc/mandrake-release | sed s/.*\(// | sed s/\)//`
REV=`cat /etc/mandrake-release | sed s/.*release\ // | sed s/\ .*//`
elif [ -f /etc/debian_version ] ; then
DIST="Debian `cat /etc/debian_version`"
REV=""
fi
if [ -f /etc/UnitedLinux-release ] ; then
DIST="${DIST}[`cat /etc/UnitedLinux-release | tr "\n" ' ' | sed s/VERSION.*//`]"
fi
OSSTR="${OS} ${DIST} ${REV}(${PSUEDONAME} ${KERNEL} ${MACH})"
fi
echo ${OSSTR}
Sample Program
Using system command uname and contents of the release files you can write your own program to detect the OS or which Linux distribution is installed. You can refer to this page to get started.
Conclusion
With the help of system command uname and release file you can make your application smarter in detecting the Linux Distribution.
Novell Cool Solutions (corporate web communities) are produced by WebWise Solutions. www.webwiseone.com

