The following is a work in progress, of getting arch working on Acer's new C7 200$ [[Chromebook]]. From opening the box to an Arch Linux command line.

+

The following is a work in progress guide to getting Arch working on the $200 Acer C7 [[Chromebook]].

−

Currently you'll need a second computer already running Something that can run Virtual Box. In the future I'll create a way to install Arch without the need for a second computer.

+

For now you'll need a second computer already running *nix. If you're already running ChrUbuntu on your C7 then you can just skip to creating your own Arch image.

== Installing Arch onto an Acer C7 Chromebook ==

== Installing Arch onto an Acer C7 Chromebook ==

−

Currently Archlinux does work on the C7 but the install process is a bit odd. Currently I have no way to replace the chromeos kernel, and I'd really like to. If you manage to figure it out PLEASE let me know how. In the mean time the system does work really well (for a chromebook) with Arch.

+

At present, Arch runs well on the C7, however most testing has been done with stock i686 ChromeOS kernels. "Patches welcome" when it comes to x86_64 Chromium kernels or completely custom ones. The recommend install is x86 as it has PAE, so your RAM will be used even if you upgrade to more than 4GB, the kernel is more up to date and stable, and it's not much faster on x64. Unless you need to boot x64 (or are going to custom compile your own kernel regardless) please use x86.

−

=== Backup all your data! ===

+

{{Warning|'''*BACK UP YOUR DATA.*'''}}

−

I'm assuming you're buying the system to install Arch, and that there's no personal data on the device. But if that's not the case

+

−

'''*BACK UP YOUR DATA.*'''

+

Seriously. All of it. Somewhere *other* than on the device - the entire data partition will be purged a couple times over during the install process. USB keys, Google Drive, printed paper messages stored in bottles, something.

−

+

−

'''*BACK UP YOUR DATA.*'''

+

−

+

−

'''*BACK UP YOUR DATA.*'''

+

−

+

−

Off device too, the hard disk gets wiped clean by design when you enter Dev Mode.

+

=== Enabling Dev Mode ===

=== Enabling Dev Mode ===

Line 22:

Line 15:

To enter Dev Mode:

To enter Dev Mode:

−

* Press hold down the {{Keypress|Esc+F3 (Refresh)}} keys, and press the {{Keypress|Power}} button.

+

* Press hold down the {{ic|Esc+F3 (Refresh)}} keys, and press the {{ic|Power}} button.

::This enters recovery mode,

::This enters recovery mode,

−

