ARM build of Chrome

9,914 views
Skip to first unread message

David Sehr

unread,
Oct 19, 2011, 8:45:13 PM10/19/11
to chromium-dev
All,

Is there someone here who's an expert on the ARM build of Chrome?  Is there an Ubuntu build outside of ChromiumOS?  How about a Win8 build effort?

Thanks in advance,

David

Ilja Friedel

unread,
Oct 19, 2011, 8:50:49 PM10/19/11
to se...@google.com, chromium-dev
Neither one of these seem to exist right now.

Ilja.

> --
> Chromium Developers mailing list: chromi...@chromium.org
> View archives, change email options, or unsubscribe:
> http://groups.google.com/a/chromium.org/group/chromium-dev
>

junyi

unread,
Oct 19, 2011, 9:06:46 PM10/19/11
to chromi...@chromium.org
I've tried to build the ARM version(Release version) in Ubuntu cross
environment some days ago(Chromium version r99917, Host Ubuntu 10.04.3)
and get some results. But the release version could not run on my Filio
100 pad(Ubuntu 10.04 for arm created by rootstock which is a Ubuntu arm
tool for building rootfs). And the debug version could not be built for
the link tool issue(memory overflow on link stage.) One of the Ubuntu
arm team's member told me that they built the chromium on arm board
natively.

David Sehr

unread,
Oct 20, 2011, 9:47:44 AM10/20/11
to Gideon Wald, Jason Kim, chromium-dev
Thanks, everyone!  We'll keep pushing on the ChromeOS chroot build, then.

On Wed, Oct 19, 2011 at 8:01 PM, Gideon Wald <gideo...@google.com> wrote:
The Win8 team will be buckling down a lot on ARM at some point soon, but probably not for another quarter or so. We have some more basic stuff to address first. I'm more than happy to let you know when we do start work on it, and feel free to ping me off-list if you'd like more information.

-Gideon

On Wed, Oct 19, 2011 at 5:45 PM, David Sehr <se...@google.com> wrote:

David

--

Robert Muth

unread,
Oct 20, 2011, 11:30:48 AM10/20/11
to se...@google.com, Gideon Wald, Jason Kim, chromium-dev


A few more questions

* Can we manage to produce a chrome binary using the ChromeOS chroot (cross) build which will run on say stock  ubuntu 11.04.
  or do those binaries only run under chromeOS
* related: is it possible to subvert say an arm  ubuntu 11.04 box to run chromeOS chrome via a root jail on the arm box?
* would the chrome team expect a native build of chrome on  arm ubuntu 11.04 to more or less succeed modulo say not having
  enough RAM for the link. 
Robert

Antoine Labour

unread,
Oct 20, 2011, 1:16:41 PM10/20/11
to rob...@google.com, se...@google.com, Gideon Wald, Jason Kim, chromium-dev
On Thu, Oct 20, 2011 at 8:30 AM, Robert Muth <rob...@google.com> wrote:


A few more questions

* Can we manage to produce a chrome binary using the ChromeOS chroot (cross) build which will run on say stock  ubuntu 11.04.
  or do those binaries only run under chromeOS

Libraries move around a bit, and version skew make it hard.
 
* related: is it possible to subvert say an arm  ubuntu 11.04 box to run chromeOS chrome via a root jail on the arm box?

Sure.
 
* would the chrome team expect a native build of chrome on  arm ubuntu 11.04 to more or less succeed modulo say not having
  enough RAM for the link. 

Add enough swap and it'll succeed eventually. I think. You probably don't want to do that.

You should be able to cross-compile chrome for ubuntu arm, if you have an ubuntu chroot with all the necessary dev packages (install-build-deps on the target). Just specify the sysroot in GYP_DEFINES. We used to have a buildbot, but no-one was maintaining it, and the sysroot was woefully out of date, so it got turned off.

Antoine

Robert Muth

