概要
-
TinkerBoardで使えるOSイメージをビルド
(2017-3-21現在)- ここでビルドしたものでは、WifiとBluetoothは使えない
- ASUSが、TinkerOSとか、カーネルのソースコード・ビルド手順を
出してないよね?
=> https://github.com/TinkerBoard/debian_kernel ここにある。(2017-09-26更新... ずっと前から、みんな知ってるよな! 記事更新してなかった)
-
基本的に [TUTORIAL] Build a Tinker Board development image にそってます。
-
Windowsで、VirtualBox上に、Ubuntu16.04の仮想機を作って、そこでビルド。
-
作成したイメージは、sshが有効になっていて、ユーザ名:
linaro
/ パスワード:linaro
で、ログインできる。
環境
- ASUS TinkerBoard
- 仮想機ホスト: Windows 10 64bit
- Vagrant 1.9.2
- Virtualbox 5.0.32
- 仮想マシン: Ubuntu 16.04
- ベースイメージ ubuntu/xenial64 (20170320.0.0) 使用
- CPU:2コア / RAM: 4GB (お好みにより変更)
- ソースコードとか生成物を置く、16GBの外部ディスクイメージを作成(
/vagrant/disk-ext4.img
,/vagrant
は Windowsから提供される共有フォルダ)sudo mount -t ext4 -o loop /vagrant/disk-ext4.img /mnt/tinker
にて、マウント。起動ごとにうまくマウントすること.
手順
Windowsでの作業
-
インストールして使えるようにしとく::
- Vagrant
- Virtualbox
- git for Windows
-
C:\Vagrant\TB-Dev
フォルダを作成して、Vagrantfile
を作るVagrantfile# Vagrantfile # mt08 VB_NAME="Build-TinkerOS-MoDoKi" VM_MEMORY=4096 VM_CORES=2 VM_HOSTNAME="TB-MoDoKi.local" Vagrant.configure("2") do |config| config.vm.box = "ubuntu/xenial64" config.ssh.username = 'ubuntu' config.vm.provider "virtualbox" do |vb| vb.gui = false vb.name = VB_NAME vb.memory = VM_MEMORY vb.cpus = VM_CORES end config.vm.provision "shell", inline: <<-SHELL #echo 'Acquire::http::Proxy "http://apt-cache-server:3142";' | tee /etc/apt/apt.conf.d/02proxy apt-get update apt-get upgrade -y apt-get install -y git build-essential bc libssl-dev apt-get install -y gcc-arm-linux-gnueabihf u-boot-tools device-tree-compiler mtools parted binfmt-support apt-get install -y qemu-user-static apt-get install -y python-dbus python-debian python-parted python-yaml python-apt # python-support for Ubuntu 16.04 wget http://launchpadlibrarian.net/109052632/python-support_1.0.15_all.deb dpkg -i ./python-support_1.0.15_all.deb rm -fv ./python-support_1.0.15_all.deb apt-get install -f SHELL end
-
Git Bashをひらいて、
- 仮想機起動:
vagrant up
- ... 返って来るまで、待つ ...
- 16GBのファイル(
disk-ext4.img
)を作るfsutil file createnew disk-ext4.img 17179869184
- sshログイン
vagrant ssh
- 仮想機起動:
Ubuntuでの作業
-
ファイルの確認:
ls -l /vagrant/disk-ext4.img
-
ext4でフォーマット
mkfs.ext4 /vagrant/disk-ext4.img
-
マウントして、作業フォルダ作成・移動
sudo mkdir /mnt/tinker sudo mount -t ext4 -o loop /vagrant/disk-ext4.img /mnt/tinker/ ls -l /mnt/tinker #確認 cd /mnt/tinker #移動 sudo mkdir tinkeroscustom sudo chmod 777 tinkeroscustom sudo chown ubuntu.ubuntu tinkeroscustom cd tinkeroscustom
-
ソースコード・スクリプトなど取得
結構、時間かかるよcd /mnt/tinker/tinkeroscustom git clone https://github.com/rockchip-linux/kernel.git git clone https://github.com/rockchip-linux/u-boot.git git clone https://github.com/rockchip-linux/rk-rootfs-build.git git clone https://github.com/rockchip-linux/build.git
-
ビルド
-
uboot:
build/mk-uboot.sh miniarm
参考real 0m32.818s user 0m26.388s sys 0m2.136s
-
rootfsイメージ作成
cd rk-rootfs-build/ # 必要なパッケージ導入 sudo dpkg -i ubuntu-build-service/packages/* sudo apt-get install -f # ビルド TARGET=desktop ARCH=armhf ./mk-base-debian. #参考time #real 25m41.317s #user 15m4.508s #sys 0m56.804s ARCH=armhf ./mk-rootfs.sh #参考time #real 3m5.331s #user 2m23.524s #sys 0m9.888s ./mk-image.sh #参考time #real 0m43.335s #user 0m0.332s #sys 0m2.840s
-
カーネルビルド
cd /mnt/tinker/tinkeroscustom build/mk-kernel.sh miniarm #参考time #real 8m38.834s #user 14m12.372s #sys 1m20.440s
-
-
仕上げ
-
rk3288の編集:
vi build/extlinux/rk3288.conf
root=/dev/mmcblk
2p7
をroot=/dev/mmcblk
0p7
へこんな感じ/mnt/tinker/tinkeroscustombuild/extlinux/rk3288.conflabel kernel-4.4 kernel /zImage fdt /rk3288-miniarm.dtb append earlyprintk console=tty1 console=ttyS2,115200n8 rw root=/dev/mmcblk0p7 rootfstype=ext4 init=/sbin/init
-
sdイメージ作成
build/mk-image.sh -c miniarm -t boot build/mk-image.sh -c miniarm -t system -s 4000 -r rk-rootfs-build/linaro-rootfs.img
-
out/system.img
system.imgをSDにやくubuntu@ubuntu-xenial:/mnt/tinker/tinkeroscustom$ ls -l ./out/system.img -rw-rw-r-- 1 ubuntu ubuntu 1974607872 Mar 21 17:20 ./out/system.img
-
-
Windows側へコピー:
cp out/system.img /vagrant/
=> Windowsから、いつものツールで、SDに焼く
ベンチ
byte-unixbench
```bash:byte-unixbench導入・実行
sudo apt-get install git-core build-essential
git clone https://github.com/kdlucas/byte-unixbench.git
cd byte-unixbench/UnixBench
./Run
```
```shell-session:結果...1時間くらいかかたのか...
linaro@linaro-alip:~/byte-unixbench/UnixBench$ ./Run
gcc -o pgms/arithoh -Wall -pedantic -O3 -ffast-math -march=native -mtune=native -I ./src -DTIME -Darithoh src/arith.c
gcc -o pgms/register -Wall -pedantic -O3 -ffast-math -march=native -mtune=native -I ./src -DTIME -Ddatum='register int' src/arith.c
gcc -o pgms/short -Wall -pedantic -O3 -ffast-math -march=native -mtune=native -I ./src -DTIME -Ddatum=short src/arith.c
gcc -o pgms/int -Wall -pedantic -O3 -ffast-math -march=native -mtune=native -I ./src -DTIME -Ddatum=int src/arith.c
gcc -o pgms/long -Wall -pedantic -O3 -ffast-math -march=native -mtune=native -I ./src -DTIME -Ddatum=long src/arith.c
gcc -o pgms/float -Wall -pedantic -O3 -ffast-math -march=native -mtune=native -I ./src -DTIME -Ddatum=float src/arith.c
gcc -o pgms/double -Wall -pedantic -O3 -ffast-math -march=native -mtune=native -I ./src -DTIME -Ddatum=double src/arith.c
gcc -o pgms/hanoi -Wall -pedantic -O3 -ffast-math -march=native -mtune=native -I ./src -DTIME src/hanoi.c
gcc -o pgms/syscall -Wall -pedantic -O3 -ffast-math -march=native -mtune=native -I ./src -DTIME src/syscall.c
gcc -o pgms/context1 -Wall -pedantic -O3 -ffast-math -march=native -mtune=native -I ./src -DTIME src/context1.c
gcc -o pgms/pipe -Wall -pedantic -O3 -ffast-math -march=native -mtune=native -I ./src -DTIME src/pipe.c
gcc -o pgms/spawn -Wall -pedantic -O3 -ffast-math -march=native -mtune=native -I ./src -DTIME src/spawn.c
gcc -o pgms/execl -Wall -pedantic -O3 -ffast-math -march=native -mtune=native -I ./src -DTIME src/execl.c
gcc -o pgms/dhry2 -Wall -pedantic -O3 -ffast-math -march=native -mtune=native -I ./src -DTIME -DHZ= ./src/dhry_1.c ./src/dhry_2.c
gcc -o pgms/dhry2reg -Wall -pedantic -O3 -ffast-math -march=native -mtune=native -I ./src -DTIME -DHZ= -DREG=register ./src/dhry_1.c ./src/dhry_2.c
gcc -o pgms/looper -Wall -pedantic -O3 -ffast-math -march=native -mtune=native -I ./src -DTIME src/looper.c
gcc -o pgms/fstime -Wall -pedantic -O3 -ffast-math -march=native -mtune=native -I ./src -DTIME src/fstime.c
gcc -o pgms/whetstone-double -Wall -pedantic -O3 -ffast-math -march=native -mtune=native -I ./src -DTIME -DDP -DGTODay -DUNIXBENCH src/whets.c -lm
make all
make[1]: Entering directory '/home/linaro/byte-unixbench/UnixBench'
make distr
make[2]: Entering directory '/home/linaro/byte-unixbench/UnixBench'
Checking distribution of files
./pgms exists
./src exists
./testdir exists
./tmp exists
./results exists
make[2]: Leaving directory '/home/linaro/byte-unixbench/UnixBench'
make programs
make[2]: Entering directory '/home/linaro/byte-unixbench/UnixBench'
make[2]: Nothing to be done for 'programs'.
make[2]: Leaving directory '/home/linaro/byte-unixbench/UnixBench'
make[1]: Leaving directory '/home/linaro/byte-unixbench/UnixBench'
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
sh: 1: 3dinfo: not found
# # # # # # # ##### ###### # # #### # #
# # ## # # # # # # # ## # # # # #
# # # # # # ## ##### ##### # # # # ######
# # # # # # ## # # # # # # # # #
# # # ## # # # # # # # ## # # # #
#### # # # # # ##### ###### # # #### # #
Version 5.1.3 Based on the Byte Magazine Unix Benchmark
Multi-CPU version Version 5 revisions by Ian Smith,
Sunnyvale, CA, USA
January 13, 2011 johantheghost at yahoo period com
Use of uninitialized value in printf at ./Run line 1438.
Use of uninitialized value in printf at ./Run line 1439.
Use of uninitialized value in printf at ./Run line 1438.
Use of uninitialized value in printf at ./Run line 1439.
Use of uninitialized value in printf at ./Run line 1438.
Use of uninitialized value in printf at ./Run line 1439.
Use of uninitialized value in printf at ./Run line 1438.
Use of uninitialized value in printf at ./Run line 1439.
Use of uninitialized value in printf at ./Run line 1648.
Use of uninitialized value in printf at ./Run line 1649.
Use of uninitialized value in printf at ./Run line 1648.
Use of uninitialized value in printf at ./Run line 1649.
Use of uninitialized value in printf at ./Run line 1648.
Use of uninitialized value in printf at ./Run line 1649.
Use of uninitialized value in printf at ./Run line 1648.
Use of uninitialized value in printf at ./Run line 1649.
1 x Dhrystone 2 using register variables 1 2 3 4 5 6 7 8 9 10
1 x Double-Precision Whetstone 1 2 3 4 5 6 7 8 9 10
1 x Execl Throughput 1 2 3
1 x File Copy 1024 bufsize 2000 maxblocks 1 2 3
1 x File Copy 256 bufsize 500 maxblocks 1 2 3
1 x File Copy 4096 bufsize 8000 maxblocks 1 2 3
1 x Pipe Throughput 1 2 3 4 5 6 7 8 9 10
1 x Pipe-based Context Switching 1 2 3 4 5 6 7 8 9 10
1 x Process Creation 1 2 3
1 x System Call Overhead 1 2 3 4 5 6 7 8 9 10
1 x Shell Scripts (1 concurrent) 1 2 3
1 x Shell Scripts (8 concurrent) 1 2 3
4 x Dhrystone 2 using register variables 1 2 3 4 5 6 7 8 9 10
4 x Double-Precision Whetstone 1 2 3 4 5 6 7 8 9 10
4 x Execl Throughput 1 2 3
4 x File Copy 1024 bufsize 2000 maxblocks 1 2 3
4 x File Copy 256 bufsize 500 maxblocks 1 2 3
4 x File Copy 4096 bufsize 8000 maxblocks 1 2 3
4 x Pipe Throughput 1 2 3 4 5 6 7 8 9 10
4 x Pipe-based Context Switching 1 2 3 4 5 6 7 8 9 10
4 x Process Creation 1 2 3
4 x System Call Overhead 1 2 3 4 5 6 7 8 9 10
4 x Shell Scripts (1 concurrent) 1 2 3
4 x Shell Scripts (8 concurrent) 1 2 3
========================================================================
BYTE UNIX Benchmarks (Version 5.1.3)
System: linaro-alip: GNU/Linux
OS: GNU/Linux -- 4.4.52 -- #1 SMP Tue Mar 21 17:17:30 UTC 2017
Machine: armv7l (unknown)
Language: en_US.utf8 (charmap="ANSI_X3.4-1968", collate="ANSI_X3.4-1968")
CPU 0: ARMv7 Processor rev 1 (v7l) (0.0 bogomips)
CPU 1: ARMv7 Processor rev 1 (v7l) (0.0 bogomips)
CPU 2: ARMv7 Processor rev 1 (v7l) (0.0 bogomips)
CPU 3: ARMv7 Processor rev 1 (v7l) (0.0 bogomips)
19:31:01 up 6 min, 3 users, load average: 0.66, 0.34, 0.16; runlevel Mar
------------------------------------------------------------------------
Benchmark Run: Tue Mar 21 2017 19:31:01 - 19:59:16
4 CPUs in system; running 1 parallel copy of tests
Dhrystone 2 using register variables 10094986.0 lps (10.0 s, 7 samples)
Double-Precision Whetstone 1494.8 MWIPS (10.1 s, 7 samples)
Execl Throughput 974.9 lps (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 173252.4 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 57547.3 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 421426.1 KBps (30.0 s, 2 samples)
Pipe Throughput 362544.6 lps (10.0 s, 7 samples)
Pipe-based Context Switching 48032.5 lps (10.0 s, 7 samples)
Process Creation 369.6 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 1352.4 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 1020.5 lpm (60.1 s, 2 samples)
System Call Overhead 783442.5 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 10094986.0 865.0
Double-Precision Whetstone 55.0 1494.8 271.8
Execl Throughput 43.0 974.9 226.7
File Copy 1024 bufsize 2000 maxblocks 3960.0 173252.4 437.5
File Copy 256 bufsize 500 maxblocks 1655.0 57547.3 347.7
File Copy 4096 bufsize 8000 maxblocks 5800.0 421426.1 726.6
Pipe Throughput 12440.0 362544.6 291.4
Pipe-based Context Switching 4000.0 48032.5 120.1
Process Creation 126.0 369.6 29.3
Shell Scripts (1 concurrent) 42.4 1352.4 319.0
Shell Scripts (8 concurrent) 6.0 1020.5 1700.9
System Call Overhead 15000.0 783442.5 522.3
========
System Benchmarks Index Score 330.7
------------------------------------------------------------------------
Benchmark Run: Tue Mar 21 2017 19:59:16 - 20:27:43
4 CPUs in system; running 4 parallel copies of tests
Dhrystone 2 using register variables 30422699.0 lps (10.0 s, 7 samples)
Double-Precision Whetstone 5071.9 MWIPS (10.1 s, 7 samples)
Execl Throughput 4141.1 lps (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 218831.1 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 62352.0 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 683966.7 KBps (30.0 s, 2 samples)
Pipe Throughput 1253660.1 lps (10.0 s, 7 samples)
Pipe-based Context Switching 148544.1 lps (10.0 s, 7 samples)
Process Creation 8500.8 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 7484.8 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 1025.5 lpm (60.1 s, 2 samples)
System Call Overhead 2394917.0 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 30422699.0 2606.9
Double-Precision Whetstone 55.0 5071.9 922.2
Execl Throughput 43.0 4141.1 963.0
File Copy 1024 bufsize 2000 maxblocks 3960.0 218831.1 552.6
File Copy 256 bufsize 500 maxblocks 1655.0 62352.0 376.7
File Copy 4096 bufsize 8000 maxblocks 5800.0 683966.7 1179.3
Pipe Throughput 12440.0 1253660.1 1007.8
Pipe-based Context Switching 4000.0 148544.1 371.4
Process Creation 126.0 8500.8 674.7
Shell Scripts (1 concurrent) 42.4 7484.8 1765.3
Shell Scripts (8 concurrent) 6.0 1025.5 1709.2
System Call Overhead 15000.0 2394917.0 1596.6
========
System Benchmarks Index Score 969.7
linaro@linaro-alip:~/byte-unixbench/UnixBench$
```
その他
-
ビルド後のディスクの使用量はこんな感じ。
ubuntu@ubuntu-xenial:/mnt/tinker/tinkeroscustom$ pwd /mnt/tinker/tinkeroscustom ubuntu@ubuntu-xenial:/mnt/tinker/tinkeroscustom$ sudo du -sh * 1.3M build 4.4G kernel 1.9G out 5.5G rk-rootfs-build 269M u-boot ubuntu@ubuntu-xenial:/mnt/tinker/tinkeroscustom$ df -h . Filesystem Size Used Avail Use% Mounted on /dev/loop0 16G 12G 2.9G 81% /mnt/tinker ubuntu@ubuntu-xenial:/mnt/tinker/tinkeroscustom$
-
起動ごとに、EthernetのMACアドレスが変わる. (ので、DHCPで取得されるIPアドレスも変わるかと..)
-
まだ、シロウトには、使えるものでないな...