SlideShare a Scribd company logo
ChromePad
Chromium OS ThinkPad X220
Andrew Wright
About me
● Android Engineer
● GNU/Linux Enthusiast
● Big fan of Chromium/Chromium OS
About this
This guide was tested on Debian Stretch as setup in an earlier blog post.
1.Chromium OS
2.Coreboot
3.Build Chromium OS
4.Hardware
Upgrades
5.Android Studio
1.Chromium OS
and Chromium
Why Chromium OS for Android Development?
Why not Chrome OS for Android Development?
Everything explained in Part 2 is doable in Chrome OS,
if you have a Google Pixel Chromebook.
8GB or 16GB of RAM = Good to Go
If you don’t have a Google Pixel Chromebook, or another
powerful Chromebook with 8-16GB of RAM it’s not going
to work so well.
The Problem is with Chromebooks, not Chrome OS.
They come with a fixed
amount of RAM memory.
For development we’re going to want as much ram as we can afford, and it’s
nice to have the ability to move the RAM around between devices.
The X220 RAM is held in place by 3 screws and is directly accessible on the
underside of the laptop.
Install Chrome OS on a ThinkPad?
The short answer is No.
Google Chrome OS is the Google product that OEMs ship on Chromebooks for
general consumer use.
However, we can install Chromium OS on a ThinkPad, or any other compatible
laptop.
What is Chromium OS?
Chromium OS is the open-source
development version of Google’s Chrome
operating system.
https://www.chromium.org/chromium-os
It’s the open source project, used primarily by
developers, with code that is available for
anyone to checkout, modify, and build.
Disambiguation:
What is Chromium?
Chromium is an open-source
browser project that aims to build
a safer, faster, and more stable
way for all Internet users to
experience the web.
https://www.chromium.org/Home
Chromium is the open source browser inside
of the open source Chromium operating
system. They both share an attractive icon:
What are experimental settings?
chrome://flags
WARNING: EXPERIMENTAL FEATURES AHEAD!
By enabling these features, you could lose
browser data or compromise your security or
privacy. Enabled features apply to all users of
this browser.
Chromium OS - Experimental Features
The key to getting the most out of Chromium OS is utilizing chrome://flags
In your Chromium browser navigate to chrome://flags and bookmark it.
In Chromium OS flags extend to system settings, such as enabling Night Light
or the Zip archiver (both of which are extremely useful).
Chromium Experimental Features
The key to getting the most out of Chromium is making use of chrome://flags
In your Chromium browser navigate to chrome://flags and bookmark it.
The flags are essentially settings that you can enable or disable to enable or
disable a wide range of new features.
Sounds Cool.
How?
The easiest way to try Chromium is to use the
Chromium browser on the PC or Android that
you already have.
https://download-chromium.appspot.com
The link is an official Chromium source,
Just download, unzip and install.
For Android it’s even easier, you can use my
open source app getChromium.
https://github.com/andDevW/getChromium
Awesome browser.
So how do I put Chromium OS on my ThinkPad?
If we want to play it safe, according to the official documentation the best
we can do is the ThinkPad R60.
https://www.chromium.org/chromium-os/getting-dev-hardware/dev-hardware-list
The good news is that
Chromium OS works great
with Coreboot, and we can
install Coreboot on some
great ThinkPads.
Chromium OS on the ThinkPad X220
Updated Dev-Hardware-List
WiFi Ethernet TrackPad Suspend/Resume
Lenovo X220 NO YES YES YES
Coreboot X220 YES YES YES YES
X220 with stock Lenovo BIOS and X220 with Coreboot
ThinkPad X220 - The Great (AKA Hardware)
- The last ThinkPad made with “the good keyboard”.
- Compact enough that it’s actually usable in today’s world.
- No shortage of models with the 2.5GHz i5.
- Works wonderfully with Coreboot.
- OEM replacement parts are affordable and easy to obtain.
- Great battery life, batteries are cheap and swappable.
- Easily/cheaply upgradable IPS display.
- Arguably still looks cool.
ThinkPad X220 - The Bad (AKA Firmware)
- Extremely slow boot time
- WiFi card whitelist locks out the ability to upgrade WiFi
- RAM speed limited to 1866MHz
- Firmware level malware
- Lenovo Service Engine (LSE), etc.
- Intel ME
*All of these things can either be mitigated or negated by installing Coreboot.
A wide range of ThinkPads
have Great Hardware paired
with Terrible Firmware.
We Can Fix Some.
I haven’t tested this, but it looks like we should be able to do what I’ve done
with the ThinkPad X220 with at least some ThinkPads that meet the following
criteria:
1. amd64
2. Supported by Coreboot
If you’ve tested Chromium OS on other Coreboot ThinkPads I’d love to add
that info to the Updated Hardware List.
Contact me at andDevW@gmail.com
Let’s get rid of the
Firmware.
2. Coreboot
Advantages of Coreboot
- Boot time is drastically reduced.
- Allows use of mini PCIE WiFi cards
- Allows use of faster RAM
- Allows booting from ExpressCard
- Allows cool extras (games like Tint)
- Coreboot is an open source project
- Intel ME neutered https://www.coreboot.org/Intel_Management_Engine
- Lenovo Malicious Firmware neutered (security bonus)
X220 Coreboot Install
1. Requirements
2. Update Lenovo BIOS
3. Configure BeagleBone
4. Configure Coreboot
5. Flash Coreboot
Requirements
What you need:
1x ThinkPad X220
1x PC Running *Debian/Ubuntu
1x Micro SD Card 4GB+ (Faster is better)
1x BeagleBone Black (Raspberry Pi can also be used)
1x USB 2 Mini USB Cable (comes with the BeagleBone)
1x PC PSU(any old PC’s power supply)
LOTS of JUMPER WIRES - In all of the available configs (FF/FM/MM)
Sources
BeagleBone Black https://www.digikey.com/product-detail/en/ghi-electronics-llc/BBB01-SC-505/BBB01-
SC-505-ND/6210999
Pomona 5250 https://www.digikey.com/products/en/test-and-measurement/test-clips-
ic/624?k=pomona%205250
Jumper Cables - Get one of each type https://www.digikey.com/product-detail/en/adafruit-industries-
llc/825/1528-1161-ND/5353621 https://www.digikey.com/product-detail/en/adafruit-industries-llc/759/1528-
1155-ND/5353615 https://www.digikey.com/product-detail/en/adafruit-industries-llc/794/1528-1159-
ND/5353619
PSU - An old PC will have one of these (It’s the part that the power cord connects to).
http://www.instructables.com/id/How-to-power-up-an-ATX-Power-Supply-without-a-PC/
Plug-and-Play Hardware Upgrades
WiFi Upgrade Atheros AR9285 Half Mini PCI-E Card - NOT the AzureWave
Bluetooth Upgrade Foxconn 4.0 daughter card - FRU 60Y3303
Cmos Upgrade CR2032 CMOS - Odds are that your battery is old
RAM Upgrade (16GB 2×8GB DDR3 SO-DIMM) - Get 2 of the same
USB 3.0 Upgrade AKE USB 3.0 Card 54mm - The AKE model with 2 USB ports
Display Upgrade LP125WH2-SLT1 - Lenovo Twist S230U touch screen unit
Battery Upgrade Lenovo ThinkPad Battery 44++(9 Cell) - NEW via Lenovo
Update Lenovo BIOS
Configure X220 UEFI BIOS
Coreboot utilizes proprietary binary blobs that are extracted from the factory
firmware image. In order to build Coreboot with the latest binary blobs the
factory firmware needs to be updated prior to flashing with Coreboot.
Boot the X220, holding down the blue ThinkVantage key.
At the Startup Interrupt Menu hit F1
Set the boot order to USB HDD
Save and Exit.
Updating UEFI BIOS - Part 1
Download the latest factory BIOS from Lenovo
https://download.lenovo.com/pccbbs/mobiles/8duj28us.iso
Verify the ISO Checksum and Convert ISO to IMG
$ echo ‘cf433cc5adfabf62f49146f87ae814c9d990f83db386bae1d581878908e5032e8duj28us.iso’ | sha256sum -c
$ sudo apt-get install genisoimage
$ geteltorito -o bios.img fwss31.iso
Burn IMG to USB
$ sudo dd if=bios.img of=/dev/sdX bs=4M status=progress
Updating UEFI BIOS - Part 2
1. Plug the X220 into the AC adapter, insert the USB with the bios.img and
boot.
2. In the Main Menu Window select #2 Update System Program
3. At the prompts hit the Y key and the Enter key to proceed.
4. After the reboot select #3 in the Main Menu Window
5. Continue through the prompts with Y and Enter.
// DISCLAIMER
The final key requirement is a willingness to completely destroy your X220
motherboard in the pursuit of making a superior one-off device.
X220 Service Manual PDF
This is a great resource for identifying FRUs. FRUs are ThinkPad part ID numbers
that can simplify purchasing replacement parts online.
https://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles_pdf/0a60739.pdf
Getting at the Chip
Illustrated Description on Pages 73 - 78 in X220 Manual
Turn the X220 over and remove the following parts in the following order:
1. Battery
2. HDD
3. Screws required to remove both the Palmrest and the Keyboard.
4. Keyboard
5. Palmrest
6. WiFi Card (swap with the Atheros AR9285 card)
7. Bluetooth daughter card
8. CMOS battery (swap with fresh new battery)
Upgrade Bluetooth
Bluetooth daughter card check:
Look at the card to determine if you have 2.0 or 4.0
Bluetooth 4.0 - FRU 60Y3303 or FRU 60Y3305
Bluetooth 2.1 - FRU 60Y3271 or FRU 60Y3275
I
Configuring the BeagleBone Black - 001
KEY and COLOR CODE
PC = Debian system
that is connected to the BeagleBone via USB
BB = Terminal SSH
X220 =
ThinkPad we are modifying
Download Bone Debian 7.8 (works for flashing) https://debian.beagleboard.org/images/bone-
debian-7.8-lxde-4gb-armhf-2015-03-01-4gb.img.xz
Verify the image:
$ echo ‘bone-debian-7.8-lxde-4gb-armhf-2015-03-01-4gb.img.xz c848627722b7a5f7bc89791cc8949e3b’ | md5sum -c
Unpack the image and write it to an sd card
$ xz -d BBB*.xz
Configuring the BeagleBone Black - 002
Insert the sd card into the BeagleBone and connect the BeagleBone to your PC via the USB cable.
Plug an Ethernet cable with an Internet connection into the BeagleBone.
In your PC open a terminal.
$ ssh 192.167.7.2 -l root
Say yes and proceed through the prompts.
Now in your BB terminal
$ apt-get update && apt-get upgrade
$ apt-get install ntp
Configuring the BeagleBone Black - 003
# apt-get install bash-completion vim build-essential pciutils usbutils libpci-dev libusb-dev  libftdi-
dev zlib1g-dev curl wget zip
# wget https://elinux.org/images/1/1f/BB-SPI0-01-00A0.txt
# dtc -O dtb -o BB-SPI0-01-00A0.dtbo -b 0 -@ BB-SPI0-
01-00A0.dts # cp BB-
SPI0-01-00A0.dtbo /lib/firmware/
# echo BB-SPI0-01 > /sys/devices/bone_capemgr.*/slots
Check to see that installation worked
# cat
/sys/devices/bone_capemgr.*/slots
The last line of the result should match this:
Configuring the BeagleBone Black - 004
Verify that spidev exists
# ls -al /dev/spid*
Which should print out something like this
crw-rw---T 1 root spi 153, 0 Feb 29 05:39 /dev/spidev1.0
Make the last line of the file /etc/default/capemgr read
CAPE=BB-SPI0-01
Configuring the BeagleBone Black - 005
On your PC download
https://www.mirrorservice.org/sites/libreboot.org/release/stable/20160907/libreboot_r20160907_util.tar.xz
Verify download
$ echo
‘c5bfa5a06d55c61e5451e70cd8da3f430b5e06686f9a74c5a2e9fe0e9d155505867b0ca3428d85a983741146c4e024a6b
0447638923423000431c98d048bd473 libreboot_r20160907_util.tar.xz’ | sha512sum -c -
Transfer the utility to your BB sd card.
In the BB terminal
$ tar xf
libreboot_r20160907_util.tar.xz
# chmod u+x
libreboot_util/ich9deblob/armv7l/ich9gen libreboot_util/flashrom/armv7l/flashrom
Configuring the BeagleBone Black - 006
Connect the BB to the Pomona clip and connect the clip to the SOIC-8 as
specified https://www.coreboot.org/Board:lenovo/x220
Don’t connect the power cable until the clip is correctly attached to the SOIC, only
connecting the ground cable initially.
For the 2 wires delivering power from the PSU, which have to be long, it’s best to
use twisted pair cabling to cancel out any interference.
For the rest of the jumper cables keep the length of everything as short as
possible.
Read the flash two times.
# /libreboot_util/flashrom/armv7l/flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -r flash_01.bin
# /libreboot_util/flashrom/armv7l/flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -r flash_02.bin
# diff flash_01.bin flash_02.bin
If they don’t match, don’t proceed.
If they do match(you get no response after running diff) save a copy on external
media.
https://www.coreboot.org/Build_HOWTO
$ sudo apt-get install git build-essential gnat flex bison libncurses5-dev wget zlib1g-dev
$ cd ~
$ git clone
https://review.coreboot.org/coreboot
$ cd coreboot
$ git submodule update --init --recursive
Use the ifdtool to recover descriptor and me firmware
$ cd ~/coreboot/util/ifdtool
$ make
$ sudo make install
$ ifdtool -x ~/flash01.bin
ifdtool -x /path/to/extracted/flash.bin
$ mkdir -p ~/coreboot/3rdparty/blobs/mainboard/lenovo/x220
$ cd ~/coreboot/3rdparty/blobs/mainboard/lenovo/x220
$ mv ~/flashregion_0_flashdescriptor.bin descriptor.bin
$ mv ~/flashregion_2_intel_me.bin me.bin
$ mv ~/flashregion_3_gbe.bin gbe.bin
Get Coreboot - 001
Go to https://www.coreboot.org/Supported_Motherboards and search for
X220. Click the "upstream tree" link to find the commit hash and then check
it out.
$ cd ~/coreboot
$ git checkout
<hash>
$ git submodule update --checkout
Configure Coreboot - 001
$ cd ~/coreboot
$ make nconfig
General Setup
[*] Compress
ramstage with LZMA
[*] Include the coreboot . config file into the
ROM image (NEW) [*] Allow use of binary-
only repository
Mainboard
Mainboard vendor (Lenovo)
Configure Coreboot - 002
chipset
[*]
Enable VMX for virtualization
[*] Ignore vendor programmed
fuses that limit max. DRAM frequency (NEW) [*] Ignore XMP profile max
DIMMs per channel
[*] Beep on fatal error (NEW)
[*] Flash LEDs on
fatal error (NEW)
[*] Add Intel descriptor.bin file (NEW)
[*] Add
Intel ME/TXE firmware
Configure Coreboot - 003
display
-Nothing
additional checked
generic drivers
[*] Support Intel PCI-e WiFi adapters
[*] PS/2 keyboard
init
[*] Enable TPM support
[*] Silicon Image SIL3114 (NEW)
Security
Configure Coreboot - 004
Console
[*]
Squelch AP CPUs from early console
[*] Show POST codes on the debug console
System
tables
[*] Generate SMBIOS
tables (NEW)
Payload
[*] SeaBIOS version (master)
[*] Load coreinfo
Configure Coreboot - 005
Hit F6, then hit the Enter key. Hit F9 to exit.
Copy
$ make crossgcc-i386 CPUS=4
$ make iasl
$ make
Flash Coreboot - 001
When make finishes, your new rom is located at
~/coreboot/build/coreboot.rom
Flash it
# /libreboot_util/flashrom/armv7l/flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -w
/coreboot/build/coreboot.rom
You may have to play around with the clip to get a successful flash.
Resources
https://www.coreboot.org/Build_HOWTO
https://www.coreboot.org/Board:lenovo/x220
https://karlcordes.com/coreboot-x220/
https://tylercipriani.com/blog/2016/11/13/coreboot-on-the-thinkpad-x220-
with-a-raspberry-pi/
Building
Chromium OS
Prerequisites
● An x86_64 64-bit Debian or Ubuntu system with at least 8GB of RAM
● An Internet connection (faster is better)
● A good amount of free disk space and time
● A 16GB USB drive
Read more:
https://www.chromium.org/chromium-os/developer-guide
One-Time Setup
Install the requisite packages
$ sudo apt-get install git-core gitk git-gui curl lvm2 thin-provisioning-tools
python-pkg-resources python-virtualenv
Configure Git
$ git config --global user.email "you@example.com"
$ git config --global user.name "Your Name"
Install depot_tools
$ cd ~
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
Make Sudo More Permissive
$ cd /tmp
Copy and paste, or carefully type each of the following lines one at a time,
hitting the Enter key after each.
$ cat > ./sudo_editor <<EOF
#!/bin/sh
echo Defaults !tty_tickets > $1 # Entering your password in one shell affects all shells
echo Defaults timestamp_timeout=180 >> $1 # Minutes between re-requesting your
password EOF
$ chmod +x ./sudo_editor
$ sudo
EDITOR=./sudo_editor visudo -f /etc/sudoers.d/relax_requirements
Configuring Environmental Variables
$ vi ~/.bashrc
Add the following line at the very bottom of your .bashrc file:
export PATH=$PATH:~/depot_tools
Source .bashrc
$ . ~/.bashrc
Get the Source Code
Make a directory for Chromium OS
$ mkdir -p ${HOME}/chromiumos
$ cd ${HOME}/chromiumos
$ repo init -u https://chromium.googlesource.com/chromiumos/manifest.git --
repo-url https://chromium.googlesource.com/external/repo.git
$ repo sync -j4
Add Google API Keys - 001
This needs to be completed prior to building the Chromium OS image.
https://www.chromium.org/developers/how-tos/api-keys
1. Subscribe to Chromium Dev’s Google Group (mandatory)
2. Navigate to https://console.cloud.google.com/
3. At top left, between Google Cloud Platform and the search bar, select
the menu with 3 dots. In the pop-up menu click on box with the + the in
the top right corner. Create a project.
4. Click on the hamburger menu in the top left corner, then scroll down to
APIs & Services in the new menu. In the submenu select Credentials.
5. Select Create credentials > API key
Add Google API Keys - 002
6. In the API key created dialog copy your API key.
7. Open a new terminal window and cd to your home directory
8. Make a file .googleapikeys, adding in your own keys as you get them:
google_api_key = "your_api_key"
google_default_client_id = "your_client_id"
google_default_client_secret = "your_client_secret"
Add Google API Keys - 003
9. You should have the API key already. Follow the rest of the steps as outlined
here to obtain your own client id and client secret.
Paste these credentials into the .googleapikeys file and save it.
After completing this step the API keys will be automatically baked-in to all of
your Chromium OS builds.
Build Steps
The Formula
1. Enter Chroot
2. Select Board
3. Set Chronos User Password
4. Build Packages
5. Build Disk Image
6. Write Chromium OS Image to USB
Create a chroot
$ cd ~/chromiumos
Enter the command to download and enter the chroot
$ cros_sdk
While inside the chroot you will see a special cros-chroot prompt
~/trunk/src/scripts $
After the initial download cros_sdk enters the chroot.
Select a board
~/trunk/src/scripts $ export BOARD=amd64-generic
Set the Chronos User Password
Set the password that you will use to enter the command line in Chromium
OS. You need to repeat this step every time you build a new image.
~/trunk/src/scripts $ ./set_shared_user_password.sh
Build Packages
Build all of the packages for the board
~/trunk/src/scripts $ ./build_packages --board=${BOARD}
Build a Disk Image
Build the developer image with the additional developer packages built-in
~/trunk/src/scripts $ ./build_image --board=${BOARD} --noenable_rootfs_verification dev
Write the Chromium OS Image to USB
Making a Chromium OS USB installer is easy.
Plug a 16GB USB drive into your PC.
~/trunk/src/scripts $ cros flash usb:// ${BOARD}/latest
Select the USB device from the options and confirm.
cros_flash writes the image while keeping you informed of its progress.
Great Job!
Remove the USB and take a moment to feel like something of a technical badass.
If you skipped the API keys part you’re going to be devastated to learn that your
build is *useless, so go back and finish that, and then repeat the steps for Building
Chromium OS.
Also, use this time to remind yourself that using Chromium OS is an
involved process that requires you repeating this process (or other
manual update process) every single time you want to update.
*It will boot and install to a SSD, but you’re going to be sad.
// DISCLAIMER
Chromium OS and Chromium don’t auto-update.
Chromium OS isn’t for general consumer use.
Dual-Use Chromium OS USB Installer
1. Boot the X220 from the USB and run Chromium OS as-is
2. Boot the X220 from the USB and install Chromium OS to the SSD
We want the second option, because it’s always going to be faster than running
Chromium OS from a USB drive.
The general rule for read/write speed is SSD> HDD> USB 3> USB 2
*Coreboot allows us to enable booting from the ExpressCard, which we can
outfit with a USB 3.0 adapter, enabling us to boot from a USB 3.0 drive.
Installing
Chromium OS
on a SSD
Insert the USB drive into the X220 and boot.
At the Welcome screen enter VT2 by pressing Alt + Ctrl + F3
login: chronos
Log in with the password that you set earlier.
Installing Chromium OS to a SSD
Make sure that you have a SSD in your X220.
$ sudo /usr/sbin/chromeos-install --dst /dev/sda
Hit the y key and let everything run, it will throw errors.
Exit VT2 by pressing Ctrl + Alt + F1
Power off and remove the USB drive.
Boot Chromium OS from SSD
At the Welcome screen enter VT2 by pressing Alt + Ctrl + F3
Log in.
Make your rootfs writable
$ sudo /usr/share/vboot/bin/make_dev_ssd.sh --force --
remove_rootfs_verification
Exit by hitting Alt + Ctrl + F1
Remove the USB drive and boot into your
new Chromium OS ThinkPad X220.
Experimental Settings
Here are some of the flags that I find useful.
To check them out just enter them in your
Chromium browser’s omnibox.
#ash-enable-night-light
#enable-zip-archiver-packer
#smooth-scrolling
#enable-
easyunlock-promotions
Search in chrome://flags for md and enable the material design components.
This looks promising, as it should work with X220 hardware
X220 Hardware Upgrades
1. Install backlit drop-in IPS screen
2. Deactivate palmrest touchpad
3. Chromium OS for Android Development
// DISCLAIMER
Android Studio on Chromium OS/Chrome OS™ isn’t 100%.
Mainly
● AVD and Virtualization aren’t working.
It’s good, but it’s not perfect.
Question:
How do we run Android Studio in Chromium
OS?
Answer:
Inside of Debian OS, inside of a Crouton.
*With 8GB of RAM or better.
Debian - The Universal Operating System
Crouton
Chromium OS Universal Chroot Environment
https://github.com/dnschneid/crouton
Star it on GitHub, and check out the
documentation.
Download the latest Crouton https://goo.gl/fd3zc
Open up a shell:
Ctrl + Alt + T
Then type shell and hit Enter.
Install Debian in a Crouton
Install the Crouton Chrome Extension
https://goo.gl/OVQOEt
$ sudo sh -e ~/Downloads/crouton -r sid -t xiwi,xfce -n debiandroid
Let everything download.
At the prompt create a user name and a password.
Start Debian
$ sudo startxfce4 -n debiandroid -X xiwi -b
Configure Debian
At the prompt select ‘Use default config’
Right click on the Desktop and select open terminal here.
$ sudo vi /etc/apt/sources.list
Update /etc/apt/sources.list
deb http://ftp.us.debian.org/debian/ stretch main non-free contrib
deb-src http://ftp.us.debian.org/debian/ stretch main non-free contrib
deb http://ftp.us.debian.org/debian/ stretch-backports main contrib non-free
deb-src http://ftp.us.debian.org/debian/ stretch-backports main contrib non-free
deb http://security.debian.org/ stretch/updates main
deb-src http://security.debian.org/ stretch/updates main
*You can copy and paste from GitHub https://goo.gl/pVfVHZ
$ sudo dpkg –add-architecture i386
$ sudo apt-get update && sudo apt-get upgrade
Outside of the Crouton navigate to https://developer.android.com/studio/index.html#downloads
Download the Linux platform package.
Go back into your Chroot
$ sudo apt-get install openjdk-8-jdk gradle
$ unzip ~/Downloads/android-studio-ide-171.4443003-linux.zip
$ ./android-studio/bin/studio.sh
Configure Android Studio
Add a Desktop Launcher
How to Start Your Debian Crouton
Open up a shell:
Ctrl+Alt+T
Type shell and hit enter.
Debian in a Chromium Tab
$ sudo startxfce4 -n
debiandroid -X xiwi-tab -b
Debian in its own Chromium Window
$ sudo startxfce4 -n debiandroid -X
Enjoy your Chromium OS ThinkPad X220!
Please don’t hesitate to reach out if you have
questions/comments/issues etc.
Contact
github.com/andDevW
anddevw@gmail.com
My blog andDevW.com
Attributions
Chromium™, Chrome OS™, Chromebook™, Chromebook Pixel™ are trademarks of
Google LLC.
Lenovo™ and ThinkPad® are trademarks of Lenovo in the United States, other
countries, or both.

