Skip to content
Academia.
ELEmbedded LinuxT550077101 · Fall 2026
CourseFall 2026

Friday · 12:00–16:00 · Odense U174

Linux fundamentals and development environment

Lecture 01: Build a reliable foundation for working with Linux tools while beginning an embedded-system project proposal.

Learning objectives

✓Distinguish kernel, distribution, shell and terminal.
✓Navigate and manipulate files safely.
✓Explain basic processes, networking and script automation.
✓Draft an initial project need and end-to-end concept.
Block 112:00–12:50content

Block 1 · 12:00–12:50 · Course and people

Welcome and Introductions

Embedded Linux brings operating systems, electronics, networking and software together.

Course direction: Understand the system → control the hardware → connect the device → build something useful

Welcome

Welcome to Embedded Linux.

In this course, we will use Linux as the foundation for systems that sense, communicate, process information and control hardware.

We will combine short explanations with commands, experiments and practical work. As the semester progresses, these elements will come together in complete embedded-system projects.

Possible applications include environmental monitoring, greenhouse control, agricultural robots, smart irrigation, industrial gateways and connected sensor platforms.

Who We Are

Dr. Redmond R. Shamshiri 

  • Ph.D. Robotics, Technische Universität Berlin
  • Ph.D. in Automation and Simulation, Universiti Putra Malaysia
  • Dr.Eng/M.Sc. in Biosystem Eng, University of Florida

Assistant Professor of Robotics
Maersk Mc-Kinney Møller Institute
University of Southern Denmark
ramsha@mmmi.sdu.dk

My work covers robotics, automation, sensing and digital agriculture. We will use examples from robots, greenhouses, farms and distributed sensing systems throughout the course.

Teaching Assistant: Noujin Soliman (M.Sc. Biosystem Eng with focus on Precision Farming and Robotics)
nous@mmmi.sdu.dk

Noujin will support the laboratory activities, technical discussions and project work.

What We Will Study

Topic Purpose
Linux architecture Understanding what happens between an application and the hardware.
Terminal and shell Configuring and diagnosing devices from the command line.
Scripts and programs Automating tasks, processing data and controlling system behaviour.
Sensors and actuators Connecting software to the physical world.
Device communication Exchanging data between embedded devices and external systems.
Networking and remote access Managing devices and building distributed systems.
Processes and services Running applications reliably and automatically.
Logging, permissions and security Operating and troubleshooting systems responsibly.
Semester project Combining the course topics in a working embedded system.

What This Course Is Not

  • It is not a course based on memorising lists of Linux commands.
  • It is not a general desktop-computing course.
  • It is not exclusively about the Raspberry Pi.
  • It is not only an electronics course.
  • It is not only a programming course.
  • Previous professional experience with Linux is not required.

We will use Raspberry Pi computers, but the same principles apply to industrial controllers, robots, gateways, edge computers and many other embedded platforms.

Question: What makes an embedded computer different from an ordinary personal computer?

Answer: An embedded computer is part of a larger product or system and normally performs a specific function. It often interacts directly with hardware and may operate without a conventional monitor, keyboard or graphical interface.

Question: Is Linux a complete operating system or one part of it?

Answer: Strictly speaking, Linux is the kernel. It manages the processor, memory, devices and processes. A complete Linux system also includes libraries, utilities, shells, services and applications.

Class Structure

Time Class period
12:00–12:50 Block 1
12:50–13:00 Break
13:00–13:50 Block 2
13:50–14:00 Break
14:00–14:50 Block 3
14:50–15:00 Break
15:00–15:50 Block 4
15:50–16:00 Questions and conclusion
  • Four teaching blocks in each class.
  • A short break between the blocks.
  • A combination of theory, discussion, demonstrations and laboratory work.
  • Laboratory activities normally completed in teams of three.
  • A practical project developed during the semester.
  • An individual presentation portfolio for the examination.

Participation points and attendance are recorded separately. Participation points recognise constructive contributions but do not change the official course grade.

Introductions

Let us begin with a brief introduction from everyone:

  • Name
  • Study programme or technical background
  • One technology you have used or would like to learn

This may be Linux, Windows, Python, C or C++, Raspberry Pi, Arduino, ESP32, electronics, networking, sensors, robotics, automation, web development or cloud systems.

Each student will also receive a short question connected to the course. A clear explanation, a practical example or a reasonable guess is welcome.

Brief introduction: name + programme + technical interest

If the first student cannot answer a question, another student may volunteer. Useful contributions can receive participation points.

Example question: Which Linux command shows the current directory?

Answer: pwd, meaning “print working directory.”

Example question: What is a sensor?

Answer: A sensor converts a physical quantity, such as temperature, pressure, position or light, into information that a computer can process.

Example question: What is an actuator?

Answer: An actuator converts a control signal into physical action. Examples include motors, valves, relays, heaters and fans.

Example question: What does SSH allow us to do?

Answer: SSH provides encrypted remote command-line access to another computer, such as a Raspberry Pi or Linux server.

By the End of the Semester

You should be able to examine an embedded-system problem, choose suitable hardware and software, build and test the system, and explain your engineering decisions.

