After poking around a few weeks in the developer shell on my Chrome OS, I felt like I needed more. I wanted the utilities that I am accustomed to on OSX or linux shell. The first thing I needed to do was find the right toolchain for the Samsung Chromebook. A quick google turned up a great resource as a starting point. (The blog also mentions how to get in the right ‘mode’ and how to backup.)
When you are ready to go, press ctrl-alt-t to get in the crosh tab, then type ‘shell’ to get into a bash shell, and then type ‘mkdir toolchain’. Move into the directory with ‘cd toolchain’.
Cruise to http://distfiles.gentoo.org/releases/arm/autobuilds/current-stage3-armv7a_hardfp/ and find the latest release of the tool chain. At the time of writing it is stage3-armv7a_hardfp-20130821.tar.bz2 (it has changed since I started messing with it).
A few items you might have to update in the below command:
The first command allows you to modify the filesystem that is normally protected.
sudo /usr/share/vboot/bin/make_dev_ssd.sh --remove_rootfs_verification --partitions 2 wget http://distfiles.gentoo.org/releases/arm/autobuilds/current-stage3-armv7a_hardfp/stage3-armv7a_hardfp-20130209.tar.bz2 tar xf stage3-armv7a_hardfp-20130209.tar.bz2 sudo mount -i -o remount,exec /home/chronos/user/ export C_INCLUDE_PATH=~/toolchain/usr/include export LD_LIBRARY_PATH=~/toolchain/usr/lib:~/toolchain/usr/lib/binutils/armv7a-hardfloat-linux-gnueabi/2.22 export PATH=$PATH:~/toolchain/usr/armv7a-hardfloat-linux-gnueabi/gcc-bin/4.5.4:~/toolchain/usr/armv7a-hardfloat-linux-gnueabi/binutils-bin/2.22 sed -i 's/\/usr/\/home\/chronos\/user\/toolchain\/usr/g' ~/toolchain/usr/lib/libc.so export PATH=$PATH:~/toolchain/usr/armv7a-hardfloat-linux-gnueabi/gcc-bin/4.6.3:~/toolchain/usr/armv7a-hardfloat-linux-gnueabi/binutils-bin/2.22
And now you are ready to start compiling files. To make thinks easier, I built ‘make’ next.
wget http://ftp.gnu.org/gnu/make/make-3.82.tar.bz2 tar xf make-3.82.tar.bz2 cd ma* ./configure ./build.sh
You can choose to copy this into /usr/local/bin. To copy, ‘sudo cp make /usr/local/bin’.
Let’s test a few applications:
wget http://www.nano-editor.org/dist/latest/nano-2.3.2.tar.gz tar -zxvf nano-2.3.2.tar.gz cd nano-2.3.2/ ./configure make cd src sudo cp ./nano /usr/local/bin
And now you should have ‘nano’. We can build another one, htop.
wget http://downloads.sourceforge.net/project/htop/htop/1.0.2/htop-1.0.2.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fhtop%2F&ts=1378015747&use_mirror=superb-dca2 -O htop-1.0.2.tar.gz ls ##I see I screwed up on my wget options mv htop-1.0.2.tar.gz?r=http:%2F%2Fsourceforge.net%2Fprojects%2Fhtop%2F htop-1.0.2.tar.gz tar -zxvf htop-1.0.2.tar.gz ./configure make sudo cp htop /usr/local/bin
These same basic steps should work for most open-source code available for compiling on ARM architecture. If you want to download the compiled version of nano and htop please right click and select save as or use wget.
It was at this point I decided to try to compile Open-Zwave. No real point building it on Chrome OS, but I wanted to see how it ran. Open-Zwave was pretty easy to get compiled but the OpenZwave Control Panel took a little bit of work due to the required libmicrohttpd.