More Related Content

What's hot

Unified Extensible Firmware Interface (UEFI)
Unified Extensible Firmware Interface (UEFI)Unified Extensible Firmware Interface (UEFI)
Unified Extensible Firmware Interface (UEFI)
k33a
 
U-Boot Porting on New Hardware
U-Boot Porting on New HardwareU-Boot Porting on New Hardware
U-Boot Porting on New Hardware
RuggedBoardGroup
 
Review paper on bios vs uefi
Review  paper on bios vs uefiReview  paper on bios vs uefi
Review paper on bios vs uefi
Faizan Mushtaq
 
Bootkits: past, present & future
Bootkits: past, present & futureBootkits: past, present & future
Bootkits: past, present & future
Alex Matrosov
 
Booting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot imagesBooting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot images
Chris Simmonds
 
101 1.1 hardware settings v2
101 1.1 hardware settings v2101 1.1 hardware settings v2
101 1.1 hardware settings v2
Acácio Oliveira
 
UEFI Spec Version 2.4 Facilitates Secure Update
UEFI Spec Version 2.4 Facilitates Secure UpdateUEFI Spec Version 2.4 Facilitates Secure Update
UEFI Spec Version 2.4 Facilitates Secure Update
insydesoftware
 
Bios vs uefi
Bios vs uefiBios vs uefi
Bios vs uefi
Faizan Mushtaq
 
