トレーニング > IoT&組込み開発 > Embedded Linux Development (LFD450)
Image Image インストラクター主導のコース

Embedded Linux Development (LFD450)

組込みLinux製品の開発手法を段階的に学びます。開発環境の構築から、ブートローダー、カーネル、ドライバー、デバイスツリーの設定、そしてユーザー空間のルートファイルシステムの構築までを習得します。RISC-Vベースのエミュレートされたターゲットを用いたハンズオン演習を通じて、電子機器、医療、自動車といった幅広い産業分野で役立つ実践的な経験を積むことができます。

Image
対象者

このコースは、組込みLinux製品をゼロから開発する必要がある経験豊富な開発者を対象としています。
折りたたむ 続きを読む
Image
学習内容

このコースでは、Linux カーネル アーキテクチャについて学び、カーネルをカスタム組込みプラットフォームに適応させることに関連する重要な点を強調します。このコースでは、プロジェクトの制約を満たすためにシステムのサイズを適切に設定するためのテクニック、組込みプロジェクトのクロス開発環境を構築するために利用できる多数のリソース、組込みシステムの目標と制約を満たすためにライブラリとアプリケーションのユーザー空間を設定するために利用できるオプションなども取り上げます。
折りたたむ 続きを読む
Image
身につく知識

このコースでは、組込みLinuxデバイスの開発に必要なツールとテクニックを使用する準備をします。
折りたたむ 続きを読む
おもなテーマ
すべて展開
すべて折りたたむ
Image はじめに
- 目的
- 受講対象者
- The Linux Foundation とは
-著作権と機密情報
- Linux Foundationトレーニング
- 認定プログラムおよびデジタルバッジ
- Linuxディストリビューション
- プラットフォーム
- システムの準備
- Things Change in Linux and Open Source Projects
- ドキュメントとリンク
Image 事前準備
- Linuxディストリビューション
-仮想マシンへのインストールに関する注意事項
- 実習準備の手順
- 演習
Image OSSプロジェクトで活動する際のヒント **
- 適切に貢献するには
-コードがどこから来ているかを知る:DCOとCLA
- メインラインの近くでセキュリティと品質を保つ
- プロジェクトのDNAを研究して理解する
- スクラッチするべき部分を見つけ出す
- メンテナーおよび彼らのワークフローやメソッドを特定する
- 早い段階で意見を訊き、オープンに作業する
- 大きなコード ダンプではなく、差分のコードをコントリビュートする
- エゴを捨てよう。敏感にならないように。
- 忍耐強く、長期的な関係を築き、助けの手を差し伸べよう
Image 組込みシステムとリアルタイム システムの基本概念
- 基本概念
- 保護機能が必要とされる背景
- OTS(Off the Shelf:既製コンポーネント)としての活用
- 組込み開発における注意点
-リアルタ イムオペレーティングシステム (RTOS)
-リアルタイムLinux
- 専用ハードウェアによる支援
- リソース
Image クロス開発環境:目標と必要性
- はじめに
- クロス開発が困難な理由
- プロジェクト目標の考慮
- 補足情報へのリンク
- 演習
Image Kbuildビルドシステム
- はじめに
- Kbuild の Makefile
- Kconfigの基本
- Kconfigの検索
Image クロス開発ツールチェーン
- コンパイラトリプレット
- Linux ディストリビューション提供のクロスコンパイラー
- Linaro
-CodeSourcery
--crosstool-ng
- Buildroot
- OpenEmbedded
- Yocto Project
- Clang
- 演習
Image QEMU
- QEMU の概要
- QEMU を使う理由
- エミュレートするアーキテクチャ
- イメージフォーマット
- 演習
Image マイクロSD カードからのターゲット開発ボードの起動
- マイクロSD カードを使う理由
- マイクロSD カードへのソフトウェアの書き込み
- フラッシュメモリからの起動
- マイクロSD カードの利用を非推奨とする理由
- 演習
Image イーサネットを介したターゲット開発ボードのブート
- 仮想ハードウェアの使用
- より効率的な開発手法
-TFTPおよびNFSrootを使用したブートシーケンス
- 演習の目的
- 演習
Image ブートローダーとU-Boot
- ブートコードのステージ
- 代表的なGPL BIOS
- 代表的なGPL ブートローダー
- Das U-Boot
- U-Bootのコマンドライン
- U-Boot の環境変数
- 演習
Image カーネルコンフィギュレーションの作成、ビルド、および起動
- 開発ボード用のカーネルコンフィギュレーションの作成
- 演習
Image デバイスドライバー**
- デバイスの種類
- デバイスノード
- キャラクタードライバー
- ドライバーの実装例
- 演習
Image デバイスツリー
- デバイスツリーとは?
- デバイスツリーでできること・できないこと
- デバイスツリーの構文
- デバイスツリーのウォークスルー
- デバイスツリーバインディング
- ブートローダーにおけるデバイスツリーのサポート
- ドライバーでのデバイスツリーデータの使用
- 旧ドライバーとの共存と変換
- 演習
Image ターゲットファイルシステムの作成
- 組込み向けファイルシステムへの要求事項
- ディレクトリ構成
- 組込み向けファイルシステムの種類
Image ターゲットルートファイルシステムの構築
- 演習の目的
- 演習
Image ルートファイルシステム構築時のオプション比較
- SysVinit vs. BusyBoxinit
-- udev vs. BusyBoxmdev
-- Systemd
- Cライブラリの選択
- 演習
Image uClibcの構成
- NFS用のuClibcの設定
- 演習
Image musl の設定**
-- muslとは
- musl を使用するBuildroot の設定
- 演習
Image BusyBoxのビルド
- BusyBox の概要と動作原理
- Buildroot を用いたBusyBox の設定
- 演習
Image カーネルの監視とデバッグ
-トレースとプロファイリング
-Ftrace、Trace-Cmd、Kernelshark
- Perf
- perfの使用
- sysctl
- SysRqキー
-- oopsメッセージ
- カーネルデバッガー
-- debugfs
Image 適正サイジング
- 組込みで頻繁に必要となるコンポーネント
- カーネルサイズの棚卸し
Image メモリテクノロジデバイス(Flash メモリファイルシステム))
- MTDデバイスとは
- NAND vs. NOR vs. eMMC
- ドライバーモジュールとユーザーモジュール
- Flash ファイルシステム
Image 圧縮ファイルシステム
- SquashFS
- MTDパーティションへの展開
- 演習
Image システムアップグレード
- いつアップデートが必要になるか?
- アップデート戦略
- 構築済みのアップグレードシステム
- 演習
Image リアルタイム拡張機能
- 予測可能性、プリエンプション、ロックについて
- Real-Time Linux プロジェクト
- リアルタイムチェックリスト
Image 最後に
- 評価サーベイ
Image カーネルアーキテクチャプレビュー
- LinuxおよびUNIX
- モノリシックカーネルとマイクロカーネル
- メインカーネルタスク
- ユーザースペースとカーネルスペース
Image カーネルソースツリーの概要
- カーネルソースのインストールとレイアウト
- カーネルブラウザ
- カーネル構成ファイル
- なぜ難しいのか?パート2
Image カーネルプログラミングプレビュー
- コーディングスタイル
-- kernel-doc
- 一般的なカーネルルーチンとメソッドの使用
- エラー番号、カーネル出力の印刷、syslogd
- タスク構造
- メモリ割り当て
- ユーザーとカーネルスペース間でのデータの転送
Image モジュール
- モジュールとは何ですか?
- 簡単な例
- モジュールのコンパイル
- モジュールと組込み
- モジュール ユーティリティ
- 自動モジュールロード
- モジュール使用回数
- モジュールライセンス
- シンボルのエクスポート
- シンボルの解決**
- 演習
Image 基本的なターゲット開発ボードのセットアップ
- 演習の目的
- 演習
Image uSDからのターゲット開発ボードの起動
- 演習の目的
- 演習
Image イーサネットを介したターゲット開発ボードのブート
- より効率的な開発手法
-TFTPおよびNFSrootを使用したブートシーケンス
- 演習の目的
- 演習

