CT Solutions

Trainings

Detailed information about our technical training programs

Linux Beginner Training

3 Days / 18 HoursBeginner

This training is planned for those who have never used Linux before or who only use Linux by clicking through the GUI. It is primarily designed for application developers working under Linux. Almost no Bash or C programming will be done; the focus will be on concepts. As always, all work is done from the terminal, without GUI or mouse.

For training schedule and price quote, please write to training@ucanlinux.com

Some Concepts

  • login, mode, owner, console, terminal, kernel, root file system

Which Directory Serves What Purpose

  • /bin
  • /etc
  • /var
  • /dev
  • /proc

man Pages

  • How to use man pages?

/etc Files

  • How are programs started automatically?

What is Shell?

  • PATH
  • ENV
  • PS1
  • .bash_profile, .bashrc
  • $?
  • Catching signals
  • Using nohup

Some Commands and Examples

  • tree
  • dmesg
  • tail
  • chmod
  • chown
  • ifconfig
  • cpio
  • strace

Essential Commands

  • awk
  • sed
  • regular expression

dd

  • Example usage
  • Conceptual approach
  • Creating file system
  • Producing image
  • Mounting image
  • Creating master image

mount

  • Conceptual approach
  • Function pointer concept in C
  • Disk naming
  • Partition concept
  • /dev/sda, /dev/mmcblk0 node names

File Systems

  • Conceptual approach
  • What is it, how is it different from a partition?
  • How and where do they sit within a partition?

Image Concept

  • losetup command
  • Image installation
  • Compression
  • Mounting
  • Creating partitions within an image

Cross-Compiler Setup and Test

  • How to install ARM compiler
  • How to test it
  • Static compilation
  • Dynamic compilation
  • Size reduction
  • Prefix concept

Working with SD/MMC/SSD

  • Creating partitions
  • Creating file system
  • Mounting

Pseudo File Systems

  • /dev — device nodes
  • /sys — gpio usage
  • /proc — examining file descriptors
  • Using pseudo file systems with C

tmpfs Concept

  • Setting up tmpfs file systems
  • Mounting
  • /dev/shm
  • Extending SD card lifespan

Libraries

  • What are libc, libdl for?
  • How to obtain them?
  • Static, dynamic and plugin libraries
  • Library content analysis

Kernel Modules

  • modules/ directory and concepts
  • Analysis of existing modules
  • modinfo, modprobe and others
  • What is firmware/ for?

Kernel Messages

  • syslogd, klogd
  • Using syslog from C and bash

Compiling from tar.gz

  • How to compile packages without a package manager?
  • How to cross-compile?
  • How to install?
  • Working on the libzip example

VFS Concept

  • Fundamental concept of file systems and Unix
  • What is fd?
  • Reserved file descriptors

Special Files

  • /dev/null
  • /dev/zero
  • /dev/random
  • /dev/urandom
  • /dev/full
  • Example usage with C

pkg-config

  • Why does it exist?
  • How to use it with Makefile?

Process Concept

  • Process concept
  • Differences between thread and process
  • Joinable, detachable concepts
  • Detection and prevention of zombie processes

File Systems Overview

  • vfat
  • ext2, ext4
  • NFS
  • cramfs
  • squashfs
  • ubifs

popen

  • What is it for?
  • When to use it?
  • How to do web scraping?

POSIX

  • What is it, what is it for?
  • How to obtain POSIX features?
  • What is a system call?
  • Analysis with time

IPC (Inter-Process Communication)

  • IPC systems supported by POSIX
  • Memory map
  • Shared memory
  • Message queue
  • Semaphore and mutex
  • Pipes — named and unnamed pipes

TCP/IP and UDP/IP

  • Socket concept
  • How to set up, how to use?
  • Conceptual approach

Netlink Sockets

  • Monitoring kernel events
  • How does udevd work?
  • Running a program when a device is plugged in

Asynchronous I/O Concept

  • I/O multiplexing concept
  • select call
  • poll call

Signals

  • Conceptual approach
  • Differences from interrupts
  • Meaning and source of signals
  • How should programs protect against signals?
  • Writing signal handlers — old and modern approaches

Each participant can bring their own machine to the Linux beginner training. Alternatively, we provide notebooks.

Those who bring their own machines can come with any standard Linux distribution. They can also work on a virtual machine.

Embedded Linux Systems Training

3 Days / 21+ HoursAdvanced

Embedded Systems are systems installed in constrained environments, generally to do a single job very well. We provide training for embedded systems that support the Linux operating system. We follow a classical training program. For this, almost no helper programs or tools are used in system installations.

For training schedule and price quote, please write to training@ucanlinux.com

Training Objective

The goal of the training is to perform all steps between power-on and login with full awareness. At the end of the training, each participant will be able to build their own embedded Linux distribution from scratch and update it. Or analyze an existing distribution.

Equipment

The entire training is conducted hands-on. OrangePi Zero has been chosen as the training device. Almost all topics covered in the training are device-independent. A participant who takes this training can work on other devices with very little effort. Each participant will be provided with an HP Notebook computer, board, and necessary accessories.

Training Duration

The total training duration is 3 days and at least 21 hours. Training sessions are held from 10:00 AM to 6:00 PM. There is a 1-hour lunch break. Training hours can be adjusted upon request. Training can also be held on weekends if requested.

Training Fee