Keep these three questions in mind:

  1. What should the system sense, decide or control?
  2. How should Linux communicate with the hardware and other devices?
  3. How can the system remain reliable, understandable and maintainable?
Next: What happens inside a Linux-based embedded system—from power-on to a running application?
Block 213:00–13:50concept

Block 2 · 13:00–13:50 · What embedded Linux means

Linux is used in computers that range from powerful servers to small controllers installed inside machines, vehicles, robots and instruments.

Basic structure: Hardware → Linux kernel → System tools and services → Application

A Useful Distinction

The words Linux, distribution, shell and terminal are often used as though they mean the same thing. They describe different parts of the system.

Term Meaning Example
Linux The kernel at the centre of the operating system. The component that manages memory, processes and hardware devices.
Kernel The privileged core that manages the processor, memory, devices and running processes. The Linux kernel used by Ubuntu and Raspberry Pi OS.
Distribution A complete operating system assembled around the Linux kernel. Ubuntu, Debian, Fedora and Raspberry Pi OS.
Shell A program that reads commands and asks the operating system to execute them. Bash, Zsh and PowerShell.
Terminal The window or interface used to communicate with a shell. Windows Terminal, GNOME Terminal or the terminal in Visual Studio Code.
Command An instruction entered through a shell. pwd, ls or mkdir project.
Question: If Ubuntu and Raspberry Pi OS both use Linux, why do they look different?

Answer: They are different Linux distributions. They may use different desktop environments, software collections, configuration tools and default settings while sharing the Linux kernel.

Question: Are a terminal and a shell the same thing?

Answer: No. The terminal provides the visible interface. The shell runs inside it, interprets commands and starts programs.

The Linux System

Layer Role Examples
Hardware The physical components of the system. Processor, memory, storage, network interface, sensors and motors.
Kernel Controls access to hardware and manages system resources. Process scheduling, memory management and device communication.
User space The part of the system where ordinary programs and services operate. Shells, web servers, Python programs and communication services.
Application Software written to perform a particular task. A greenhouse controller, robot interface or sensor-data logger.
User A person or software identity with defined permissions. A student account, administrator account or service account.

Applications do not normally control hardware directly. They request services from the kernel through controlled interfaces.

Example: Application requests data → Kernel communicates with the device → Data returns to the application
Question: Why should applications not have unrestricted access to all hardware?

Answer: Controlled access improves stability and security. A faulty application should not be able to overwrite another program’s memory, damage files or take control of every device.

Question: Where does an ordinary Python program run—in the kernel or in user space?

Answer: It runs in user space. When it needs memory, files, network access or hardware communication, it requests these services from the kernel.

What Is an Embedded System?

An embedded system is a computer installed inside a larger product or process to perform a defined function.

Unlike a general-purpose laptop, an embedded computer may:

  • Start automatically when power is applied.
  • Operate without a monitor, keyboard or mouse.
  • Read sensors and control actuators.
  • Run continuously for long periods.
  • Use limited processing power, memory or storage.
  • Communicate with other devices or remote servers.
  • Perform a small number of specific tasks.
System Input Processing Output
Greenhouse controller Temperature and humidity sensors Climate-control rules Fans, heaters and windows
Agricultural robot Cameras, encoders and distance sensors Navigation and control algorithms Wheel motors and implements
Smart irrigation unit Soil-moisture and weather data Irrigation decision Pumps and valves
Environmental station Air and soil sensors Filtering, storage and communication Local display or cloud database
Question: Is a smartphone an embedded system?

Answer: It contains many embedded subsystems, but the complete smartphone is normally considered a general-purpose mobile computer because it can run many unrelated applications.

Question: Is a digital washing machine an embedded system?

Answer: Yes. Its computer is integrated into the machine and performs defined tasks such as reading sensors, controlling the motor, operating valves and managing the washing cycle.

What Makes Linux Embedded?

Embedded Linux is a Linux-based operating system prepared for a particular embedded device and application.

The Linux kernel itself is not automatically “embedded.” It becomes part of an embedded system when it is configured and combined with the software needed for a particular device.

Consideration Typical question
Processor architecture Does the device use ARM, x86 or another processor family?
Memory How much RAM is available?
Storage Will the system use an SD card, eMMC, SSD or flash memory?
Hardware interfaces Does it need GPIO, I²C, SPI, UART, USB, CAN or Ethernet?
Networking Will it use Wi-Fi, Ethernet, Bluetooth, LoRaWAN or mobile communication?
Startup Which application or service should start automatically?
Reliability What should happen after a power failure, software crash or communication loss?
Security Who may access the device, and how will updates be managed?
Question: Why might a Raspberry Pi use an ARM version of Linux rather than an x86 version?

Answer: Software must be built for the processor architecture used by the computer. Most Raspberry Pi models use ARM processors, while many desktop and laptop computers use x86-64 processors.

Important Hardware Interfaces

