Linux Kernelクロスコンパイル環境:Host(Debian9)/Target(Raspberry Pi3)の環境構築
前書き
GitBookを使用しなくなったため、GitBookに書いていた環境構築手順を転記しました。
この記事で説明する環境は、Raspberry Pi3を用いてLinux Kernel(Device Driver)を
勉強するために構築しています。
目次
- Raspberry Pi 公式サイト・ツール
- Raspberry Pi3 HARDWARE仕様
- 開発環境
- Device Driver動作検証用機器
- HOST開発環境構築
- Target開発環境構築(無線設定、周辺機器設定など)
- Raspberry Piの環境構築関連の自作記事
Raspberry Pi 公式サイト・ツール
項目 | URL |
---|---|
公式サイト | https://www.raspberrypi.org |
公式Linux OS | https://www.raspberrypi.org/downloads/raspberry-pi-desktop/ |
公式Linux Kernel | https://github.com/raspberrypi/linux |
公式Toolchain | https://github.com/raspberrypi/tools |
Raspberry Pi3 HARDWARE仕様
詳細は、公式サイト「RASPBERRY PI HARDWARE」を参照。
項目 | 仕様 |
---|---|
名称(モデル) | Raspberry Pi3(Model B) |
SoC | Broadcom BCM2836 |
CPU(コア数、周波数) | ARM Cortex A53(4コア、1.2GHz) |
ARMアーキテクチャ | ARMv8(64bit) |
RAM | 1GB |
GPU | Broadcom VideoCore Ⅳ |
映像入力 | 15ピンMIPIカメラインターフェース(MIPI CSI-2) |
映像出力 | コンポジットRCA、HDMI1.3/1.4 |
音声入力 | I2S |
音声出力 | 3.5mmジャック、HDMI、I2S |
Network | Broadcom BCM43143、IEEE802.11 b/g/n2.4GHz、Bluetooth4.1、BLE |
Peripheral Interface | GPIO40ピン(SPI、I2S、UART) |
ストレージ | microSD |
開発環境
Raspberry Pi3以外の機器は、以下の表に記載していない機器で代用可能です。
項目 | 機器/Version | 用途・備考 |
---|---|---|
ホストPC | Intel NUC(BOXNUC613SYK、Cortex i3、メモリ32GB) | Raspberry Pi3向けのLinux Kernelソースコード解析およびクロスコンパイルに使用 |
ホストOS | Debian9.4(stretch) | Raspberry Pi3と同じDebian系ディストリビューション(Ubuntu、Debian等)が望ましい |
モニタ | ASUS VZ249H | ― |
ターゲット環境 | Raspberry Pi3 Model B | 各種Deviceの検証に使用 |
ターゲット OS | RASPBIAN STRETCH WITH DESKTOP(Ver September 2017) | 2017年10月時点の最新版を選定 |
ターゲットOS Linux Kernel version | 4.9 | ホストOSと同様のVersion |
ストレージ(ターゲット) | MicroSDカード(Silicon Power、16GB) | Class10、容量8GB以上を推奨 |
MicroSDカードリーダ | マルチカードリーダ(ELECOM) | ー |
電源(ターゲット) | microUSB - USBケーブル、iPad mini2用のUSB充電器 | ー |
映像/音声 | HDMIケーブル(PS4付属品) | ー |
入出力装置 | キーボード、マウス | ホスト環境、ターゲット環境向けに用意 |
Device Driver動作検証用機器
以下は、個人的な検証用の機器であり、本記事の環境構築に必要ではありません。
項目 | 機器名称 | 販売元 | 参考価格(送料別) |
---|---|---|---|
シリアル通信 | Adafruit PiUART | Pimoroni | 約800円 |
カメラ | Raspberry Pi Camera V2 | Amazon | 約3,500円 |
USBガジェット | Cluster HAT v2 | Pimoroni | 約3,200円 |
HOST開発環境構築
HOST環境向けの手順は、/home/pi/以下で実施していると仮定します。
・Linux Kernel開発に必要な各種パッケージのインストール
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install build-essential libncurses5-dev device-tree-compiler trace-cmd git bc
・Raspberry Pi3向けLinux Kernelの取得
$ git clone --depth=1 https://github.com/raspberrypi/linux -b rpi-4.9.y
・Raspberry Pi3向けToolchainの取得
$ git clone https://github.com/raspberrypi/tools
・ToolchainへのPATHを設定
$ echo "export PATH=$PATH:/home/pi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin" \
>> /home/pi/.bashrc
・ビルド速度を早めるため、ccacheをインストール・設定
$ sudo apt-get install ccache
$ echo "export USE_CCACHE=1" >> ~/.bashrc (注釈) ccacheの使用宣言
$ echo "export CCACHE_DIR=~/.ccache" >> ~/.bashrc (注釈) キャッシュの格納先
$ ccache -M 10G (注釈) キャッシュサイズの変更
・クロスコンパイル実施(任意)
$ source ~/.bashrc (注釈) 前手順で追加した設定を反映します。通常、.bashrcはターミナル起動時に読み込まれます。
$ cd /home/pi/linux
$ KERNEL=kernel7
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig
$ make -j2 ARCH=arm CROSS_COMPILE="ccache arm-linux-gnueabihf-" zImage modules dtbs
Target開発環境構築
ホスト環境およびターゲット環境における手順は、/home/pi/以下で実施していると仮定します。
・Raspberry Pi公式サイトより、RASPBIAN(OS)をZIP形式で取得
・MicroSDカードをカードリーダに挿入し、カードリーダとホストPCを接続
$ sudo dmesg (注釈) dmesgのmicroSDのデバイスファイル名を確認(通常、mmcblk[0-9]か/dev/sd[a-z])
(省略)
[ 2282.788314] mmc0: new ultra high speed SDR104 SDHC card at address 59b4
[ 2282.792324] mmcblk0: mmc0:59b4 SPCC 14.7 GiB
・ホストPC上で、microSDをフォーマットし、VFATファイルシステムを作成
$ sudo fdisk /dev/mmcblk0
Welcome to fdisk (util-linux 2.29.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p
Disk /dev/mmcblk0: 14.8 GiB, 15836643328 bytes, 30930944 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 8192 30930943 30922752 14.8G c W95 FAT32 (LBA)
Command (m for help): d
Selected partition 1
Partition 1 has been deleted.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-30930943, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-30930943, default 30930943):
Created a new partition 1 of type 'Linux' and of size 14.8 GiB.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
$ sudo mkfs.vfat /dev/mmcblk0p1
・ホストPC上で、RASPBIAN(OS)をmicroSDにコピー(注:前述の画像とOS Versionが異なります)
$ ls
2017-09-07-raspbian-stretch.zip Documents Music Public Templates linux
Desktop Downloads Pictures SetupDevelopmentEnvironment Videos tools
$ unzip 2017-09-07-raspbian-stretch.zip
$ sudo dd bs=4M if=2017-09-07-raspbian-stretch.img of=/dev/mmcblk0
$ sync
・Raspberry Pi3にmicroSDカードを挿入し、電源を投入(電源 <-------microUSB-------> Rapberry Pi3)
・Raspberry Pi3のPasswordを変更(初期設定:user=pi、password=raspberry)
$ sudo passwd pi
Enter new UNIX passwd:
Retype new UNIX passwd:
passwd: password updated successfully
$ sudo passwd root
Enter new UNIX passwd:
Retype new UNIX passwd:
passwd: password updated successfully
・Raspberry Pi3の無線環境を設定
$ su
Password:
# vi /etc/dhcpcd.conf (注釈) 以下の内容を追記
interface wlan0
static ip_address=<設定したい固定IPアドレス(例:192.168.1.100)>/24
static routers=<デフォルトゲートウェイ(例:ルータ)のIPアドレス(例:192.168.1.1)>
static domain_name_servers=<DNSサーバ(例:ルータ)のIPアドレス(例:192.168.1.1)>
# wpa_passphrase <SSID> <PASSWORD> >> /etc/wpa_supplicant/wpa_supplicant.conf
(注釈) <SSID>、<PASSWORD>は、無線ルータの設定値に変更する事
・Raspberry Pi3の言語設定、タイムゾーン、Wi-Fi Countryを変更
# raspi-config
[言語設定]
4 Localisation Options Set up language and regional settings to match your location
--> I1 Change Locale Set up language and regional settings to match your location
--> ja_JP.UTF-8 UTF-8 を選択
[タイムゾーン]
4 Localisation Options Set up language and regional settings to match your location
--> I2 Change Timezone Set up timezone to match your location
--> Asia
--> Tokyo を選択
[Wi-Fi Country]
4 Localisation Options Set up language and regional settings to match your location
--> I4 Change Wi-fi Country Set the legal channels used in your country
--> JP Japan を選択
・Raspberry Pi3の周辺機器設定を変更
# raspi-config
[周辺機器]
5 Interfacing Options Configure connections to peripherals
--> Camera、SSH、SPI、I2C、Serial、Remote GPIOを有効化
・Raspberry Pi3のmicroSDの使用可能領域を拡大
# raspi-config
[ファイルシステム]
7 Advanced Options Configure advanced settings
--> A1 Expand Filesystem Ensures that all of the SD card storage is available to the OS
・Raspberry Pi3のパッケージを最新版に更新し、設定変更を反映するために再起動
# apt-get update
# apt-get upgrade
# rpi-update
# reboot
Raspberry Piの環境構築関連の自作記事
Author And Source
この問題について(Linux Kernelクロスコンパイル環境:Host(Debian9)/Target(Raspberry Pi3)の環境構築), 我々は、より多くの情報をここで見つけました https://qiita.com/Nao1215/items/e6a5d1a7d6073b3b585f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .