Introduction to Linux for Embedded and Real Time System Developers
Duration: 5 Days
The course provides a comprehensive introduction to the Linux operating system. Emphasis is on interaction with Linux at the command line rather than using graphical user interfaces. Exercises make use of a PC running Centos or Ubuntu Linux and an embedded Linux platform such as the RasbperryPi or BeagleBone black running a standard kernel.
The course covers key topics essential to understanding Linux such as logging on, Linux file systems, TCP/IP networking, user accounts and security, the Linux boot process (and how to configure it), terminals and serial ports, and basic shell programming. The course also covers many standard Unix commands and utilites, including the vi editor.
Attendees should have experience of application development/programming in a high level language (e.g. Java, C, C++) in a PC/Workstation environment running either Microsoft Windows or Unix.
Real-time system developers intending to deploy Linux in embedded solutions often face a double learning hurdle -- they must find their way around Linux itself before they can design embedded systems around it. This course addresses the first of these issues by giving you a strong technical appreciation of linux.
You'll learn fundamentals such as creating and managing user accounts, Unix permissions and access control. You'll gain confidence in finding your way around Linux system installations using standard Linux commands.
You'll become familiar with command line editors vi and/or nano and be able to use them proficiently to create and modify text files. You'll learn, in detail, how Linux boots, both on PCs (GRUB, LILO) and on embedded systems (U-Boot) and you'll be able to control, configure and debug the boot process.
You'll work faster, through familiarity with standard Unix tools and utilities (including the BusyBox toolset on the embedded ARM platform). You'll learn how to set up and configure disk based, in memory, and flash file systems.
You'll gain the skills needed to configure ethernet and serial communications ports and TCP/IP networking. And you'll learn how to use package managers (both RPM and APT) to install software.
- Brief history of Linux
- Logging on to Linux
- Linux as a multi-user, multi-tasking operating system
- Accessing the command line (terminal and desktop)
- Accessing and using manual pages
- Introduction to command shells
- Understanding command syntax
- Executing commands at the command line
- Common command line tasks
- Piping and redirection
- Managing user accounts
- Performing RPM and APT package related operations
- Understanding the filesystem hierarchy standard (FHS)
- Indentifying file types
- Changing directories and listing directory contents
- Creating, viewing and appending files
- Copying and moving files and directories
- Creating directories
- Deleting files and directories
- Finding files on linux
- Using grep to search file content
- Understanding regular expressions
- Archiving files with tar
- Compressing and uncompressing files with gzip and bzip2
- Managing file permissions and ownership
- Viewing processes from the command line
- Understanding the runlevel concept
- Multiuser processes and multitasking
- Managing the network configuration
- Network-related command-line tools
- Basic Linux user security features
- Managing Linux users and groups
- Managing and securing the linux user environment
- Securing files and directories with permissions
- Select a linux file system
- Configuring linux filesystem partitions
- Configuring and managing a linux file system
- Backing up and restoring a file system
- Working with Flash File Systems
- The linux load procedure
- Managing run levels
- Managing the kernel
- Managing the GRUB boot loader
- Managing the U-BOOT boot loader
- Modifying system settings
- Managing processes
- Startup shell scripts and services
- Scheduling jobs
- Using system logging services
- Network components and architecture
- Configuring a network connection
- Configuring and managing routes
- Test a network interface
- Enabling network services