Sorage &amp; pc booting ppt prabu
Sorage &amp; pc booting ppt prabuSorage &amp; pc booting ppt prabu
Sorage &amp; pc booting ppt prabu
Prabu Mariyappan
 
Implementing a UEFI BIOS into an Embedded System
Implementing a UEFI BIOS into an Embedded SystemImplementing a UEFI BIOS into an Embedded System
Implementing a UEFI BIOS into an Embedded System
insydesoftware
 
1.1 hardware settings v2
1.1 hardware settings v21.1 hardware settings v2
1.1 hardware settings v2
Acácio Oliveira
 
LCA13: Android Kernel Upstreaming: Overview & Status
LCA13: Android Kernel Upstreaming: Overview & StatusLCA13: Android Kernel Upstreaming: Overview & Status
LCA13: Android Kernel Upstreaming: Overview & Status
Linaro
 
Modern Bootkit Trends: Bypassing Kernel-Mode Signing Policy
Modern Bootkit Trends: Bypassing Kernel-Mode Signing PolicyModern Bootkit Trends: Bypassing Kernel-Mode Signing Policy
Modern Bootkit Trends: Bypassing Kernel-Mode Signing PolicyAlex Matrosov
 
AMD Ryzen Threadripper in Techday
AMD Ryzen Threadripper in TechdayAMD Ryzen Threadripper in Techday
AMD Ryzen Threadripper in Techday
Low Hong Chuan
 
