I got interested in building Crochet images for Chromebook. The first step, naturally is to build U-boot for Chromebook.
In order to build U-boot, you'll need to have already installed
- gmake
- gcc
You can get these from the ports tree. You'll also need xdev, the FreeBSD cross-compiler toolkit.
I started with the latest U-boot 2014 source, which I got here. The latest U-boot requires DTC 1.4. I'm on FreeBSD 10, which has a much older DTC.
To build the latest DTC:
git clone git://git.kernel.org/pub/scm/utils/dtc/dtc.git cd dtc gmake CC=gcc cp dtc /usr/bin
Once we have DTC 1.4, we can build U-boot.
wget ftp://ftp.denx.de/pub/u-boot/u-boot-2014.07.tar.bz2 tar zxvf u-boot-2014.07.tar.bz2 cd u-boot-2014.07 gmake SED=gsed HOSTCC=cc CROSS_COMPILE=armv6-freebsd- snow_config gmake SED=gsed HOSTCC=cc CROSS_COMPILE=armv6-freebsd-
The U-boot binary image is "u-boot.bin". To burn the U-boot binary to a SD card:
sudo dd if=u-boot.bin of=/dev/rdisk1
The next challenge is the file system. The file system on the Chromebook looks like this:
start size part contents
0 1 PMBR (Boot GUID: E780FED6-7991-B94B-B622-FA7541BE9FBB)
1 1 Pri GPT header
2 32 Pri GPT table
8671232 21295104 1 Label: "STATE"
Type: Linux data
UUID: D5488177-EB19-3243-8D7C-D6E4F01DB5B3
20480 32768 2 Label: "KERN-A"
Type: ChromeOS kernel
UUID: 47715F23-7DD6-5545-93DC-3807D1CD4AFD
Attr: priority=0 tries=0 successful=0
4476928 4194304 3 Label: "ROOT-A"
Type: ChromeOS rootfs
UUID: BE1064FF-EC28-E64B-B3A1-A5C176D57C0F
53248 32768 4 Label: "KERN-B"
Type: ChromeOS kernel
UUID: 5D200D96-1F52-804C-83A7-AD8081E8ACD4
Attr: priority=1 tries=0 successful=1
282624 4194304 5 Label: "ROOT-B"
Type: ChromeOS rootfs
UUID: D0795A2A-1D0D-4140-9F57-F87AEF399C44
16448 1 6 Label: "KERN-C"
Type: ChromeOS kernel
UUID: E8A703B8-E0A5-964D-9508-D88DE336D003
Attr: priority=0 tries=15 successful=0
16449 1 7 Label: "ROOT-C"
Type: ChromeOS rootfs
UUID: 7A947ABA-E723-8440-9A07-0EC394C85195
86016 32768 8 Label: "OEM"
Type: Linux data
UUID: 173B3C97-CDCF-F849-99E7-7614C6C0F9FD
16450 1 9 Label: "reserved"
Type: ChromeOS reserved
UUID: CD83D43A-4FC8-4849-B0DD-368E9C3819BA
16451 1 10 Label: "reserved"
Type: ChromeOS reserved
UUID: 344D3149-A5C2-B44B-A65C-2DFD59758FC5
64 16384 11 Label: "RWFW"
Type: ChromeOS firmware
UUID: D9B79232-94AD-A143-9C49-F947BFA2491E
249856 32768 12 Label: "EFI-SYSTEM"
Type: EFI System Partition
UUID: E780FED6-7991-B94B-B622-FA7541BE9FBB
30777311 32 Sec GPT table
30777343 1 Sec GPT header
There is a good description of the Chromium OS file system here. The size parameter is in sectors, which are usually 512 bytes each. So, for example the state partition is 10GB in size. KERN-A is 16MB in size, and ROOT-A is 2GB.
The partition ids for ChromeOS kernel and rootfs, are "fe3a2a5d-4f32-41a7-b725-accc3285a309" and "3cb8e202-3b7e-47dd-8a3c-7ff2a13cfcec" respectively. The partition ids for ChromeOS are documented here.
August 23, 2014 - 10:42 am
[…] I'm upgrading the U-boot version used for Wandboard by Crochet-BSD. The first step is to upgrade the Device Tree Compiler (DTC); there are instructions here. […]