Jump to content



Photo
debian; chrome os; chromebook

  • Please log in to reply
33 replies to this topic

#1 +Karl L.

Karl L.

    xorangekiller

  • Tech Issues Solved: 15
  • Joined: 24-January 09
  • Location: Virginia, USA
  • OS: Debian Testing

Posted 25 August 2013 - 23:47

I bought a used Samsung Series 3 Chromebook (AKA the 2012 Samsung ARM Chromebook) about 3 weeks ago and have spent the majority of my free time since then trying to replace Chrome OS with Debian on the internal SSD. Although there is already a guide on the Debian wiki for almost this exact purpose, it makes use of binary blobs from Chrome OS and does not discuss replacing Chrome OS, only installing Debian on an SD card. That method works - and I used it verbatim to bootstrap my installation on the internal SSD - but as the author of the page admits it relies on unpackaged software with no source code available, which will potentially make the system difficult to maintain. Therefore I created a repository and packaged all of the required software not already in the Debian archive from upstream sources. I also wrote a few utilities of my own, which I also packaged and pushed to my repository, to fill in gaps in functionality not already covered by existing software. The result is a full installation of Debian Jessie (armhf) with the XFCE desktop environment and entirely packaged free software supporting it (with the exception of the proprietary Mali GLES library required for hardware graphics acceleration, which is packaged but obviously not DFSG free).

Anyone else who has this hardware is welcome to make use of my rough installation guide below. If you find any bugs in my packages, have suggestions for improvements, or would like me to clarify something, please let me know in this thread. Although I can't promise that I will maintain this repository indefinitely, I always archive copies of software I write and package. Therefore if my repository is down or no longer contains some of the software referenced in this guide, feel free to PM me and I will try to offer a resolution.
 
 
 

Without further ado, I present a rough guide for:
Replacing Chrome OS with Debian Jessie on the Samsung Series 3 Chromebook
The Right Way
 
 

1. Follow the "InstallingDebianOn Samsung ARMChromebook" guide on the Debian wiki to install Jessie on an SD card or flash drive. This external image will in turn be used to install Jessie on the Chromebook's internal SSD.
 
 

2. Boot from the Debian installation you just created (Ctrl+U), and bootstrap the installation on the SSD.

 
2.1. Format ROOT-A (/dev/mmcblk0p3) as EXT4.

mkfs.ext4 /dev/mmcblk0p3

 
 
2.2. Format STATE (/dev/mmcblk0p1) as SWAP.

mkswap /dev/mmcblk0p1

 
 
2.3. Use gdisk to shrink STATE to 2147 MB (Start: 13.6 GB; End: 15.7 GB). The necessary procedure is explained in this tutorial.

 
2.4. Use gdisk to expand ROOT-A to 11.3 GB (Start: 2292 MB; End: 13.6 GB).

gdisk /dev/mmcblk0

# Delete the partition and create it again with the desired size.
# You are required to know how to do this in gdisk.
# If you do not, read the tutorial linked in the previous step.

resize2fs /dev/mmcblk0p3

 
2.5. Use cgpt to mirror the Chrome OS priorities for the partitions.

cgpt show /dev/mmcblk0
cgpt add -i 2 -S 1 -T 15 -P 15 /dev/mmcblk0
cgpt add -i 4 -S 1 -T 15 -P 0 /dev/mmcblk0
cgpt add -i 6 -S 1 -T 15 -P 0 /dev/mmcblk0
cgpt add -i 1 -t data -l "STATE" /dev/mmcblk0
cgpt add -i 2 -t kernel -l "KERN-A" /dev/mmcblk0
cgpt add -i 3 -t rootfs -l "ROOT-A" /dev/mmcblk0
sync

 
2.6. Install Debian Jessie on ROOT-A.

mkdir /mnt/rar
mount /dev/mmcblk0p3 /mnt/rar -o rw,discard

debootstrap --arch=armhf jessie /mnt/rar http://ftp.us.debian.org/debian
  
nano /mnt/rar/etc/fstab
    # /etc/fstab: static file system information.
    #
    # Use 'blkid' to print the universally unique identifier for a
    # device; this may be used with UUID= as a more robust way to name devices
    # that works even if disks are added and removed. See fstab(5).
    #
    # <file system> <mount point>   <type>  <options>       <dump>  <pass>
    # / was on /dev/mmcblk0p3 during installation
echo "UUID=$(blkid | grep mmcblk0p3 | grep -Eo '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}') /               ext4    errors=remount-ro,noatime,nodiratime,discard  0       1" >> /mnt/rar/etc/fstab
echo '# swap was on /dev/mmcblk0p1 during installation' >> /mnt/rar/etc/fstab
echo "UUID=$(blkid | grep mmcblk0p1 | grep -Eo '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}') none            swap    sw                            0       0" >> /mnt/rar/etc/fstab

echo 'MY_HOSTNAME' > /mnt/rar/etc/hostname
  
nano /mnt/rar/etc/apt/sources.list
    ## JESSIE
    deb http://ftp.us.debian.org/debian/ jessie main contrib non-free
    deb-src http://ftp.us.debian.org/debian/ jessie main contrib non-free
    
    ## JESSIE-SECURITY
    deb http://security.debian.org/ jessie/updates main contrib non-free
    deb-src http://security.debian.org/ jessie/updates main contrib non-free
  
chroot /mnt/rar
apt-get update
apt-get install apt-transport-https console-setup bash-completion
wget -q https://dl.dropboxusercontent.com/u/62647756/repos/apt/debian/keys/xorangekiller.asc -O- | apt-key add -
passwd root
exit
  
