Saturday, August 31, 2013

Slackware on the acer C7 chromebook

Yes people... that  post title is correct.

I managed to get slackware installed on my C7 chromebook... so, I'm writing this post to brag about that. (go figure!)


My new geek friend Barry S. Schultz posted The Method; which was based on a chromeOS developer Olof Johansson post on google chrome.

Requirements:
  1. The Chromebook in "Developer Mode."
  2. Same Chromebook with USB Boot enabled.
  3. USB bootable media (thumb drive).  I used a  kingston data traveler 2.0.1 with 16 gb of space. 
  4. A secondary computer, preferably running slackware.
Full vanilla install of slackware 14 will fit there with some room for more stuff; but a minimal install will fit on 1GB I guess...

anyways,

Hands down.

Barry emulate/copy the partition scheme of the C7 hard drive...
Following Barry's post and Olof, I understood that the chromebook won't boot from any media but a chromeOS kernel thumbdrive because it's hardwired to the BIOS.. .that seems uefi AFAIK... so you must create a GPT  chromeOS bootable usb key as follows:


On your slack box or your chromebook:

# parted /dev/sdXX
(parted) mktable gpt
(parted) quit

As a side note, the C7 will mount the first usb drive as /dev/sdb.



Now that the GPT table is created, you should create 2 partitions on the thumbdrive. Happens that it is easy to do with cgdisk. Anyways, proceed as you like. You need 2 partitions, one about 3.5 MB and the other the rest.. just make sure you label the 3.5 MB one as number 6 and the other as number 7 (very important if you pretend to copy and paste)

partition 6 must be ChromeOS kernel type (code 7F00). Below is the cgdisk output of my drive...


                                        cgdisk 0.8.5

                                   Disk Drive: /dev/sdb
                                 Size: 30489408, 14.5 GiB
ver
Part. #     Size        Partition Type            Partition Name
----------------------------------------------------------------
            1007.0 KiB  free space
   6        35.0 MiB    ChromeOS kernel           ChromeOS kernel
   7        14.5 GiB    Linux filesystem          slackware


Once you have partition 6 and 7 done,create  a filesystem on your partition 7... I did ext4.

now, on your slack box, proceed to install whatever you want from the slackware tree. I install about everything but kdei packages. The installpkg --root /dev/sdXX */*.t?z command did the trick for me;  but be my guest. Barry sugest using the CD installer and point the target partition to partition 7 on the thumb drive.... anyways, here you shall help your wife cleaning or something, minding that installing on a USB key takes time....


On the chromebook

Ctrl+Alt+t will bring  an odd looking console inside the chrome browser ofcourse. Typing shell will bring bash functionality to it... then sudo su to make you root.

As root, create a debugging-enabled kernel from the current kernel, copy it to partition #6.

# rootdev -s
    /dev/sda5
# dd if=/dev/sda4 of=kernel_2.blob

# dump_kernel_config kernel_2.blob > kernel_2.cfg

# cp kernel_2.cfg kernel_debug.cfg



Now, replace the contents of kernel_debug.cfg as follows following:

# echo "" > kernel_debug.cfg
# echo "add_efi_memmap boot=local console=tty1 disablevmx=off i915.modeset=1 init=/sbin/init kern_guid=%U loglevel=7 lsm.module_locking=0 ro root=PARTUUID=%U/PARTNROFF=1 rootwait tpm_tis.force=1 tpm_tis.interrupts=0" > kernel_debug.cfg


 Now, wrap the new kernel with the verified block and  the new config:

vbutil_kernel --repack kernel_debug.blob \
  --keyblock /usr/share/vboot/devkeys/kernel.keyblock \
  --version 1 \
  --signprivate /usr/share/vboot/devkeys/kernel_data_key.vbprivk \
  --config=kernel_debug.cfg \
  --oldblob kernel_2.blob


finally, copy it to partition #6; prioritize it and mark it as "successfully booted"

vbutil_kernel --verify kernel_debug.blob
dd if=kernel_debug.blob of=/dev/sdb6

cgpt add /dev/sdb -i 6 -P 1 -T 1 -S 1

 
As you are using the chromebook kernel, copy necessary stuff from the current Chrome OS rootfs to partition #7.  Include the following complete folders:

/lib/firmware
/lib/modules

/usr/share/vboot


And these files as well:

/usr/bin/cgpt

/usr/bin/dump_kernel_config

/usr/bin/vbutil_*


Note:
 I was booting successfully to slackware on the acer C7, but as the system I used to "install" everything on partition 7 mounted the thumbdrive as /dev/sdc,  I ended with slackware on single user mode.  Make sure your /etc/fstab file is corre:

UPDATE: sept 15

This machine simply kick ass.
I have upgrade everything to -current  (except for the kernel of course) and everything just works.
 well.. the kernel packages are there; but i'm just not able to load 3.10 as the chromebook firmware will look for a chromeOS kernel...

Anyways, I get a little more than 4 hours of battery usage out of the machine with slackware... more than 30 mins more than using chromeOS; and I'm running  kde 4.10.5 with full eye candy desktop effects.
:D

2 comments:

  1. I guess

    #cat /etc/fstab

    is top secret? Just kidding.

    ReplyDelete
  2. well..
    i didn't saw that coming :D

    once I pass the whole thing to the hdd on dual boot i'll let you guys know.

    ReplyDelete