[和訳] OpenBMC Development Environment

# この記事について

* この記事はOpenBMCの開発環境の説明を和訳したものです。
* 筆者が調査していた時(2020年10月)の記事を翻訳していますので、最新版は記述が変わっている場合もあると思います。
* 機械翻訳を少し手直して掲載していますが、表現を変えた方がよいというご指摘は歓迎です。編集リクエストお願いします。

> 翻訳元
> https://github.com/openbmc/docs/blob/master/development/dev-environment.md
> ライセンス: Apache License 2.0

----
# OpenBMC Development Environment

**ドキュメントの目的:** OpenBMC開発環境をセットアップする方法を説明

**読者:** LinuxとBMCに精通したプログラマー

**前提条件:** Linux, Mac, または Windows システム

## Overview

OpenBMCは、[Yocto](https://www.yoctoproject.org/) プロジェクトを基盤となる構築および分散型電源フレームワークとして使用します。 メインのOpenBMC [README](https://github.com/openbmc/openbmc/blob/master/README.md) は、YoctoとOpenBMCの起動と使用に関する情報を提供します。

このプロセスを使用して変更をビルドするメカニズムはありますが、ソフトウェアの初期デバッグと検証には時間がかかり、面倒な場合があります。このガイドでは、OpenBMCソフトウェア開発キット（SDK）と[QEMU](https://www.qemu.org/) を使用して新しい変更をすばやくテストする方法に焦点を当てています。

SDKは、bitBake操作を通してビルドされるパッケージのグループです。
bitBakeは、Yoctoベースのディストリビューションを構築するために使用されるツールです。 
SDKは、OpenBMCアプリケーションを構築するために必要なすべてのライブラリとクロスコンパイラを提供します。
SDKは、OpenBMCフラッシュイメージ全体の構築には使用されません。
OpenBMCアプリケーションとライブラリをコンパイルするメカニズムを提供し、テストのために実行中のシステムにコピーできます。

QEMUは、OpenBMCイメージの実行に使用できるソフトウェアエミュレーターです。

このドキュメントでは、OpenBMC開発環境をセットアップし、必要なSDKをインストールするための推奨手順について説明します。

テストの目的で、このガイドではデフォルトとしてRomulusシステムを使用します。
これは、CIジョブごとにテストされるシステムであり、最も安定していることを意味します。

## Install Linux Environment

あなたがすでにLinuxを動かしていて、いくつかの追加パッケージをインストールしても問題がない場合は、step 3 にスキップできます。

推奨されるOpenBMC開発環境は、最新の `UbuntuLTSリリース` です。
Linuxの他のバージョンも機能する可能性がありますが、ご自身の責任で使用してください。
WindowsまたはMacOSを使用している場合、VirtualBoxは開発環境を実行するための推奨される仮想化ツールです。

1) [VirtualBox](https://www.virtualbox.org/wiki/Downloads)または[VMware](https://www.vmware.com/products/workstation-player/workstation-player-evaluation.html)のいずれかをコンピューター（Mac、Windows、Linux）にインストールしてください。

> いずれも、必要に応じてフリーのバージョンを利用できます。
> VirtualBoxは、OpenBMCのコア開発では多くの人が使っています。
> **注：**このVMを使用して完全なOpenBMCイメージをBitBakeする場合は、できるだけ多くのリソースを割り当てる必要があります。 理想的な最小リソースは、8スレッド、16 GBのメモリ、200GBのハードドライブです。SDKビルドとQEMUに使用するだけで、VMの通常のデフォルトで正常に動作するはずです。

2) 最新のUbuntu LTS releaseをインストールしてください。

>  OpenBMC開発の大多数の人は[Ubuntu 16.04](http://releases.ubuntu.com/16.04/)を使っています。しかし最新のものは何でも動くはずです。同じことがFedoraのような他のLinuxディストリビューションにも当てはまりますが、繰り返しになりますが、これらはOpenBMCコアチームによってUbuntuほどのテストはされていません。

>  **VirtualBox Tips** - You'll want copy/paste working between your VM and Host.
  To do that, once you have your VM up and running:
  - Devices -> Insert Guest Additions CD Image (install)
  - Devices -> Shared Clipboard -> Bidirectional
  - reboot (the VM)

3) 必要パッケージのインストール

 
>  [Prerequisite](https://github.com/openbmc/openbmc/blob/master/README.md#1-prerequisite) で 1) Prerequisite で入れているパッケージが必要
>
>  **Note** - In Ubuntu, a "sudo apt-get update" will probably be needed before
  installing the packages.

## ダウンロードとQEMUセッションのスタート

1) 最新の openbmc/qemu fork の QEMU アプリケーションをダウンロードしてください。

  ```
  wget https://jenkins.openbmc.org/job/latest-qemu-x86/lastSuccessfulBuild/artifact/qemu/arm-softmmu/qemu-system-arm

  chmod u+x qemu-system-arm
  ```

2) Romulus イメージのダウンロード

  ```
  wget https://jenkins.openbmc.org/job/latest-master/label=docker-builder,target=romulus/lastSuccessfulBuild/artifact/openbmc/build/tmp/deploy/images/romulus/obmc-phosphor-image-romulus.static.mtd
  ```

