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
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の動作条件
Windows 10 Anniversary Update (Ver.1607)以降[64ビット版]
Homeエディションでも64ビット版であれば動作可能
開発者モードへの変更
インターネット接続環境
インストール時に追加パッケージのダウンロードを行うため
10
WSLのインストール
スタートボタンを右クリック
→ [プログラムと機能(F)]
→ [Windowsの機能の有効化または無効化]
→ [Windows Subsystem for Linux (Beta)] にチェック
12
bash.exeの起動
最初にbash.exeを起動すると、各種パッケージがダウンロードされ、下記の入力を要求される
ユーザー名
パスワード
上記はWSLでのみ使用される。Windowsの認証情報と一致させる必要はない
パスワードはsudoコマンドで使用する
13
準備完了
これで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
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
これだけで既定のイメージのビルドが出来る
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カードへの書き込み
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
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