Installing Arch on an Acer C7 Chromebook

Arch runs well on the Acer C7. For information on 64bit installs first see Installing a x86_64 kernel.
"Patches welcome" for custom or modded x86_64 ChromiumOS kernels. The default install is 32bit due to the stock / stable channel's kernel.

Warning: *BACK UP YOUR DATA.* All of it, somewhere else(Cloud, USB, another machine). The entire data partition will be purged many times.

Enabling Dev Mode

First step is to enable Dev mode on the system so we can run some unsigned code. This will wipe all your data!

To enter Dev Mode:

Press and hold the Esc+F3 (Refresh) keys, then press the Power button.

This enters recovery mode,

Now press Ctrl+D (no prompt). It will ask you to confirm, then the system will reboot into Dev Mode.

Dev Mode will always show the white boot screen and you'll need to press Ctrl+D or wait 30 seconds to beep and boot.

Note: To hard reset, press Esc+F3 (Refresh). This acts like a reset button on a desktop PC.
The same warnings apply - The OS cannot save itself from this, and data loss is possible.

Install ChrUbuntu

While it is completely backwards to install Ubuntu just to install Arch, currently it's the most automated and safe way. Scripts are a work-in-progress, trying to mash the ChrUbuntu script with arch-bootstrap. Stay tuned for details if they arrive.

After enabling dev mode on your Chromebook, boot to the ChromeOS setup screen. Set keyboard layout, language, and connect to a network. Do *not* log in to an account.

Press Ctrl+Alt+F2 and login as "chronos"

Bring up a bash prompt

# bash

Download Chrubuntu installer and run it.

# curl -L -O git.io/pikNcg
# sudo bash ./pikNcg

Set the partition size for the future Arch install. Example: I input "260", most of the stock Acer C7(C710-2487)'s 320GB HDD.

Wait for the system reboot.

Wait 3-5 minutes for the system "repair" job to run.

Reset keyboard layout, language, and reconnect to a network. Don't log in to an account.

Ctrl+Alt+F2 again and log in as "chronos"(again).

Bring up a bash prompt(again).

# bash

Download ChrUbuntu installer and run it(again).

# curl -L -O git.io/pikNcg
# sudo bash ./pikNcg

Let the ChrUbuntu installer run. You'll be asked a few setup questions, it's safe to hit Enter for all as we'll never use Ubuntu.

While that installs, let's install Arch on our spare *nix box!

Note: When the installer finishes, it will ask you to press Enter to reboot. DO NOT DO THIS. Press Ctrl+C to drop back to a shell. You have been warned.

Create Image File

First we need to create an Arch Image to do things with. This can be done an any *nix box.

# truncate -s 1G arch.img

Convert Image to A Partition

Convert image to a ext4 filesystem.

# mkfs.ext4 -m 1 arch.img

Mount image to install to

# mkdir /mnt/arch_install
# mount arch.img /mnt/arch_install

Install Arch on The New Image

Go through the Installation Guide as normal. I recommend a system with the Arch install scripts package installed. This is a doable process with many *nix systems(well documented on the Wiki), it will be much smoother with the install scripts.

For 32 bit (x86),

# pacstrap /mnt/arch_install base base-devel --arch i686

Note: The `--arch i686` part is important if you're on the stock stable channel which currently uses a 32bit-PAE kernel.

For 64 bit (x64)

# pacstrap /mnt/arch_install base base-devel --arch x86_64

When setting up fstab, you'll need to mount "/dev/sda7" at "/". UUIDs aren't really an option here as data is about to get sorted all over the place.

Copy Arch Image to C7

Now it gets messy. You should have a ChrUbuntu install that you did not reboot into(you're back in the bash shell in ChromeOS) and a ready-to-go Arch install on arch.img. Copy the arch.img file to a transfer medium(USB, HDD, Cloud, SSHFS, BT, etc).

Copy the Arch image to the Chromebook.

Create working directories.

# mkdir mnt mnt2 mnt3 backup

If your Arch image is on a USB key or drive, run "mount /dev/sdb1 mnt" (replacing /dev/sdb1 with the identifier of your USB drive according to ChromeOS). Then run "mount mnt/arch.img mnt2" (replacing arch.img with the name of your Arch image).

Finishing Up

Reboot and enjoy your Arch install! Note that ChrUbuntu's installer only told cgpt to boot to the Linux partition one time, so if anything is hosed, a reboot will send you back to ChromeOS. If all went well and you are happy with everything, you can reboot to ChromeOS, drop to the Ctrl+Alt+F2 console, and run a `sudo cgpt add -i 6 -P 5 -S 1 /dev/sda` to make the Chromebook always boot Arch.

Optional - Reducing Boot Times (DANGEROUS)

To see how dangerous this is; see bricking, unbricking, and lessions learned.
There is a way to silence the developer screen while reduce the auto boot time to three seconds(vs 30), removing the need to hit Ctrl+d each boot. This is dangerous because you can brick your Chromebook, requiring a JTAG to recover. These steps have been fully tested several times on several Acer C7 revisions. The BIOS flashing does not start if anything is unstable, having built in protection. Proceed with caution.

Make sure the battery is completely full, Acer C7 is plugged in, and booted into ChromeOS.

Press Ctrl+Alt+F2 or Ctrl+Alt+T to get to a terminal (log in if you use Ctrl+Alt+F2)

Short the BIOS protect jumper, making sure the connection is stable. Jumpers from an old IDE HDD should work, I used a small knife.

# flashrom” again – “flashrom -w bios.new # Flashes the modified BIOS

If this command fails, the jumpers are not fully shorted or the connection became unstable on the jumpers. It will revert if the connection becomes unstable at any time. If it fails while in a flash, DO NOT REBOOT! Flash again until it works if it started the flash, ensuring tools recovery works and that you didn't have a bad flash. Do not rely on the built in check.

If successful, you should have a working BIOS mod. Reboot. The developer mode screen should vanish in three seconds, silently!

Back up bios.bin and bios.new to another machine or the cloud in case you ever want to revert.