unread,
Nov 11, 2011, 5:34:20 PM11/11/11
to Antoine Labour, se...@google.com, Gideon Wald, Jason Kim, chromium-dev
On Thu, Oct 20, 2011 at 1:16 PM, Antoine Labour <pi...@google.com> wrote:


On Thu, Oct 20, 2011 at 8:30 AM, Robert Muth <rob...@google.com> wrote:


A few more questions

* Can we manage to produce a chrome binary using the ChromeOS chroot (cross) build which will run on say stock  ubuntu 11.04.
  or do those binaries only run under chromeOS

Libraries move around a bit, and version skew make it hard.
 
* related: is it possible to subvert say an arm  ubuntu 11.04 box to run chromeOS chrome via a root jail on the arm box?

Sure.
 
* would the chrome team expect a native build of chrome on  arm ubuntu 11.04 to more or less succeed modulo say not having
  enough RAM for the link. 

Add enough swap and it'll succeed eventually. I think. You probably don't want to do that.

You should be able to cross-compile chrome for ubuntu arm, if you have an ubuntu chroot with all the necessary dev packages (install-build-deps on the target). Just specify the sysroot in GYP_DEFINES. We used to have a buildbot, but no-one was maintaining it, and the sysroot was woefully out of date, so it got turned off.

Just a heads up, I am close to having such a sysroot ready. It already works with native client but chrome has more dependencies.
The goal is  get us to a point where we have an ubuntu 11.04 (natty) compatible cross arm TC.
I am sure I will run into some more problems next week,  if anybody cares about this and wants to help please let me know.

Jeff Bailey

unread,
Nov 11, 2011, 6:05:24 PM11/11/11
to rob...@google.com, Antoine Labour, se...@google.com, Gideon Wald, Jason Kim, chromium-dev
On Fri, Nov 11, 2011 at 2:34 PM, Robert Muth <rob...@google.com> wrote:


On Thu, Oct 20, 2011 at 1:16 PM, Antoine Labour <pi...@google.com> wrote:


On Thu, Oct 20, 2011 at 8:30 AM, Robert Muth <rob...@google.com> wrote:


A few more questions

* Can we manage to produce a chrome binary using the ChromeOS chroot (cross) build which will run on say stock  ubuntu 11.04.
  or do those binaries only run under chromeOS

Libraries move around a bit, and version skew make it hard.
 
* related: is it possible to subvert say an arm  ubuntu 11.04 box to run chromeOS chrome via a root jail on the arm box?

Sure.
 
* would the chrome team expect a native build of chrome on  arm ubuntu 11.04 to more or less succeed modulo say not having
  enough RAM for the link. 

Add enough swap and it'll succeed eventually. I think. You probably don't want to do that.

You should be able to cross-compile chrome for ubuntu arm, if you have an ubuntu chroot with all the necessary dev packages (install-build-deps on the target). Just specify the sysroot in GYP_DEFINES. We used to have a buildbot, but no-one was maintaining it, and the sysroot was woefully out of date, so it got turned off.

Just a heads up, I am close to having such a sysroot ready. It already works with native client but chrome has more dependencies.
The goal is  get us to a point where we have an ubuntu 11.04 (natty) compatible cross arm TC.
I am sure I will run into some more problems next week,  if anybody cares about this and wants to help please let me know.

Oops, had missed that.  The Sysroot wasn't the problem.  I'd updated that before.  Here's my instructions.  Since we dropped it, I didn't post them anywhere:

Install:

qemu-kvm-extras-static

/usr/local/google/chroot# debootstrap --arch armel --foreign lucid arm-rootfs-lucid

cp /usr/bin/qemu-arm-static arm-rootfs-lucid/usr/bin

chroot arm-rootfs-lucid

debootstrap/debootstrap --second-stage

exit

chroot arm-rootfs-lucid su -

echo deb http://ports.ubuntu.com/ubuntu-ports lucid main universe >>/etc/apt/sources.list

apt-get update