Booting UEFI-aware OS on coreboot enabled platform - "In God's Name, Why?"
Booting UEFI-aware OS on coreboot enabled platform - "In God's Name, Why?"Booting UEFI-aware OS on coreboot enabled platform - "In God's Name, Why?"
Booting UEFI-aware OS on coreboot enabled platform - "In God's Name, Why?"
Piotr Król
 
MSI Z370 Motherboard Info Kit
MSI Z370 Motherboard Info KitMSI Z370 Motherboard Info Kit
MSI Z370 Motherboard Info Kit
MSI Gaming
 
MSI AMD B450 Motherboard Info Kit
MSI AMD B450 Motherboard Info KitMSI AMD B450 Motherboard Info Kit
MSI AMD B450 Motherboard Info Kit
MSI Gaming
 

What's hot (20)

Unified Extensible Firmware Interface (UEFI)
Unified Extensible Firmware Interface (UEFI)Unified Extensible Firmware Interface (UEFI)
Unified Extensible Firmware Interface (UEFI)
 
U-Boot Porting on New Hardware
U-Boot Porting on New HardwareU-Boot Porting on New Hardware
U-Boot Porting on New Hardware
 
Review paper on bios vs uefi
Review  paper on bios vs uefiReview  paper on bios vs uefi
Review paper on bios vs uefi
 
Bootkits: past, present & future
Bootkits: past, present & futureBootkits: past, present & future
Bootkits: past, present & future
 
Booting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot imagesBooting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot images
 
101 1.1 hardware settings v2
101 1.1 hardware settings v2101 1.1 hardware settings v2
101 1.1 hardware settings v2
 
UEFI Spec Version 2.4 Facilitates Secure Update
UEFI Spec Version 2.4 Facilitates Secure UpdateUEFI Spec Version 2.4 Facilitates Secure Update
UEFI Spec Version 2.4 Facilitates Secure Update
 
Bios vs uefi
Bios vs uefiBios vs uefi
Bios vs uefi
 
Uefi and bios
Uefi and biosUefi and bios
Uefi and bios
 
Sorage &amp; pc booting ppt prabu
Sorage &amp; pc booting ppt prabuSorage &amp; pc booting ppt prabu
Sorage &amp; pc booting ppt prabu
 
Implementing a UEFI BIOS into an Embedded System
Implementing a UEFI BIOS into an Embedded SystemImplementing a UEFI BIOS into an Embedded System
Implementing a UEFI BIOS into an Embedded System
 
1.1 hardware settings v2
1.1 hardware settings v21.1 hardware settings v2
1.1 hardware settings v2
 
LCA13: Android Kernel Upstreaming: Overview & Status
LCA13: Android Kernel Upstreaming: Overview & StatusLCA13: Android Kernel Upstreaming: Overview & Status
LCA13: Android Kernel Upstreaming: Overview & Status
 
Chipsets amd
Chipsets amdChipsets amd
Chipsets amd
 
Modern Bootkit Trends: Bypassing Kernel-Mode Signing Policy
Modern Bootkit Trends: Bypassing Kernel-Mode Signing PolicyModern Bootkit Trends: Bypassing Kernel-Mode Signing Policy
Modern Bootkit Trends: Bypassing Kernel-Mode Signing Policy
 
Andy faq 1.1
Andy faq 1.1Andy faq 1.1
Andy faq 1.1
 
AMD Ryzen Threadripper in Techday
AMD Ryzen Threadripper in TechdayAMD Ryzen Threadripper in Techday
AMD Ryzen Threadripper in Techday
 
Booting UEFI-aware OS on coreboot enabled platform - "In God's Name, Why?"
Booting UEFI-aware OS on coreboot enabled platform - "In God's Name, Why?"Booting UEFI-aware OS on coreboot enabled platform - "In God's Name, Why?"
Booting UEFI-aware OS on coreboot enabled platform - "In God's Name, Why?"
 
MSI Z370 Motherboard Info Kit
MSI Z370 Motherboard Info KitMSI Z370 Motherboard Info Kit
MSI Z370 Motherboard Info Kit
 
MSI AMD B450 Motherboard Info Kit
MSI AMD B450 Motherboard Info KitMSI AMD B450 Motherboard Info Kit
MSI AMD B450 Motherboard Info Kit
 

Similar to ChromePad - Chromium OS ThinkPad X220

Starting Raspberry Pi
Starting Raspberry PiStarting Raspberry Pi
Starting Raspberry Pi
LloydMoore
 
Tac Presentation October 72014- Raspberry PI
Tac Presentation October 72014- Raspberry PITac Presentation October 72014- Raspberry PI
Tac Presentation October 72014- Raspberry PI
Cliff Samuels Jr.
 
A million ways to provision embedded linux devices
A million ways to provision embedded linux devicesA million ways to provision embedded linux devices
A million ways to provision embedded linux devices
Mender.io
 
Meng
MengMeng
Meng
MengMeng
BeagleBoard-xM Booting Process
BeagleBoard-xM Booting ProcessBeagleBoard-xM Booting Process
BeagleBoard-xM Booting Process
SysPlay eLearning Academy for You
 
How to Hack Edison
How to Hack EdisonHow to Hack Edison
How to Hack Edison
Shotaro Uchida
 
Beagle board101 esc-boston-2009b
Beagle board101 esc-boston-2009bBeagle board101 esc-boston-2009b
Beagle board101 esc-boston-2009b
Michael Hallak-Stamler
 
BeagleBone Black: Platform Bring-Up with Upstream Components
BeagleBone Black: Platform Bring-Up with Upstream ComponentsBeagleBone Black: Platform Bring-Up with Upstream Components
BeagleBone Black: Platform Bring-Up with Upstream Components
GlobalLogic Ukraine
 
Desktop Ubutu on Laptops and RaspberryPi_practices how to use it with SD card...
Desktop Ubutu on Laptops and RaspberryPi_practices how to use it with SD card...Desktop Ubutu on Laptops and RaspberryPi_practices how to use it with SD card...
Desktop Ubutu on Laptops and RaspberryPi_practices how to use it with SD card...
Masafumi Ohta
 