Term Definition Typical use
GPIO General-purpose input/output pins that can read or produce digital signals. Buttons, relays, LEDs and simple control signals.
I²C A short-distance digital communication bus that connects several devices using shared clock and data lines. Environmental sensors, displays and real-time clocks.
SPI A fast synchronous communication interface using separate clock and data connections. Displays, memory devices and high-speed sensors.
UART A serial communication interface that transfers data using transmit and receive lines. GPS receivers, microcontrollers and diagnostic consoles.
CAN A robust communication bus designed for reliable communication between controllers. Vehicles, agricultural machinery and industrial systems.
Ethernet A wired networking technology used to connect devices to local networks. Robots, industrial controllers, cameras and gateways.
Question: Which interface would be a reasonable choice for connecting several environmental sensors over a short distance?

Answer: I²C is often suitable because several addressed devices can share the same clock and data lines. The final choice still depends on distance, speed, electrical environment and sensor support.

From Power-On to Application

  1. Power is applied. The processor begins executing its initial startup instructions.
  2. The bootloader starts. It prepares the hardware and loads the Linux kernel.
  3. The kernel starts. It detects hardware, manages memory and activates device drivers.
  4. The root filesystem becomes available. Linux can access its programs, libraries and configuration files.
  5. System services start. Networking, logging and other background functions become available.
  6. The application starts. The embedded device begins performing its intended task.
Term Definition
Bootloader A small startup program that prepares the computer and loads the operating-system kernel.
Device driver Software that allows the kernel to communicate with a hardware device.
Filesystem The organised structure used to store and retrieve files and directories.
Root filesystem The main filesystem from which the Linux directory structure begins.
Service A program that normally runs in the background and provides a system function.
Daemon A traditional Linux term for a background service process.
Question: What loads the Linux kernel after the device is powered on?

Answer: The bootloader prepares the system and loads the Linux kernel into memory.

Question: What connects the Linux kernel to a particular hardware device?

Answer: A device driver provides the software interface between the kernel and the hardware.

Linux or a Microcontroller?

Not every embedded system needs Linux. A small microcontroller may be a better choice for a simple and tightly controlled task.

Linux-based computer Microcontroller
Runs a complete operating system. Usually runs one firmware program.
Supports multiple processes and users. Normally performs a smaller set of dedicated tasks.
Provides filesystems, networking and system services. Provides direct and predictable control of hardware.
Suitable for cameras, databases, web services and complex networking. Suitable for fast startup, low power consumption and precise timing.
Examples: Raspberry Pi, BeagleBone and industrial Linux computers. Examples: ESP32, STM32 and Arduino-compatible boards.

Many practical systems use both. A Linux computer handles networking, data processing and user interfaces, while a microcontroller handles precise sensor sampling and actuator control.

Example: Linux computer for planning and communication + microcontroller for direct motor control
Question: Would Linux be necessary for switching an irrigation valve on at a fixed time each day?

Answer: Probably not. A microcontroller could perform that task efficiently. Linux becomes useful when the system also requires networking, data storage, remote access, a web interface or more complex decision-making.

Question: Why might a robot contain both a Linux computer and a microcontroller?

Answer: The Linux computer can handle navigation, networking and high-level decisions, while the microcontroller provides reliable low-level control of motors, encoders and safety signals.

A System in One Sentence

Choose one of the following systems:

  • Greenhouse climate controller
  • Smart irrigation system
  • Agricultural mobile robot
  • Environmental monitoring station
  • Livestock monitoring system

Describe it using this structure:

The system reads ______, processes ______, communicates through ______, and controls or produces ______.
Example: Greenhouse climate controller

Answer: The system reads temperature, humidity and light sensors, processes the measurements using climate-control rules, communicates through Ethernet or Wi-Fi, and controls fans, heaters, pumps and ventilation windows.

Example: Agricultural mobile robot

Answer: The system reads cameras, encoders and distance sensors, processes the data using navigation and control algorithms, communicates through CAN and Wi-Fi, and controls the wheel motors and agricultural implement.

Key Points

  • Linux is the kernel, not the complete distribution.
  • A terminal provides access to a shell.
  • The kernel manages hardware and system resources.
  • Ordinary programs and services run in user space.
  • An embedded system performs a defined function inside a larger product or process.
  • Embedded Linux is configured for particular hardware and an intended application.
  • Linux and microcontrollers often work together in the same system.
Next: From an application idea to the architecture of an embedded system
Block 314:00–14:50exercise

Block 3 · 14:00–14:50 · Projects and system thinking

An embedded-system project begins with a practical problem. The hardware and software are selected after the required function is clear.

Application: What the system must achieve
Architecture: How the system is organised to achieve it

Begin with the Problem

A good project can be described without immediately naming a computer, sensor or programming language.

Application Practical problem
Greenhouse control Maintaining suitable growing conditions while reducing energy consumption.
Smart irrigation Applying water when and where it is needed.
Field monitoring Collecting environmental data from locations with limited power and connectivity.
Agricultural robot Moving safely through a field and performing a useful operation.
Livestock monitoring Detecting changes in animal behaviour or environmental conditions.
Edge vision Processing camera images near the point of data collection.
Question: Which should come first—the sensor specification or the problem definition?