**
これらのセクションは、部分的にまたは全体を
オプションとして考えることができます。これらのセクションには、
背景となる参考資料、専門的なトピック、または高度なテーマが含まれています。
講師は、教室での経験や時間の制約に応じて、
これらをカバーするかしないかを選択することができます。
前提条件
このコースは、主にLinuxを組み込みシステムに適合させる方法を学ぶことに興味のある経験豊富な開発者、プログラマー、およびエンジニアを対象としています。基本的なLinuxユーティリティに精通し、Cプログラミング言語を理解し、LinuxまたはUNIX用の開発に慣れている必要があります。クラスの前に、クラス前の準備資料が提供されます。
レビュー
2026年1月
このコースの情報量は膨大で、特に私の知識が限られていることを考えると、なおさらでした。このコースには本当に感謝し、多くのことを学びました。.
2026年1月
このコースではデバイス ツリーとリアルタイム カーネルの側面を詳しく取り上げている点が気に入りました。.
2025年8月
私はカーネルとルートファイルシステムをコンパイルするのが好きでした。
2025年8月
理論と実践的なラボがうまく組み合わされています。
2025年8月
内容が深く、実践的な実験も提供されました。他のクラスメイトとの交流も楽しかったです。
2025年8月
このスペースで語彙力が向上し、仕事に関連する情報を見つけるのに役立ちました。
2025年8月
短期間で OS と Linux ツールについて多くのことを学びました。
2025年8月
クロスコンパイラ、構成ツール、ドライバー/モジュール、デバイスツリー、rootfs など、私が興味を持っていたすべてのトピックに触れました。
2025年8月
私はブートプロセスについてあまり詳しくないので、その議論は興味深いと思いました。
2025年8月
全体的に、このコースは QEMU の使い方と、エミュレートされたハードウェア用の Linux 環境の初期作成について復習するのに良い内容でした。
2025年8月
複数の C ライブラリ、ブート システム、およびクロス コンパイラに重点が置かれています。
2025年8月
幅広いカリキュラムのおかげで、Linux の基礎に対する理解が深まり、強化されました。
2025年8月
実験と用意された教材は素晴らしく、常に関連する学習内容と関連性がありました。教材はよく準備されており、プロセスもわかりやすく説明されていました。
2025年8月
内容も多岐にわたり、組込みシステムの概要がよく理解できました。
2025年8月
役に立つコースです。個々のテーマを深く掘り下げる前に、幅広く学べる良い授業だと思います。
2025年3月
講師は業界経験と実務経験を持っていました。
2025年3月
各ステップを学習し、自分のマシンで実行します。
2025年3月
教材の各章を使って段階的に構築していくことができたのが気に入りました。
2025年3月
関連資料が十分にカバーされており、講師の関連する個人的経験も紹介されています。
2024年10月
このコースでは、多くの Linux トピックに関する優れた背景情報が提供されました。
2024年10月
組み込み Linux のさまざまなコンポーネントについて学ぶのが楽しかったです。
2024年10月
この本で扱われているトピックは興味深く、私が期待していた範囲を超えていたと思います。また、実験は比較的スムーズに進んだと思いますし、授業についていくのに役立った教科書も気に入りました。
2024年10月
私はこの研究分野の広さがとても気に入りました。そして今では、組込みハードウェア用のファイルシステムをどのようにセットアップ/コンパイルできるかについて、はるかに深い理解が得られたように感じています。
2024年10月
組込み開発に使用されるさまざまなツールチェーン、ツール、ソフトウェア、パッケージについて学び、Linux 開発がどのように行われるかを理解できたのは良かったです。
2024年10月
実験室での演習は、筋肉の記憶を構築するという点で素晴らしく、抽象化されすぎませんでした。
2024年10月
授業は最初から最後まで、既存の知識を基に非常に論理的に進んでいったように思いました。
2024年7月
実践的なセッション、トレーナーの経験からの洞察、そして素晴らしい雰囲気。
2024年7月
最初から最終システムまで、全体像がよくわかりました。
2024年7月
数多くのソリューションの大きな概要。
2024年7月
デバイスツリーとリアルタイム拡張について学ぶのが楽しかったです。
2024年7月
何もないところから何かを構築し、完全に機能する環境を構築するまでの現実的な手順。これらの手順により、すべてがどのように機能するかを理解できました。