nano /mnt/rar/etc/apt/sources.list.d/killer.list
    deb https://dl.dropboxusercontent.com/u/62647756/repos/apt/debian/ unstable main contrib non-free
    deb-src https://dl.dropboxusercontent.com/u/62647756/repos/apt/debian/ unstable main contrib non-free
  
mount -o bind /proc /mnt/rar/proc
mount -o bind /dev /mnt/rar/dev
mount -o bind /dev/pts /mnt/rar/dev/pts
chroot /mnt/rar
apt-get update
apt-get install linux-image-exynos5 linux-headers-exynos5 firmware-linux firmware-libertas
apt-get install systemd chromebook-kernel-vboot parted
nano /etc/default/chromebook-vboot
    LINUX_CMDLINE = "lsm.module_locking=0 quiet init=/lib/systemd/systemd"
update-chromebook-vboot
  
apt-get install lightdm task-xfce-desktop
apt-get install libegl1-mali xserver-xorg-video-armsoc xserver-xorg-input-multitouch xserver-xorg-input-mouse
adduser bob
apt-get install sudo
usermod -a -G sudo,users bob
exit
umount /mnt/rar/dev/pts
umount /mnt/rar/dev
umount /mnt/rar/proc
  
mkdir /mnt/rar/etc/X11/xorg.conf.d
nano /mnt/rar/etc/X11/xorg.conf.d/51-multitouch.conf
    Section "InputClass"
        Identifier          "touchpad"
        MatchIsTouchpad     "on"
        Option              "FingerHigh"            "5"
        Option              "FingerLow"             "5"
        Option              "TapButton1"            "1"
        Option              "TapButton2"            "2"
        Option              "TapButton3"            "3"
        Option              "VertEdgeScroll"        "off"
        Option              "VertTwoFingerScroll"   "on"
        Option              "HorizEdgeScroll"       "off"
        Option              "HorizTwoFingerScroll"  "on"
        Option              "CircularScrolling"     "off"
        Option              "CircScrollTrigger"     "2"
        Option              "CoastingSpeed"         "0"
    EndSection
nano /mnt/rar/etc/X11/xorg.conf.d/30-exynos.conf
    Section "Device"
        Identifier      "Mali FBDEV"
        Driver          "armsoc"
        Option          "fbdev"                 "/dev/fb0"
        Option          "Fimg2DExa"             "false"
        Option          "DRI2"                  "true"
        Option          "DRI2_PAGE_FLIP"        "false"
        Option          "DRI2_WAIT_VSYNC"       "true"
    #   Option          "Fimg2DExaSolid"        "false"
    #   Option          "Fimg2DExaCopy"         "false"
    #   Option          "Fimg2DExaComposite"    "false"
        Option          "SWcursorLCD"           "false"
    EndSection
    
    Section "Screen"
        Identifier      "DefaultScreen"
        Device          "Mali FBDEV"
        DefaultDepth    24
    EndSection
  
mkdir /mnt/rar/home/bob/.scripts/
nano /mnt/rar/home/bob/.scripts/chromebook-local-keymap
    #!/bin/sh
    
    xmodmap -e 'keycode 22 = BackSpace Delete BackSpace Delete BackSpace BackSpace'
    xmodmap -e 'keycode 67 = XF86Back F1 XF86Back F1 F1 F1 XF86Switch_VT_1'
    xmodmap -e 'keycode 68 = XF86Forward F2 XF86Forward F2 F2 F2 XF86Switch_VT_2'
    xmodmap -e 'keycode 69 = XF86Refresh F3 XF86Refresh F3 F3 F3 XF86Switch_VT_3'
    xmodmap -e 'keycode 70 = XF86Battery F4 XF86Battery F4 F4 F4 XF86Switch_VT_4'
    xmodmap -e 'keycode 71 = XF86Display F5 XF86Display F5 F5 F5 XF86Switch_VT_5'
    xmodmap -e 'keycode 72 = XF86MonBrightnessDown F6 XF86MonBrightnessDown F6 F6 F6 XF86Switch_VT_6'
    xmodmap -e 'keycode 73 = XF86MonBrightnessUp F7 XF86MonBrightnessUp F7 F7 F7 XF86Switch_VT_7'
    xmodmap -e 'keycode 74 = XF86AudioMute F8 XF86AudioMute F8 F8 F8 XF86Switch_VT_8'
    xmodmap -e 'keycode 75 = XF86AudioLowerVolume F9 XF86AudioLowerVolume F9 F9 F9 XF86Switch_VT_9'
    xmodmap -e 'keycode 76 = XF86AudioRaiseVolume F10 XF86AudioRaiseVolume F10 F10 F10 XF86Switch_VT_10'
  
chroot /mnt/rar
chown -R bob:bob /home/bob/.scripts
chmod -R 755 /home/bob/.scripts
apt-get install alsa-utils pulseaudio-utils libasound2-data
apt-get install chromebook-brightness-control
visudo
    # Allow all users to set the screen brightness without a password
    %users  ALL=(ALL) NOPASSWD: /usr/bin/chromebook-brightness-control
exit
  
nano /mnt/rar/etc/pulse/default.pa
    ### Load audio drivers statically
    ### (it's probably better to not load these drivers manually, but instead
    ### use module-udev-detect -- see below -- for doing this automatically)
    load-module module-alsa-sink device=sysdefault
  
umount /mnt/rar
reboot

3. Boot from the Debian installation on the internal SSD (Ctrl+D), and setup the Chromebook keymap and shortcuts.

 
3.1. Go to "Applications Menu->Settings->Session and Startup->Application Autostart".
 
3.1.1. Add the Chromebook local keymap script to the login processes for the current user (bob).
Click "Add".
Name: Chromebook Local Keymap
Description: Set the proper keymap for the Samsung Series 3 Chromebook keyboard for the current user
Command: /home/bob/.scripts/chromebook-local-keymap
 

