In this video we'll talk about hardware essentials.
So you need to have a little bit of understanding of computer hardware in order to address it
the right way from the Linux operating system.
Computer hardware ensures that you can use computers for useful purposes.
And in the computer hardware there is the Central Processing Unit, or CPU, which receives
and executes instructions that are issued by computer programs.
It's a core component of your computer.
And it works with Random Access Memory, or RAM, which holds data that currently running
computer programs are using.
RAM is important, and in many cases you'll never have enough of it.
The hard disks are the components that are used to permanently store data.
Most computers have at least one, and many computers have more hard disks.
And peripherals are typically included to perform other operations as well.
And the type of peripherals really depend on the functionality that you are using your
computer for.
To work with the hardware we have the operating system.
The operating system is defined as the main program that makes your computer work.
Linux is an operating system, Windows is an operating system, and there are other operating
systems.
And the operating system as such performs different functions.
It controls the hardware, it manages files, it runs programs, and it provides a user interface.
These are the core functions of the operating system.
Now the operating system needs to communicate with the hardware, and in order to do so it
uses drivers.
Without a proper driver, which we call kernel modules in Linux land, the computer cannot
do anything with the hardware.
The Linux drivers can be provided by the open source community or by the hardware vendor.
We call those proprietary drivers.
Now sometimes you may find yourself in a situation where your computer works with custom hardware.
That means hardware that is not based on a PC-like architecture.
Your laptop, your server, and everything else is based on PC-like architecture, but on Linux
embedded systems are commonly used as well.
Embedded hardware systems have all the hardware on one single board, and they need to be programmed
in a different way.
You can think of appliances like airplane video systems or microwave ovens, and there
are many more.
Working with embedded systems is significantly different.
An operating system is created, and it's flashed to a CMOS chip instead of installed on the
hard drive of the computer.
And on embedded Linux, specific architectures are often used.
To build an image for specific architectures, you need to go through a process that is known
as cross-compilation.
That means that you prepare the image on one platform, typically that would be your laptop,
and you flash it to another platform, and that would be the embedded device.
A commonly used Linux-based platform to do so is Yocto.
And Raspberry Pi is a common embedded hardware system.
These are available for not too much money.
It's nice to play if you want to work with embedded hardware.