Difference between revisions of "Acer C710 Chromebook"

From ArchWiki
Jump to: navigation, search
(Installing an x86_64 kernel (if installing x64))
(Copy Arch Image to C7)
(45 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
[[Category:Acer]]
 
[[Category:Acer]]
The following is a work in progress guide to getting Arch working on the $200 Acer C7 [[Chromebook]].
+
This page is a work in progress guide to running [[Arch_Linux | Arch Linux]] on the Acer C7 [[Chromebook]]. Over seven [http://us.acer.com/ac/en/US/content/models/chromebooks/chromebook-c models] exist, starting at $199.
  
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.
+
For now you need another computer running *nix. If you're already running [http://github.com/jay0lee/chrubuntu-script ChrUbuntu] on your Acer C7, skip to [[#Create_Image_File | creating your own Arch image]].
  
== Installing Arch onto an Acer C7 Chromebook ==
+
=== Install Arch on 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.
+
Arch runs well on the Acer C7. For 64bit installs first see [[#Installing_a_64bit_Kernel | Installing a x86_64 kernel]].
 +
"Patches welcome" for custom x86_64 ChromiumOS kernels. The default install is 32bit due to the stock kernel.
  
{{Warning|'''*BACK UP YOUR DATA.*'''}}
+
{{Warning|'''*BACK UP YOUR DATA.* All of it, somewhere else(Cloud, USB, another machine). The entire data partition will be purged many times.'''}}
 
+
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 ===
 
=== Enabling Dev Mode ===
Line 15: Line 14:
  
 
To enter Dev Mode:  
 
To enter Dev Mode:  
* Press hold down the {{Keypress|Esc+F3 (Refresh)}} keys, and press the {{Keypress|Power}} button.
+
* Press and hold the {{ic|Esc+F3 (Refresh)}} keys, then press the {{ic|Power}} button. This enters recovery mode.
::This enters recovery mode,
+
* Now, press {{ic|Ctrl+D}} (no prompt). It will ask you to confirm, then the system will reboot into Dev Mode.
* Now press {{Keypress|Ctrl+d}} (there's no prompt). It will ask you to confirm, then the system will reboot into dev-mode.
+
::Dev Mode will show the white boot screen. Press {{ic|Ctrl+D}} or wait 30 seconds to beep and boot.
::Dev Mode will always show the scary boot screen and you'll need to press {{Keypress|Ctrl+d}} or wait 30 seconds to continue booting.
+
  
{{Note|If you ever need to hard reset, press the {{Keypress|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.}}
+
{{Note|To hard reset, press {{ic|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.}}
  
See Also: [http://www.chromium.org/chromium-os/developer-information-for-chrome-os-devices/acer-c7-chromebook]
+
See Also: [http://www.chromium.org/chromium-os/developer-information-for-chrome-os-devices/acer-c7-chromebook#TOC-Entering-Developer-Mode Acer C7: Entering Developer Mode]
  
 
=== Install ChrUbuntu ===
 
=== 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.
+
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 [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.
 
* 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 {{Keypress|Ctrl+Alt+F2}} and login as "chronos"
+
* Press {{ic|Ctrl+Alt+F2}} and login as "chronos".
* Type "bash" and hit {{Keypress|Enter}}
+
* Bring up a bash prompt.
* Run "curl -L -O goo.gl/s9ryd"
+
# bash
* Run "sudo bash ./s9ryd"
+
* Download Chrubuntu installer and run it.
::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
+
# curl -L -O git.io/pikNcg
* Wait for the system reboot
+
# sudo bash ./pikNcg
* Wait 3-5 minutes for the system "repair" job to run
+
::Set the partition size for the future Arch install. Example: I input "260", most of the stock Acer C7(C710-2487)'s 320GB HDD.
* Reset keyboard layout, language, and reconnect to a network. Still don't log in to an account.
+
* Wait for the system reboot.
* {{Keypress|Ctrl+Alt+F2}} again, log in as "chronos" again
+
* Wait 3-5 minutes for the system "repair" job to run.
* Type "bash" and hit {{Keypress|Enter}}
+
* Reset keyboard layout, language, and reconnect to a network. Don't log in to an account.
* Run "curl -L -O goo.gl/s9ryd" again
+
* {{ic|Ctrl+Alt+F2}} again and log in as "chronos"(again).
* Run "sudo bash ./s9ryd" again
+
* Bring up a bash prompt(again).
* 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 {{Keypress|Enter}} for everything as we'll never let Ubuntu see light of day.
+
# 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 {{ic|Enter}} for all as we'll never use Ubuntu.
 
* While that installs, let's install Arch on our spare *nix box!
 
* While that installs, let's install Arch on our spare *nix box!
{{Note|When the installer finishes, it will ask you to press {{Keypress|Enter}} to reboot. DO NOT DO THIS. Instead hit {{Keypress|Ctrl+C}} to drop back to a shell. You have been warned.}}
+
{{Warning|When the script finishes, it will ask you to press {{ic|Enter}} to reboot, DO NOT. Press {{ic|Ctrl+C}} to exit to a shell.}}
  
 
==== Create Image File ====
 
==== Create Image File ====
Line 48: Line 51:
 
  # truncate -s 1G arch.img
 
  # truncate -s 1G arch.img
  
==== Convert Image To A Partition ====
+
==== Convert Image to A Partition ====
* Convert image to a ext4 filesystem.
+
* Convert image to an ext4 filesystem.
 
  # mkfs.ext4 -m 1 arch.img
 
  # mkfs.ext4 -m 1 arch.img
* Mount image to install to
+
* Mount image to install to.
 
  # mkdir /mnt/arch_install
 
  # mkdir /mnt/arch_install
 
  # mount arch.img /mnt/arch_install
 
  # mount arch.img /mnt/arch_install
  
==== Install Arch onto this new image ====
+
==== Install Arch on The 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.
+
Go through the [https://wiki.archlinux.org/index.php/Installation_Guide 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 example,
+
For 32 bit (x86),
 
  # pacstrap /mnt/arch_install base base-devel --arch i686
 
  # 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|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.
 
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 ===
+
=== 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.
+
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.
 
* Copy the Arch image to the Chromebook.
* Run "mkdir mnt mnt2 mnt3 backup"
+
* 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).
 
* 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).
 
* Otherwise, I'm assuming your Arch image was downloaded to the Chromebook somehow. So run "mount /path/to/arch.img mnt2"
 
* Otherwise, I'm assuming your Arch image was downloaded to the Chromebook somehow. So run "mount /path/to/arch.img mnt2"
* Run "mount /dev/sda7 mnt3". This will mount Ubuntu's root at mnt3.
+
* Mount Ubuntu's root at mnt3.
* Run "cp -a mnt3/lib/{firmware,modules} backup/". This will copy all firmware and kernel modules, which we'll need to successfully boot Arch.
+
# mount /dev/sda7 mnt3
* Run "cp -a mnt3/etc/modprobe.d/*.conf backup/". This will save all module configs.
+
* Copy all firmware and kernel modules, which we'll need to successfully boot Arch.
* Run "rm -rf mnt3/*"
+
# cp -a mnt3/lib/{firmware,modules} backup/
 +
* Save all module configs.
 +
# cp -a mnt3/etc/modprobe.d/*.conf backup/
 +
* Remove old Ubuntu install
 +
# rm -rf mnt3/*
 
{{Warning|Make 100% certain you typed "mnt3/*" and not some other mountpoint or you may toast your USB stick or Arch install.}}
 
{{Warning|Make 100% certain you typed "mnt3/*" and not some other mountpoint or you may toast your USB stick or Arch install.}}
* Run "cp -a mnt2/* mnt3/". This will copy your Arch install off to what was Ubuntu's root directory.
+
* Copy your Arch install off to what was Ubuntu's root directory.
* Run "cp -a backup/*.conf mnt3/etc/modprobe.d/". This will restore module configs.
+
# cp -a mnt2/* mnt3/
 +
* Restore module configs.
 +
# cp -a backup/*.conf mnt3/etc/modprobe.d/
 +
If running x86
 
* Run "cp -a backup/modules/* mnt3/lib/modules/". This will restore kernel modules.
 
* Run "cp -a backup/modules/* mnt3/lib/modules/". This will restore kernel modules.
* Run "cp -a backup/firmware mnt3/lib/". This will restore kernel firmwares.
+
If running x86_64
 +
# wget http://grayhatter.com/C7/zgb-x64-modules.tar.bz2
 +
# tar xf zgb-x64-modules.tar.bz2
 +
# sudo cp -R 3.4.0 mnt3/lib/modules/
 +
* Restore kernel firmwares.
 +
# cp -a backup/firmware mnt3/lib/
 +
* Copy CGPT to arch so we can boot back and fourth.
 +
# cp /usr/bin/cgpt mnt3/usr/bin/
 +
# mkdir mnt3/usr/bin/old_bins
 +
# cp /usr/bin/old_bins/cgpt mnt3/usr/bin/old_bins
 +
* To use CGPT later, you will need to install glibc (32-bit) or lib32-glibc (64-bit).
 
* "umount" mnt3, mnt2, and mnt. In that order.
 
* "umount" mnt3, mnt2, and mnt. In that order.
  
=== Installing an x86_64 kernel (if installing x64) ===
+
=== Installing a 64bit Kernel ===
* Run these commands from within ChromeOS before rebooting.
+
You have two choices, the official or unofficial way. 64bit kernels can be used with a 64 or 32bit filesystem.
 +
 
 +
* Official: You can simply login on your Chromebook and go to chrome://help , then change the channel from stable to Dev.
 +
To check your kernel(currently the ChromeOS filesystem is 32bit), run:
 +
# sudo modprobe configs && zcat /proc/config.gz | grep CONFIG_64BIT ; uname -m
 +
If you have a 64bit kernel you will see the output CONFIG_64BIT=y and x86_64.
 +
 
 +
Or
 +
 
 +
* Unofficial: Run these commands from within ChromeOS before rebooting.
 +
# wget http://grayhatter.com/C7/zgb-x64-kernel-partition.bz2
 +
# bunzip2 zgb-x64-kernel-partition.bz2
 +
# use_kernfs="zgb-x64-kernel-partition"
 +
# target_kern="/dev/sda6"
 +
# vbutil_kernel --repack $use_kernfs \
 +
  --keyblock /usr/share/vboot/devkeys/kernel.keyblock \
 +
  --version 1 \
 +
  --signprivate /usr/share/vboot/devkeys/kernel_data_key.vbprivk \
 +
  --oldblob $use_kernfs
 +
# dd if=$use_kernfs of=${target_kern}
 +
 
 +
=== 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 {{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.
  
# wget http://grayhatter.com/C7/zgb-x64-kernel-partition.bz2
+
== Extra - Reduce Boot Time(DANGEROUS) ==
# bunzip2 zgb-x64-kernel-partition.bz2
+
To see how dangerous this is; see [http://chromebooklinux.blogspot.com/2013/09/death-of-chromebook.html bricking], [http://chromebooklinux.blogspot.com/2013/09/its-alive-ressurection-of-chromebook.html unbricking], and [http://chromebooklinux.blogspot.com/2013/09/important-discovery-to-prevent-bricking.html lessions learned].
# use_kernfs="zgb-x64-kernel-partition"
+
# vbutil_kernel --repack $use_kernfs \
+
#  --keyblock /usr/share/vboot/devkeys/kernel.keyblock \
+
--version 1 \
+
--signprivate /usr/share/vboot/devkeys/kernel_data_key.vbprivk \
+
--config kernel-config
+
# dd if=$use_kernfs of=${target_kern}
+
  
=== Finishing up ====
+
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 {{ic|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.
  
* 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 {{Keypress|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.
+
* Make sure the battery is completely full, Acer C7 is plugged in, and booted into ChromeOS.
 +
* Press {{ic|Ctrl+Alt+F2}} or {{ic|Ctrl+Alt+T}} to get to a terminal (log in if you use {{ic|Ctrl+Alt+F2}})
 +
# cd ~/Downloads
 +
# shell
 +
# sudo -s
 +
# flashrom -r bios.bin # Back up old BIOS
 +
# gbb_utility –set –flags=0×01 bios.bin bios.new # Modifies the BIOS as needed
 +
* Refer to this image to find the "Write Protect Jumper" http://goo.gl/4OuGrw
 +
* 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.
  
== See also ==
+
== See Also ==
* [http://www.chromium.org/chromium-os/developer-information-for-chrome-os-devices/acer-c7-chromebook Developer information on Official site]
+
* [http://www.chromium.org/chromium-os/developer-information-for-chrome-os-devices/acer-c7-chromebook Official developer information, straight from Chromium.org]
* [http://chromeos-cr48.blogspot.com/2013/05/chrubuntu-one-script-to-rule-them-all_31.html ChrUbuntu script used in the installation, has useful tips on cgpt commands in case they are needed.]
+
* [http://github.com/jay0lee/chrubuntu-script The ChrUbuntu script official Github]
 +
* [http://chromeos-cr48.blogspot.com/2013/05/chrubuntu-one-script-to-rule-them-all_31.html The official ChrUbuntu script site for the older script. It has tips on cgpt commands and other info.]
 +
* [http://johnlewis.ie/neutering-the-developer-mode-screen-on-your-chromebook/ Source for BIOS modification (for different device, this page shows correct procedure for C7)]

Revision as of 14:29, 18 September 2013

This page is a work in progress guide to running Arch Linux on the Acer C7 Chromebook. Over seven models exist, starting at $199.

For now you need another computer running *nix. If you're already running ChrUbuntu on your Acer C7, skip to creating your own Arch image.

Install Arch on an Acer C7 Chromebook

Arch runs well on the Acer C7. For 64bit installs first see Installing a x86_64 kernel. "Patches welcome" for custom x86_64 ChromiumOS kernels. The default install is 32bit due to the stock 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 show the white boot screen. 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.

See Also: Acer C7: Entering Developer Mode

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!
Warning: When the script finishes, it will ask you to press Enter to reboot, DO NOT. Press Ctrl+C to exit to a shell.

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 an 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).
  • Otherwise, I'm assuming your Arch image was downloaded to the Chromebook somehow. So run "mount /path/to/arch.img mnt2"
  • Mount Ubuntu's root at mnt3.
# mount /dev/sda7 mnt3
  • Copy all firmware and kernel modules, which we'll need to successfully boot Arch.
# cp -a mnt3/lib/{firmware,modules} backup/
  • Save all module configs.
# cp -a mnt3/etc/modprobe.d/*.conf backup/
  • Remove old Ubuntu install
# rm -rf mnt3/*
Warning: Make 100% certain you typed "mnt3/*" and not some other mountpoint or you may toast your USB stick or Arch install.
  • Copy your Arch install off to what was Ubuntu's root directory.
# cp -a mnt2/* mnt3/
  • Restore module configs.
# cp -a backup/*.conf mnt3/etc/modprobe.d/

If running x86

  • Run "cp -a backup/modules/* mnt3/lib/modules/". This will restore kernel modules.

If running x86_64

# wget http://grayhatter.com/C7/zgb-x64-modules.tar.bz2
# tar xf zgb-x64-modules.tar.bz2
# sudo cp -R 3.4.0 mnt3/lib/modules/
  • Restore kernel firmwares.
# cp -a backup/firmware mnt3/lib/
  • Copy CGPT to arch so we can boot back and fourth.
# cp /usr/bin/cgpt mnt3/usr/bin/
# mkdir mnt3/usr/bin/old_bins
# cp /usr/bin/old_bins/cgpt mnt3/usr/bin/old_bins
  • To use CGPT later, you will need to install glibc (32-bit) or lib32-glibc (64-bit).
  • "umount" mnt3, mnt2, and mnt. In that order.

Installing a 64bit Kernel

You have two choices, the official or unofficial way. 64bit kernels can be used with a 64 or 32bit filesystem.

  • Official: You can simply login on your Chromebook and go to chrome://help , then change the channel from stable to Dev.

To check your kernel(currently the ChromeOS filesystem is 32bit), run:

# sudo modprobe configs && zcat /proc/config.gz | grep CONFIG_64BIT ; uname -m

If you have a 64bit kernel you will see the output CONFIG_64BIT=y and x86_64.

Or

  • Unofficial: Run these commands from within ChromeOS before rebooting.
# wget http://grayhatter.com/C7/zgb-x64-kernel-partition.bz2
# bunzip2 zgb-x64-kernel-partition.bz2
# use_kernfs="zgb-x64-kernel-partition"
# target_kern="/dev/sda6"
# vbutil_kernel --repack $use_kernfs \
 --keyblock /usr/share/vboot/devkeys/kernel.keyblock \
 --version 1 \
 --signprivate /usr/share/vboot/devkeys/kernel_data_key.vbprivk \
 --oldblob $use_kernfs
# dd if=$use_kernfs of=${target_kern}

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.

Extra - Reduce Boot Time(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)
# cd ~/Downloads
# shell
# sudo -s
# flashrom -r bios.bin # Back up old BIOS
# gbb_utility –set –flags=0×01 bios.bin bios.new # Modifies the BIOS as needed
  • Refer to this image to find the "Write Protect Jumper" http://goo.gl/4OuGrw
  • 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.

See Also