もくじ
はじめに
以下の別冊資料では、ブートローダーから Linux を起動する方法を説明しています。
いずれの場合も、説明は Linux バイナリーが $LINUX_BIN フォルダーにあると想定しています。
- SoC EDS v19.1 std / v19.3 pro から変更された新しいブートローダー生成フローの動作確認(Cyclone® V SoC / Arria® V SoC 編)
- SoC EDS v19.1 std / v19.3 pro から変更された新しいブートローダー生成フローの動作確認(Arria® 10 SoC 編)
上記の資料でブートローダーから Linux を起動するには、 Linux カーネル、デバイスツリー、およびルートファイル・システム(以降、RootFs)が必要です。
Linux を起動する際には、独自の Linux バイナリーを使用することもできます。
この資料ではそれらをビルドする方法を説明します。
1. 前提条件
■ この記事では以下の環境を使用しています(ここで使用している環境はあくまで一例です):
- Linux を実行しているホストマシン。VirtualBox + Ubuntu 16.04 を使用しました(他のバージョンでも機能する場合があります)。
- ツールをダウンロードし、GitHub から U-Boot git ツリーをクローンするためのインターネット接続環境。ファイアウォールやプロキシがある場合は、システム管理者が git ツリーにアクセスできるようにする必要があります。
- 目的のデバイスを搭載した インテル® SoC FPGA 開発キット: Cyclone® V SoC / Arria® V SoC / Arria® 10 SoC
■ 社内ネットワークなどでプロキシがある場合、次のようなプロキシの設定が必要です。
/etc/apt/apt.conf ファイルをテキストエディターで開き、以下のようなプロキシ設定を記述して
セーブします。
$ sudo gedit /etc/apt/apt.conf
Acquire::http::proxy "http://your.proxy.address:proxy.port";
Acquire::https::proxy "https://your.proxy.address:proxy.port";
Acquire::ftp::proxy "ftp://your.proxy.address:proxy.port";
※ 上記のプロキシ設定において、your.proxy.address はプロキシアドレス、proxy.port は
プロキシポート番号を意味します。
.bashrc ファイルをテキストエディターで開き、最終行に下記のようなプロキシを追記して
セーブします。
$ gedit ~/.bashrc
export http_proxy="http://your.proxy.address:proxy.port"
export https_proxy="https://your.proxy.address:proxy.port"
export ftp_proxy="ftp://your.proxy.address:proxy.port"
※ 上記のプロキシ設定において、your.proxy.address はプロキシアドレス、proxy.port は
プロキシポート番号を意味します。
端末を一旦終了してから、再度端末を起動します。
■ Ubuntu 16.04 の端末を開き、次のコマンドを入力して、パッケージ情報を更新しておきます。
$ sudo apt-get update
$ sudo apt-get upgrade
2. Linux バイナリーのビルド
ここでは、Linux バイナリーのビルド方法について説明します。
2-1. 準備
- Embedded Command Shell を起動している場合は、一旦端末を終了した後、再度端末を開きます。
- 社内ネットワークなどでプロキシがある場合、前述の 「1. 前提条件」 で説明したプロキシの設定が必要です。
- Yocto Project でイメージをビルドする際に必要となるパッケージ類をインストールします。
- Yocto Project Reference Manual
参考資料: 1.2. Required Packages for the Build Host
1.2.1. Ubuntu and Debian
Essentials:Packages needed to build an image on a headlesssystem:
- Yocto Project Reference Manual
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev xterm
- Compiling Linux
3. Host Setup for Angstrom
以下はインストールする必要がある必須なパッケージです:
$ sudo apt-get install phablet-tools sed cvs subversion coreutils texi2html docbook-utils python-pysqlite2 help2man make gcc build-essential g++ desktop-file-utils libgl1-mesa-dev libglu1-mesa-dev mercurial autoconf automake groff libtool lib32z1
ホストマシンが 64ビット OS を実行している場合は、次の追加パッケージもインストールする必要があります:
$ sudo apt-get install ia32-libs lib32stdc++6
- 前述の別冊ブート資料で使用される、すべての Linux ビルドバイナリーを配置する $LINUX_BIN フォルダーを準備します
$ mkdir ~/linux_bin && cd ~/linux_bin
$ export set LINUX_BIN=`pwd`
2-2. Linux カーネルのビルド
※ Linux カーネルのビルド手順は、Cyclone® V, Arria® V および Arria® 10 共通です。
① Top フォルダーを準備します:
$ mkdir ~/linux && cd ~/linux
$ export set LINUX_TOP=`pwd`
② ツールチェーンをダウンロードしてセットアップします:
$ cd $LINUX_TOP
$ wget https://releases.linaro.org/archive/15.06/components/toolchain/binaries/4.8/arm-linux-gnueabihf/gcc-linaro-4.8-2015.06-x86_64_arm-linux-gnueabihf.tar.xz
$ tar -Jxvf gcc-linaro-4.8-2015.06-x86_64_arm-linux-gnueabihf.tar.xz
$ export PATH=`pwd`/gcc-linaro-4.8-2015.06-x86_64_arm-linux-gnueabihf/bin/:$PATH
$ export ARCH=arm
$ export CROSS_COMPILE=`pwd`/gcc-linaro-4.8-2015.06-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
③ Linux をダウンロードしてコンパイルします:
$ cd $LINUX_TOP
$ git clone https://github.com/altera-opensource/linux-socfpga
$ cd linux-socfpga
$ git checkout -t -b test origin/socfpga-4.14.130-ltsi
$ make socfpga_defconfig
$ make -j 24 zImage dtbs
注記:(Cyclone® V SoC 開発キット使用時のみ)
ほとんどの Cyclone® V SoC 開発キットには、 512MB の QSPI フラッシュデバイスが搭載されていますが、 Linux カーネル DTS はデフォルトで 1Gb(128MB)のものを想定しています。
標準の 512MB を使用する場合は、上記手順の「make -j 24 zImage dtbs」を実行する前に、
linux-socfpga/arch/arm/boot/dts/socfpga_cyclone5_socdk.dts ファイルを適宜変更します:
$ gedit arch/arm/boot/dts/socfpga_cyclone5_socdk.dts
【図 1】 Cyclone® V SoC 開発キットの QSPI デバイスサイズによる dts ファイルの変更
④ すべての関連ファイルを $LINUX_BIN にコピーします:
$ cd $LINUX_TOP/linux-socfpga
$ cp arch/arm/boot/zImage $LINUX_BIN
$ cp arch/arm/boot/Image $LINUX_BIN
$ cp arch/arm/boot/dts/socfpga_cyclone5_socdk.dtb $LINUX_BIN
$ cp arch/arm/boot/dts/socfpga_arria5_socdk.dtb $LINUX_BIN
$ cp arch/arm/boot/dts/socfpga_arria10_socdk_sdmmc.dtb $LINUX_BIN
$ cp arch/arm/boot/dts/socfpga_arria10_socdk_qspi.dtb $LINUX_BIN
⑤ 次のファイルが $LINUX_BIN フォルダーにコピーされます:
【表 1】 $LINUX_BIN フォルダーにコピーされたファイル
ファイル | 説明 |
zImage | 圧縮カーネルイメージ |
Image | 非圧縮カーネルイメージ |
socfpga_cyclone5_socdk.dtb | Cyclone® V SoC 向け SD/MMC ブートと QSPI ブートの両方用デバイスツリー blob |
socfpga_arria5_socdk.dtb | Arria® V SoC 向け SD/MMC ブートと QSPI ブートの両方用デバイスツリー blob |
socfpga_arria10_socdk_sdmmc.dtb | Arria® 10 SoC 向け SD/MMC ブート用デバイスツリー blob |
socfpga_arria10_socdk_qspi.dtb | Arria® 10 SoC 向け QSPI ブート用デバイスツリー blob |
【図 2】 $LINUX_BIN フォルダー内のファイル
2-3. RootFs のビルド
- この例では、Git ツリーとして提供される Angstrom レシピを使用して RootFs をビルドする方法を示します。
- ビルドの詳細については以下をご参照ください。
参考資料: Building Yocto or Angstrom for SoCFPGA
参考資料: Compiling Linux ⇒ 4. Build Kernel and Rootfs Using Angstrom-Yocto distribution
- 社内ネットワーク等において、後出の git clone および bitbake 実行時に、各種ファイルを正しく取得できるためのネットワーク環境をご用意ください。
- RootFs の Top フォルダーを準備します:
$ mkdir ~/rootfs && cd ~/rootfs
$ export set ROOTFS_TOP=`pwd`
2-3-1. Cyclone® V SoC の場合:
Cyclone® V SoC 向け RootFs のビルドは、以下の手順で行います。
$ cd $ROOTFS_TOP
$ rm -rf cv && mkdir cv && cd cv
$ export PATH=$PATH:$ROOTFS_TOP/cv
$ git config --global http.proxy http://your.proxy.address:proxy.port ← 社内ネットワークなどでプロキシがある場合は、プロキシの設定が必要
$ wget http://releases.rocketboards.org/release/2019.10/src/altera.xml
$ wget http://commondatastorage.googleapis.com/git-repo-downloads/repo
$ chmod 777 repo
$ repo init -u git://github.com/Angstrom-distribution/angstrom-manifest -b angstrom-v2019.06-warrior
$ mkdir -p .repo/local_manifests
$ mv altera.xml .repo/local_manifests/
$ repo sync
$ MACHINE=cyclone5 . ./setup-environment
$ sed -i '/meta-altera/a \ \ ${TOPDIR}\/layers\/meta-altera-refdes \\' conf/bblayers.conf
$ sed -i '/meta-atmel/d' conf/bblayers.conf
$ sed -i '/meta-freescale/d' conf/bblayers.conf
$ echo "DISTRO_FEATURES_remove = \" wayland \"" >> conf/local.conf
$ echo "DISTRO_FEATURES_remove = \" alsa \"" >> conf/local.conf
$ echo 'IMAGE_FSTYPES = "ext3 tar.xz jffs2"' >> conf/local.conf
$ echo 'JFFS2_ERASEBLOCK = "0x10000"' >> conf/local.conf
$ rm layers/meta-altera-refdes/recipes-devtools/socfpga-test/socfpga-test_1.0.bb
$ export KERNEL_PROVIDER=linux-altera-ltsi
$ export KERNEL_TAG=refs/tags/ACDS19.3_REL_GSRD_PR
$ export KBRANCH=socfpga-4.14.130-ltsi
$ export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE KBRANCH KERNEL_TAG UBOOT_TAG KERNEL_PROVIDER“
$ bitbake console-image-minimal
$ cp $ROOTFS_TOP/cv/deploy/glibc/images/cyclone5/console-image-minimal-cyclone5.tar.xz $LINUX_BIN
$ cp $ROOTFS_TOP/cv/deploy/glibc/images/cyclone5/console-image-minimal-cyclone5.jffs2 $LINUX_BIN
上記手順を実行することにより、次のファイルが $LINUX_BIN フォルダーにコピーされます:
【表 2】 Cyclone® V SoC 向け RootFs のビルド生成ファイル
ファイル | 説明 |
console-image-minimal-cyclone5.tar.xz | Cyclone® V SoC 用 RootFs(tar アーカイブ形式) |
console-image-minimal-cyclone5.jffs2 | Cyclone® V SoC 用 RootFs(jffs2 形式) |
【図 3】 $LINUX_BIN フォルダー内のファイル
2-3-2. Arria® V SoC の場合:
Arria® V SoC 向け RootFs のビルドは、以下の手順で行います。
$ cd $ROOTFS_TOP
$ rm -rf av && mkdir av && cd av
$ export PATH=$PATH:$ROOTFS_TOP/av
$ git config --global http.proxy http://your.proxy.address:proxy.port ← 社内ネットワークなどでプロキシがある場合は、プロキシの設定が必要
$ wget http://releases.rocketboards.org/release/2019.10/src/altera.xml
$ wget http://commondatastorage.googleapis.com/git-repo-downloads/repo
$ chmod 777 repo
$ repo init -u git://github.com/Angstrom-distribution/angstrom-manifest -b angstrom-v2019.06-warrior
$ mkdir -p .repo/local_manifests
$ mv altera.xml .repo/local_manifests/
$ repo sync
$ MACHINE=arria5 . ./setup-environment
$ sed -i '/meta-altera/a \ \ ${TOPDIR}\/layers\/meta-altera-refdes \\' conf/bblayers.conf
$ sed -i '/meta-atmel/d' conf/bblayers.conf
$ sed -i '/meta-freescale/d' conf/bblayers.conf
$ echo "DISTRO_FEATURES_remove = \" wayland \"" >> conf/local.conf
$ echo "DISTRO_FEATURES_remove = \" alsa \"" >> conf/local.conf
$ echo 'IMAGE_FSTYPES = "ext3 tar.xz jffs2"' >> conf/local.conf
$ echo 'JFFS2_ERASEBLOCK = "0x10000"' >> conf/local.conf
$ rm layers/meta-altera-refdes/recipes-devtools/socfpga-test/socfpga-test_1.0.bb
$ export KERNEL_PROVIDER=linux-altera-ltsi
$ export KERNEL_TAG=refs/tags/ACDS19.3_REL_GSRD_PR
$ export KBRANCH=socfpga-4.14.130-ltsi
$ export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE KBRANCH KERNEL_TAG UBOOT_TAG KERNEL_PROVIDER“
$ bitbake console-image-minimal
$ cp $ROOTFS_TOP/av/deploy/glibc/images/arria5/console-image-minimal-arria5.tar.xz $LINUX_BIN
$ cp $ROOTFS_TOP/av/deploy/glibc/images/arria5/console-image-minimal-arria5.jffs2 $LINUX_BIN
上記手順を実行することにより、次のファイルが $LINUX_BIN フォルダーにコピーされます:
【表 3】 Arria® V SoC 向け RootFs のビルド生成ファイル
ファイル | 説明 |
console-image-minimal-arria5.tar.xz | Arria® V SoC 用 RootFs(tar アーカイブ形式) |
console-image-minimal-arria5.jffs2 | Arria® V SoC 用 RootFs(jffs2 形式) |
2-3-3. Arria® 10 SoC の場合:
Arria® 10 SoC 向け RootFs のビルドは、以下の手順で行います。
$ cd $ROOTFS_TOP
$ rm -rf a10 && mkdir a10 && cd a10
$ export PATH=$PATH:$ROOTFS_TOP/a10
$ git config --global http.proxy http://your.proxy.address:proxy.port ← 社内ネットワークなどでプロキシがある場合は、プロキシの設定が必要
$ wget http://releases.rocketboards.org/release/2019.10/src/altera.xml
$ wget http://commondatastorage.googleapis.com/git-repo-downloads/repo
$ chmod 777 repo
$ repo init -u git://github.com/Angstrom-distribution/angstrom-manifest -b angstrom-v2019.06-warrior
$ mkdir -p .repo/local_manifests
$ mv altera.xml .repo/local_manifests/
$ repo sync
$ MACHINE=arria10 . ./setup-environment
$ sed -i '/meta-altera/a \ \ ${TOPDIR}\/layers\/meta-altera-refdes \\' conf/bblayers.conf
$ sed -i '/meta-atmel/d' conf/bblayers.conf
$ sed -i '/meta-freescale/d' conf/bblayers.conf
$ echo "DISTRO_FEATURES_remove = \" wayland \"" >> conf/local.conf
$ echo "DISTRO_FEATURES_remove = \" alsa \"" >> conf/local.conf
$ echo 'IMAGE_FSTYPES = "ext3 tar.xz jffs2"' >> conf/local.conf
$ echo 'JFFS2_ERASEBLOCK = "0x10000"' >> conf/local.conf
$ rm layers/meta-altera-refdes/recipes-devtools/socfpga-test/socfpga-test_1.0.bb
$ export KERNEL_PROVIDER=linux-altera-ltsi
$ export KERNEL_TAG=refs/tags/ACDS19.3_REL_GSRD_PR
$ export KBRANCH=socfpga-4.14.130-ltsi
$ export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE KBRANCH KERNEL_TAG UBOOT_TAG KERNEL_PROVIDER“
$ bitbake console-image-minimal
$ cp $ROOTFS_TOP/a10/deploy/glibc/images/arria10/console-image-minimal-arria10.tar.xz $LINUX_BIN
$ cp $ROOTFS_TOP/a10/deploy/glibc/images/arria10/console-image-minimal-arria10.jffs2 $LINUX_BIN
上記手順を実行することにより、次のファイルが $LINUX_BIN フォルダーにコピーされます:
【表 4】 Arria® 10 SoC 向け RootFs のビルド生成ファイル
ファイル | 説明 |
console-image-minimal-arria10.tar.xz | Arria® 10 SoC 用 RootFs(tar アーカイブ形式) |
console-image-minimal-arria10.jffs2 | Arria® 10 SoC 用 RootFs(jffs2 形式) |
添付資料
この記事と同じ内容のドキュメントを添付しています。オフラインで作業する場合などにご利用ください。
コメント
0件のコメント
記事コメントは受け付けていません。