3.2. Run the Chromebook local keymap script you just added as a login process.




~/.scripts/chromebook-local-keymap

3.3. Go to "Applications Menu->Settings->Keyboard->Application Shortcuts".
 
3.3.1. Add the shortcut to turn the screen brightness down.
Click "Add".
Command: /usr/bin/sudo /usr/bin/chromebook-brightness-control --down --increment=200
Click "OK".
Shortcut: XF86MonBrightnessDown
Click "OK".

3.3.2. Add the shortcut to turn the screen brightness up.
Click "Add".
Command: /usr/bin/sudo /usr/bin/chromebook-brightness-control --up --increment=200
Click "OK"
Shortcut: XF86MonBrightnessUp
Click "OK"




#2 Haggis

Haggis

    Neowinian Senior

  • Tech Issues Solved: 15
  • Joined: 13-June 07
  • Location: Near Stirling, Scotland
  • OS: Debian 7
  • Phone: Samsung Galaxy S3 LTE (i9305)

Posted 30 September 2013 - 18:41

Your a linux god lol



#3 mr_gigabyte

mr_gigabyte

    Neowinian

  • Joined: 14-October 13

Posted 14 October 2013 - 04:39

Im gonna try it now, will get back with you on it,, sounds interesting



#4 mr_gigabyte

mr_gigabyte

    Neowinian

  • Joined: 14-October 13

Posted 14 October 2013 - 06:01

a there are some missing links but most important is the debian link https://wiki.debian....g/ARMChromebook gives an error on jessie..

 

Nonethe less, Im willing to try this using my current arch build but Im a bit confused on your partition for mmcblk0, are all the partitions 1-6? Because I, staring at 12 on mine..



#5 OP +Karl L.

Karl L.

    xorangekiller

  • Tech Issues Solved: 15
  • Joined: 24-January 09
  • Location: Virginia, USA
  • OS: Debian Testing

Posted 14 October 2013 - 22:33

a there are some missing links but most important is the debian link https://wiki.debian....g/ARMChromebook gives an error on jessie..

 

How so? I clicked every link in my guide a few minutes ago, and they are all still active. Although the guide on the Debian wiki has been updated slightly since I posted this tutorial, it still looks intact. I admit that I didn't follow the guide exactly the first time I used it (mostly because I installed Jessie on a flash drive instead of an SD card), but my deviation was slight. I have no reason to believe it doesn't work as-is.
 

Nonethe less, Im willing to try this using my current arch build but Im a bit confused on your partition for mmcblk0, are all the partitions 1-6? Because I, staring at 12 on mine..

You are correct. There are twelve partitions. However, it is not necessary to use all of them for this procedure to work. On the contrary, I would prefer to start with a clean partition table and create only the partitions we absolutely need (which is technically four - firmware, kernel, boot, and root). However the Chromebook's firmware assumes the factory partition layout on the internal disk, and it would be far more effort than it's worth to install modified firmware to change that assumption, in my opinion. Therefore my guide instructs you to repurpose the existing partitions and set the appropriate flags to notify the firmware of the nominal changes (from its perspective).



#6 Ignacio

Ignacio

    Neowinian

  • Joined: 18-October 13

Posted 18 October 2013 - 20:26

You're guidelines seems SO interesting that I'm ready to replace ChromeOS with debian. However, the link for the tutorial on gdisk seems to be broken. I've never used gdisk and I'm a little afraid of messing things up on the chromebook's ssd. From what I've read on the web, it seems that I have to delete the partition and create it again. Could you be so kind and explain that procedure a little further?

 

 

TIA,

 

Ignacio



#7 OP +Karl L.

Karl L.

    xorangekiller

  • Tech Issues Solved: 15
  • Joined: 24-January 09
  • Location: Virginia, USA
  • OS: Debian Testing

Posted 19 October 2013 - 18:54

You're guidelines seems SO interesting that I'm ready to replace ChromeOS with debian. However, the link for the tutorial on gdisk seems to be broken. I've never used gdisk and I'm a little afraid of messing things up on the chromebook's ssd. From what I've read on the web, it seems that I have to delete the partition and create it again. Could you be so kind and explain that procedure a little further?

 

I fixed the broken link you pointed out, but after taking another look at the tutorial, I decided it would probably be a good idea for me to elaborate anyway. After all, partition and filesystem manipulation can be a little scary, even for those of us with more experience, so it doesn't hurt to be thorough. My instructions below correspond roughly to sections 2.1-2.5 in my opening post. I included a few extra commands which don't modify the procedure in any way, but should give you a better understanding of what is actually happening. Also note that I generated the output you see below in a virtual machine (in the interest of not reformatting my Chromebook again just for the purposes of this tutorial) using a virtual hard disk imaged with the Chrome OS recovery image for my Chromebook. Therefore while the partition table should be reasonably similar to one on an actual Chromebook, don't take it as canonical.

 

Without further ado, every command I entered to modify the partition table and filesystem (in order), along with their unabridged output, is below.