Embedded Fest 2019. Игорь Опанюк. Das U-boot v2019: a look under the hood
Embedded Fest 2019. Игорь Опанюк. Das U-boot v2019: a look under the hoodEmbedded Fest 2019. Игорь Опанюк. Das U-boot v2019: a look under the hood
Embedded Fest 2019. Игорь Опанюк. Das U-boot v2019: a look under the hood
EmbeddedFest
 
BeagleBone Black Booting Process
BeagleBone Black Booting ProcessBeagleBone Black Booting Process
BeagleBone Black Booting Process
SysPlay eLearning Academy for You
 
Tesla Hacking to FreedomEV
Tesla Hacking to FreedomEVTesla Hacking to FreedomEV
Tesla Hacking to FreedomEV
Jasper Nuyens
 
Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...
Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...
Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...
Joone Hur
 
Introduction To The Beagleboard
Introduction To The BeagleboardIntroduction To The Beagleboard
Introduction To The Beagleboard
NeHal VeRma
 
U Boot or Universal Bootloader
U Boot or Universal BootloaderU Boot or Universal Bootloader
U Boot or Universal Bootloader
Satpal Parmar
 
Open-source Android 10 on Orange Pi: myth or reality?
Open-source Android 10 on Orange Pi: myth or reality?Open-source Android 10 on Orange Pi: myth or reality?
Open-source Android 10 on Orange Pi: myth or reality?
GlobalLogic Ukraine
 

Similar to ChromePad - Chromium OS ThinkPad X220 (20)

Starting Raspberry Pi
Starting Raspberry PiStarting Raspberry Pi
Starting Raspberry Pi
 
Tac Presentation October 72014- Raspberry PI
Tac Presentation October 72014- Raspberry PITac Presentation October 72014- Raspberry PI
Tac Presentation October 72014- Raspberry PI
 
A million ways to provision embedded linux devices
A million ways to provision embedded linux devicesA million ways to provision embedded linux devices
A million ways to provision embedded linux devices
 
Meng
MengMeng
Meng
 
Meng
MengMeng
Meng
 
BeagleBoard-xM Booting Process
BeagleBoard-xM Booting ProcessBeagleBoard-xM Booting Process
BeagleBoard-xM Booting Process
 
How to Hack Edison
How to Hack EdisonHow to Hack Edison
How to Hack Edison
 
Beagle board101 esc-boston-2009b
Beagle board101 esc-boston-2009bBeagle board101 esc-boston-2009b
Beagle board101 esc-boston-2009b
 
Ps3 linux
Ps3 linuxPs3 linux
Ps3 linux
 
BeagleBone Black: Platform Bring-Up with Upstream Components
BeagleBone Black: Platform Bring-Up with Upstream ComponentsBeagleBone Black: Platform Bring-Up with Upstream Components
BeagleBone Black: Platform Bring-Up with Upstream Components
 
Desktop Ubutu on Laptops and RaspberryPi_practices how to use it with SD card...
Desktop Ubutu on Laptops and RaspberryPi_practices how to use it with SD card...Desktop Ubutu on Laptops and RaspberryPi_practices how to use it with SD card...
Desktop Ubutu on Laptops and RaspberryPi_practices how to use it with SD card...
 
Embedded Fest 2019. Игорь Опанюк. Das U-boot v2019: a look under the hood
Embedded Fest 2019. Игорь Опанюк. Das U-boot v2019: a look under the hoodEmbedded Fest 2019. Игорь Опанюк. Das U-boot v2019: a look under the hood
Embedded Fest 2019. Игорь Опанюк. Das U-boot v2019: a look under the hood
 
BeagleBone Black Booting Process
BeagleBone Black Booting ProcessBeagleBone Black Booting Process
BeagleBone Black Booting Process
 
Tesla Hacking to FreedomEV
Tesla Hacking to FreedomEVTesla Hacking to FreedomEV
Tesla Hacking to FreedomEV
 
Xen time machine
Xen time machineXen time machine
Xen time machine
 
Feature satip4
Feature satip4Feature satip4
Feature satip4
 
Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...
Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...
Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...
 
Introduction To The Beagleboard
Introduction To The BeagleboardIntroduction To The Beagleboard
Introduction To The Beagleboard
 
U Boot or Universal Bootloader
U Boot or Universal BootloaderU Boot or Universal Bootloader
U Boot or Universal Bootloader
 
Open-source Android 10 on Orange Pi: myth or reality?
Open-source Android 10 on Orange Pi: myth or reality?Open-source Android 10 on Orange Pi: myth or reality?
Open-source Android 10 on Orange Pi: myth or reality?
 

Recently uploaded

ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
CatarinaPereira64715
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
Abida Shariff
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 

Recently uploaded (20)

ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 