Answer: The problem definition should come first. The required measurements, operating conditions and decisions determine which sensor is suitable.

Question: Is “using a Raspberry Pi” a complete project objective?

Answer: No. A Raspberry Pi is a possible platform, not an application objective. A better objective would be to monitor greenhouse temperature and automatically control ventilation using a Raspberry Pi.

The Basic System Chain

Physical process → Input → Processing → Decision → Output → Physical process
Element Definition Example
Physical process The real-world system being observed or controlled. A greenhouse, irrigation network, mobile robot or livestock building.
Input Information received by the system. Temperature, soil moisture, wheel speed or camera images.
Processing Operations applied to the input data. Filtering, calculation, classification or comparison with a target value.
Decision The result that determines what the system should do next. Start irrigation, reduce motor speed or send an alarm.
Output Information or physical action produced by the system. A motor command, valve signal, database record or warning message.
Feedback New measurements used to determine the effect of a previous action. Measuring temperature again after switching on a fan.
Question: In a temperature-control system, what is the input?

Answer: The input is the measured temperature received from the temperature sensor.

Question: In the same system, what is the output?

Answer: The output could be a command to a heater, fan, pump or ventilation motor.

Question: Why should the system measure the temperature again after activating the heater?

Answer: The new measurement provides feedback. It shows whether the action produced the expected effect and whether further action is needed.

From Function to Components

The architecture identifies the components, their responsibilities and the connections between them.

Component Responsibility Possible choice
Sensor Measure a physical quantity. Temperature, humidity, pressure, position or distance sensor.
Embedded computer Run Linux, process data and manage the application. Raspberry Pi or industrial Linux computer.
Microcontroller Handle direct hardware control and time-sensitive tasks. ESP32, STM32 or Arduino-compatible board.
Communication interface Transfer data between components. UART, I²C, SPI, CAN, Ethernet or Wi-Fi.
Actuator Produce a physical action. Motor, valve, fan, heater, relay or pump.
Storage Retain programs, configuration and collected data. SD card, eMMC, SSD or database.
User interface Allow a person to observe or control the system. Web dashboard, display, mobile application or terminal.
Power supply Provide suitable electrical power to the components. Battery, regulated DC supply or mains-powered adapter.
Question: Does every sensor connect directly to the Linux computer?

Answer: No. A sensor may connect directly to the Linux computer, through a microcontroller or through a communication network. The choice depends on distance, timing, electrical compatibility and reliability.

Question: Why might a motor be controlled by a microcontroller instead of directly by a Linux application?

Answer: Motor control may require precise and predictable timing. A microcontroller can handle that task while Linux manages higher-level planning, networking and data processing.

Communication and Data Flow

A connection diagram shows which components exchange information. A data-flow description explains what information moves between them.

Term Definition
Data flow The movement of information between parts of a system.
Protocol A set of rules that determines how information is formatted and exchanged.
Interface A defined connection through which two components interact.
Message A structured unit of information transferred between components.
Sampling rate The number of measurements collected during a given period.
Latency The delay between an event and the corresponding response or data arrival.
Bandwidth The amount of data that a communication connection can transfer in a given time.

Different information has different communication requirements.

Information Typical requirement
Greenhouse temperature Small messages and moderate update frequency.
Emergency-stop signal Very low latency and high reliability.
Camera stream High bandwidth and substantial processing capacity.
Daily irrigation report Low bandwidth; a short delay may be acceptable.
Wheel-speed command Regular updates with predictable timing.
Question: Which requires more bandwidth—a temperature measurement or a live camera stream?

Answer: A live camera stream requires much more bandwidth because it continuously transfers large amounts of image data.

Question: Can a communication method be suitable for one part of a system but unsuitable for another?

Answer: Yes. LoRaWAN may be suitable for occasional field measurements, but it would not be suitable for transmitting a live high-resolution camera stream or real-time motor commands.

Local, Edge and Cloud Processing

Location Meaning Example
Local processing Processing performed directly by the device that collects the data. A controller switches on a fan after reading a temperature sensor.
Edge processing Processing performed near the physical process instead of at a remote data centre. A field computer identifies weeds from camera images on the robot.
Cloud processing Processing performed on remote servers accessed through a network. A server compares measurements from several farms.

A system can use more than one level. Safety-critical decisions may remain local, while historical data and reports are handled by a cloud service.

Question: Should a greenhouse wait for an internet connection before switching off an overheating system?

Answer: No. Essential protection should operate locally. Remote services may support monitoring and analysis, but loss of internet access should not prevent a critical local response.

Question: Why process camera images on an agricultural robot rather than send every image to the cloud?

Answer: Local or edge processing reduces communication requirements and delay. It can also allow the robot to continue operating when network coverage is poor.

Normal Operation and Failure

A system architecture should describe both normal operation and what happens when something goes wrong.