root@T1008:~# gdisk -l /dev/mmcblk0
GPT fdisk (gdisk) version 0.8.5

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/mmcblk0: 33554432 sectors, 16.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): C324F110-1D86-F348-8EF8-38F81DD82AA6
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 33554398
Partitions will be aligned on 1-sector boundaries
Total free space is 135130 sectors (66.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1         2826240        33554398   14.7 GiB    0700  STATE
   2           20480           53247   16.0 MiB    7F00  KERN-A
   3          286720         2826239   1.2 GiB     7F01  ROOT-A
   4           53248           86015   16.0 MiB    7F00  KERN-B
   5          282624          286719   2.0 MiB     7F01  ROOT-B
   6           16448           16448   512 bytes   7F00  KERN-C
   7           16449           16449   512 bytes   7F01  ROOT-C
   8           86016          118783   16.0 MiB    0700  OEM
   9           16450           16450   512 bytes   7F02  reserved
  10           16451           16451   512 bytes   7F02  reserved
  11              64           16447   8.0 MiB     FFFF  RWFW
  12          249856          282623   16.0 MiB    EF00  EFI-SYSTEM
root@T1008:~# cgpt show /dev/mmcblk0
       start        size    part  contents
           0           1          PMBR (Boot GUID: 5F80E349-F725-6147-91AD-6C44106C5813)
           1           1          Pri GPT header
           2          32          Pri GPT table
     2826240    30728159       1  Label: "STATE"
                                  Type: Linux data
                                  UUID: A415F487-AA07-4FFF-8A85-6A0A809583EC
       20480       32768       2  Label: "KERN-A"
                                  Type: ChromeOS kernel
                                  UUID: 213142CC-4F72-B843-9DDB-B1C5524BF811
                                  Attr: priority=15 tries=15 successful=1
      286720     2539520       3  Label: "ROOT-A"
                                  Type: ChromeOS rootfs
                                  UUID: C860A2E2-176B-CF40-8053-37C409873F5C
       53248       32768       4  Label: "KERN-B"
                                  Type: ChromeOS kernel
                                  UUID: DB75DACA-EA06-8348-90D3-2457C29E4451
                                  Attr: priority=0 tries=15 successful=0
      282624        4096       5  Label: "ROOT-B"
                                  Type: ChromeOS rootfs
                                  UUID: 15131009-C114-4840-B53C-FEE30EC3A3F1
       16448           1       6  Label: "KERN-C"
                                  Type: ChromeOS kernel
                                  UUID: 33493AE9-55AD-E543-8BAE-C9806B72816B
                                  Attr: priority=0 tries=15 successful=0
       16449           1       7  Label: "ROOT-C"
                                  Type: ChromeOS rootfs
                                  UUID: 484ED029-82FA-5F45-B63B-79DCC131F45F
       86016       32768       8  Label: "OEM"
                                  Type: Linux data
                                  UUID: 64DC98D4-174B-5C4A-B14F-B89A67343F40
       16450           1       9  Label: "reserved"
                                  Type: ChromeOS reserved
                                  UUID: 0626AB85-4D5D-E144-B606-17DE20F37F56
       16451           1      10  Label: "reserved"
                                  Type: ChromeOS reserved
                                  UUID: ABB37F2E-18F9-A042-85EE-143EE853922A
          64       16384      11  Label: "RWFW"
                                  Type: ChromeOS firmware
                                  UUID: FBC363CF-8486-7445-807B-7BB62EB5ACB8
      249856       32768      12  Label: "EFI-SYSTEM"
                                  Type: EFI System Partition
                                  UUID: 5F80E349-F725-6147-91AD-6C44106C5813
    33554399          32          Sec GPT table
    33554431           1          Sec GPT header
root@T1008:~# mkfs.ext4 /dev/mmcblk0p3
mke2fs 1.42.8 (20-Jun-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
79360 inodes, 317440 blocks
15872 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=327155712
10 block groups
32768 blocks per group, 32768 fragments per group
7936 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done 

root@T1008:~# mkswap /dev/mmcblk0p1
Setting up swapspace version 1, size = 15364072 KiB
no label, UUID=f499dafe-02ab-4c5b-8729-c17026887730
root@T1008:~# gdisk /dev/mmcblk0
GPT fdisk (gdisk) version 0.8.5

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): p
Disk /dev/mmcblk0: 33554432 sectors, 16.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): C324F110-1D86-F348-8EF8-38F81DD82AA6
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 33554398
Partitions will be aligned on 1-sector boundaries
Total free space is 135130 sectors (66.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1         2826240        33554398   14.7 GiB    0700  STATE
   2           20480           53247   16.0 MiB    7F00  KERN-A
   3          286720         2826239   1.2 GiB     7F01  ROOT-A
   4           53248           86015   16.0 MiB    7F00  KERN-B
   5          282624          286719   2.0 MiB     7F01  ROOT-B
   6           16448           16448   512 bytes   7F00  KERN-C
   7           16449           16449   512 bytes   7F01  ROOT-C
   8           86016          118783   16.0 MiB    0700  OEM
   9           16450           16450   512 bytes   7F02  reserved
  10           16451           16451   512 bytes   7F02  reserved
  11              64           16447   8.0 MiB     FFFF  RWFW
  12          249856          282623   16.0 MiB    EF00  EFI-SYSTEM

Command (? for help): ?
b	back up GPT data to a file
c	change a partition's name
d	delete a partition
i	show detailed information on a partition
l	list known partition types
n	add a new partition
o	create a new empty GUID partition table (GPT)
p	print the partition table
q	quit without saving changes
r	recovery and transformation options (experts only)
s	sort partitions
t	change a partition's type code
v	verify disk
w	write table to disk and exit
x	extra functionality (experts only)
?	print this menu

Command (? for help): d
Partition number (1-12): 1

Command (? for help): n
Partition number (1-128, default 1): 
First sector (34-33554398, default = 2826240) or {+-}size{KMGTP}: -2147M
Last sector (29157342-33554398, default = 33554398) or {+-}size{KMGTP}: -0K
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 0700
Changed type of partition to 'Microsoft basic data'

Command (? for help): p
Disk /dev/mmcblk0: 33554432 sectors, 16.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): C324F110-1D86-F348-8EF8-38F81DD82AA6
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 33554398
Partitions will be aligned on 1-sector boundaries
Total free space is 26466232 sectors (12.6 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1        29157342        33554398   2.1 GiB     0700  Microsoft basic data
   2           20480           53247   16.0 MiB    7F00  KERN-A
   3          286720         2826239   1.2 GiB     7F01  ROOT-A
   4           53248           86015   16.0 MiB    7F00  KERN-B
   5          282624          286719   2.0 MiB     7F01  ROOT-B
   6           16448           16448   512 bytes   7F00  KERN-C
   7           16449           16449   512 bytes   7F01  ROOT-C
   8           86016          118783   16.0 MiB    0700  OEM
   9           16450           16450   512 bytes   7F02  reserved
  10           16451           16451   512 bytes   7F02  reserved
  11              64           16447   8.0 MiB     FFFF  RWFW
  12          249856          282623   16.0 MiB    EF00  EFI-SYSTEM

Command (? for help): c
Partition number (1-12): 1
Enter name: STATE

Command (? for help): p
Disk /dev/mmcblk0: 33554432 sectors, 16.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): C324F110-1D86-F348-8EF8-38F81DD82AA6
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 33554398
Partitions will be aligned on 1-sector boundaries
Total free space is 26466232 sectors (12.6 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1        29157342        33554398   2.1 GiB     0700  STATE
   2           20480           53247   16.0 MiB    7F00  KERN-A
   3          286720         2826239   1.2 GiB     7F01  ROOT-A
   4           53248           86015   16.0 MiB    7F00  KERN-B
   5          282624          286719   2.0 MiB     7F01  ROOT-B
   6           16448           16448   512 bytes   7F00  KERN-C
   7           16449           16449   512 bytes   7F01  ROOT-C
   8           86016          118783   16.0 MiB    0700  OEM
   9           16450           16450   512 bytes   7F02  reserved
  10           16451           16451   512 bytes   7F02  reserved
  11              64           16447   8.0 MiB     FFFF  RWFW
  12          249856          282623   16.0 MiB    EF00  EFI-SYSTEM

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/mmcblk0.
The operation has completed successfully.
root@T1008:~# mkswap /dev/mmcblk0p1
Setting up swapspace version 1, size = 2198524 KiB
no label, UUID=2ddb62d2-3d33-4e69-82cf-ef404114b851
root@T1008:~# gdisk /dev/mmcblk0
GPT fdisk (gdisk) version 0.8.5

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): p
Disk /dev/mmcblk0: 33554432 sectors, 16.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): C324F110-1D86-F348-8EF8-38F81DD82AA6
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 33554398
Partitions will be aligned on 1-sector boundaries
Total free space is 26466232 sectors (12.6 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1        29157342        33554398   2.1 GiB     0700  STATE
   2           20480           53247   16.0 MiB    7F00  KERN-A
   3          286720         2826239   1.2 GiB     7F01  ROOT-A
   4           53248           86015   16.0 MiB    7F00  KERN-B
   5          282624          286719   2.0 MiB     7F01  ROOT-B
   6           16448           16448   512 bytes   7F00  KERN-C
   7           16449           16449   512 bytes   7F01  ROOT-C
   8           86016          118783   16.0 MiB    0700  OEM
   9           16450           16450   512 bytes   7F02  reserved
  10           16451           16451   512 bytes   7F02  reserved
  11              64           16447   8.0 MiB     FFFF  RWFW
  12          249856          282623   16.0 MiB    EF00  EFI-SYSTEM

Command (? for help): ?
b	back up GPT data to a file
c	change a partition's name
d	delete a partition
i	show detailed information on a partition
l	list known partition types
n	add a new partition
o	create a new empty GUID partition table (GPT)
p	print the partition table
q	quit without saving changes
r	recovery and transformation options (experts only)
s	sort partitions
t	change a partition's type code
v	verify disk
w	write table to disk and exit
x	extra functionality (experts only)
?	print this menu

Command (? for help): d 
Partition number (1-12): 3

Command (? for help): n
Partition number (3-128, default 3): 3
First sector (34-29157341, default = 286720) or {+-}size{KMGTP}: 286720
Last sector (286720-29157341, default = 29157341) or {+-}size{KMGTP}: 
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 7F01
Changed type of partition to 'ChromeOS root'

Command (? for help): p
Disk /dev/mmcblk0: 33554432 sectors, 16.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): C324F110-1D86-F348-8EF8-38F81DD82AA6
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 33554398
Partitions will be aligned on 1-sector boundaries
Total free space is 135130 sectors (66.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1        29157342        33554398   2.1 GiB     0700  STATE
   2           20480           53247   16.0 MiB    7F00  KERN-A
   3          286720        29157341   13.8 GiB    7F01  ChromeOS root
   4           53248           86015   16.0 MiB    7F00  KERN-B
   5          282624          286719   2.0 MiB     7F01  ROOT-B
   6           16448           16448   512 bytes   7F00  KERN-C
   7           16449           16449   512 bytes   7F01  ROOT-C
   8           86016          118783   16.0 MiB    0700  OEM
   9           16450           16450   512 bytes   7F02  reserved
  10           16451           16451   512 bytes   7F02  reserved
  11              64           16447   8.0 MiB     FFFF  RWFW
  12          249856          282623   16.0 MiB    EF00  EFI-SYSTEM

Command (? for help): c
Partition number (1-12): 3
Enter name: ROOT-A

Command (? for help): p
Disk /dev/mmcblk0: 33554432 sectors, 16.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): C324F110-1D86-F348-8EF8-38F81DD82AA6
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 33554398
Partitions will be aligned on 1-sector boundaries
Total free space is 135130 sectors (66.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1        29157342        33554398   2.1 GiB     0700  STATE
   2           20480           53247   16.0 MiB    7F00  KERN-A
   3          286720        29157341   13.8 GiB    7F01  ROOT-A
   4           53248           86015   16.0 MiB    7F00  KERN-B
   5          282624          286719   2.0 MiB     7F01  ROOT-B
   6           16448           16448   512 bytes   7F00  KERN-C
   7           16449           16449   512 bytes   7F01  ROOT-C
   8           86016          118783   16.0 MiB    0700  OEM
   9           16450           16450   512 bytes   7F02  reserved
  10           16451           16451   512 bytes   7F02  reserved
  11              64           16447   8.0 MiB     FFFF  RWFW
  12          249856          282623   16.0 MiB    EF00  EFI-SYSTEM

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/mmcblk0.
The operation has completed successfully.
root@T1008:~# resize2fs /dev/mmcblk0p3
resize2fs 1.42.8 (20-Jun-2013)
Resizing the filesystem on /dev/sdb3 to 3608827 (4k) blocks.
The filesystem on /dev/mmcblk0p3 is now 3608827 blocks long.

root@T1008:~# cgpt show /dev/mmcblk0
       start        size    part  contents
           0           1          PMBR (Boot GUID: 5F80E349-F725-6147-91AD-6C44106C5813)
           1           1          Pri GPT header
           2          32          Pri GPT table
    29157342     4397057       1  Label: "STATE"
                                  Type: Linux data
                                  UUID: 6A31DAE2-6E04-4B51-9F14-A7BFC47A8C2D
       20480       32768       2  Label: "KERN-A"
                                  Type: ChromeOS kernel
                                  UUID: 213142CC-4F72-B843-9DDB-B1C5524BF811
                                  Attr: priority=15 tries=15 successful=1
      286720    28870622       3  Label: "ROOT-A"
                                  Type: ChromeOS rootfs
                                  UUID: 823F1CCE-F8EA-47BB-B7D1-63E254DF673F
       53248       32768       4  Label: "KERN-B"
                                  Type: ChromeOS kernel
                                  UUID: DB75DACA-EA06-8348-90D3-2457C29E4451
                                  Attr: priority=0 tries=15 successful=0
      282624        4096       5  Label: "ROOT-B"
                                  Type: ChromeOS rootfs
                                  UUID: 15131009-C114-4840-B53C-FEE30EC3A3F1
       16448           1       6  Label: "KERN-C"
                                  Type: ChromeOS kernel
                                  UUID: 33493AE9-55AD-E543-8BAE-C9806B72816B
                                  Attr: priority=0 tries=15 successful=0
       16449           1       7  Label: "ROOT-C"
                                  Type: ChromeOS rootfs
                                  UUID: 484ED029-82FA-5F45-B63B-79DCC131F45F
       86016       32768       8  Label: "OEM"
                                  Type: Linux data
                                  UUID: 64DC98D4-174B-5C4A-B14F-B89A67343F40
       16450           1       9  Label: "reserved"
                                  Type: ChromeOS reserved
                                  UUID: 0626AB85-4D5D-E144-B606-17DE20F37F56
       16451           1      10  Label: "reserved"
                                  Type: ChromeOS reserved
                                  UUID: ABB37F2E-18F9-A042-85EE-143EE853922A
          64       16384      11  Label: "RWFW"
                                  Type: ChromeOS firmware
                                  UUID: FBC363CF-8486-7445-807B-7BB62EB5ACB8
      249856       32768      12  Label: "EFI-SYSTEM"
                                  Type: EFI System Partition
                                  UUID: 5F80E349-F725-6147-91AD-6C44106C5813
    33554399          32          Sec GPT table
    33554431           1          Sec GPT header
root@T1008:~# cgpt add -i 2 -S 1 -T 15 -P 15 /dev/mmcblk0
root@T1008:~# cgpt add -i 4 -S 1 -T 15 -P 0 /dev/mmcblk0
root@T1008:~# cgpt add -i 6 -S 1 -T 15 -P 0 /dev/mmcblk0
root@T1008:~# cgpt add -i 1 -t data -l "STATE" /dev/mmcblk0
root@T1008:~# cgpt add -i 2 -t kernel -l "KERN-A" /dev/mmcblk0
root@T1008:~# cgpt add -i 3 -t rootfs -l "ROOT-A" /dev/mmcblk0
root@T1008:~# sync
root@T1008:~# cgpt show /dev/mmcblk0
       start        size    part  contents
           0           1          PMBR (Boot GUID: 5F80E349-F725-6147-91AD-6C44106C5813)
           1           1          Pri GPT header
           2          32          Pri GPT table
    29157342     4397057       1  Label: "STATE"
                                  Type: Linux data
                                  UUID: 6A31DAE2-6E04-4B51-9F14-A7BFC47A8C2D
       20480       32768       2  Label: "KERN-A"
                                  Type: ChromeOS kernel
                                  UUID: 213142CC-4F72-B843-9DDB-B1C5524BF811
                                  Attr: priority=15 tries=15 successful=1
      286720    28870622       3  Label: "ROOT-A"
                                  Type: ChromeOS rootfs
                                  UUID: 823F1CCE-F8EA-47BB-B7D1-63E254DF673F
       53248       32768       4  Label: "KERN-B"
                                  Type: ChromeOS kernel
                                  UUID: DB75DACA-EA06-8348-90D3-2457C29E4451
                                  Attr: priority=0 tries=15 successful=1
      282624        4096       5  Label: "ROOT-B"
                                  Type: ChromeOS rootfs
                                  UUID: 15131009-C114-4840-B53C-FEE30EC3A3F1
       16448           1       6  Label: "KERN-C"
                                  Type: ChromeOS kernel
                                  UUID: 33493AE9-55AD-E543-8BAE-C9806B72816B
                                  Attr: priority=0 tries=15 successful=1
       16449           1       7  Label: "ROOT-C"
                                  Type: ChromeOS rootfs
                                  UUID: 484ED029-82FA-5F45-B63B-79DCC131F45F
       86016       32768       8  Label: "OEM"
                                  Type: Linux data
                                  UUID: 64DC98D4-174B-5C4A-B14F-B89A67343F40
       16450           1       9  Label: "reserved"
                                  Type: ChromeOS reserved
                                  UUID: 0626AB85-4D5D-E144-B606-17DE20F37F56
       16451           1      10  Label: "reserved"
                                  Type: ChromeOS reserved
                                  UUID: ABB37F2E-18F9-A042-85EE-143EE853922A
          64       16384      11  Label: "RWFW"
                                  Type: ChromeOS firmware
                                  UUID: FBC363CF-8486-7445-807B-7BB62EB5ACB8
      249856       32768      12  Label: "EFI-SYSTEM"
                                  Type: EFI System Partition
                                  UUID: 5F80E349-F725-6147-91AD-6C44106C5813
    33554399          32          Sec GPT table
    33554431           1          Sec GPT header


#8 Ignacio

Ignacio

    Neowinian

  • Joined: 18-October 13

Posted 20 October 2013 - 20:06

Thanks so much for your response. I'm going to try it tomorrow after work. If you don't mind, let me ask you about Flash: I've read many posts on how to make it work with Chromium and PepperFlash from ChromeOS. Have you had the chance to try it?

 

TIA,

 

Ignacio



#9 OP +Karl L.

Karl L.

    xorangekiller

  • Tech Issues Solved: 15
  • Joined: 24-January 09
  • Location: Virginia, USA
  • OS: Debian Testing

Posted 20 October 2013 - 22:09

I do not use Flash anymore, even on i386 and AMD64. Therefore I have not tested it on my Chromebook under Debian. However from what I understand, you should be able to launch Chromium with the Pepper Flash Player plugin, like you suggest, without too much effort. You will need a copy of /opt/google/chrome/pepper/libpepflashplayer.so and /opt/google/chrome/pepper/pepper-flash.info from your original Chrome OS installation to make this work. If you don't have that installation anymore (presumably because you replaced it with Debian), you can also extract the files you need from the recovery image. A demonstration of the latter is below.

$ sudo kpartx -av chromeos_4319.96.0_daisy_recovery_stable-channel_mp-v3.bin 
add map loop0p1 (254:0): 0 4096 linear /dev/loop0 2826240
add map loop0p2 (254:1): 0 32768 linear /dev/loop0 20480
add map loop0p3 (254:2): 0 2539520 linear /dev/loop0 286720
add map loop0p4 (254:3): 0 32768 linear /dev/loop0 53248
add map loop0p5 (254:4): 0 4096 linear /dev/loop0 282624
add map loop0p6 (254:5): 0 1 linear /dev/loop0 16448
add map loop0p7 (254:6): 0 1 linear /dev/loop0 16449
add map loop0p8 (254:7): 0 32768 linear /dev/loop0 86016
add map loop0p9 (254:8): 0 1 linear /dev/loop0 16450
add map loop0p10 (254:9): 0 1 linear /dev/loop0 16451
add map loop0p11 (254:10): 0 16384 linear /dev/loop0 64
add map loop0p12 (254:11): 0 32768 linear /dev/loop0 249856
$ sudo cgpt show /dev/loop0
       start        size    part  contents
           0           1          PMBR (Boot GUID: 5F80E349-F725-6147-91AD-6C44106C5813)
           1           1          Pri GPT header
           2          32          Pri GPT table
     2826240        4096       1  Label: "STATE"
                                  Type: Linux data
                                  UUID: 76AFDED6-459A-9340-98A7-5AF8BCCB06CB
       20480       32768       2  Label: "KERN-A"
                                  Type: ChromeOS kernel
                                  UUID: 213142CC-4F72-B843-9DDB-B1C5524BF811
                                  Attr: priority=15 tries=15 successful=1
      286720     2539520       3  Label: "ROOT-A"
                                  Type: ChromeOS rootfs
                                  UUID: C860A2E2-176B-CF40-8053-37C409873F5C
       53248       32768       4  Label: "KERN-B"
                                  Type: ChromeOS kernel
                                  UUID: DB75DACA-EA06-8348-90D3-2457C29E4451
                                  Attr: priority=0 tries=15 successful=0
      282624        4096       5  Label: "ROOT-B"
                                  Type: ChromeOS rootfs
                                  UUID: 15131009-C114-4840-B53C-FEE30EC3A3F1
       16448           1       6  Label: "KERN-C"
                                  Type: ChromeOS kernel
                                  UUID: 33493AE9-55AD-E543-8BAE-C9806B72816B
                                  Attr: priority=0 tries=15 successful=0
       16449           1       7  Label: "ROOT-C"
                                  Type: ChromeOS rootfs
                                  UUID: 484ED029-82FA-5F45-B63B-79DCC131F45F
       86016       32768       8  Label: "OEM"
                                  Type: Linux data
                                  UUID: 64DC98D4-174B-5C4A-B14F-B89A67343F40
       16450           1       9  Label: "reserved"
                                  Type: ChromeOS reserved
                                  UUID: 0626AB85-4D5D-E144-B606-17DE20F37F56
       16451           1      10  Label: "reserved"
                                  Type: ChromeOS reserved
                                  UUID: ABB37F2E-18F9-A042-85EE-143EE853922A
          64       16384      11  Label: "RWFW"
                                  Type: ChromeOS firmware
                                  UUID: FBC363CF-8486-7445-807B-7BB62EB5ACB8
      249856       32768      12  Label: "EFI-SYSTEM"
                                  Type: EFI System Partition
                                  UUID: 5F80E349-F725-6147-91AD-6C44106C5813
     2863007          32          Sec GPT table
     2863039           1          Sec GPT header
$ sudo mount -t ext2 -o ro /dev/mapper/loop0p3 /mnt
$ ls -l /mnt/opt/google/chrome/pepper/
total 13284
lrwxrwxrwx 1 root root       47 Sep 12 20:11 libgoogletalkremoting.so -> /opt/google/talkplugin/libgoogletalkremoting.so
-rwxr-xr-x 1 root root   198404 Sep 12 19:24 libnetflixhelper.so
-rwxr-xr-x 1 root root 13368352 Sep 12 19:24 libpepflashplayer.so
lrwxrwxrwx 1 root root       41 Sep 12 20:11 libppgoogletalk.so -> /opt/google/talkplugin/libppgoogletalk.so
lrwxrwxrwx 1 root root       34 Sep 12 20:11 libppo1d.so -> /opt/google/talkplugin/libppo1d.so
lrwxrwxrwx 1 root root       40 Sep 12 20:10 libppo3dautoplugin.so -> /opt/google/o3d/libppgtpo3dautoplugin.so
-rw-r--r-- 1 root root      417 Sep 12 19:24 netflixhelper.info
-rw-r--r-- 1 root root      444 Sep 12 19:24 pepper-flash.info
$ sudo mkdir -p /opt/google/chrome
$ sudo cp -a /mnt/opt/google/chrome/pepper /opt/google/chrome/
$ sudo umount /mnt
$ sudo kpartx -dv chromeos_4319.96.0_daisy_recovery_stable-channel_mp-v3.bin 
del devmap : loop0p12
del devmap : loop0p11
del devmap : loop0p10
del devmap : loop0p9
del devmap : loop0p8
del devmap : loop0p7
del devmap : loop0p6
del devmap : loop0p5
del devmap : loop0p4
del devmap : loop0p3
del devmap : loop0p2
del devmap : loop0p1
loop deleted : /dev/loop0

If you manage to make Pepper Flash Player work in Chromium, I would be interested to see how you accomplished it. Please post your results below, pass or fail; they may guide someone else looking to accomplish the same thing.



#10 Ignacio

Ignacio

    Neowinian

  • Joined: 18-October 13

Posted 22 October 2013 - 21:32

Hi there. I'm right now in the middle of the installation but I'm presented with this error:

 

xserver-xorg-video-armsoc : Depende: xorg-video-abi-12 pero no es instalable

 

It looks like there's a dependency on one of your packages on a missing package in debian

 

Any sugggestions?

 

TIA,

 

Ignacio



#11 Ignacio

Ignacio

    Neowinian

  • Joined: 18-October 13

Posted 23 October 2013 - 07:41

First try installing was almost perfect. Besides the problem with the missing dependency mentioned in my previous post, I could install Debian. However, after booting up the computer I got a message in post saying that the ChromeOS was missing and I needed to reinstall it using my backup. I'm going to give it another try shortly.

 

Since my partition layout was different than yours I could not follow your instructions as you suggested. I could not recreate p3 as you instructed and I could not do a resizefs on p3. May that be the reason why the computer is complaining at boot-time?

 

TIA,

 

Ignacio



#12 Ignacio

Ignacio

    Neowinian

  • Joined: 18-October 13

Posted 23 October 2013 - 19:52

After restoring ChromeOS to its original state, I could follow your instructions and install it following your guidelines. I download installed from your repo the armsoc xorg driver using dpkg -i --force-depends, but I can't make X work. The log says:

 

module ABI major version (12) doesn't match the server's version (14)

 

Any help, please?

 

TIA,

 

Ignacio



#13 OP +Karl L.

Karl L.

    xorangekiller

  • Tech Issues Solved: 15
  • Joined: 24-January 09
  • Location: Virginia, USA
  • OS: Debian Testing

Posted 24 October 2013 - 02:34

After restoring ChromeOS to its original state, I could follow your instructions and install it following your guidelines. I download installed from your repo the armsoc xorg driver using dpkg -i --force-depends, but I can't make X work. The log says:

 

module ABI major version (12) doesn't match the server's version (14)

 

Any help, please?

 

TIA,

 

Ignacio

 

The X server in Jessie has been updated since I built that package. The Xorg ABI changes with every major release, so each driver built against it needs to be updated every time the Xorg core is updated to a major new version. I just updated xf86-video-armsoc (which builds the xserver-xorg-video-armsoc binary package) to the latest upstream version, patched it for the XServer 1.14 ABI, built new binaries, and uploaded it to my repository. You should be able to install the package now. Let me know if you run into any other such regressions.



#14 Ignacio

Ignacio

    Neowinian

  • Joined: 18-October 13

Posted 24 October 2013 - 08:32

I have applied your update, and it works now. Do you think it would be wise to put the xserver packages on hold to prevent updates unless there's and update on your driver? I believe there's a way to create binary dependencies in deb packages so, in this case, if they were declared in your driver, no updates to xserver would be applies until there's a new version of your driver. I haven't done that, but I could investigate it for you if you want.

 

Thanks so much for your great work.

 

Regards,

 

Ignacio



#15 Ignacio

Ignacio

    Neowinian

  • Joined: 18-October 13

Posted 24 October 2013 - 17:09

First thing I noticed after login is that there seems to be no HW accelerated graphics. Playing video is quite painful, I haven't even tried setting pepperflash. Are you running it under the same conditions?

 

Thanks,

 

Ignacio