ChromePad - Chromium OS ThinkPad X220

  • 1. ChromePad Chromium OS ThinkPad X220 Andrew Wright
  • 2. About me ● Android Engineer ● GNU/Linux Enthusiast ● Big fan of Chromium/Chromium OS
  • 3. About this This guide was tested on Debian Stretch as setup in an earlier blog post.
  • 4. 1.Chromium OS 2.Coreboot 3.Build Chromium OS 4.Hardware Upgrades 5.Android Studio
  • 6. Why Chromium OS for Android Development? Why not Chrome OS for Android Development?
  • 7. Everything explained in Part 2 is doable in Chrome OS, if you have a Google Pixel Chromebook. 8GB or 16GB of RAM = Good to Go If you don’t have a Google Pixel Chromebook, or another powerful Chromebook with 8-16GB of RAM it’s not going to work so well.
  • 8. The Problem is with Chromebooks, not Chrome OS. They come with a fixed amount of RAM memory.
  • 9. For development we’re going to want as much ram as we can afford, and it’s nice to have the ability to move the RAM around between devices. The X220 RAM is held in place by 3 screws and is directly accessible on the underside of the laptop.
  • 10. Install Chrome OS on a ThinkPad? The short answer is No. Google Chrome OS is the Google product that OEMs ship on Chromebooks for general consumer use. However, we can install Chromium OS on a ThinkPad, or any other compatible laptop.
  • 12. Chromium OS is the open-source development version of Google’s Chrome operating system. https://www.chromium.org/chromium-os
  • 13. It’s the open source project, used primarily by developers, with code that is available for anyone to checkout, modify, and build.
  • 15. Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all Internet users to experience the web. https://www.chromium.org/Home
  • 16. Chromium is the open source browser inside of the open source Chromium operating system. They both share an attractive icon:
  • 19. WARNING: EXPERIMENTAL FEATURES AHEAD! By enabling these features, you could lose browser data or compromise your security or privacy. Enabled features apply to all users of this browser.
  • 20. Chromium OS - Experimental Features The key to getting the most out of Chromium OS is utilizing chrome://flags In your Chromium browser navigate to chrome://flags and bookmark it. In Chromium OS flags extend to system settings, such as enabling Night Light or the Zip archiver (both of which are extremely useful).
  • 21. Chromium Experimental Features The key to getting the most out of Chromium is making use of chrome://flags In your Chromium browser navigate to chrome://flags and bookmark it. The flags are essentially settings that you can enable or disable to enable or disable a wide range of new features.
  • 23. The easiest way to try Chromium is to use the Chromium browser on the PC or Android that you already have. https://download-chromium.appspot.com The link is an official Chromium source, Just download, unzip and install.
  • 24. For Android it’s even easier, you can use my open source app getChromium. https://github.com/andDevW/getChromium
  • 25. Awesome browser. So how do I put Chromium OS on my ThinkPad?
  • 26. If we want to play it safe, according to the official documentation the best we can do is the ThinkPad R60. https://www.chromium.org/chromium-os/getting-dev-hardware/dev-hardware-list
  • 27. The good news is that Chromium OS works great with Coreboot, and we can install Coreboot on some great ThinkPads.
  • 28. Chromium OS on the ThinkPad X220
  • 29. Updated Dev-Hardware-List WiFi Ethernet TrackPad Suspend/Resume Lenovo X220 NO YES YES YES Coreboot X220 YES YES YES YES X220 with stock Lenovo BIOS and X220 with Coreboot
  • 30. ThinkPad X220 - The Great (AKA Hardware) - The last ThinkPad made with “the good keyboard”. - Compact enough that it’s actually usable in today’s world. - No shortage of models with the 2.5GHz i5. - Works wonderfully with Coreboot. - OEM replacement parts are affordable and easy to obtain. - Great battery life, batteries are cheap and swappable. - Easily/cheaply upgradable IPS display. - Arguably still looks cool.
  • 31. ThinkPad X220 - The Bad (AKA Firmware) - Extremely slow boot time - WiFi card whitelist locks out the ability to upgrade WiFi - RAM speed limited to 1866MHz - Firmware level malware - Lenovo Service Engine (LSE), etc. - Intel ME *All of these things can either be mitigated or negated by installing Coreboot.
  • 32. A wide range of ThinkPads have Great Hardware paired with Terrible Firmware.
  • 33. We Can Fix Some. I haven’t tested this, but it looks like we should be able to do what I’ve done with the ThinkPad X220 with at least some ThinkPads that meet the following criteria: 1. amd64 2. Supported by Coreboot If you’ve tested Chromium OS on other Coreboot ThinkPads I’d love to add that info to the Updated Hardware List. Contact me at andDevW@gmail.com
  • 34. Let’s get rid of the Firmware.
  • 36.
  • 37. Advantages of Coreboot - Boot time is drastically reduced. - Allows use of mini PCIE WiFi cards - Allows use of faster RAM - Allows booting from ExpressCard - Allows cool extras (games like Tint) - Coreboot is an open source project - Intel ME neutered https://www.coreboot.org/Intel_Management_Engine - Lenovo Malicious Firmware neutered (security bonus)
  • 38. X220 Coreboot Install 1. Requirements 2. Update Lenovo BIOS 3. Configure BeagleBone 4. Configure Coreboot 5. Flash Coreboot
  • 39. Requirements What you need: 1x ThinkPad X220 1x PC Running *Debian/Ubuntu 1x Micro SD Card 4GB+ (Faster is better) 1x BeagleBone Black (Raspberry Pi can also be used) 1x USB 2 Mini USB Cable (comes with the BeagleBone) 1x PC PSU(any old PC’s power supply) LOTS of JUMPER WIRES - In all of the available configs (FF/FM/MM)
  • 40. Sources BeagleBone Black https://www.digikey.com/product-detail/en/ghi-electronics-llc/BBB01-SC-505/BBB01- SC-505-ND/6210999 Pomona 5250 https://www.digikey.com/products/en/test-and-measurement/test-clips- ic/624?k=pomona%205250 Jumper Cables - Get one of each type https://www.digikey.com/product-detail/en/adafruit-industries- llc/825/1528-1161-ND/5353621 https://www.digikey.com/product-detail/en/adafruit-industries-llc/759/1528- 1155-ND/5353615 https://www.digikey.com/product-detail/en/adafruit-industries-llc/794/1528-1159- ND/5353619 PSU - An old PC will have one of these (It’s the part that the power cord connects to). http://www.instructables.com/id/How-to-power-up-an-ATX-Power-Supply-without-a-PC/
  • 41. Plug-and-Play Hardware Upgrades WiFi Upgrade Atheros AR9285 Half Mini PCI-E Card - NOT the AzureWave Bluetooth Upgrade Foxconn 4.0 daughter card - FRU 60Y3303 Cmos Upgrade CR2032 CMOS - Odds are that your battery is old RAM Upgrade (16GB 2×8GB DDR3 SO-DIMM) - Get 2 of the same USB 3.0 Upgrade AKE USB 3.0 Card 54mm - The AKE model with 2 USB ports Display Upgrade LP125WH2-SLT1 - Lenovo Twist S230U touch screen unit Battery Upgrade Lenovo ThinkPad Battery 44++(9 Cell) - NEW via Lenovo
  • 43. Configure X220 UEFI BIOS Coreboot utilizes proprietary binary blobs that are extracted from the factory firmware image. In order to build Coreboot with the latest binary blobs the factory firmware needs to be updated prior to flashing with Coreboot. Boot the X220, holding down the blue ThinkVantage key. At the Startup Interrupt Menu hit F1 Set the boot order to USB HDD Save and Exit.
  • 44. Updating UEFI BIOS - Part 1 Download the latest factory BIOS from Lenovo https://download.lenovo.com/pccbbs/mobiles/8duj28us.iso Verify the ISO Checksum and Convert ISO to IMG $ echo ‘cf433cc5adfabf62f49146f87ae814c9d990f83db386bae1d581878908e5032e8duj28us.iso’ | sha256sum -c $ sudo apt-get install genisoimage $ geteltorito -o bios.img fwss31.iso Burn IMG to USB $ sudo dd if=bios.img of=/dev/sdX bs=4M status=progress
  • 45. Updating UEFI BIOS - Part 2 1. Plug the X220 into the AC adapter, insert the USB with the bios.img and boot. 2. In the Main Menu Window select #2 Update System Program 3. At the prompts hit the Y key and the Enter key to proceed. 4. After the reboot select #3 in the Main Menu Window 5. Continue through the prompts with Y and Enter.
  • 46. // DISCLAIMER The final key requirement is a willingness to completely destroy your X220 motherboard in the pursuit of making a superior one-off device.
  • 47. X220 Service Manual PDF This is a great resource for identifying FRUs. FRUs are ThinkPad part ID numbers that can simplify purchasing replacement parts online. https://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles_pdf/0a60739.pdf
  • 48. Getting at the Chip Illustrated Description on Pages 73 - 78 in X220 Manual Turn the X220 over and remove the following parts in the following order: 1. Battery 2. HDD 3. Screws required to remove both the Palmrest and the Keyboard. 4. Keyboard 5. Palmrest 6. WiFi Card (swap with the Atheros AR9285 card) 7. Bluetooth daughter card 8. CMOS battery (swap with fresh new battery)
  • 49. Upgrade Bluetooth Bluetooth daughter card check: Look at the card to determine if you have 2.0 or 4.0 Bluetooth 4.0 - FRU 60Y3303 or FRU 60Y3305 Bluetooth 2.1 - FRU 60Y3271 or FRU 60Y3275 I
  • 50. Configuring the BeagleBone Black - 001 KEY and COLOR CODE PC = Debian system that is connected to the BeagleBone via USB BB = Terminal SSH X220 = ThinkPad we are modifying Download Bone Debian 7.8 (works for flashing) https://debian.beagleboard.org/images/bone- debian-7.8-lxde-4gb-armhf-2015-03-01-4gb.img.xz Verify the image: $ echo ‘bone-debian-7.8-lxde-4gb-armhf-2015-03-01-4gb.img.xz c848627722b7a5f7bc89791cc8949e3b’ | md5sum -c Unpack the image and write it to an sd card $ xz -d BBB*.xz
  • 51. Configuring the BeagleBone Black - 002 Insert the sd card into the BeagleBone and connect the BeagleBone to your PC via the USB cable. Plug an Ethernet cable with an Internet connection into the BeagleBone. In your PC open a terminal. $ ssh 192.167.7.2 -l root Say yes and proceed through the prompts. Now in your BB terminal $ apt-get update && apt-get upgrade $ apt-get install ntp
  • 52. Configuring the BeagleBone Black - 003 # apt-get install bash-completion vim build-essential pciutils usbutils libpci-dev libusb-dev libftdi- dev zlib1g-dev curl wget zip # wget https://elinux.org/images/1/1f/BB-SPI0-01-00A0.txt # dtc -O dtb -o BB-SPI0-01-00A0.dtbo -b 0 -@ BB-SPI0- 01-00A0.dts # cp BB- SPI0-01-00A0.dtbo /lib/firmware/ # echo BB-SPI0-01 > /sys/devices/bone_capemgr.*/slots Check to see that installation worked # cat /sys/devices/bone_capemgr.*/slots The last line of the result should match this:
  • 53. Configuring the BeagleBone Black - 004 Verify that spidev exists # ls -al /dev/spid* Which should print out something like this crw-rw---T 1 root spi 153, 0 Feb 29 05:39 /dev/spidev1.0 Make the last line of the file /etc/default/capemgr read CAPE=BB-SPI0-01
  • 54. Configuring the BeagleBone Black - 005 On your PC download https://www.mirrorservice.org/sites/libreboot.org/release/stable/20160907/libreboot_r20160907_util.tar.xz Verify download $ echo ‘c5bfa5a06d55c61e5451e70cd8da3f430b5e06686f9a74c5a2e9fe0e9d155505867b0ca3428d85a983741146c4e024a6b 0447638923423000431c98d048bd473 libreboot_r20160907_util.tar.xz’ | sha512sum -c - Transfer the utility to your BB sd card. In the BB terminal $ tar xf libreboot_r20160907_util.tar.xz # chmod u+x libreboot_util/ich9deblob/armv7l/ich9gen libreboot_util/flashrom/armv7l/flashrom
  • 55. Configuring the BeagleBone Black - 006 Connect the BB to the Pomona clip and connect the clip to the SOIC-8 as specified https://www.coreboot.org/Board:lenovo/x220 Don’t connect the power cable until the clip is correctly attached to the SOIC, only connecting the ground cable initially. For the 2 wires delivering power from the PSU, which have to be long, it’s best to use twisted pair cabling to cancel out any interference. For the rest of the jumper cables keep the length of everything as short as possible.
  • 56. Read the flash two times. # /libreboot_util/flashrom/armv7l/flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -r flash_01.bin # /libreboot_util/flashrom/armv7l/flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -r flash_02.bin # diff flash_01.bin flash_02.bin If they don’t match, don’t proceed. If they do match(you get no response after running diff) save a copy on external media.
  • 57. https://www.coreboot.org/Build_HOWTO $ sudo apt-get install git build-essential gnat flex bison libncurses5-dev wget zlib1g-dev $ cd ~ $ git clone https://review.coreboot.org/coreboot $ cd coreboot $ git submodule update --init --recursive
  • 58. Use the ifdtool to recover descriptor and me firmware $ cd ~/coreboot/util/ifdtool $ make $ sudo make install $ ifdtool -x ~/flash01.bin ifdtool -x /path/to/extracted/flash.bin
  • 59. $ mkdir -p ~/coreboot/3rdparty/blobs/mainboard/lenovo/x220 $ cd ~/coreboot/3rdparty/blobs/mainboard/lenovo/x220 $ mv ~/flashregion_0_flashdescriptor.bin descriptor.bin $ mv ~/flashregion_2_intel_me.bin me.bin $ mv ~/flashregion_3_gbe.bin gbe.bin
  • 60. Get Coreboot - 001 Go to https://www.coreboot.org/Supported_Motherboards and search for X220. Click the "upstream tree" link to find the commit hash and then check it out. $ cd ~/coreboot $ git checkout <hash> $ git submodule update --checkout
  • 61. Configure Coreboot - 001 $ cd ~/coreboot $ make nconfig General Setup [*] Compress ramstage with LZMA [*] Include the coreboot . config file into the ROM image (NEW) [*] Allow use of binary- only repository Mainboard Mainboard vendor (Lenovo)
  • 62. Configure Coreboot - 002 chipset [*] Enable VMX for virtualization [*] Ignore vendor programmed fuses that limit max. DRAM frequency (NEW) [*] Ignore XMP profile max DIMMs per channel [*] Beep on fatal error (NEW) [*] Flash LEDs on fatal error (NEW) [*] Add Intel descriptor.bin file (NEW) [*] Add Intel ME/TXE firmware
  • 63. Configure Coreboot - 003 display -Nothing additional checked generic drivers [*] Support Intel PCI-e WiFi adapters [*] PS/2 keyboard init [*] Enable TPM support [*] Silicon Image SIL3114 (NEW) Security
  • 64. Configure Coreboot - 004 Console [*] Squelch AP CPUs from early console [*] Show POST codes on the debug console System tables [*] Generate SMBIOS tables (NEW) Payload [*] SeaBIOS version (master) [*] Load coreinfo
  • 65. Configure Coreboot - 005 Hit F6, then hit the Enter key. Hit F9 to exit. Copy $ make crossgcc-i386 CPUS=4 $ make iasl $ make
  • 66. Flash Coreboot - 001 When make finishes, your new rom is located at ~/coreboot/build/coreboot.rom Flash it # /libreboot_util/flashrom/armv7l/flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -w /coreboot/build/coreboot.rom You may have to play around with the clip to get a successful flash.
  • 69. Prerequisites ● An x86_64 64-bit Debian or Ubuntu system with at least 8GB of RAM ● An Internet connection (faster is better) ● A good amount of free disk space and time ● A 16GB USB drive
  • 71. One-Time Setup Install the requisite packages $ sudo apt-get install git-core gitk git-gui curl lvm2 thin-provisioning-tools python-pkg-resources python-virtualenv Configure Git $ git config --global user.email "you@example.com" $ git config --global user.name "Your Name"
  • 72. Install depot_tools $ cd ~ $ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
  • 73. Make Sudo More Permissive $ cd /tmp Copy and paste, or carefully type each of the following lines one at a time, hitting the Enter key after each. $ cat > ./sudo_editor <<EOF #!/bin/sh echo Defaults !tty_tickets > $1 # Entering your password in one shell affects all shells echo Defaults timestamp_timeout=180 >> $1 # Minutes between re-requesting your password EOF $ chmod +x ./sudo_editor $ sudo EDITOR=./sudo_editor visudo -f /etc/sudoers.d/relax_requirements
  • 74. Configuring Environmental Variables $ vi ~/.bashrc Add the following line at the very bottom of your .bashrc file: export PATH=$PATH:~/depot_tools Source .bashrc $ . ~/.bashrc
  • 75. Get the Source Code Make a directory for Chromium OS $ mkdir -p ${HOME}/chromiumos $ cd ${HOME}/chromiumos $ repo init -u https://chromium.googlesource.com/chromiumos/manifest.git -- repo-url https://chromium.googlesource.com/external/repo.git $ repo sync -j4
  • 76. Add Google API Keys - 001 This needs to be completed prior to building the Chromium OS image. https://www.chromium.org/developers/how-tos/api-keys 1. Subscribe to Chromium Dev’s Google Group (mandatory) 2. Navigate to https://console.cloud.google.com/ 3. At top left, between Google Cloud Platform and the search bar, select the menu with 3 dots. In the pop-up menu click on box with the + the in the top right corner. Create a project. 4. Click on the hamburger menu in the top left corner, then scroll down to APIs & Services in the new menu. In the submenu select Credentials. 5. Select Create credentials > API key
  • 77. Add Google API Keys - 002 6. In the API key created dialog copy your API key. 7. Open a new terminal window and cd to your home directory 8. Make a file .googleapikeys, adding in your own keys as you get them: google_api_key = "your_api_key" google_default_client_id = "your_client_id" google_default_client_secret = "your_client_secret"
  • 78. Add Google API Keys - 003 9. You should have the API key already. Follow the rest of the steps as outlined here to obtain your own client id and client secret. Paste these credentials into the .googleapikeys file and save it. After completing this step the API keys will be automatically baked-in to all of your Chromium OS builds.
  • 79. Build Steps The Formula 1. Enter Chroot 2. Select Board 3. Set Chronos User Password 4. Build Packages 5. Build Disk Image 6. Write Chromium OS Image to USB
  • 80. Create a chroot $ cd ~/chromiumos Enter the command to download and enter the chroot $ cros_sdk While inside the chroot you will see a special cros-chroot prompt ~/trunk/src/scripts $ After the initial download cros_sdk enters the chroot.
  • 81. Select a board ~/trunk/src/scripts $ export BOARD=amd64-generic
  • 82. Set the Chronos User Password Set the password that you will use to enter the command line in Chromium OS. You need to repeat this step every time you build a new image. ~/trunk/src/scripts $ ./set_shared_user_password.sh
  • 83. Build Packages Build all of the packages for the board ~/trunk/src/scripts $ ./build_packages --board=${BOARD}
  • 84. Build a Disk Image Build the developer image with the additional developer packages built-in ~/trunk/src/scripts $ ./build_image --board=${BOARD} --noenable_rootfs_verification dev
  • 85. Write the Chromium OS Image to USB Making a Chromium OS USB installer is easy. Plug a 16GB USB drive into your PC. ~/trunk/src/scripts $ cros flash usb:// ${BOARD}/latest Select the USB device from the options and confirm. cros_flash writes the image while keeping you informed of its progress.
  • 86. Great Job! Remove the USB and take a moment to feel like something of a technical badass. If you skipped the API keys part you’re going to be devastated to learn that your build is *useless, so go back and finish that, and then repeat the steps for Building Chromium OS. Also, use this time to remind yourself that using Chromium OS is an involved process that requires you repeating this process (or other manual update process) every single time you want to update. *It will boot and install to a SSD, but you’re going to be sad.
  • 87. // DISCLAIMER Chromium OS and Chromium don’t auto-update. Chromium OS isn’t for general consumer use.
  • 88. Dual-Use Chromium OS USB Installer 1. Boot the X220 from the USB and run Chromium OS as-is 2. Boot the X220 from the USB and install Chromium OS to the SSD We want the second option, because it’s always going to be faster than running Chromium OS from a USB drive. The general rule for read/write speed is SSD> HDD> USB 3> USB 2 *Coreboot allows us to enable booting from the ExpressCard, which we can outfit with a USB 3.0 adapter, enabling us to boot from a USB 3.0 drive.
  • 90. Insert the USB drive into the X220 and boot. At the Welcome screen enter VT2 by pressing Alt + Ctrl + F3 login: chronos Log in with the password that you set earlier.
  • 91. Installing Chromium OS to a SSD Make sure that you have a SSD in your X220. $ sudo /usr/sbin/chromeos-install --dst /dev/sda Hit the y key and let everything run, it will throw errors. Exit VT2 by pressing Ctrl + Alt + F1 Power off and remove the USB drive.
  • 92. Boot Chromium OS from SSD At the Welcome screen enter VT2 by pressing Alt + Ctrl + F3 Log in. Make your rootfs writable $ sudo /usr/share/vboot/bin/make_dev_ssd.sh --force -- remove_rootfs_verification
  • 93. Exit by hitting Alt + Ctrl + F1 Remove the USB drive and boot into your new Chromium OS ThinkPad X220.
  • 94. Experimental Settings Here are some of the flags that I find useful. To check them out just enter them in your Chromium browser’s omnibox. #ash-enable-night-light #enable-zip-archiver-packer #smooth-scrolling #enable- easyunlock-promotions Search in chrome://flags for md and enable the material design components. This looks promising, as it should work with X220 hardware
  • 96. 1. Install backlit drop-in IPS screen 2. Deactivate palmrest touchpad
  • 97. 3. Chromium OS for Android Development
  • 98. // DISCLAIMER Android Studio on Chromium OS/Chrome OS™ isn’t 100%. Mainly ● AVD and Virtualization aren’t working. It’s good, but it’s not perfect.
  • 99. Question: How do we run Android Studio in Chromium OS?
  • 100. Answer: Inside of Debian OS, inside of a Crouton. *With 8GB of RAM or better.
  • 101. Debian - The Universal Operating System
  • 102. Crouton Chromium OS Universal Chroot Environment https://github.com/dnschneid/crouton Star it on GitHub, and check out the documentation.
  • 103. Download the latest Crouton https://goo.gl/fd3zc Open up a shell: Ctrl + Alt + T Then type shell and hit Enter.
  • 104. Install Debian in a Crouton Install the Crouton Chrome Extension https://goo.gl/OVQOEt $ sudo sh -e ~/Downloads/crouton -r sid -t xiwi,xfce -n debiandroid Let everything download. At the prompt create a user name and a password.
  • 105. Start Debian $ sudo startxfce4 -n debiandroid -X xiwi -b
  • 106. Configure Debian At the prompt select ‘Use default config’ Right click on the Desktop and select open terminal here. $ sudo vi /etc/apt/sources.list
  • 107. Update /etc/apt/sources.list deb http://ftp.us.debian.org/debian/ stretch main non-free contrib deb-src http://ftp.us.debian.org/debian/ stretch main non-free contrib deb http://ftp.us.debian.org/debian/ stretch-backports main contrib non-free deb-src http://ftp.us.debian.org/debian/ stretch-backports main contrib non-free deb http://security.debian.org/ stretch/updates main deb-src http://security.debian.org/ stretch/updates main *You can copy and paste from GitHub https://goo.gl/pVfVHZ
  • 108. $ sudo dpkg –add-architecture i386 $ sudo apt-get update && sudo apt-get upgrade Outside of the Crouton navigate to https://developer.android.com/studio/index.html#downloads Download the Linux platform package. Go back into your Chroot $ sudo apt-get install openjdk-8-jdk gradle $ unzip ~/Downloads/android-studio-ide-171.4443003-linux.zip $ ./android-studio/bin/studio.sh
  • 110. Add a Desktop Launcher
  • 111.
  • 112.
  • 113. How to Start Your Debian Crouton Open up a shell: Ctrl+Alt+T Type shell and hit enter. Debian in a Chromium Tab $ sudo startxfce4 -n debiandroid -X xiwi-tab -b Debian in its own Chromium Window $ sudo startxfce4 -n debiandroid -X
  • 114. Enjoy your Chromium OS ThinkPad X220! Please don’t hesitate to reach out if you have questions/comments/issues etc.
  • 116. Attributions Chromium™, Chrome OS™, Chromebook™, Chromebook Pixel™ are trademarks of Google LLC. Lenovo™ and ThinkPad® are trademarks of Lenovo in the United States, other countries, or both.

