Linux System Programming and Introduction to Buildroot

Brought by: Coursera

Overview

This course provides an overview of System Programming for the Linux operating system, or software which is interfacing directly with the Linux Kernel and C library. The basic components of a Linux Embedded System, including kernel and root filesystem details are discussed. The Buildroot build system is introduced, which students use to build their own custom Embedded Linux system through programming assignments.

Linux System Programming and Introduction to Buildroot can also be taken for academic credit as ECEA 5305, part of CU Boulder’s Master of Science in Electrical Engineering.

Syllabus

  • Intro to Linux System Programming and Toolchains
    • In this module, you will learn about Linux shell scripting and System Programming concepts. You will also understand the basics of an Embedded Linux toolchain and setup a cross-compiler.
  • File IO, Process Management, Basics of Embeddd Linux
    • In this module, you will learn the basics of File IO for Linux. You will understand the basics of Process Management, process forking, and Linux daemons. You will build your own Linux kernel and root filesystem, boot and run on QEMU.
  • Threads and Multithreading, Introduction to Buildroot
    • In this module, you will learn the basics of Threading and Multi Thread Synchronization in Linux system programming using POSIX. You will also learn about the Buildroot build system and build a QEMU Image using Buildroot.
  • Time and Sockets
    • In this module, you will learn the fundamentals of signal handling and time management in Linux System Programming. You will learn the basic components of Embedded Linux debugging. You will implement a socket server application and deploy on a QEMU based Embedded System using Buildroot.

Taught by

Daniel Walkes

Linux System Programming and Introduction to Buildroot
Go to course

Linux System Programming and Introduction to Buildroot

Brought by: Coursera

  • Coursera
  • Free
  • English
  • Certificate Available
  • Available at any time
  • All
  • English, Arabic, French, Portuguese, German, Thai, Indonesian, Spanish, Kazakh, Hindi, Russian, Swedish, Korean, Greek, Italian, Chinese, Ukrainian, Japanese, Polish, Dutch, Turkish