* Now press {{Keypress|Ctrl+d}} (there's no prompt). It will ask you to confirm, then the system will reboot into dev-mode.

+

* Now press {{ic|Ctrl+d}} (there's no prompt). It will ask you to confirm, then the system will reboot into dev-mode.

−

::Dev Mode will always show the scary boot screen and you need to press {{Keypress|Ctrl+d}} or wait 30 seconds to continue booting.

+

::Dev Mode will always show the scary boot screen and you'll need to press {{ic|Ctrl+d}} or wait 30 seconds to continue booting.

+

+

{{Note|If you ever need to hard reset, press the {{ic|Esc+F3 (Refresh)}} combo. This will hard reset the system much like the small reset buttons on the front of tower PCs. The same warnings as on towers apply - the OS has no chance to save itself from this, and data loss is possible. You've been warned.}}

+

+

See Also: [http://www.chromium.org/chromium-os/developer-information-for-chrome-os-devices/acer-c7-chromebook]

+

+

=== Install ChrUbuntu ===

+

While it sounds completely backwards to install Ubuntu on our Chromebook just to install Arch, at present it's the most automated and safe way. Scripts are in work-in-progress stages to try mashing the ChrUbuntu installer with [https://github.com/tokland/arch-bootstrap 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 {{ic|Ctrl+Alt+F2}} and login as "chronos"

+

* Bring up a bash prompt

+

# bash

+

* Download Crubuntu installer and run it.

+

# curl -L -O goo.gl/s9ryd

+

# sudo bash ./s9ryd

+

::Here is where you set the partition sizing for what will eventually be your Arch install. For example, I told the script "90", so Arch would be using the majority of my 128GB M4 SSD

+

* 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. Still don't log in to an account.

+

* {{ic|Ctrl+Alt+F2}} again, log in as "chronos" again

+

* Bring up a bash prompt (again)

+

# bash

+

* Download Crubuntu installer and run it. (again)

+

# curl -L -O goo.gl/s9ryd

+

# sudo bash ./s9ryd

+

* Let Ubuntu's installer do its thing. You'll get asked a few setup-related questions along the way, it's safe to just hit {{ic|Enter}} for everything as we'll never let Ubuntu see light of day.

+

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

+

{{Note|When the installer finishes, it will ask you to press {{ic|Enter}} to reboot. DO NOT DO THIS. Instead hit {{ic|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 onto this new image ====

+

At this point, run through the [https://wiki.archlinux.org/index.php/Installation_Guide Installation Guide] as you normally would. I strongly recommend doing this from a system with the Arch install scripts package installed; while this is a doable process with misc. *nix systems (many of such processes are well documented here on the Wiki), it's going to be much smoother with the install scripts.

−

If you want to boot from a chromium type usb drive you'll have to run "crossystem dev_boot_usb=1" from ChromeOS and reboot once to boot from USB drives with {{Keypress|Ctrl+u}}. But we don't care about that.

+

For 32 bit (x86),

+

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

+

{{Note|The `--arch i686` part is important if you're on an x86_64 system. As ChrUbuntu does not support 64 bit with the C7 currently. If you want to boot x86_64, you will need to install a different kernel detailed later.}}

−

{{Note|If you need to hard reset. Press the refresh/F3 and press the power button. This will hard reset the system. It's occasionally useful, but use it with care - it wont sync the disk or shut down nicely, so there's a nonzero chance of trashing the contents of your disk.}}

+

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.

−

(all of this was stolen from [http://www.chromium.org/chromium-os/developer-information-for-chrome-os-devices/acer-c7-chromebook])

+

=== Copy Arch Image To C7 ===

+

Here's where things start to become a mess. By now you should have a ready-to-go Ubuntu install that you did not reboot into yet (meaning you're back at the bash shell in ChromeOS), and a ready-to-go Arch install on the arch.img file. You'll need to find a way to get this arch.img file to the Chromebook - be it a USB HDD, uploading it somewhere, SSHFS, whatever, make it happen.

−

=== Re-Partitioning (coming soon) ===

+

* Copy the Arch image to the Chromebook.

−

Next you need to make room for Arch by re-partitioning 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).

* 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 {{ic|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.

−

* convert img

+

−

VBoxManage convertdd test.bin test.vdi --format VDI

+

−

==== Step 4: ====

+

== Optional - Reducing boot times (DANGEROUS) ===

−

* install arch into vbox

+

There is a way to "Neuter" the developer screen, and reduce the auto boot time to 3 seconds (vs the 30 seconds) and remove the beep in order to prevent the need to hit {{ic|Ctrl+d}} on every boot. This is dangerous because if you do this wrong, you can brick your chromebook completely, requiring a jtag to recover. However, these steps have been fully tested several times on several chromebooks of different versions (Acer C7 only, but several revisions). The BIOS flash also does not start the flash if the anything is unstable, so it has built in protection. Still, proceed with caution.

−

TODO

+

−

==== Step 5: ====

+

* Make sure the battery is completely full, and the machine is plugged in and booted in ChromeOS.

−

* unconvert img

+

* Press {{ic|Ctrl+Alt+F2}} or {{ic|Ctrl+Alt+T}} to get to a terminal (log in if you use {{ic|Ctrl+Alt+F2}})

* Refer to this image to find the "Write Protect Jumper" http://goo.gl/4OuGrw

+

* Short the BIOS protect jumper, and make sure the connection is stable. Jumpers form an old IDE HDD should work, I used a small knife and was very careful.

+

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

+

* If this command fails, the jumpers are not shorted completely, or the connection became unstable on the jumpers. It will not flash unless it's stable the whole time. It will revert if the connection becomes unstable at any time. If it failed while in a flash, DO NOT REBOOT! Flash again until it works if it started the flash to unsure that you don't have a bad flash and the tools recovery feature didn't fail. Just because it has a built in check doesn't mean you should rely on it.

+

* If the connection was stable, you should have a working BIOS mod and you can reboot to see the changes. Congratulations you should now have a developer mode screen which flashes by in 2 seconds and doesn't beep!

+

* Back up the bios.bin and bios.new on another machine in case you ever want to revert (google drive is also a good place to back these up to)

Installing Arch onto an Acer C7 Chromebook

At present, Arch runs well on the C7, however most testing has been done with stock i686 ChromeOS kernels. "Patches welcome" when it comes to x86_64 Chromium kernels or completely custom ones. The recommend install is x86 as it has PAE, so your RAM will be used even if you upgrade to more than 4GB, the kernel is more up to date and stable, and it's not much faster on x64. Unless you need to boot x64 (or are going to custom compile your own kernel regardless) please use x86.

Warning: *BACK UP YOUR DATA.*

Seriously. All of it. Somewhere *other* than on the device - the entire data partition will be purged a couple times over during the install process. USB keys, Google Drive, printed paper messages stored in bottles, something.

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 hold down the Esc+F3 (Refresh) keys, and press the Power button.

This enters recovery mode,

Now press Ctrl+d (there's no prompt). It will ask you to confirm, then the system will reboot into dev-mode.

Dev Mode will always show the scary boot screen and you'll need to press Ctrl+d or wait 30 seconds to continue booting.

Note: If you ever need to hard reset, press the Esc+F3 (Refresh) combo. This will hard reset the system much like the small reset buttons on the front of tower PCs. The same warnings as on towers apply - the OS has no chance to save itself from this, and data loss is possible. You've been warned.

Install ChrUbuntu

While it sounds completely backwards to install Ubuntu on our Chromebook just to install Arch, at present it's the most automated and safe way. Scripts are in work-in-progress stages to try mashing the ChrUbuntu installer 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 Crubuntu installer and run it.

# curl -L -O goo.gl/s9ryd
# sudo bash ./s9ryd

Here is where you set the partition sizing for what will eventually be your Arch install. For example, I told the script "90", so Arch would be using the majority of my 128GB M4 SSD

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. Still don't log in to an account.

Ctrl+Alt+F2 again, log in as "chronos" again

Bring up a bash prompt (again)

# bash

Download Crubuntu installer and run it. (again)

# curl -L -O goo.gl/s9ryd
# sudo bash ./s9ryd

Let Ubuntu's installer do its thing. You'll get asked a few setup-related questions along the way, it's safe to just hit Enter for everything as we'll never let Ubuntu see light of day.

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. Instead hit 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 onto this new image

At this point, run through the Installation Guide as you normally would. I strongly recommend doing this from a system with the Arch install scripts package installed; while this is a doable process with misc. *nix systems (many of such processes are well documented here on the Wiki), it's going to 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 an x86_64 system. As ChrUbuntu does not support 64 bit with the C7 currently. If you want to boot x86_64, you will need to install a different kernel detailed later.

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

Here's where things start to become a mess. By now you should have a ready-to-go Ubuntu install that you did not reboot into yet (meaning you're back at the bash shell in ChromeOS), and a ready-to-go Arch install on the arch.img file. You'll need to find a way to get this arch.img file to the Chromebook - be it a USB HDD, uploading it somewhere, SSHFS, whatever, make it happen.

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) =

There is a way to "Neuter" the developer screen, and reduce the auto boot time to 3 seconds (vs the 30 seconds) and remove the beep in order to prevent the need to hit Ctrl+d on every boot. This is dangerous because if you do this wrong, you can brick your chromebook completely, requiring a jtag to recover. However, these steps have been fully tested several times on several chromebooks of different versions (Acer C7 only, but several revisions). The BIOS flash also does not start the flash if the anything is unstable, so it has built in protection. Still, proceed with caution.

Make sure the battery is completely full, and the machine is plugged in and booted in 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, and make sure the connection is stable. Jumpers form an old IDE HDD should work, I used a small knife and was very careful.

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

If this command fails, the jumpers are not shorted completely, or the connection became unstable on the jumpers. It will not flash unless it's stable the whole time. It will revert if the connection becomes unstable at any time. If it failed while in a flash, DO NOT REBOOT! Flash again until it works if it started the flash to unsure that you don't have a bad flash and the tools recovery feature didn't fail. Just because it has a built in check doesn't mean you should rely on it.

If the connection was stable, you should have a working BIOS mod and you can reboot to see the changes. Congratulations you should now have a developer mode screen which flashes by in 2 seconds and doesn't beep!

Back up the bios.bin and bios.new on another machine in case you ever want to revert (google drive is also a good place to back these up to)