The training fee varies depending on the number of participants, payment method, and other factors. Training brochure, training fee, and payment information can be requested via our email address. The training fee is invoiced.

Training Schedule

Training sessions are generally held on Monday, Tuesday, and Wednesday of the 1st and 3rd weeks of each month. The training schedule can be changed upon request.

Training Venue

Our permanent training venue is GTU Technopark. For transportation by car or Marmaray, please check the contact page.

Classroom and Instructor

Our training class will consist of a maximum of 5 people. Training will be opened with a minimum of 3 people. Whiteboard, TV, a computer and working board for each participant, and other necessary hardware will be available. The entire training will be given by Dr. Nazım KOÇ.

Who Can Participate

Our training is open to everyone. Having basic Linux knowledge before attending will greatly increase the efficiency of the training. This training will save the participant a lot of time. In the training, we try to provide open source culture as much as possible, focus especially on concepts, and share our experience.

Day 1

Setting up the environment, going over the basic concepts needed by embedded systems, preparation for the first embedded system, installation and testing of the system booting from SD card.

Day 2

Installation and testing of two initramfs-supported embedded systems and an NFS-supported embedded system.

Day 3

Setting up an embedded system with Buildroot and testing it over NFS.

  • Setting up and using toolchain
  • Compiling U-Boot
  • Setting up skeleton RootFS
  • Busybox-supported RootFS setup
  • BR-supported RootFS setup
  • Kernel compilation
  • Writing boot scripts
  • Partitioning techniques
  • initramfs techniques
  • tftp and NFS server setup and usage
  • Network boot techniques

An HP notebook computer and a board will be provided for each participant. The participant does not need to do any prior preparation before the training.

However, for those who say "I will use my own computer," they should make the following preparations before coming.

We use Ubuntu 22.04 distribution in our training. This distribution has no direct relation to the training. All our operations are done from the terminal; the GUI is not used. Since we are familiar with Ubuntu for tasks like package management, network configuration, and setting up some internet services, it is recommended that participants come with Ubuntu 22.04.

Required packages for Ubuntu 22.04:

$ sudo apt install -y gcc g++ tree make libncurses-dev
$ sudo apt install -y net-tools nfs-kernel-server
$ sudo apt install -y minicom tftpd tftp xinetd unzip vim
$ sudo apt install -y file bison flex swig python3-dev
$ sudo apt install -y libssl-dev gnutls-dev man-db

Participants coming with a different Linux distribution or a different version of Ubuntu should install the packages listed above or their equivalents. They should also be experienced in installing and configuring network services such as tftp server and NFS server.

Participants can also attend the training with Linux emulators. However, especially the network configuration between host and guest machines and the use of USB channels are extremely problematic. It is not recommended to attend the training with emulator or Docker installations.

Instructor

Dr. Nazım KOÇ

Born on June 23, 1965, in Şişli, Istanbul, Nazım KOÇ is a graduate of Üsküdar Haydarpaşa High School. After graduating from the ITU Department of Mathematical Engineering, he completed the System Analysis Master's program and the Space Sciences doctoral program. He worked for many years in the private sector and at various TÜBİTAK institutes. He has given Linux, Bash Programming, Embedded Linux, Unix System Calls, and C programming training at numerous institutions. He is the author of the book Embedded Linux Systems.

  • ITU Mathematical Engineering graduate
  • System Analysis Master's, Space Sciences Doctorate
  • Served at TÜBİTAK institutes for many years
  • Author of the book Embedded Linux Systems
  • Linux, Bash, C, Unix System Calls trainer
Dr. Nazım KOÇ

Documents

Embedded Linux Systems Training

Current documents of the training we are currently providing can be reviewed here.

Setting Up a Simple Embedded System

Our previous trainings were given with the Beagle Bone Black device. This document discusses the installation of a simple embedded Linux system on the beagleboard. Although the beagleboard was chosen as the example system, almost all topics covered here can be applied to other boards with very few changes. The principles remain the same.

Working with Beaglebone

Supporting documents and presentations from our previous embedded Linux systems training.

Image Analysis with Loop Devices

This document discusses analyzing any disk image without installing it on a disk. It doesn't matter if the disk image belongs to an ARM, x86, or a specific machine. The analysis technique is exactly the same.

Setting Up and Testing an ARM-Based System with Emulator

In this document, an ARM-based system will be built from scratch and tested in an emulator environment. When building embedded systems, they are typically installed on MMC cards or flash drives and tested on development boards. This is both costly and a slow process. First, we need to physically have a board. How can we build and test an embedded system without having a board?

Linux on RISC-V

Although the concept of open source is well known in software, its hardware counterpart is not very widespread. RISC-V systems are currently the biggest alternative and competitor to ARM. In this article, we discuss building and testing a complete RISC-V system from scratch with toolchain, bbl, Linux kernel, loop device, root file system and qemu.

Getting Started with Embedded Systems Using OrangePi Zero

With very little board cost, one can get started with embedded Linux systems. This document is written especially for those who want to study on their own.

References

Our corporate clients from the defense industry, telecommunications, and finance sectors. Training has been provided to 500+ professionals.

500+
Trained Professionals
20+
Corporate Clients
25+
Years of Experience
Aselsan
Siemens
BMC
Accenture
Savronik
Asis Guard
Günsel
Belbim
PayCore
C2 Tech
Hugin
Makel
Zebra
Surtex
Smarte
OXI
Sensplorer
Altay
Visit Marine Solutions