Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,494 views

Published on

組み込みLinuxをビルドする場合、通常であればLinux環境の用意が必要です。Windows 10 Anniversary UpdateからWSL(Windows Subsystem for Linux)が提供され、Ubuntu 14.04(64ビット版)のバイナリパッケージがそのまま実行可能となりました。そこで、WSLを使って組み込みLinuxをビルドする方法を紹介します。組み込みLinuxのビルドにはbuildrootを使用し、Raspberry Pi 3をターゲットとした既定のブートイメージの作成を例に説明します。

Published in: Software
  • Be the first to comment

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

  1. 1. Windows Subsystem for Linuxで始める 組み込みLinux - ラズパイ3のブートイメージを作ってみる - .NETラボ勉強会 2017年2月 2017/02/25 小松 豊彦 (komat) © 2017 Toyohiko komatsu
  2. 2. このセッションの目的 組み込みLinuxをビルドする場合、 通常であればLinux環境を用意する必要がある Windows 10 Anniversary Updateから Windows Subsystem for Linux (WSL) が提供され、 ubuntu 14.04のバイナリパッケージをそのまま実行可能 (64ビット版) そこで、 1
  3. 3. このセッションの目的 WSLを使って組み込みLinuxをビルドする方法を紹介する 組み込みLinuxのビルドには buildroot を使用し、 Raspberry Pi 3 をターゲットとした 既定のブートイメージを作成する 2
  4. 4. 注意事項  本資料は、個人で準備した環境において、個人的に実施した結果 や調査をもとに作成されています  著者および発表者が、本資料の内容について、その正確さや個々 の目的への適合性を保証するものではありません  著者、発表者およびそれらの関係者を含む第三者は、本資料の利 用の結果として生じた損失・損害等について、一切責任を負いま せん  本資料に記載されている製品名は各社の商標または登録商標です。 本資料では登録商標マーク ® は省略しています 3
  5. 5. 注意事項  現時点で Windows Subsystem for Linux は Beta版 です そのため、将来のバージョンアップで仕様が変更される可能性が あります 4
  6. 6. 自己紹介  小松 豊彦 (こまつ とよひこ) komat (こまっと)  組込系のソフトウェア技術者らしい  C#が好き  組み込みLinuxって面白いね 5
  7. 7. WSLとは  Windows Subsystem for Linux (WSL)  Windows上でLinuxバイナリの実行を実現するサブシステム  実際にはBash on Ubuntu on Windows (BUW)で提供される bash.exeコマンドを介して利用する 6
  8. 8. BUWとは  Bash on Ubuntu on Windows (BUW)  ubuntuのファイルシステムと必要最低限のパッケージを提供  Windowsからbash.exeを起動することで、 WSL+BUWで動作する「bash」が利用可能となる 7
  9. 9. このセッションでは WSL+BUW環境を「WSL」と呼ぶこととする ユーザーから見れば Bash on Ubuntu on Windows と呼んだ方が 良い気もするが… Bash on Windowsと呼ぶ人もいる。公式もそう呼んでたりとか 8
  10. 10. WSLをインストールしよう まずはWSLをインストールしないと始まらない WSLのインストールは簡単だが「動作条件」がある 9
  11. 11. WSLの動作条件  Windows 10 Anniversary Update (Ver.1607) 以降 [64ビット版]  Homeエディションでも64ビット版であれば動作可能  開発者モードへの変更  インターネット接続環境  インストール時に追加パッケージのダウンロードを行うため 10
  12. 12. 開発者モードへの変更  スタートボタン → [設定] → [更新とセキュリティ] → [開発者向け] → [開発者モード]を選択 11
  13. 13. WSLのインストール  スタートボタンを右クリック → [プログラムと機能(F)] → [Windowsの機能の有効化または無効化] → [Windows Subsystem for Linux (Beta)] にチェック 12
  14. 14. bash.exeの起動 最初にbash.exeを起動すると、各種パッケージがダウンロードされ、 下記の入力を要求される  ユーザー名  パスワード 上記はWSLでのみ使用される。Windowsの認証情報と一致させる必要はない パスワードはsudoコマンドで使用する 13
  15. 15. bash.exeの起動 14
  16. 16. bash.exeの起動 もう一度bash.exeを起動する場合は、  bash.exeを直接起動  スタートメニューから 「Bash on Ubuntu on Windows」をクリック 15
  17. 17. 準備完了 これでWSLが利用可能となった apt-getコマンドでパッケージを追加したり、 wgetコマンドでファイルをダウンロードしたり・・・ ただし、WSLからWindowsのバイナリは実行出来ない (Creators Updateで実行可能となる予定) 16
  18. 18. 表示の不完全さが気になる貴方へ  WSLはベータ版であり、コンソールの対応が不完全 日本語やcursesの表示が化けることが多々ある  正しく表示できるコンソールアプリがある 例えば ConEmu https://conemu.github.io bash.exe向けの設定もある 17
  19. 19. Windows環境とのファイルの交換  /mnt/c フォルダ経由で行う Dドライブがあれば /mnt/d フォルダも存在する  例 C:¥Users¥komat¥Documents → /mnt/c/Users/komat/Documents 18
  20. 20. /mnt/c フォルダの制限事項  owner/groupの変更が出来ない  常にroot:root  大文字/小文字の区別が無い  WSL側では区別されるが、Windows側では区別されない  パーミッションの変更はWriteモードのみ  Read/Executeモードは常に付与される 19
  21. 21. 作業フォルダには /home を使おう  /mnt/cフォルダにはWSL特有の制限がある  Linuxのファイルシステムを想定したパッケージは 正常に動作しない可能性が高い  作業フォルダには /home を使おう  作業フォルダのバックアップには tarコマンド 等を使うと良い 20
  22. 22. WSLの再構築 システムファイルや重要なパッケージをうっかり削除した場合に 環境を作り直す事が可能 コマンドプロンプトを起動し、  lxrun /uninstall  lxrun /install 上記の場合、/home フォルダは消されずに残る apt-get等でインストールしたパッケージは再インストールが必要 21
  23. 23. やっと本題 WSLの準備が出来たので、組み込みLinuxをビルドしてみる 22
  24. 24. buildrootとは  シンプルで効率的で使いやすい組み込みLinuxの構築ツール  公式サイト https://buildroot.org 23
  25. 25. Buildrootによって出来ること  プリセットされたターゲット設定  コンパイラやパッケージのダウンロード  クロスコンパイラおよび関連ツール群の生成  パッチの適用(buildrootに含まれるもの)  Linuxおよびパッケージのビルド  ブートイメージ、ディスクイメージの生成 上記ことを、少ないステップ数で簡単に行える 24
  26. 26. では早速ビルドしてみよう!  buildrootのパッケージは公式ページからダウンロード可能 最新版は buildroot-2016.11.2 (2017/2/18現在) https://buildroot.org/download.html  パッケージのダウンロードが行われるため インターネット接続環境で行う(光などの固定回線を推奨) 25
  27. 27. では早速ビルドしてみよう!  buildroot-2016.11.2.tar.gz をダウンロード wgetコマンドで直接作業フォルダにダウンロードしても良い  /mnc/c フォルダから /home フォルダにコピーして、 tarballを展開  cd ~/buildroot-2016.11.2  make raspberrypi3_defconfig  make 26 これだけで既定のイメージのビルドが出来る
  28. 28. しかし! このままではビルド出来ない もう少し準備が必要・・・ 27
  29. 29. buildroot向けの準備  パッケージの追加インストール 素のWSLにはビルド環境が入っていないため コンパイラのコンパイルにはコンパイラが必要(^_^;  sudo apt-get update  sudo apt-get upgrade  sudo apt-get install build-essential autoconf unzip git ncurses-dev libc6-dev-i386 28 ターゲットが32ビットの場合に必要 1行で入力
  30. 30. buildroot向けの準備  /etc/mtab ファイルの作成 buildrootが使用する tune2fs コマンドが失敗するため  sudo touch /etc/mtab 空の /etc/mtab ファイルを作成する 29
  31. 31. 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行で入力
  32. 32. 気を取り直してビルド!  cd ~/buildroot-2016.11.2  make raspberrypi3_defconfig  make なお、初回はダウンロードとビルドに4時間程度必要 所用時間は環境にもよるが、気長に待とう・・・(^_^; 31
  33. 33.  手順に漏れやミスがなければ、SDカードのイメージが出来上がる ./output/images/sdcard.img ビルド完了! 32
  34. 34. SDカードへの書き込み  WSLではSDカードのRAWデバイスへのアクセスが出来ない ddコマンドでのイメージ書き込みが出来ない  仕方が無いので、イメージ書き込みが出来るアプリを使う  例えば、DD for Windows http://www.si-linux.co.jp/techinfo/index.php?DD%20for%20Windows 33
  35. 35. カスタマイズ  メニュー形式でパッケージやカーネルの設定を変更可能  make menuconfig buildroot自体、パッケージ等の設定  make linux-menuconfig linuxカーネルの設定  make help ヘルプの表示 34 設定を変更したら make
  36. 36. 活用は貴方次第  Raspberry Piでは公式でRaspbianのディスクイメージを提供 https://www.raspberrypi.org/downloads/raspbian/  一方、buildrootを使用することで、起動の速いイメージや いつでも電源断が可能なイメージを作る事が可能  Raspberry PiのハードやLinuxカーネルの勉強にもオススメ 35
  37. 37. おわり END ご静聴ありがとうございました 36
  38. 38. Creators Update Windows 10の次期大型アップデート”Creators Update”では WSLが強化される予定  ubuntu 16.04 対応  WSLからのWindowsアプリの起動  アンチウイルスソフトとの連携の強化  コンソールのVT対応の強化  他… 37
  39. 39. WSLのフォルダの所在  WSLのフォルダは下記の場所に作成される %localappdata%¥lxss C:¥Users¥<UserName>¥AppData¥Local¥lxss このフォルダ内のファイル群は絶対に変更しないこと! Do not change Linux files using Windows apps and tools https://blogs.msdn.microsoft.com/commandline/2016/11/17/d o-not-change-linux-files-using-windows-apps-and-tools/ 38
  40. 40. WSL関連リンク  Microsoft/BashOnWindows - GitHub https://github.com/Microsoft/BashOnWindows  Bash on Ubuntu on Windows https://msdn.microsoft.com/commandline/wsl/about 39

×