Term Definition
Fault An abnormal condition in hardware, software or communication.
Failure The inability of a system or component to perform its required function.
Fault detection Identifying that an abnormal condition has occurred.
Fail-safe state A condition intended to minimise risk when normal operation cannot continue.
Redundancy Using an additional component or information source so one fault does not immediately stop the system.
Watchdog A mechanism that detects when software is no longer responding and initiates recovery.
Timeout A defined period after which missing communication or an incomplete operation is treated as a fault.
Recovery The process of returning the system to normal or limited operation after a fault.
Fault Possible response
Temperature sensor stops responding Raise an alarm, reject invalid data and move the controller to a safe operating mode.
Internet connection is lost Continue local control and store data for later transmission.
Robot loses its position estimate Reduce speed or stop until reliable positioning is restored.
Motor controller stops receiving commands Use a timeout to stop the motor safely.
Storage becomes full Remove or archive older logs and protect essential system functions.
Application crashes Record the error and restart the application under controlled supervision.
Question: What should a mobile robot do when communication with its controller is lost?

Answer: In most situations, it should enter a safe state, normally by slowing down and stopping. Continuing with the last command could be dangerous.

Question: What should happen to measurements collected while the internet connection is unavailable?

Answer: The device can store them locally with timestamps and transmit them when the connection returns.

Example: Smart Greenhouse Controller

Architecture element Greenhouse example
Physical process Greenhouse climate and crop environment
Inputs Air temperature, humidity, light and soil-moisture measurements
Processing Filtering measurements and comparing them with target conditions
Decision Determine whether heating, ventilation or irrigation is needed
Outputs Fans, heaters, pumps, valves and ventilation motors
Communication I²C or UART for sensors; Ethernet or Wi-Fi for remote access
Storage Local measurement logs and a remote database
User interface Web dashboard showing conditions, alarms and equipment status
Safe response Continue local control if the internet connection fails
Sensors → Embedded controller → Control decision → Actuators
Embedded controller ↔ Local storage ↔ Web dashboard
Question: Which parts of this system must continue working without internet access?

Answer: Sensor reading, local climate decisions and essential actuator control should continue locally. Remote monitoring and cloud synchronisation may resume later.

Example: Agricultural Mobile Robot

Architecture element Robot example
Physical process Robot motion and interaction with the field
Inputs Camera, wheel encoders, position sensors, IMU and safety sensors
Processing Localization, path planning, obstacle detection and motion control
Decision Select direction, speed and implement action
Outputs Wheel commands, steering commands and implement control
Linux computer Runs perception, navigation, logging and communication software
Microcontroller Handles motor communication, emergency signals and low-level control
Communication CAN or RS485 for motor controllers; Ethernet or Wi-Fi for supervision
Safe response Stop if communication, localization or safety sensing becomes unreliable
Question: Which robot tasks are suitable for Linux?

Answer: Camera processing, navigation, data logging, web interfaces and high-level decision-making are suitable Linux tasks.

Question: Which tasks may be better handled by a microcontroller?

Answer: Motor timing, encoder counting, emergency inputs and other fast low-level control tasks may be better handled by a microcontroller.

Project Discussion

Select one project area:

  • Greenhouse climate control
  • Smart irrigation
  • Field sensor gateway
  • Agricultural robot supervision
  • Livestock-environment monitoring
  • Edge-vision system
  • Energy-monitoring system
  • Remote equipment-diagnostics system

Describe the proposed system using the following questions:

  1. What practical problem does the system address?
  2. What physical process will it observe or influence?
  3. What inputs are required?
  4. What processing or decisions are required?
  5. What useful output will it produce?
  6. Which components must exchange information?
  7. Which functions should operate locally?
  8. What should happen if a sensor, application or communication link fails?
Project element Initial decision
Application What should the system achieve?
Inputs What should it measure or receive?
Processing What should it calculate, recognise or decide?
Outputs What action or information should it produce?
Platform Which Linux computer or microcontroller is appropriate?
Communication How will data move between the components?
Failure response How will the system detect and manage problems?

Key Points

  • Begin with the practical problem, not with a preferred device.
  • Define the inputs, processing, decisions and outputs.
  • Identify where information is produced, processed, stored and communicated.
  • Separate high-level Linux tasks from time-sensitive microcontroller tasks.
  • Keep essential control functions available when the network fails.
  • Include fault detection, safe behaviour and recovery in the architecture.
  • A successful project should remain understandable and manageable when something goes wrong.
Next: Working with the command line and examining the system directly
Block 415:00–15:50exercise

Block 4 · 15:00–15:50 · Command-line laboratory

This laboratory introduces the command line through a small set of safe operations: identifying the current user, navigating the filesystem, creating directories, writing files and reading their contents.

Today’s principle: Run one command → examine the result → explain what changed

A Raspberry Pi is not required for this laboratory. The activity can be completed using Ubuntu through WSL or directly in Windows PowerShell.

Choose Your Environment

Available on your computer Open this application Follow these instructions
Ubuntu through Windows Subsystem for Linux Ubuntu Use the Linux commands.
Another Linux distribution Terminal Use the Linux commands.
macOS Terminal Use the Linux commands.
Windows without WSL Windows Terminal or PowerShell Use the PowerShell commands.

Windows Terminal is an application that can host different command-line environments. Depending on the computer, it may open PowerShell, Command Prompt, Ubuntu or another shell.