8.1.2PHP Version264msRequest Duration2MBMemory UsageGET en/courses/{slug}Route
    • Booting (167ms)
    • Application (96.17ms)
    • 1 x Booting (63.27%)
      166.75ms
      1 x Application (36.49%)
      96.17ms
      14 templates were rendered
      • public.courses.show (resources/views/public/courses/show.blade.php)3bladefile
        Params
        0
        course
        1
        links
        2
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.courses.partials.details (resources/views/public/courses/partials/details.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.layouts.main (resources/views/public/layouts/main.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.meta (resources/views/public/layouts/partials/meta.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.navbar (resources/views/public/layouts/partials/navbar.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.links (resources/views/public/auth/profile/partials/links.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.layouts.partials.flash-session (resources/views/public/layouts/partials/flash-session.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      uri
      GET en/courses/{slug}
      middleware
      web, localize:en
      controller
      App\Http\Controllers\CourseController@show
      as
      en.courses.show
      namespace
      prefix
      /en
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      7 statements were executed4.16ms
      • select * from `courses` where `slug_en` = 'linux-system-programming-and-introduction-to-buildroot' limit 1
        2.65ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. linux-system-programming-and-introduction-to-buildroot
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:20
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • update `courses` set `visitors` = `visitors` + 1, `courses`.`updated_at` = '2025-04-28 20:35:02' where `id` = 247
        500μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-04-28 20:35:02
        • 1. 247
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:21
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `topic_id`, `slug_en`, `slug_ar` from `subjects` where `subjects`.`id` in (29)
        200μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `slug_en`, `slug_ar` from `topics` where `topics`.`id` in (1)
        130μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 25. /app/Http/Controllers/CourseController.php:23
        • 26. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 27. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 28. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 29. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `institutions` where `institutions`.`id` in (49) and `institutions`.`deleted_at` is null
        290μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `providers` where `providers`.`id` in (2) and `providers`.`deleted_at` is null
        190μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `html_files` where `html_files`.`id` = 244 limit 1
        200μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 244
        Backtrace
        • 21. /app/Models/Course.php:84
        • 28. view::public.courses.show:29
        • 30. /vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:125
        • 31. /vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:58
        • 32. /vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:72
      App\Models\HtmlFile
      1
      App\Models\Provider
      1
      App\Models\Institution
      1
      App\Models\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        b9fliyAShzogfYb0OwOFHh4seDXawsufkDGi0a4k
        locale
        en
        _previous
        array:1 [ "url" => "https://www.corspedia.com/en/courses/linux-system-programming-and-introduction...
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /en/courses/linux-system-programming-and-introduction-to-buildroot
        status_code
        200
        
        status_text
        OK
        format
        html
        content_type
        text/html; charset=UTF-8
        request_query
        []
        
        request_request
        []
        
        request_headers
        0 of 0
        array:24 [ "cf-ipcountry" => array:1 [ 0 => "US" ] "cf-connecting-ip" => array:1 [ 0 => "18.118.171.28" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "accept" => array:1 [ 0 => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "cf-ray" => array:1 [ 0 => "93795800bc9358ee-ORD" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "priority" => array:1 [ 0 => "u=0, i" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "x-forwarded-for" => array:1 [ 0 => "18.118.171.28" ] "host" => array:1 [ 0 => "www.corspedia.com" ] "content-length" => array:1 [ 0 => "" ] "content-type" => array:1 [ 0 => "" ] ]
        request_server
        0 of 0
        array:50 [ "USER" => "www-data" "HOME" => "/var/www" "HTTP_CF_IPCOUNTRY" => "US" "HTTP_CF_CONNECTING_IP" => "18.118.171.28" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "HTTP_SEC_FETCH_SITE" => "none" "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_CF_RAY" => "93795800bc9358ee-ORD" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_PRIORITY" => "u=0, i" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_X_FORWARDED_FOR" => "18.118.171.28" "HTTP_HOST" => "www.corspedia.com" "REDIRECT_STATUS" => "200" "SERVER_NAME" => "corspedia.com" "SERVER_PORT" => "443" "SERVER_ADDR" => "141.95.147.152" "REMOTE_USER" => "" "REMOTE_PORT" => "38882" "REMOTE_ADDR" => "172.69.17.205" "SERVER_SOFTWARE" => "nginx/1.18.0" "GATEWAY_INTERFACE" => "CGI/1.1" "HTTPS" => "on" "REQUEST_SCHEME" => "https" "SERVER_PROTOCOL" => "HTTP/2.0" "DOCUMENT_ROOT" => "/var/www/corspedia/public" "DOCUMENT_URI" => "/index.php" "REQUEST_URI" => "/en/courses/linux-system-programming-and-introduction-to-buildroot" "SCRIPT_NAME" => "/index.php" "CONTENT_LENGTH" => "" "CONTENT_TYPE" => "" "REQUEST_METHOD" => "GET" "QUERY_STRING" => "" "SCRIPT_FILENAME" => "/var/www/corspedia/public/index.php" "PATH_INFO" => "" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1745872502.132 "REQUEST_TIME" => 1745872502 ]
        request_cookies
        []
        
        response_headers
        0 of 0
        array:5 [ "content-type" => array:1 [ 0 => "text/html; charset=UTF-8" ] "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ 0 => "Mon, 28 Apr 2025 20:35:02 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6InlRSWVjN203QUxUcXZmSkhUWDVkSlE9PSIsInZhbHVlIjoiNVlKNlBIaHNoZTFlT3IyOFFSZnc3T1lySzhWa2E0eGhuL2lNUDJ3UkxLYVNuQkVnNWozUTAraGRuSnpSUVQ4aTh1eG9qc0w3WjJpMWlzT1QzcHVDbDlVTFE1WWxCMmxROGxUWGtWMDJlYVgxd3Rabkl2WU5GOHN1MkZRam85ZFYiLCJtYWMiOiJiMWQxN2M5ZDYwZDU4NDhiNGIwMjU0Mzc2OGY5ZTE4NGM2ZjJjNDFkM2M1ZjkyYWY1ZGMzOTQ5ZTMwNzlkNTdkIiwidGFnIjoiIn0%3D; expires=Mon, 28 Apr 2025 22:35:02 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6InlRSWVjN203QUxUcXZmSkhUWDVkSlE9PSIsInZhbHVlIjoiNVlKNlBIaHNoZTFlT3IyOFFSZnc3T1lySzhWa2E0eGhuL2lNUDJ3UkxLYVNuQkVnNWozUTAraGRuSnpSUVQ4aTh1eG9qc" 1 => "laravel_session=eyJpdiI6IllNbHBSUjZRYXhPa1YzODEyUmY3bHc9PSIsInZhbHVlIjoiSWRMOFErSGtmSWVnMEhJTUdzYk5GQWtoLy9RR1dGSDhha0NMSjY0eDB1alNVWmV4cU84TzdwNzMwSVg3Z1dObkZRMWxuTlcvbWhjTURneFlPWFlIcjdNOEpGSVlMbzBOcGpHY1hrS28vQUNSMC92bkFoQTE1MDg2ZXJSYk5wc2kiLCJtYWMiOiJlZmQ5MWM0ZDhkMTNhMjE2Zjc2Y2E2Y2Q0OGUwYjE0YmMwYjFkYzVlMTgxODE4ZWU3NDgzOTM0ZDljYmQ3ZmYxIiwidGFnIjoiIn0%3D; expires=Mon, 28 Apr 2025 22:35:02 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6IllNbHBSUjZRYXhPa1YzODEyUmY3bHc9PSIsInZhbHVlIjoiSWRMOFErSGtmSWVnMEhJTUdzYk5GQWtoLy9RR1dGSDhha0NMSjY0eDB1alNVWmV4cU84TzdwNzMwSVg3Z1dObkZR" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6InlRSWVjN203QUxUcXZmSkhUWDVkSlE9PSIsInZhbHVlIjoiNVlKNlBIaHNoZTFlT3IyOFFSZnc3T1lySzhWa2E0eGhuL2lNUDJ3UkxLYVNuQkVnNWozUTAraGRuSnpSUVQ4aTh1eG9qc0w3WjJpMWlzT1QzcHVDbDlVTFE1WWxCMmxROGxUWGtWMDJlYVgxd3Rabkl2WU5GOHN1MkZRam85ZFYiLCJtYWMiOiJiMWQxN2M5ZDYwZDU4NDhiNGIwMjU0Mzc2OGY5ZTE4NGM2ZjJjNDFkM2M1ZjkyYWY1ZGMzOTQ5ZTMwNzlkNTdkIiwidGFnIjoiIn0%3D; expires=Mon, 28-Apr-2025 22:35:02 GMT; path=/XSRF-TOKEN=eyJpdiI6InlRSWVjN203QUxUcXZmSkhUWDVkSlE9PSIsInZhbHVlIjoiNVlKNlBIaHNoZTFlT3IyOFFSZnc3T1lySzhWa2E0eGhuL2lNUDJ3UkxLYVNuQkVnNWozUTAraGRuSnpSUVQ4aTh1eG9qc" 1 => "laravel_session=eyJpdiI6IllNbHBSUjZRYXhPa1YzODEyUmY3bHc9PSIsInZhbHVlIjoiSWRMOFErSGtmSWVnMEhJTUdzYk5GQWtoLy9RR1dGSDhha0NMSjY0eDB1alNVWmV4cU84TzdwNzMwSVg3Z1dObkZRMWxuTlcvbWhjTURneFlPWFlIcjdNOEpGSVlMbzBOcGpHY1hrS28vQUNSMC92bkFoQTE1MDg2ZXJSYk5wc2kiLCJtYWMiOiJlZmQ5MWM0ZDhkMTNhMjE2Zjc2Y2E2Y2Q0OGUwYjE0YmMwYjFkYzVlMTgxODE4ZWU3NDgzOTM0ZDljYmQ3ZmYxIiwidGFnIjoiIn0%3D; expires=Mon, 28-Apr-2025 22:35:02 GMT; path=/; httponlylaravel_session=eyJpdiI6IllNbHBSUjZRYXhPa1YzODEyUmY3bHc9PSIsInZhbHVlIjoiSWRMOFErSGtmSWVnMEhJTUdzYk5GQWtoLy9RR1dGSDhha0NMSjY0eDB1alNVWmV4cU84TzdwNzMwSVg3Z1dObkZR" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "b9fliyAShzogfYb0OwOFHh4seDXawsufkDGi0a4k" "locale" => "en" "_previous" => array:1 [ "url" => "https://www.corspedia.com/en/courses/linux-system-programming-and-introduction-to-buildroot" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]