Are the Linux utilities parts of the kernel/shell?

Solution 1:

In Ubuntu you will find Coreutils installed .

This package contains the basic file, shell and text manipulation utilities which are expected to exist on every operating system.

Specifically, this package includes: arch base64 basename cat chcon chgrp chmod chown chroot cksum comm cp csplit cut date dd df dir dircolors dirname du echo env expand expr factor false flock fmt fold groups head hostid id install join link ln logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup nproc od paste pathchk pinky pr printenv printf ptx pwd readlink rm rmdir runcon sha*sum seq shred sleep sort split stat stty sum sync tac tail tee test timeout touch tr true truncate tsort tty uname unexpand uniq unlink users vdir wc who whoami yes

Core GNU utilities .

You will find most of the basic commands from Core Utilities description page, said that , Linux is just a Name of Kernel, Whereas Ubuntu is an Entire Advanced Integrated OS of such utilities. As in Question Such as cp, ls, grep, ps...

 Are they stand-alone applications pre-installed on the operating
 system or the innate part of the operating system?

They together actually forms Ubuntu/Linux Operating System , Either of them existing standalone doesn't help much.

Shell is basically Bridge between kernel and the user, a Command Interpreter where user can type command and the command is conveyed to the kernel and it will be executed.And it is Different from Kernel , refer basic image below

enter image description here

And for more descriptive image

enter image description here

File Manager mostly forms the Front-End of common Core Utilities.


So how does that innate thing happens , its because ,

Linux is Monolithic kernel where all services (file system, VFS, device drivers, etc) as well as core functionality (scheduling, memory allocation, etc) are a tight knit group sharing the same space. It provides the shortest path to a working, stable kernel .Whereas Memory, Process and Device managing are the functions of any Kernel.

There is also a very good description provided here at How to understand the Ubuntu file system layout?

Additions related to Libraries-

The GNU C Library and GCC GNU Compiler Collection is most important Library and Core requirement of Ubuntu/Linux Operating system. One of the reasons is Kernel is written Primary in C and hardware specific code using Assembly language.

To some extent "OS is made up of two parts, i.e., Kernel and Shell" holds true , for example Servers , and Minimal Linux based Distros. But for a fully fledged Ubuntu Desktop you need more then just Kernel and Shell.

Gtk (Gnome) is based on C and C++ , Qt(Kde) uses mostly C++ i guess , they don't have any libraries in common. Which is why they provide different User experience.

For utilities ( packages ) , you will find Python pre-installed in Ubuntu & Ubuntu-distros , to provide extended functionalities to python based Applications ( Like Window managers i guess) and Scripts . As i mentioned early "They together actually forms Ubuntu/Linux Operating System , Either of them existing standalone doesn't help much."

You can further refer the question How can I know if my an application on my desktop environment is loading other DE's modules, libraries, etc? .

Solution 2:

Linux is but a kernel, allowing you to run executables with ELF headers. It contains only the most important files necessary to boot--itself, and calls init, which may just load upstart. However, it is important as it is needed to get at even the most basic utilities.

init is responsible for starting a login prompt, which can be considered an "innate part of the Operating System." It will load a shell. While necessary for proper Linux use, it is not part of the kernel, but still very innate. A few commands are part of this shell, and available as executables in /usr/bin, /bin, or /sbin. ps and grep are separate executables that are not necessarily "innate". A complete list of what I consider "innate parts of the Operating System":

  • The Kernel (Linux)
  • Filesystem drivers (only sysfs, mount, and drivers necessary for mounting the root filesystems, /bin, and /sbin,)
  • A logon shell, necessary for doing "anything", which includes essential commands not included in /bin/, /sbin, or /usr/bin.
  • Many commands in /bin and /sbin.
  • Effectively, libc, as almost every program uses it.
  • Drivers necessary to get any disks, or other critical hardware working
  • According to Debian package policy, dpkg(and its dependencies) are essential as they allow one to get additional utilities, although one may introduce important executables from external media

Solution 3:

Command line tools such as ls, grep, cat and many others comprise the 'GNU coreutils', which is the standard toolset present on any GNU/Linux system. For a very useful summary of the utilities, and about how to use them, enter this in terminal:

info coreutils

To output it to file:

info coreutils > coreutils.txt

(In answer to your other question, they are not part of the kernel or integrated within it. They are used in your terminal shell session as tools to achieve what you want to do.)