GNU Userland

This topic was published by and viewed 2459 times since "". The last page revision was "".

Viewing 1 post (of 1 total)
  • Author
    Posts

  • DevynCJohnson
    Keymaster
    • Topics - 437
    • @devyncjohnson

    In many operating systems, there are two parts - the userland (user space) and kernel space. In Linux, the userland is GNU. Applications reside in the userland while the Linux kernel (and most drivers) reside in the kernel space. GNU is an open-source userland that contains many applications and utilities. The GNU Project is a programming collaboration for the GNU userland and related GNU software.

    GNU is the primary userland used in nearly all Linux distros. GNU is also used in Hurd, GNU/kFreeBSD, GNU/NetBSD, Nexenta OS, OpenSolaris, and other operating systems.

    The GNU userland contains system daemons, user applications, the GUI system (X11, KDE, etc.), and various libraries (such as SDL, Mesa, GNUstep, glibc, etc.). FUSE (Filesystem in Userspace) filesystems also run in the userland. System calls are in the kernel space, but they help join the kernel space and userland by providing a means of communication.

    The GNU userland has a special part called the "GNU Coreutils" (https://www.gnu.org/software/coreutils/). This is a set of utilities that provide essential file and shell tools. Example components include rm, cat, ls, cp, etc. However, do not confuse "util-linux" with the GNU Coreutils. Both exist in the userland, but util-linux is not a part of the official GNU userland. Some tools that are part of util-linux include mcookie, kill, more, cfdisk, dmesg, etc.

    The "GNU Binutils" (https://www.gnu.org/software/binutils) is a collection of programming tools for binary/compiled programs.

    The GNU build system (or Autotools) is a set of programming tools for setting up source code for Unixoid systems. Autotools is part of the GNU Toolchain. The GNU Toolchain is a large collection of programming tools such as the GNU Compiler Collection (GCC), GNU Debugger (GDB), GNU Binutils, and more. GCC is the compiler toolkit.

    GNU uses glibc (GNU C Library) as an open-source alternative to the standard C library (https://www.gnu.org/software/libc/). Gnulib (https://www.gnu.org/software/gnulib/) is an alternative to glibc that provides portability for other operating systems.

    GNU Classpath (http://www.classpath.org/) is an open-source Java class library.

    MinGW (Minimalist GNU for Windows) is a GNU environment that can be installed on Windows systems (http://mingw.org/). Xming (http://www.straightrunning.com/XmingNotes/) is an X11 server for MinGW. Native Linux programs cannot be run on MinGW. Instead, the source code must be compiled for MinGW.

    Cygwin (http://cygwin.com/) is a compatibility layer for Windows (like WINE is for Linux) that provides POSIX system calls and a GNU environment. However, to run Linux applications under Cygwin, the source code must be recompiled for Cygwin. For example, X11 has been recompiled for Cygwin and then called "Cygwin/X" (http://x.cygwin.com/).

    "GNU GRUB" (or Grub) is a bootloader that is typically associated with operating systems that use the GNU userland. Also, Grub is part of the GNU Project. The bootloader is not part of the userland or kernel space because the bootloader is active before the operating system is initiated. After the bootloader starts the OS, the bootloader closes.

    Hurd (https://www.gnu.org/software/hurd/) is a kernel that is part of the GNU Project. Hurd can be used as the operating system's kernel instead of Linux. "GNU/Hurd" refers to an operating system that uses the GNU userland and the Hurd kernel (both are GNU software).

    There are many other GNU-related software, but these are the most important GNU software to discuss and understand.

    Further Reading

Viewing 1 post (of 1 total)