Term Definition
Command line A text-based method of interacting with a computer by entering commands.
Terminal The application or window in which a command-line shell is displayed.
Shell The program that reads commands, starts programs and displays their output.
PowerShell A command-line shell and scripting environment included with Windows.
WSL Windows Subsystem for Linux, which allows a Linux environment to run inside Windows.
Bash A commonly used Linux shell.
Prompt The text displayed by the shell to indicate that it is ready to receive a command.
Question: Does opening Windows Terminal always mean that we are using Linux?

Answer: No. Windows Terminal can host several shells. The active shell may be PowerShell, Command Prompt, Ubuntu through WSL or something else.

Question: How can we recognise PowerShell?

Answer: Its prompt often begins with PS, followed by the current directory, for example PS C:\Users\Redmond>.

Question: How can we recognise a Linux shell?

Answer: A Linux prompt often shows a username, computer name and directory, followed by $. The exact appearance can vary.

Identify the Current User

Enter the following command:

whoami

The command prints the identity of the current user.

Part Meaning
whoami Displays the user account under which the current shell is running.
User account An identity associated with permissions, files and running processes.
Permission A rule determining whether a user or program may read, modify or execute something.
Question: Why does Linux need to know which user is running a command?

Answer: Linux uses the user identity to decide which files, devices and system operations the command is allowed to access.

Find Your Current Location

The filesystem is organised into directories. Before creating or changing anything, it is useful to know the current location.

Linux, WSL or macOS

pwd

Windows PowerShell

Get-Location

PowerShell also accepts pwd as a convenient alias for Get-Location.

Term Definition
Filesystem The organised structure used to store and retrieve files and directories.
Directory A container used to organise files and other directories.
Current working directory The directory in which the shell is currently operating.
Path The address of a file or directory within the filesystem.
pwd Print working directory.
Get-Location The PowerShell command that displays the current working directory.
Alias An alternative, usually shorter, name for a command.
Question: What does pwd change on the computer?

Answer: Nothing. It only reports the current working directory.

Examine the Directory

Linux, WSL or macOS

ls
ls -la

Windows PowerShell

Get-ChildItem
Get-ChildItem -Force
Command or option Meaning
ls Lists files and directories in Linux.
-l Requests a detailed or long listing.
-a Includes entries whose names begin with a dot.
Get-ChildItem Lists files and directories in PowerShell.
-Force Includes hidden items in the PowerShell listing.
Option Additional information that changes how a command operates.
Hidden file A file that is normally omitted from a standard directory listing.
Question: What is the difference between ls and ls -la?

Answer: ls provides a basic listing. ls -la provides detailed information and includes hidden entries.

Question: Does listing a directory modify its files?

Answer: No. A listing command reads information about the directory but does not modify its contents.

Create a Course Workspace

We will keep the course files inside an eml directory in the user’s home directory.

Linux, WSL or macOS

mkdir -p ~/eml/lecture01
cd ~/eml/lecture01
pwd

Windows PowerShell

New-Item -ItemType Directory -Path "$HOME\eml\lecture01" -Force
Set-Location "$HOME\eml\lecture01"
Get-Location
Command or symbol Meaning
mkdir Creates a directory.
-p Creates missing parent directories and avoids an error if the directory already exists.
~ A Linux shortcut representing the current user’s home directory.
$HOME A variable containing the path to the current user’s home directory.
cd Changes the current working directory.
New-Item Creates a new item in PowerShell.
-ItemType Directory Specifies that PowerShell should create a directory.
Set-Location Changes the current working directory in PowerShell.
Home directory The main personal directory assigned to a user account.
Variable A named place used to hold a value, such as a directory path.
Question: What is the difference between mkdir and cd?

Answer: mkdir creates a directory. cd moves the shell into an existing directory.

Question: Does cd move or copy any files?

Answer: No. It only changes the directory in which the shell is currently operating.

Create and Read a Text File

Linux, WSL or macOS

echo "Embedded Linux" > notes.txt
cat notes.txt

Windows PowerShell

"Embedded Linux" | Set-Content notes.txt
Get-Content notes.txt
Command or symbol Meaning
echo Prints text or sends it to another destination.
> Redirects output into a file, replacing the previous contents of that file.
cat Displays the contents of a text file.
| A pipe that passes the output of one command to another command.
Set-Content Writes or replaces the contents of a file in PowerShell.
Get-Content Reads the contents of a file in PowerShell.
Redirection Sending the output of a command somewhere other than the terminal.
Standard output The normal stream through which a command returns its result.
Question: Where does the text go when we use > notes.txt?

Answer: The shell redirects the text into the file named notes.txt instead of displaying it in the terminal.

Question: What happens if notes.txt already contains something?

Answer: The > operator replaces its existing contents. The PowerShell command Set-Content also replaces the existing contents.

Add More Information

Add your name and one project interest without removing the existing line.

Linux, WSL or macOS

echo "Name: Your Name" >> notes.txt
echo "Project interest: Smart greenhouse" >> notes.txt
cat notes.txt

Windows PowerShell

