Linuxは、組み込みシステム用のオペレーティングシステムを作成するための信頼できるユーティリティになりました。ただし、組み込み開発ユーティリティの学習曲線は非常に難しい場合があります。これらの複雑なツールを使用する多くの人々は、それらを理解して習得するために多くの時間を費やしてきました。Yoctoも例外ではありません。これを使用すると、組み込みシステムプロジェクト用のカスタムの最小限のLinuxディストリビューションを開発できます。
この投稿では、最小限のLinuxディストリビューションを作成するためのYoctoの使用を開始するためのステップバイステップガイドを提供します。
Yoctoプロジェクト
Yoctoは、基盤となるハードウェアアーキテクチャにかかわらず、組み込みシステム用のカスタムLinuxベースのシステムを開発するために必要なツール、テンプレート、およびプロセスを作成することを目的としたオープンソースの共同プロジェクトです。 Yoctoは、ビルドシステムとして機能するOpenEmbeddedを含む22の組織のコラボレーションとして2011年3月に立ち上げられました。
Yocto Projectビルドの出力は、次の3つの主要コンポーネントで構成されています。
- ターゲットランタイムバイナリ: これには、ターゲットシステムにLinuxをデプロイするために必要なすべての補助ファイルが含まれています。その他のファイルには、ブートローダー、カーネル、カーネルモジュール、ルートファイルシステムイメージが含まれます。
- パッケージフィード: これは、システムに必要なソフトウェアパッケージを指します。システムに必要なパッケージマネージャー(deb、dnf、ipkなど)を選択することもできます。そのようなパッケージをターゲットランタイムバイナリに含めるか、後で既にデプロイされているシステムに追加することができます。
- ターゲットSDK: これらは、ターゲットにインストールされているシステムを示すライブラリとヘッダーファイルです。これらは主に、システムごとに適切なライブラリをリンクするためにアプリ開発者によって利用されます。
既存のDistroを使用しないのはなぜですか?
当初、組み込みシステムは既成のディストリビューションを使用し、ニーズに合わせてそれらをカスタマイズしようとしました。これには、ストレージの最適化とセキュリティの強化のために不要なパッケージを削除することが含まれていました。死んだソフトウェアがあると、システムがさまざまな攻撃ベクトルに対して脆弱になる可能性があります。これらの利点があっても、既存のディストリビューションを使用することにはいくつかの課題がありました。
1つは、パッケージを削除するプロセス全体が簡単ではなかったことです。一部のパッケージを削除すると、他のさまざまなパッケージが保持している依存関係が壊れる可能性があります。さらに、一部のパッケージはブートおよびランタイムプロセスと統合されているため、削除が面倒です。
そのため、既存のディストリビューションでは、不必要な遅延が発生したり、必要なすべての基準を満たしていないシステムが使用されたりすることがよくありました。
始めましょう。
Yoctoを使用して独自のLinuxディストリビューションを作成する
ステップ1:ハードウェアとOSの要件
- 最小4GBのRAM(高いほど良い)
- 最新のUbuntuOS(20.04 LTS)またはその他のLinuxオペレーティングシステム:
- Fedora
- openSUSE
- CentOS
- Debian
- 最低100GBのハードディスク空き容量(サイズが大きいほどパフォーマンスが向上します)。 Yoctoは、ターゲットの最終製品によっては、非常に多くのリソースを消費する可能性があります。
macOSまたはWindowsユーザーの場合は、VMwareやVirtualboxなどの仮想化ソフトウェアを使用してLinuxディストリビューションを実行します。または、マルチブートを選択することもできます。
ステップ2:ホストを設定する
まず、必要な依存関係をホストシステムにインストールしましょう。この投稿では、Ubuntuディストリビューションを使用しています。別のディストリビューションを実行している場合は、Yocto Projectクイックスタートガイドに目を通し、インストールする依存関係を確認してください。
ターミナルを起動し、以下のコマンドを実行します:
sudo apt update
sudo apt-get install wget git-core unzip make gcc g++ build-essential subversion sed autoconf automake texi2html texinfo coreutils diffstat python-pysqlite2 docbook-utils libsdl1.2-dev libxml-parser-perl libgl1-mesa-dev libglu1-mesa-dev xsltproc desktop-file-utils chrpath groff libtool xterm gawk fop
ステップ3:YoctoPokyのクローンを作成する
依存関係がインストールされたら、Yoctoのダウンロードに進むことができます。 YoctoProjectのWebサイトからYoctoリポジトリのクローンを作成します。以下のコマンドを実行すると、最新リリース(「sumo」ブランチ)がダウンロードされます。アクセスと一貫性を容易にするために、Yoctoプロジェクトをビルドするためにホームフォルダーにディレクトリを作成します。
mkdir ~/yocto mkdir ~/yocto/Project-One/ cd ~/Yocto/Project-One/ git clone -b sumo git://git.yoctoproject.org/poky.git
「gitコマンドが見つかりません」などのエラーが発生した場合 つまり、システムにgitがインストールされていないということです。以下のコマンドを実行してインストールします。
sudo apt install git
ステップ4:構築環境を初期化します。
Yoctoの使用を開始するには、「ビルド環境」を初期化する必要があります。以下のコマンドを実行します。 1つ目は、ディレクトリをクローンしたばかりのフォルダに変更します。 2番目のコマンドは、「ビルド環境」を初期化します。
cd ~/Yocto/Project-One/poky
source oe-init-build-env build
初期化が完了すると、ビルドディレクトリと構成ファイルが作成されます。ビルドディレクトリは、すべてのシステムビルドが行われる場所であり、プロセスの完了後にイメージファイルをホストします。実際、初期化後、ターミナルは自動的にビルドフォルダを指します。上の画像でそれを見ることができます。
ステップ5:構成
/ buildディレクトリでlsコマンドを実行すると、すべての構成ファイルを含む/confフォルダーが表示されます。以下のコマンドでこのフォルダに移動します:
$ cd ~/Yocto/Project-One/poky/build/conf/ $ ls
confフォルダーでlsコマンドを実行すると、local.confファイルが表示されます。このファイルは、ターゲットマシンと目的のターゲットアーキテクチャのSDKの詳細を指定します。
次のコマンドで編集するためにこのファイルを開きます:
$ sudo nano local.conf
下の画像から、ターゲットビルドマシンは「qemux86-64」です。
次に、下の画像に示すように、次の行のコメントを解除します。 (コメントを外すことは、「#」記号を削除することを意味します)
DL_DIR ?= "${TOPDIR}/downloads" SSTATE_DIR ?= "${TOPDIR}/sstate-cache" TMPDIR ?= "${TOPDIR}/tmp" PACKAGE_CLASSES ?= "package_rpm" SDKMACHINE ?= "i686" EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
コンパイルプロセスを続行する前に、「local.conf」ファイルの最後に次の行を追加します。
BB_NUMBER_THREADS = "X" PARALLEL_MAKE = "-j X"
交換 コンピュータのプロセッサ/CPUの数が2倍の「X」。したがって、プロセッサが4つある場合は、次のようなステートメントになります。 BB_NUMBER_THREADS =“ 8” PARALLEL_MAKE =“ -j 8”
コンピューターのCPU数を表示するには、次のコマンドを実行します。
lscpu
ステップ5:コンパイルと構築のプロセス
イメージのビルドを開始するには、/buildディレクトリで以下のコマンドを実行します。
bitbake core-image-sato
これにより、ターゲットシステムのパッケージのダウンロードとコンパイルが開始されます。エラーが発生するため、root権限で上記のbitbakeコマンドを実行しないでください。初めてビルドする場合、プロセスには最大で数時間(2時間以上かかる場合もあります)かかる場合があります。時々、bitbakeはエラーに遭遇するかもしれません。パニックにならない;上記のコマンドを再度実行してください。エラーは、特定のWebサイトがダウンしているか、リソースが不足していることが原因である可能性があります。
結果のバイナリイメージは、poky / build / tmp / deploy / images/qemux86の/buildディレクトリに保存されます。
結論
Yoctoを一度に習得するのは非常に難しい場合がありますが、プロジェクト用のカスタムLinuxディストリビューションの作成を開始するのに最適なユーティリティです。この投稿で、カスタムLinuxディストリビューションの構築プロセス全体を開始する方法の詳細な手順が提供されたことを願っています。