40
Windows Subsystem for Linuxで始める 組み込みLinux - ラズパイ3のブートイメージを作ってみる - .NETラボ勉強会 201722017/02/25 小松 豊彦 (komat) © 2017 Toyohiko komatsu

Windows subsystem for linuxで始める組み込みlinux ラズパイ3のブートイメージを作ってみる-

Embed Size (px)

Citation preview

Windows Subsystem for Linuxで始める組み込みLinux

-ラズパイ3のブートイメージを作ってみる -

.NETラボ勉強会 2017年2月 2017/02/25

小松 豊彦 (komat)

© 2017 Toyohiko komatsu

このセッションの目的

組み込みLinuxをビルドする場合、

通常であればLinux環境を用意する必要がある

Windows 10 Anniversary Updateから

Windows Subsystem for Linux (WSL) が提供され、

ubuntu 14.04のバイナリパッケージをそのまま実行可能(64ビット版)

そこで、

1

このセッションの目的

WSLを使って組み込みLinuxをビルドする方法を紹介する

組み込みLinuxのビルドには buildrootを使用し、

Raspberry Pi 3 をターゲットとした

既定のブートイメージを作成する

2

注意事項

本資料は、個人で準備した環境において、個人的に実施した結果や調査をもとに作成されています

著者および発表者が、本資料の内容について、その正確さや個々の目的への適合性を保証するものではありません

著者、発表者およびそれらの関係者を含む第三者は、本資料の利用の結果として生じた損失・損害等について、一切責任を負いません

本資料に記載されている製品名は各社の商標または登録商標です。本資料では登録商標マーク ® は省略しています

3

注意事項

現時点でWindows Subsystem for Linuxは Beta版です

そのため、将来のバージョンアップで仕様が変更される可能性があります

4

自己紹介

小松豊彦 (こまつとよひこ)

komat (こまっと)

組込系のソフトウェア技術者らしい

C#が好き

組み込みLinuxって面白いね

5

WSLとは

Windows Subsystem for Linux (WSL)

Windows上でLinuxバイナリの実行を実現するサブシステム

実際にはBash on Ubuntu on Windows (BUW)で提供されるbash.exeコマンドを介して利用する

6

BUWとは

Bash on Ubuntu on Windows (BUW)

ubuntuのファイルシステムと必要最低限のパッケージを提供

Windowsからbash.exeを起動することで、WSL+BUWで動作する「bash」が利用可能となる

7

このセッションでは

WSL+BUW環境を「WSL」と呼ぶこととする

ユーザーから見れば Bash on Ubuntu on Windows と呼んだ方が

良い気もするが…

Bash on Windowsと呼ぶ人もいる。公式もそう呼んでたりとか

8

WSLをインストールしよう

まずはWSLをインストールしないと始まらない

WSLのインストールは簡単だが「動作条件」がある

9

WSLの動作条件

Windows 10 Anniversary Update (Ver.1607)以降[64ビット版]

Homeエディションでも64ビット版であれば動作可能

開発者モードへの変更

インターネット接続環境

インストール時に追加パッケージのダウンロードを行うため

10

開発者モードへの変更

スタートボタン

→ [設定]

→ [更新とセキュリティ]

→ [開発者向け]

→ [開発者モード]を選択

11

WSLのインストール

スタートボタンを右クリック

→ [プログラムと機能(F)]

→ [Windowsの機能の有効化または無効化]

→ [Windows Subsystem for Linux (Beta)] にチェック

12

bash.exeの起動

最初にbash.exeを起動すると、各種パッケージがダウンロードされ、下記の入力を要求される

ユーザー名

パスワード

上記はWSLでのみ使用される。Windowsの認証情報と一致させる必要はない

パスワードはsudoコマンドで使用する

13

bash.exeの起動 14

bash.exeの起動

もう一度bash.exeを起動する場合は、

bash.exeを直接起動

スタートメニューから「Bash on Ubuntu on Windows」をクリック

15

準備完了

これでWSLが利用可能となった

apt-getコマンドでパッケージを追加したり、

wgetコマンドでファイルをダウンロードしたり・・・

ただし、WSLからWindowsのバイナリは実行出来ない(Creators Updateで実行可能となる予定)

16

表示の不完全さが気になる貴方へ

WSLはベータ版であり、コンソールの対応が不完全日本語やcursesの表示が化けることが多々ある

正しく表示できるコンソールアプリがある

例えば ConEmuhttps://conemu.github.io

bash.exe向けの設定もある

17

Windows環境とのファイルの交換

/mnt/c フォルダ経由で行う

Dドライブがあれば /mnt/d フォルダも存在する

C:¥Users¥komat¥Documents

→ /mnt/c/Users/komat/Documents

18

/mnt/c フォルダの制限事項

owner/groupの変更が出来ない

常にroot:root

大文字/小文字の区別が無い

WSL側では区別されるが、Windows側では区別されない

パーミッションの変更はWriteモードのみ

Read/Executeモードは常に付与される

19

作業フォルダには /home を使おう

/mnt/cフォルダにはWSL特有の制限がある