"Name: Your Name" | Add-Content notes.txt
"Project interest: Smart greenhouse" | Add-Content notes.txt
Get-Content notes.txt
Command or symbol Meaning
>> Appends output to the end of a file without replacing its existing contents.
Add-Content Adds new content to the end of a file in PowerShell.
Append Add new information after the existing contents of a file.
Question: What is the difference between > and >>?

Answer: > replaces the contents of a file, while >> adds new content to the end of it.

Inspect the Result

Linux, WSL or macOS

pwd
ls -la
cat notes.txt

Windows PowerShell

Get-Location
Get-ChildItem -Force
Get-Content notes.txt

The results should confirm three things:

  1. The shell is inside the lecture01 directory.
  2. The directory contains a file named notes.txt.
  3. The file contains the course title, your name and your project interest.
Question: Which command confirms where we are?

Answer: Use pwd in Linux or Get-Location in PowerShell.

Question: Which command confirms that the file exists?

Answer: Use ls -la in Linux or Get-ChildItem -Force in PowerShell.

Question: Which command confirms what the file contains?

Answer: Use cat notes.txt in Linux or Get-Content notes.txt in PowerShell.

Command-Line Challenge

Create the following structure inside your lecture01 directory:

lecture01
├── notes.txt
├── commands
└── project

Linux, WSL or macOS

mkdir commands
mkdir project
echo "whoami" > commands/first-command.txt
echo "My first Embedded Linux project" > project/idea.txt
ls -la
cat commands/first-command.txt
cat project/idea.txt

Windows PowerShell

New-Item -ItemType Directory -Path "commands"
New-Item -ItemType Directory -Path "project"
"whoami" | Set-Content "commands\first-command.txt"
"My first Embedded Linux project" | Set-Content "project\idea.txt"
Get-ChildItem
Get-Content "commands\first-command.txt"
Get-Content "project\idea.txt"
Challenge answer: Which files and directories should now exist?

Answer: The lecture01 directory should contain notes.txt and two directories named commands and project. The commands directory should contain first-command.txt, and the project directory should contain idea.txt.

Challenge answer: How can we read a file without entering its directory?

Answer: Provide its relative path. For example, use cat project/idea.txt in Linux or Get-Content "project\idea.txt" in PowerShell.

Relative and Absolute Paths

Path type Definition Example
Absolute path The complete location beginning from the root of the filesystem or drive. /home/student/eml/lecture01/notes.txt or C:\Users\Student\eml\lecture01\notes.txt
Relative path A location described from the current working directory. project/idea.txt
Parent directory The directory immediately above the current directory. ..
Root directory The highest directory in a Linux filesystem. /

To move to the parent directory:

cd ..

This command works in both Linux and PowerShell.

Question: What does .. represent?

Answer: It represents the parent directory—the directory one level above the current location.

Question: Is project/idea.txt an absolute or relative path?

Answer: It is a relative path because its meaning depends on the current working directory.

Working Safely

  • Read a command before running it.
  • Know the current directory before creating, moving or deleting files.
  • Do not copy commands from an unknown source without understanding them.
  • Use administrator privileges only when they are genuinely required.
  • Do not use sudo simply to make an error disappear.
  • Keep course experiments inside the dedicated eml directory.
  • Ask what a command will change before executing it.
Term Definition
Administrator privilege Elevated permission that allows changes to protected parts of a system.
sudo A Linux command used to run an authorised command with elevated privileges.
Destructive command A command that deletes, overwrites or permanently changes data.
Question: Why should we avoid using sudo whenever a command fails?

Answer: A failure often indicates an incorrect path, command or permission assumption. Running the command with elevated privileges may hide the real problem and can cause unintended system changes.

What We Accomplished

  • Opened a command-line environment.
  • Identified the active user.
  • Displayed the current working directory.
  • Listed files and directories.
  • Created a course workspace.
  • Moved between directories.
  • Created and updated text files.
  • Read files from the command line.
  • Used relative paths to access files.
  • Compared Linux commands with their PowerShell equivalents.
Task Linux PowerShell
Show current user whoami whoami
Show current directory pwd Get-Location
List directory contents ls -la Get-ChildItem -Force
Create a directory mkdir New-Item -ItemType Directory
Change directory cd Set-Location
Write a file echo "text" > file.txt "text" | Set-Content file.txt
Add to a file echo "text" >> file.txt "text" | Add-Content file.txt
Read a file cat file.txt Get-Content file.txt
Final check: Where am I? → What is here? → What will this command change?

Before the Next Lecture

  • Keep the eml course directory on your computer.
  • Confirm that you can open the same command-line environment again.
  • Bring a laptop with administrator access for software installation.
  • Install Ubuntu through WSL if possible.
  • Do not worry if a Raspberry Pi is not yet available.
Next lecture: Linux architecture, files, permissions, processes and services

Lecture resources

Official SDU course descriptionOfficial content and examination rules. ↗Course hardware kit documentationHardware kit to be used for Embedded Linux (EMLI) mini projects ↗Linux Embedded System ResourcesWeb resources ↗SDU timetableCurrent dates, times and rooms. ↗itslearning courseAnnouncements and course materials. ↗