apt-get install apache2.2-bin bison fakeroot flex g++ gperf language-pack-fr \
          libapache2-mod-php5 libasound2-dev libbz2-dev libcairo2-dev \
          libcups2-dev libdbus-glib-1-dev libgconf2-dev \
          libgl1-mesa-dev libglu1-mesa-dev libglib2.0-dev libgnome-keyring-dev \
          libgtk2.0-dev libjpeg62-dev libnspr4-dev libnss3-dev libpam0g-dev \
          libsctp-dev libsqlite3-dev libxslt1-dev libxss-dev libxtst-dev \
          mesa-common-dev patch perl libwww-perl php5-cgi \
          pkg-config python python-dev rpm subversion ttf-dejavu-core \
          ttf-kochi-gothic ttf-kochi-mincho wdiff libcurl4-gnutls-dev \
          ttf-indic-fonts ttf-thai-tlwg libpulse-dev libpulse0 libbz2-1.0 libcurl4-gnutls-dev \
          libatk1.0-0 libc6 libasound2 libcairo2 libcups2 libdbus-glib-1-2 \
          libexpat1 libfontconfig1 libfreetype6 libglib2.0-0 libgnome-keyring0 \
          libgtk2.0-0 libpam0g libpango1.0-0 libpcre3 libpixman-1-0 \
          libpng12-0 libstdc++6 libsqlite3-0 libx11-6 libxau6 libxcb1 \
          libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfixes3 \
          libxi6 libxinerama1 libxrandr2 libxrender1 libxtst6 zlib1g


# Fix symlinks in /usr/lib to be relative (../../lib/*) instead of absolute
# (/lib/*).  Otherwise the cross-linker will complain about incompatible objects
# when this filesystem is mounted on /usr/ia64-linux-gnu/sys-root
apt-get install symlinks
symlinks -rc /usr/lib

# Codesourcery specific stuff.  Note that this step overwrites pieces of the Ubuntu install, so upgrades may break in random
# ways after this.  Or they might not.

cd /usr/local/crosstool-trusted/arm-crosstool/arm-none-linux-gnueabi/libc

cp -av --remove-destination lib sbin usr /usr/local/arm-rootfs-lucid/



Hope this helps!

Robert Muth

unread,
Dec 2, 2011, 1:11:08 PM12/2/11
to Jeff Bailey, Antoine Labour, se...@google.com, Gideon Wald, Jason Kim, chromium-dev
I managed to cobble together a cross toolchain which builds a chrome arm binary that worked 
on a panda board running ubuntu oneiric.

I wrote down how to reproduce the build here:


It is a little bit native_client centric but I can fix this if there is interest.

I would love to see this become part of the regular build (again) and I am willing to maintain the toolchain
if necessary.

Cheers,
Robert

Mark Seaborn

unread,
Dec 2, 2011, 2:10:40 PM12/2/11
to rob...@google.com, chromium-dev
On 2 December 2011 10:11, Robert Muth <rob...@google.com> wrote:
I managed to cobble together a cross toolchain which builds a chrome arm binary that worked 
on a panda board running ubuntu oneiric.

I wrote down how to reproduce the build here:


Could you put it in a public location?  That's a private site.

Cheers,
Mark

Robert Muth

unread,
Jan 5, 2012, 6:10:23 PM1/5/12
to Mark Seaborn, chromium-dev
I have updated:


with an alternative build recipe - will update this some more in the coming days.

Eric Vannier