Linuxのファイルシステムを想定したパッケージは正常に動作しない可能性が高い

作業フォルダには /home を使おう

作業フォルダのバックアップには tarコマンド等を使うと良い

20

WSLの再構築

システムファイルや重要なパッケージをうっかり削除した場合に環境を作り直す事が可能

コマンドプロンプトを起動し、

lxrun /uninstall

lxrun /install

上記の場合、/home フォルダは消されずに残るapt-get等でインストールしたパッケージは再インストールが必要

21

やっと本題

WSLの準備が出来たので、組み込みLinuxをビルドしてみる

22

buildrootとは

シンプルで効率的で使いやすい組み込みLinuxの構築ツール

公式サイト

https://buildroot.org

23

Buildrootによって出来ること

プリセットされたターゲット設定

コンパイラやパッケージのダウンロード

クロスコンパイラおよび関連ツール群の生成

パッチの適用(buildrootに含まれるもの)

Linuxおよびパッケージのビルド

ブートイメージ、ディスクイメージの生成

上記ことを、少ないステップ数で簡単に行える

24

では早速ビルドしてみよう!

buildrootのパッケージは公式ページからダウンロード可能

最新版は buildroot-2016.11.2(2017/2/18現在)

https://buildroot.org/download.html

パッケージのダウンロードが行われるためインターネット接続環境で行う(光などの固定回線を推奨)

25

では早速ビルドしてみよう!

buildroot-2016.11.2.tar.gz をダウンロードwgetコマンドで直接作業フォルダにダウンロードしても良い

/mnc/c フォルダから /home フォルダにコピーして、tarballを展開

cd ~/buildroot-2016.11.2

make raspberrypi3_defconfig

make

26

これだけで既定のイメージのビルドが出来る

しかし!

このままではビルド出来ない

もう少し準備が必要・・・

27

buildroot向けの準備

パッケージの追加インストール

素のWSLにはビルド環境が入っていないためコンパイラのコンパイルにはコンパイラが必要(^_^;

sudo apt-get update

sudo apt-get upgrade

sudo apt-get install build-essential autoconf unzipgit ncurses-dev libc6-dev-i386

28

ターゲットが32ビットの場合に必要

1行で入力

buildroot向けの準備

/etc/mtabファイルの作成

buildrootが使用する tune2fs コマンドが失敗するため

sudo touch /etc/mtab

空の /etc/mtab ファイルを作成する

29

buildrootの修正

fakerootパッケージの設定変更

現時点でWSLが System V IPC をサポートしていないため

cd ~/buildroot-2016.11.2

sed -i -e '/$(eval/iHOST_FAKEROOT_CONF_OPTS= --with-ipc=tcp' ./package/fakeroot/fakeroot.mk

“HOST_FAKEROOT_CONF_OPTS = --with-ipc=tcp” を./package/fakeroot/fakeroot.mk の “$(eval” の前の行に追加

30

1行で入力

気を取り直してビルド!

cd ~/buildroot-2016.11.2

make raspberrypi3_defconfig

make

なお、初回はダウンロードとビルドに4時間程度必要所用時間は環境にもよるが、気長に待とう・・・(^_^;

31

手順に漏れやミスがなければ、SDカードのイメージが出来上がる

./output/images/sdcard.img

ビルド完了! 32

SDカードへの書き込み

WSLではSDカードのRAWデバイスへのアクセスが出来ないddコマンドでのイメージ書き込みが出来ない

仕方が無いので、イメージ書き込みが出来るアプリを使う

例えば、DD for Windowshttp://www.si-linux.co.jp/techinfo/index.php?DD%20for%20Windows

33

カスタマイズ

メニュー形式でパッケージやカーネルの設定を変更可能

make menuconfig

buildroot自体、パッケージ等の設定

make linux-menuconfig

linuxカーネルの設定

make help

ヘルプの表示

34

設定を変更したら

make

活用は貴方次第

Raspberry Piでは公式でRaspbianのディスクイメージを提供

https://www.raspberrypi.org/downloads/raspbian/

一方、buildrootを使用することで、起動の速いイメージやいつでも電源断が可能なイメージを作る事が可能

Raspberry PiのハードやLinuxカーネルの勉強にもオススメ

35

おわり

ENDご静聴ありがとうございました

36

Creators Update

Windows 10の次期大型アップデート”Creators Update”ではWSLが強化される予定

ubuntu 16.04 対応

WSLからのWindowsアプリの起動

アンチウイルスソフトとの連携の強化

コンソールのVT対応の強化

他…

37

WSLのフォルダの所在

WSLのフォルダは下記の場所に作成される%localappdata%¥lxssC:¥Users¥<UserName>¥AppData¥Local¥lxss

このフォルダ内のファイル群は絶対に変更しないこと!

Do not change Linux files using Windows apps and tools

https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/

38

WSL関連リンク

Microsoft/BashOnWindows - GitHub

https://github.com/Microsoft/BashOnWindows

Bash on Ubuntu on Windows

https://msdn.microsoft.com/commandline/wsl/about

39