Guide - Installing PostmarketOS on the Asus Chromebook Flip C100P
This guide is for installing PostmarketOS on the Asus Chromebook Flip C100P originally released in 2015 as a low-end 2-in-1. I’m not responsible for bricking your device. Proceed with caution.
The version of this Chromebook I have has 4GB of RAM and a paltry 16GB of eMMC storage. The goal is to install a usable OS onto the eMMC and have room for downloading files. When all is said and done, PostmarketOS will only take up about 1GB of storage and idle under 500MB of RAM. Since the hardware specs are so low, even with PostmarketOS this is still a lite laptop, mainly good for lightweight apps, web browsing, and basic tasks. Do not set your hopes high for video streaming or gaming. Playing 480P video is fine, maybe even up to 720P with a few dropped frames.
The Asus Chromebook Flip C100P stopped receiving ChromeOS updates. But, it is community supported with PostmarketOS. Getting PostmarketOS installed is more than a few steps, so buckle up. I am following the ChromeOS install guide for PostmarketOS. This device is codenamed google-veyron and has one tweak for installing to the eMMC. More on that below.
One caution: This is a armv7 device, which is 32-bit. I do not know for how long this architecture will be supported. It is super rad we can extend the life of this laptop. For how long? Who knows.
Step 1: Enable developer mode
While ChromeOS is still installed, we need to enable developer mode.
- Turn off the device.
- Press
esc+Refresh+Power - Press
Ctrl + d. - Confirm switch to developer mode.
After that you have to press Ctrl + d to boot from internal storage.
Step 2: Enable boot from external storage
- Boot into Chrome OS and go into Guest Mode.
- Open console:
Ctrl + Alt + t. - Enter
shellin console. - Enter
sudo crossystem dev_boot_usb=1 dev_boot_signed_only=0in shell.
After that you can boot from external storage (SD or USB) with Ctrl + u.
GBB Flags
I want to modify the boot behavior to try to limit the possibility of someone accidentally hitting space on boot and turning boot verification back on. To do this we need to disable write protection by modifying the hardware and then setting GBB flags in ChromeOS.
Hardware modification
First we need to remove the write protection screw on the motherboard. Follow this guide for opening the Chromebook and removing the write protection screw.
After removing the bottom screws and the ones under the rubber feet, you will lift the keyboard off the frame. The keyboard and touchpad have ribbon cables connected to the motherboard. You need to carefully lift the keyboard and then detach the ribbon cables from the motherboard.
Removing the rubber feet to remove the hidden screws will destroy the double-sided tape. Will need to replace.
Setting GBB flags in ChromeOS
Boot into ChromeOS and enter Guest Mode.
- Press
Ctrl + Alt + tand then entershell. - Move to a directory that is writable with
cd tmp. - Run
sudo crossystem | grep wpsw_cur, make sure it is 0 - Run
sudo flashrom -p linux_mtd --wp-status- If it reports that software write protect is enabled run
sudo flashrom -p linux_mtd --wp-disable
- If it reports that software write protect is enabled run
- Run
sudo flashrom -p linux_mtd -r backup.bin. You should now see the filebackup.binwithls. - Run
sudo futility gbb --set --flags=0x11 backup.binThis will write to thebackup.binfile the new flag. This flag will disable the dev mode beep and shorten the dev mode screen to 2 seconds instead of 30. - Check to make sure the flag was written with
sudo futility gbb --get --flags backup.bin. This should printflags: 0x00000011 - Now we can flash our backup file as the new firmware. Run
sudo flashrom -p linux_mtd -w backup.bin. - Reboot
Install PostmarketOS
Get a prebuilt image
First we need to write a prebuilt image to an SD card or USB thumb drive. Go grab the image from the v25-12 google-veyron. This URL will change every 6 months for the latest stable. I am using the stable image instead of edge for better stability. For the live environment that will be on this external drive I am using the “Console” image. I don’t need a desktop at this point. The prebuilt image is only to run pmbootstrap and flash the final image to the eMMC. We can choose what desktop to install when running pmbootstrap init. We don’t need a desktop for the external drive and will run faster as just a console only.
I used the Raspberry Pi Imager utility to write the USB stick (because I’m lazy). Be sure to use a USB stick/SD card that is at least 16GB as pmbootstrap is going to pull down a fair amount of data.
Boot from USB
Plug in the USB drive and turn on the Chromebook. At the first screen hit Ctrl + u to boot from the external drive.
You need to be fast with the boot from USB since we modified the boot time from 30 seconds to 2 seconds. On reboot, press Ctrl and then when the screen comes up hit u.
Once PostmarketOS loads the login info is user for the user and 147147 for the password.
Now, get connected to the internet using nmtui.
Configure the PMOS image
Once to the console for PMOS install pmbootstrap with sudo apk add pmbootstrap.
Now run pmbootstrap init.
The password is 147147 for sudo commands.
Go through the process as prompted. Almost everything will be the defaults, except for the channel and device. For this Chromebook we are choosing the channel as v25.12 (latest stable, the device as google and veyron. When you get to the DE option, choose xfce4.
Up to you if you want to change anything else, such as systemd. I left everything as the defaults, except for choosing the version, device, and DE.
All of these selections are saved to the external device.
Write to eMMC
Writing to the eMMC is a little different then other Chromebooks. The command for doing so is:
pmboostrap install --sdcard=/dev/mmcblk0
Be sure to check the device for the eMMC with lsblk.
Error
The first time I ran this command and went through the process I got an error:
ERROR: Unable to find the first partition of /dev/mmcblk0, expected it to be at /dev/mmcblk0p1!`
To fix, I re-ran the command without the = after --sdcard, like this:
pmbootstrap install --sdcard /dev/mmcblk0
I have absolutely no idea why this works. Cursory inspection looks like the first time pmbootstrap install runs it wipes all of the partitions and then fails. Running again will then create the partitions.
Wrapping up
Wait for it to finish, reboot, and remove the USB/SD card. I will leave it up to you how you want to configure XFCE.
You now have PostmarketOS running on the eMMC on your Chromebook!
Restoring ChromeOS
If (for whatever reason) you want to go back to ChromeOS you, first need to re-enable OS verification. On boot, hit space. This will re-enable verified boot and then fail to load ChromeOS and prompt to insert a recovery USB drive.
These instructions are for creating a recovery drive in Linux.
- Download the recovery tool
- Give it the right permissions with
chmod 755 linux_recovery.sh - Run the script with
sudo bash linux_recovery.sh - Follow the instructions, which are terrible. First, search for
MINNIEand then give it a lot of time to go through all of the recovery images. It will not show you any feedback. Just wait. Then enter the numbers for the options through the rest of the process.
Be sure you select the right USB drive. This utility will overwrite whatever drive you select and you could lose data if you choose the wrong device.
Once the recovery image is written to the USB drive, plug it into the Chromebook and let it run the recovery.
- - - - -
Did you like this post? Give it an upvote by clicking on the arrows below! Sending me an upvote is like you and I giving each other a high five.
🙏 😎
Thank you for reading! If you would like to comment on this post you can start a conversation on the Fediverse. Message me on Mastodon at @cinimodev@masto.ctms.me. Or, you may email me at blog.discourse904@8alias.com. This is an intentionally masked email address that will be forwarded to the correct inbox.If you enjoy the random stuff I write here, post to Mastodon, or watch on YouTube, and are feeling generous, I am open to tips of Ko-fi.