unread,
Jan 5, 2012, 9:39:44 PM1/5/12
to Chromium-dev
FWIW, the page is saying that linux_tcmalloc does not compile on ARM.
But as of version 1.9.1 (http://code.google.com/p/google-perftools/),
tcmalloc does compile on ARM. The GoogleTV team is making use of it
for an unreleased ARM based product, and while I have not extensively
tested all features, it seems to work all right for us.

Thanks,

Eric

On Jan 5, 3:10 pm, Robert Muth <robe...@google.com> wrote:
> I have updated:
>
> http://code.google.com/p/chromium/wiki/LinuxChromiumArm
>
> with an alternative build recipe - will update this some more in the coming
> days.
>
>
>
>
>
>
>
> On Fri, Dec 2, 2011 at 2:10 PM, Mark Seaborn <mseab...@chromium.org> wrote:
> > On 2 December 2011 10:11, Robert Muth <robe...@google.com> wrote:
>
> >> I managed to cobble together a cross toolchain which builds a chrome arm
> >> binary that worked
> >> on a panda board running ubuntu oneiric.
>
> >> I wrote down how to reproduce the build here:
>
> >>https://sites.google.com/a/google.com/nativeclient/sub-project-arm-po...

Chris Lemonds

unread,
Oct 10, 2013, 5:12:51 PM10/10/13
to chromi...@chromium.org
All right, well I'm not exactly an expert, but i can defiantly solve a simple problem like this. Follow these instructions very carefully. One part missing and it won't work.

How to Install Ubuntu Linux on Your Chromebook with Crouton


Chromebooks aren’t “just a browser” — they’re Linux laptops. You can easily install a full Linux desktop alongside Chrome OS and instantly switch between the two with a hotkey — no rebooting necessary.

We performed this process with the $249 Samsung Chromebook, also known as the Samsung Series 3 Chromebook. If you have another Chromebook, read on anyway — it’s the same process.

Crouton vs. ChrUbuntu

Installing Ubuntu Linux on your Chromebook isn’t as simple as installing the standard Ubuntu system — at least not at the moment. You’ll need to choose a project developed specially for your Chromebook. There are two popular options:

  • ChrUbuntuChrUbuntu is a Ubuntu system built for Chromebooks. It works like a traditional dual-boot system. You can restart your Chromebook and choose between Chrome OS and Ubuntu at boot time. ChrUbuntu can be installed on your Chromebook’s internal storage or on a USB device or SD card.
  • CroutonCrouton actually uses a “chroot” environment to run both Chrome OS and Ubuntu at the same time. Ubuntu runs alongside Chrome OS, so you can switch between Chrome OS and your standard Linux desktop environment with a keyboard shortcut. This gives you the ability to take advantage of both environments without any rebooting needed. Crouton allows you to use Chrome OS while having a standard Linux environment with all its command-line tools and desktop applications a few keystrokes away.

We’ll be using Crouton for this. It takes advantage the Linux system underlying Chrome OS to run both environments at once and is a much slicker experience than traditional dual-booting. Crouton uses Chrome OS’s standard drivers for your Chromebook’s hardware, so you shouldn’t run into issues with your touchpad or other hardware. Crouton was actually created by Google employee Dave Schneider.

When you use Crouton, you’re actually just running one operating system — Linux. However, you’re running two environments on top of the OS — Chrome OS and a traditional Linux desktop.

Enabling Developer Mode

Before you do any sort of hacking, you’ll need to enable “Developer Mode” on your Chromebook. Chromebooks are normally locked down for security, only booting properly signed operating systems, checking them for tampering, and preventing users and applications from modifying the underlying OS. Developer Mode allows you to disable all these security features, giving you a laptop you can tweak and play with to your heart’s content.

After enabling Developer Mode, you’ll be able to access a Linux terminal from within Chrome OS and do whatever you like.

To enable developer mode on the Samsung Chromebook or Chromebook Pixel, hold down the ESC and Refresh keys and tap the Power button. You’ll enter recovery mode. Older Chromebooks have physical developer switches that you’ll need to toggle instead.

At the recovery screen, press Ctrl+D, agree to the prompt, and you’ll boot into developer mode.

When you transition to developer mode, your Chromebook’s local data will be erased (just like when you unlock a Nexus Android device). This process took about 15 minutes on our system.

Whenever you boot your Chromebook, you’ll see a warning screen. You’ll need to press Ctrl+D or wait 30 seconds to continue booting.

This warning screen exists to alert you that a Chromebook is in developer mode and the normal security precautions don’t apply. For example, if you were using someone else’s Chromebook, you could normally log in with your Google account without fear. If it was in developer mode, it’s possible that software running in the background could be recording your keystrokes and monitoring your usage. That’s why Google makes it easy to tell if a Chromebook is in Developer Mode and doesn’t allow you to permanently disable this warning screen.

Installing Crouton

First, you’ll need to download Crouton. Click the following link to download the latest release of Crouton to your Chromebook: http://goo.gl/fd3zc

Once you have Crouton downloaded, press Ctrl+Alt+T in Chrome OS to open the crosh terminal.

Type shell into the terminal and press Enter to enter Linux shell mode. This command only works if Developer Mode is enabled.

To install Crouton the easy way, all you need to do is run the command below. This installs Crouton with the Xfce desktop and an encrypted chroot for security.

sudo sh -e ~/Downloads/crouton -t xfce

The actual installation process will take some time as the appropriate software is downloaded and installed — it took about half an hour on our system — but the process is largely automatic.

If you’d rather install Ubuntu’s Unity desktop instead, use -t unity instead of -t xfce in the command above. You can run the following command to see a list of installation types, including installations without a graphical desktop:

sh -e ~/Downloads/crouton

After going through the installation process, you can run either of the following commands to enter your Crouton session (assuming you installed Crouton with Xfce):

sudo enter-chroot startxfce4

sudo startxfce4

Switching Between Environments

To go switch back and forth between Chrome OS and your Linux desktop environment, use the following keyboard shortcuts:

  • ARM (like the Samsung Series 3 Chromebook): Ctrl+Alt+Shift+Back and Ctrl+Alt+Shift+Forward
  • Intel x86/AMD64 (like the Chromebook Pixel and $200 Acer Chromebook): Ctrl+Alt+Back and Ctrl+Alt+Forward plus Ctrl+Alt+Refresh

If you want to exit the chroot, just log out of the Xfce desktop (or the Unity desktop, if you’re using that). You’ll then need to run the startxfce4 command above to enter the chroot again.

What You Can Do With Linux

You now have a traditional Linux desktop running alongside Chrome OS. All that traditional Linux software is just an apt-get away in Ubuntu’s software repositories. Graphical utilities like local image editors, text editors, office suites, development tools, all the Linux terminal utilities you would want — they’re all easy to isntall.

You can even easily share files between Chrome OS and your Linux system. Just use the Downloads directory in your home folder. All files in the Downloads directory appear in the Files app on Chrome OS.

On an ARM Chromebook like the Samsung Chromebook, you’re a bit limited in what you can do. Some programs don’t run on ARM, so you can’t run Minecraft and other closed-source applications that haven’t been compiled for ARM Linux. You have access to a variety of open source tools and desktop applications that can be recompiled for ARM, but most closed-source applications won’t work on ARM.

On an Intel Chromebook, you have much more freedom. You could install Steam for Linux, Minecraft, Dropbox, and all the typical applications that work on the Linux desktop, using them alongside Chrome OS. This means that you could install Steam for Linux on a Chromebook Pixel and gain access to a whole other ecosystem of games — if you were crazy enough to buy a Chromebook Pixel, of course.

One last tip if you’re using Xfce — you’ll probably want to disable the screensaver from the Screensaver tool in Xfce’s settings menu. It appears to cause graphical glitches in Chrome OS while running in the background.

Removing Crouton and Restoring Your Chromebook

If you decide you’re done with Linux, you can easily get rid of the scary boot screen and get your internal storage space back.

Just reboot your Chromebook normally to get back to the scary warning screen at boot-up. Follow the prompts on your screen (tap the Space bar and then press Enter) to disable Developer Mode. When you disable Developer Mode, your Chromebook will clean everything up, restoring you to a clean, safe locked-down Chrome OS system and overwriting all the changes you’ve made to your Chromebook’s software.

Reply all
Reply to author
Forward
0 new messages