Summary

Commands, files, processes and hardware form one system.

Course outline

What we will learn

From Linux foundations to physical interfaces, networking, security and a complete embedded system.

Linux foundationsKernel, users, processes and file systems
Command lineShells, scripting and automation
Embedded hardwareBoot, storage and device drivers
Physical I/OGPIO, sensors and actuators
Device busesUART, I²C and SPI
NetworkingTCP/IP, SSH and remote management
Distributed systemsMessage passing and cooperating nodes
Engineering practiceGit, testing, logging and deployment
SecurityLeast privilege, updates and secrets

Teaching method

Short introductions are followed by laboratory activities. Work is normally completed in teams of three. Each team develops an embedded Linux system; the examination portfolio is individual.

Project ideas

Applications you could build

Each project should begin with one reliable end-to-end function.

Automatic Raspberry Pi-based GPS trackerSample examination report available in PDF format
Environmental monitoring stationValidated sensing, local storage and dashboard
Energy monitoring systemMeasure, log and visualize equipment power use
Greenhouse automationClimate sensing, actuation and remote supervision
Field-robot telemetryLocation, operating state, measurements and faults
LoRaWAN sensor networkField nodes, TTN integration and private cloud
Intelligent irrigationSensing, decisions, valves and safe failure handling
Multi-node IoT gatewayProtocol translation, buffering and secure forwarding
ROS 2 communication systemDistributed nodes, QoS and service integration
Edge-AI monitoring systemLocal inference, measured performance and safe fallback

A complete project should demonstrate

NeedA clear user and purpose
Physical interfaceA sensor, actuator or device
Linux integrationPrograms, scripts or services
CommunicationA justified data-exchange method
ReliabilityLogging and failure handling
EvidenceTests, results and reflection

Contractor and client roles

Project groups

Each group develops a project for one client group and evaluates the project received from another contractor group.

Contractor

Heros

ProjectProject 01
Delivers to
Client not assigned
Receives from
Contractor not assigned

Fridays · four 50-minute slots · Odense

Fall 2026 lecture plan

The SDU timetable remains authoritative for dates, times and rooms.

Project progression

Project ideas and proposals begin in Module 1 and evolve throughout the course. Module 10 is the formal integration, architecture and verification review; Modules 11–12 complete implementation, demonstration and individual portfolio evidence.

Lecture 01 · participation

Student questions

Questions remain hidden until the student is called. Model answers are revealed separately.

Instructor classroom view

The roster, answers, attendance and participation records are available only to the authorized primary owner after sign-in.

Instructor sign in

Definitions

Essential course vocabulary

Plain-language definitions for the technical terms used throughout the course.

TermDefinitionExample
ActuatorA device that produces a physical action.Motor, valve, relay or fan
BootThe sequence that starts the hardware, kernel, services and applications.Starting an embedded computer
CLIA text interface that accepts commands.Windows Terminal or a Linux terminal
CommandAn instruction interpreted by a shell.pwd, ls or Get-Location
Device driverSoftware through which the operating system communicates with hardware.GPIO or camera driver
DirectoryA named container for files and other directories./home/student/eml
DistributionA complete operating system built around the Linux kernel.Ubuntu or Debian
Embedded systemA computer integrated into a larger product for a defined purpose.Greenhouse controller
File systemThe structure used to name, store and retrieve files.ext4
GPIOA configurable digital input or output pin.Reading a switch
I²CA two-signal serial bus for peripherals.Environmental sensor
KernelThe privileged core managing memory, processors, devices and processes.Linux kernel
MQTTA lightweight publish/subscribe messaging protocol.Sending sensor data
ProcessA running instance of a program.A data logger
PWMRapid switching used to control average power or a signal duty cycle.Motor speed
RootThe privileged Linux user or the top directory, depending on context.Administrative access
ScriptA file containing commands that automate work.A backup script
SensorA device that converts a physical quantity into data.Temperature sensor
ServiceA background program providing an ongoing function.SSH server
ShellA program that interprets commands and starts programs.Bash or PowerShell
SPIA synchronous bus commonly used for fast peripherals.Display or converter
SSHEncrypted remote command-line access.Managing a Raspberry Pi
TCP/IPThe principal protocol family used across computer networks.Device-to-server communication
UARTAn asynchronous serial interface.Debug console
User spaceThe environment where ordinary programs run outside the kernel.Application software
Version controlA system that records and manages file changes.Git

Official examination information · EKA T550077102

Individual portfolio examination

Form

Portfolio

Individual presentation portfolio submitted at semester end.

Grade

7-point scale

No second examiner.

Weighting

No split published

No separate written-exam or coursework percentages are stated.

Re-examination

Same form

Same form as the ordinary examination.

Team project and individual assessment

The team project creates practical evidence, but each student is assessed individually through the presentation portfolio. Classroom participation points support engagement and do not form part of the official grade.

Document from the beginning

  • Your own decisions and identifiable contribution
  • Commands, code, configuration and version history
  • Tests, results, failures and improvements
  • Reflection on trade-offs and learning

People and course systems

Contacts and official links