3) ダウンロードしたRomulusイメージでQEMUを起動

  * **Note** - RESTとSSHをQEMUセッションで機能させるには、いくつかのホストポートをQEMUセッションのRESTポートとSSHポートに接続する必要があります。 この例では、2222と2443のみを使用しています。好きなものを使用できます。

  ```
  ./qemu-system-arm -m 256 -M romulus-bmc -nographic \
      -drive file=./obmc-phosphor-image-romulus.static.mtd,format=raw,if=mtd \
      -net nic -net user,hostfwd=:127.0.0.1:2222-:22,hostfwd=:127.0.0.1:2443-:443,hostname=qemu
  ```

  * **Note** - デフォルトでは、Jenkinsとopenbmc-test-automationはそれぞれSSHポートとHTTPSポート22と443を使用します。ユーザー定義ポート2222を使用するためのSSH接続は成功しない可能性があります。 SSHポート22およびHTTPSポート443を使用するには：
  
   ```
   ./qemu-system-arm -m 256 -machine romulus-bmc -nographic \
      -drive file=./obmc-phosphor-image-romulus.static.mtd,format=raw,if=mtd \
      -net nic -net user,hostfwd=:127.0.0.1:22-:22,hostfwd=:127.0.0.1:443-:443,hostfwd=tcp:127.0.0.1:80-:80,hostfwd=tcp:127.0.0.1:2200-:2200,hostfwd=udp:127.0.0.1:623-:623,hostfwd=udp:127.0.0.1:664-:664,hostname=qemu
   ```

4) QEMUベースのBMCが起動するのを待ちます

  ログインはデフォルトの root/0penBmc を使ってログインします (0 はオーではなくゼロです).

5) システムの状態を確認してください。 

コンソールで多くのサービスが開始されているのがわかります。obmcutilツールの実行を開始して、OpenBMC状態サービスの状態を確認できます。次のように表示されたら、「Ready」状態で正常に起動しています。

  ```
  root@openbmc:~# obmcutil state
  CurrentBMCState     : xyz.openbmc_project.State.BMC.BMCState.Ready
  CurrentPowerState   : xyz.openbmc_project.State.Chassis.PowerState.Off
  CurrentHostState    : xyz.openbmc_project.State.Host.HostState.Off
  ```

  **Note** QEMUセッションをexitするには (そして killするには) `ctrl+a x`を実行してください。

## Download and Install SDK

整理された状態にしておくには、SDKインストールスクリプトとディレクトリを保存するディレクトリを作成します。

1) 最新のSDKをあなたのシステムにダウンロードします (このウォークスルーではRomulusを使用します)

  ```
  mkdir -p ~/sdk
  cd ~/sdk

  wget https://jenkins.openbmc.org/job/latest-master-sdk/label=docker-builder,target=romulus/lastSuccessfulBuild/artifact/deploy/sdk/oecore-x86_64-arm1176jzs-toolchain-nodistro.0.sh
  chmod u+x oecore-x86_64-arm1176jzs-toolchain-nodistro.0.sh
  ```

2) SDKのインストール

適切なlocationと名前を選択してください。そのSDKでサポートされている日付とシステムをディレクトリ名に含めることをお勧めします。例えば：

  ```
  mkdir -p ~/sdk/romulus-`date +%F`
  ```

次のコマンドを実行してSDKをインストールします。 コマンドで「Enter target directory for SDK"」というメッセージが表示されたら、前の手順で作成したディレクトリを入力します。

  ```
  ./oecore-x86_64-arm1176jzs-toolchain-nodistro.0.sh
  ```
インストールスクリプトは進行状況を示し、次のような完了メッセージを表示します

  ```
  SDK has been successfully set up and is ready to be used.
  Each time you wish to use the SDK in a new shell session, you need to source
  the environment setup script e.g. $ . /...path-to-sdk.../environment-setup-arm1176jzs-openbmc-linux-gnueabi
  ```

3) Source yourself into the SDK

エラーがないことを確認します。 これを行うコマンドは、インストールの最後に提供されます。
シェルで新しいSDK環境を使用するには、前の手順で作成した「environment-setup」スクリプトを入手する必要があります。
必要なコマンドを保存することもできます。たとえば、上記のテキストをREADMEにカットアンドペーストします。

以上、これであなたは動作するOpenBMC環境を持つことができました!