Chapter 02

環境をつくる

みつきん
みつきん
2020.12.15に更新

Linux PC

Linuxプログラミングを始めるためにはLinuxがインストールされたPCが必要です。WindowsのPCしかない場合は仮想マシン(VM)を用いる方法もあります。

筆者が推奨するLinuxディストリビューションやPCのスペックを次の表に示します。

アイテム スペック
CPU 8コア程度のCPU
メモリ 16GB以上
HDD/SSD 1TB以上
Linuxディストリビューション Ubuntu 18.04

Ubuntuのインストール

本書の読者の方はおそらく既にLinuxがインストールされたPCを持っていると思いますが、念の為インストールするためのイメージファイルの在り処を示しておきます。

18.04は最新版より1つ前のLTSになります。日本語Remixである必要性もあまりないのですが、日本語での情報が多いためこちらを紹介しています。

開発環境の作成

Linux PCが用意できたら、Linuxプログラミングを始めるための開発環境を準備します。

プログラミングは通常、プログラミング言語によるソースコードを作成し、それをPCが理解できるようにするためにコンパイルします。プログラムはコンパイルされただけでは実行可能ではなく、最終的に実行できる形式にファイルを変換する必要があります。それらの一連の操作をまとめてビルドと呼びます。
このビルドをするためにはコンパイラとその他のツールが必要になりますが、これら一式を開発環境と呼びます。また、開発環境のことを指してツールチェイン(toolchain)を呼ぶこともあります。

開発環境を作成するためにもいろいろ準備が必要なのですが、難しいことは考えずにターミナルで下記のコマンドを順番に実行していきましょう。

$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \
     build-essential chrpath socat cpio python3 python3-pip python3-pexpect \
     xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev \
     pylint3 xterm bmap-tools
$ pip install --user kas
$ mkdir ~/env && cd ~/env
$ git clone git://git.yoctoproject.org/meta-raspberrypi
$ echo '    TOOLCHAIN_TARGET_TASK_append = " kernel-devsrc"' >> meta-raspberrypi/kas-poky-rpi.yml
$ echo '    EXTRA_IMAGE_FEATURES += "ssh-server-openssh"' >> meta-raspberrypi/kas-poky-rpi.yml
$ echo '    ENABLE_UART = "1"' >> meta-raspberrypi/kas-poky-rpi.yml
$ kas build meta-raspberrypi/kas-poky-rpi.yml --target meta-toolchain

echoの行は空白(スペース)の数に注意してください。最初の空白は4つ分です。

最後のコマンドを実行するとおそらく数時間ほどかかるので気長に待ちましょう。

開発環境のインストール

開発環境の作成が成功するとbuild/deploy/sdkにインストーラが生成されているので、これを実行して開発環境をインストールします。

$ cd build/tmp/deploy/sdk/
$ ./poky-glibc-x86_64-meta-toolchain-cortexa7t2hf-neon-vfpv4-raspberrypi4-toolchain-3.2+snapshot.sh
Poky (Yocto Project Reference Distro) SDK installer version 3.2+snapshot
========================================================================
Enter target directory for SDK (default: /opt/poky/3.2+snapshot): 
You are about to install the SDK to "/opt/poky/3.2+snapshot". Proceed [Y/n]? 
[sudo] password for user:

インストーラを起動すると管理者権限のパスワードを聞かれるので入力します。

筆者の作業環境ではデフォルトで/opt/poky/3.2+snapshotにインストールされます。

この開発環境でビルドが正しく行えるようにするために、インストール直後の一回だけ下記のコマンドを実行します。

$ source /opt/poky/3.2+snapshot/environment-setup-cortexa7t2hf-neon-vfpv4-poky-linux-gnueabiemac
$ export KERNEL_SRC=${OECORE_TARGET_SYSROOT}/usr/src/kernel
$ cd ${KERNEL_SRC}
$ sudo chown -R ${USER}
$ make scripts
$ make prepare
$ sudo chown -R root .

次はいよいよ、初めてのプログラムを作成していきます。