Editor's Notes

  1. If you can hold all of your questions until the end, that would be great.
  2. This is a closeup of a typical Chromebook’s Motherboard The green arrows point to soldered RAM memory. The problem w most Chromebooks is that they generally don’t have a lot of RAM Google makes Chromebooks that address the RAM issue, they’re expensive.
  3. So this sounds perfect.
  4. If this sounds interesting, but you’re not sure, trying the Chromium browser is a great easy way to get an idea of what Chromium OS is like.
  5. Chromium OS is essentially a self-contained Chromium browser. If you’re unsure of what to think about Chromium OS, I recommend trying the Chromium browser. Just download, unzip and install the Chromium browser.
  6. Unfortunately, the if you check the developer hardware guide the newest ThinkPad listed in the official documentation is the LenovoIBM ThinkPad R60e.
  7. So I’ve updated the hardware list Both of these represent the same X220 ThinkPad Lenovo is the stock Lenovo BIOS model Coreboot is that model with Coreboot installed. I’m confident there’s an easy way to fix the Suspend/Resume. Beyond these basics, there’s a working webcam, as well as a SIM modem and fingerprint reader that should be configurable.
  8. The ThinkPad X220 is compact, and happens to be the very last model made with the “good” keyboard, and we can drop in an upgraded screen. Batteries are available in lots of different sizes and configs.
  9. I’m a big advocate of flashing your ThinkPad with Coreboot. If you want to do Coreboot here’s a list of what you’ll need.
  10. There’s already a lot of great walk-thrus on installing Coreboot.
  11. Before I go any further, here’s the warning about Chromium. This is the fundamental problem, and if we can all understand this and what it means, then everything’s going to be great. The way it works is, you install Chromium or Chromium OS again each time you want to update it.
  12. Boot from your new USB installer. Make sure that you are OK with the HDD being obliterated.
  13. After exiting the shell, power off your laptop and pull out the USB installer.
  14. This is a really cool thing that you can do in Chromium OS or Chrome OS.
  15. You won’t be able to do everything with this Android Studio setup. Debugging isn’t happening without the use of workarounds.
  16. OK, so it’s not perfect but it will let me do almost everything except debugging. I still want to do it, but how?
  17. The answer is...
  18. Ok, sure Debian’s awesome, but what’s a Crouton?
  19. How are we going to install Android Studio on Chromium OS? The answer is Crouton. Chromium OS Universal Chroot Environment
  20. Let’s get started. If you’ve changed your settings to customize your Chromium downloads, you’ll want to download the Crouton
  21. I went with XFCE here because it’s light and we’re not really going to be using the desktop. debiandroid is going to be the Name of your Crouton. This makes life much easier when you’ve got more than one. The XIWI option allows us to run individual apps in Chromium tabs.
  22. If you want a shell running you can omit the ‘option b’
  23. We need to update our sources.list file
  24. You want to make your /etc/apt/sources.list file look like this
  25. Now we need to add the i386 architecture and update and upgrade APT Download the current Android Studio package in a browser tab OUTSIDE of your Crouton. The file will still show up in your Crouton in the Downloads folder, because everything’s sharing. Install some packages, unzip the Android-Studio file and start it up. Walk thru the prompts, and make sure not to select the System Image
  26. Don’t check the box next to Android Virtual Device In the context of a Crouton I haven’t been able to get them to work well enough to recommend. One easy method of wireless testing is to build a debug package and then shoot it over to your Android via Gmail.
  27. Inside Android Studio at the bottom select ‘Configure’
  28. And then from the drop-down menu select ‘Create Desktop Entry’
  29. Be sure and check the box, and when it’s done go ahead and shut down Android Studio.
  30. Inside Chromium you can use Debian at any time by following this process.
  31. Chromium OS doesn’t auto-update, so when we manually update it’s generally going to get rid of everything that’s on the disk. Backing up and restoring Croutons isn’t the easiest thing to do, so one workaround is installing the Crouton on an SD card or a USB drive. Then, when you update your Chromium OS, you don’t have to worry because the Crouton’s on it’s own disk. The downside of this workaround is that you’re not getting the same write and read speeds as you will with your primary SSD. The workaround for faster USB/SD is
  32. I’ve shortened my talk to keep things interesting, so I’ll be posting the complete unabridged build instructions on my blog, and on my GitHub. The full version has information on adding your Google API Keys, entering Developer Mode, and the full step-by-step Chromium OS build instructions.