This is a tutorial on how to run Linaro's OPTEE Trusted Execution Environment on QEMU. I decided to write this post to help someone who might have trouble getting and building the correct versions. I had some trouble initially as well but with the help of Joakim Bech I was successful in building the right version and run my first secure application .Here are some pre-requisites.
1. Linux based machine.
2. Good internet plan
3. Some patience
We need to install the repo tool which is used by Android as well to make a central repo of the dependencies.
Initialize and sync the repo
Links:
Congratulations, you have successfully built OPTEE, now you can start building applications for it, I will cover that in the next tutorial.
1. Linux based machine.
2. Good internet plan
3. Some patience
Some Required Packages:
$ sudo apt-get install android-tools-fastboot autoconf bison cscope curl \
flex gdisk libc6:i386 libfdt-dev libglib2.0-dev \
libpixman-1-dev libstdc++6:i386 libz1:i386 netcat \
python-crypto python-serial uuid-dev xz-utils zlib1g-dev
$ sudo apt-get install ccache
We need to install the repo tool which is used by Android as well to make a central repo of the dependencies.
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
$ PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
Initialize and sync the repo
$ mkdir -p $HOME/devel/optee
$ cd $HOME/devel/optee
$ repo init -u https://github.com/OP-TEE/manifest.git -m default_stable.xml -b master
$ repo sync
This will take some time to finish depending on your internet speed, so sit back with a cup of coffee.
Once this finishes we need to build the toolchains, I had some issues here so I will write my solution as well.
$ cd $HOME/devel/optee
$ repo init -u https://github.com/OP-TEE/manifest.git -m default_stable.xml -b master
$ repo sync
$ cd $HOME/devel/optee/build
$ make toolchains
If this step fails. For some reason it was unable to download the complete files for me so I will post the links where you can manually download
the toolchains and paste them in the $HOME/devel/optee/toolchains folder, and I will also post my updated make file. Replace the existing toolchain.mk from the build folder.$ make toolchains
Links:
- http://releases.linaro.org/14.08/components/toolchain/binaries/gcc-linaro-arm-linux-gnueabihf-4.9-2014.08_linux.tar.xz
- http://releases.linaro.org/14.08/components/toolchain/binaries/gcc-linaro-aarch64-linux-gnu-4.9-2014.08_linux.tar.xz
- http://releases.linaro.org/14.07/components/toolchain/binaries/gcc-linaro-aarch64-none-elf-4.9-2014.07_linux.tar.xz
Updated make file:
https://gist.github.com/hybridNeo/1cc0d49d510e4d8e9320
Now, time to build!
$ cd $HOME/devel/optee/build
$ make all run
$ make all run
Congratulations, you have successfully built OPTEE, now you can start building applications for it, I will cover that in the next tutorial.
Nice explanation even though I don't understand one bit of this but the way you given step by step procedure feels good. Keep it up
ReplyDeleteThanks for the instructions
ReplyDelete貓鼬吃的貓
ReplyDeleteKickass!
ReplyDeleteSaves so much effort
Where is the next tutorial?
ReplyDeleteHello Rahul, I am following these steps but facing issue with repo sync for https://github.com/OP-TEE/manifest.git the branch default_stable.xml not present. I tried with default.xml but repo sync failed. Can you please help to resolve this??
ReplyDelete