| 1 | = TOPPERS/SSP3カーネル(Release 3.A.0)のビルドスクリプト = |
| 2 | |
| 3 | == これは何か |
| 4 | 早期リリースとして会員向けに公開されているTOPPERS/SSP3カーネル(Release 3.A.0)をビルドするためのシェルスクリプトです.[[BR]] |
| 5 | 利用方法については [https://www.docker.com/ Docker] を用いた動作確認手順を示しますので,参考にしてください.[[BR]] |
| 6 | |
| 7 | == 動作確認に必要なもの |
| 8 | |
| 9 | * Docker : ホストOS上で Ubuntu のコンテナ(仮想環境)を動かすために使います.Ubuntu系のLinuxシステムをお使いの場合は手順2.のスクリプトだけを実行することもできます. |
| 10 | * Git : Dockerのスクリプトを取得するのに使います. |
| 11 | * コマンドライン環境:コマンドの実行にbashシェルを使います.Mac ならターミナルアプリ,Windowsなら MinGW など. |
| 12 | |
| 13 | == Dockerを用いた動作確認手順 |
| 14 | 以下ではMacOSのターミナルアプリで作業する際の様子を示します.他のホストOSで使用する場合もほぼ同様と思います. |
| 15 | |
| 16 | === 1. Dockerコンテナの構築およびシェルの起動 |
| 17 | {{{ |
| 18 | # (1-1) Dockerスクリプトの取得(カレントディレクトリに docker-toppers というディレクトリが作成される) |
| 19 | |
| 20 | $ git clone https://github.com/nmiri-nagoya-nsaito/docker-toppers.git |
| 21 | Cloning into 'docker-toppers'... |
| 22 | remote: Enumerating objects: 21, done. |
| 23 | remote: Counting objects: 100% (21/21), done. |
| 24 | remote: Compressing objects: 100% (18/18), done. |
| 25 | remote: Total 113 (delta 4), reused 17 (delta 2), pack-reused 92 |
| 26 | Receiving objects: 100% (113/113), 16.05 KiB | 2.29 MiB/s, done. |
| 27 | Resolving deltas: 100% (43/43), done. |
| 28 | |
| 29 | # (1-2) スクリプトのディレクトリへ移動し,コンテナのシェルを起動する(詳細はスクリプト参照) |
| 30 | |
| 31 | $ cd docker-toppers |
| 32 | $ ./start_shell.sh |
| 33 | specified service: cli |
| 34 | Building cli |
| 35 | Step 1/16 : FROM ubuntu:xenial |
| 36 | ---> 0ef2e08ed3fa |
| 37 | Step 2/16 : MAINTAINER Naoki Saito <saito.naoki@nmiri.city.nagoya.jp> |
| 38 | ---> Using cache |
| 39 | ---> ca33bf786219 |
| 40 | Step 3/16 : RUN apt-get update |
| 41 | ---> Using cache |
| 42 | ---> 10c03c54ce2f |
| 43 | (中略) |
| 44 | Step 15/16 : USER $user |
| 45 | ---> Using cache |
| 46 | ---> 824d71ab265f |
| 47 | Step 16/16 : RUN chmod -R +x ./scripts && sync && ./scripts/setup_user.sh |
| 48 | ---> Using cache |
| 49 | ---> b15825714462 |
| 50 | Successfully built b15825714462 |
| 51 | Successfully tagged docker-toppers_cli:latest |
| 52 | Creating network "docker-toppers_default" with the default driver |
| 53 | Creating docker-toppers_cli_1 ... done |
| 54 | To run a command as administrator (user "root"), use "sudo <command>". |
| 55 | See "man sudo_root" for details. |
| 56 | |
| 57 | saito@a584f9ade435:~$ |
| 58 | }}} |
| 59 | |
| 60 | この時点で Linux コンテナのシェルが起動していますので,次はこの環境の中でSSP3カーネルのソースコードをセットアップし,ビルドします. |
| 61 | |
| 62 | === 2. ソースコードのセットアップおよびビルド |
| 63 | |
| 64 | {{{ |
| 65 | # (2-1) 作業ディレクトリへ移動 (dockerの設定にて ~/workdir ディレクトリをホストと共有している) |
| 66 | saito@a584f9ade435:~$ cd workdir/ |
| 67 | |
| 68 | # (2-2) 本パッケージをダウンロード(<ユーザ名>の部分は適宜置き換えてください) |
| 69 | saito@a584f9ade435:~/workdir$ svn co http://dev.toppers.jp/svn/contrib/build_ssp3a --username <ユーザ名> |
| 70 | 認証領域: <http://dev.toppers.jp:80> Subversion Repository |
| 71 | '<ユーザ名>' のパスワード: <パスワードを入力> |
| 72 | |
| 73 | A build_ssp3a/build_ssp3a.sh |
| 74 | A build_ssp3a/setup_tools.sh |
| 75 | リビジョン 403 をチェックアウトしました。 |
| 76 | |
| 77 | # (2-3) ツールのインストール |
| 78 | saito@a584f9ade435:~/workdir$ cd build_ssp3a/ |
| 79 | saito@a584f9ade435:~/workdir/build_ssp3a$ sudo ./setup_tools.sh |
| 80 | ヒット:1 http://archive.ubuntu.com/ubuntu xenial InRelease |
| 81 | ヒット:2 http://archive.ubuntu.com/ubuntu xenial-updates InRelease |
| 82 | ヒット:3 http://archive.ubuntu.com/ubuntu xenial-security InRelease |
| 83 | パッケージリストを読み込んでいます... 完了 |
| 84 | (中略) |
| 85 | libc-bin (2.23-0ubuntu11) のトリガを処理しています ... |
| 86 | systemd (229-4ubuntu21.22) のトリガを処理しています ... |
| 87 | sgml-base (1.26+nmu4ubuntu1) のトリガを処理しています ... |
| 88 | |
| 89 | # (2-4) SSPカーネルコードのセットアップ及びビルド |
| 90 | saito@a584f9ade435:~/workdir/build_ssp3a$ ./build_ssp3a.sh |
| 91 | username for http://www.toppers.jp/MEMBERS): <ユーザ名> |
| 92 | password: <パスワード(非表示)> |
| 93 | --2019-09-11 22:16:53-- https://www.toppers.jp/MEMBERS/early/third/ssp3_arm_gcc-20190902.tar.gz |
| 94 | www.toppers.jp (www.toppers.jp) をDNSに問いあわせています... 52.194.18.5 |
| 95 | www.toppers.jp (www.toppers.jp)|52.194.18.5|:443 に接続しています... 接続しました。 |
| 96 | (中略) |
| 97 | arm-none-eabi-nm -n ssp > ssp.syms |
| 98 | arm-none-eabi-objcopy -O srec -S ssp ssp.srec |
| 99 | ruby /home/saito/workdir/build_ssp3a/workdir/ssp3/cfg/cfg.rb --pass 3 --kernel ssp -O -I. -I/home/saito/workdir/build_ssp3a/workdir/ssp3/include -I/home/saito/workdir/build_ssp3a/workdir/ssp3/target/ct11mpcore_gcc -I/home/saito/workdir/build_ssp3a/workdir/ssp3/arch/arm_gcc/common -I/home/saito/workdir/build_ssp3a/workdir/ssp3/arch/gcc -I/home/saito/workdir/build_ssp3a/workdir/ssp3 -I/home/saito/workdir/build_ssp3a/workdir/ssp3/sample -I./gen -I/home/saito/workdir/build_ssp3a/workdir/ssp3/tecs_kernel -T /home/saito/workdir/build_ssp3a/workdir/ssp3/target/ct11mpcore_gcc/target_check.trb \ |
| 100 | --rom-symbol ssp.syms --rom-image ssp.srec |
| 101 | configuration check passed |
| 102 | make[1]: ディレクトリ '/home/saito/workdir/build_ssp3a/workdir/ssp3/build' から出ます |
| 103 | saito@a584f9ade435:~/workdir/build_ssp3a$ |
| 104 | }}} |
| 105 | |
| 106 | 以上が成功すると <カレントディレクトリ>/workdir/ssp3/build/ に実行プログラムファイル(ssp)が生成されます. |
| 107 | |
| 108 | === 3. 実行確認(QEMUでの実行確認) |
| 109 | {{{ |
| 110 | # QEMU で実行ファイルを起動 |
| 111 | saito@a584f9ade435:~/workdir/build_ssp3a$ cd workdir/ssp3/build/ |
| 112 | saito@a584f9ade435:~/workdir/build_ssp3a/workdir/ssp3/build$ qemu-system-arm -M realview-eb-mpcore -semihosting -m 128M -nographic -kernel ssp |
| 113 | pulseaudio: pa_context_connect() failed |
| 114 | (省略.オーディオデバイス関連のエラーメッセージが出るがここでは気にしなくて良い) |
| 115 | audio: Failed to create voice `lm4549.out' |
| 116 | |
| 117 | TOPPERS/SSP3 Kernel Release 3.A.0 for ARM CT11MPCore (Sep 11 2019, 22:17:12) |
| 118 | Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory |
| 119 | Toyohashi Univ. of Technology, JAPAN |
| 120 | Copyright (C) 2004-2019 by Embedded and Real-Time Systems Laboratory |
| 121 | Graduate School of Information Science, Nagoya Univ., JAPAN |
| 122 | |
| 123 | System logging task is started. |
| 124 | Sample program starts (exinf = 0). |
| 125 | task1 is running (001). | |
| 126 | task1 is running (002). | |
| 127 | task1 is running (003). | |
| 128 | task1 is running (004). | |
| 129 | }}} |
| 130 | |
| 131 | QEMUを終了するには,Ctrl-a を押してから x を入力します. |
| 132 | |
| 133 | {{{ |
| 134 | # (Ctrl-a x を押す) |
| 135 | QEMU: Terminated |
| 136 | }}} |
| 137 | |
| 138 | コンテナのシェルを抜けてホストOSに戻る場合は exit を実行します. |
| 139 | |
| 140 | {{{ |
| 141 | # シェルを終了する |
| 142 | saito@a584f9ade435:~/workdir/build_ssp3a$ exit |
| 143 | ログアウト |
| 144 | $ |
| 145 | }}} |
| 146 | |
| 147 | 再度シェルを起動する場合は ./start_shell.sh を実行します. |
| 148 | |
| 149 | {{{ |
| 150 | # 再度シェルを立ち上げる |
| 151 | $ ./start_shell.sh |
| 152 | specified service: cli |
| 153 | docker-toppers_cli_1 is up-to-date |
| 154 | saito@a584f9ade435:~$ |
| 155 | }}} |
| 156 | |
| 157 | |
| 158 | == 注意事項 |
| 159 | * Windows版のgitで core.autocrlf が true に設定されている場合,シェルスクリプトの実行に失敗することがあるようです.その場合は `git config` コマンドで `core.autocrlf` を `false` に設定してみてください. |