First Attempt of Alpine Linux on a Tegra K1 Chromebook (HP Nyan Blaze)

Hi there again! Here’s to another seemingly-one-off project.

While I’ve been getting quite a lot of traffic on my Linux on Nintendo Switch page recently, I’m sorry to say that my Nintendo Switch died and was harvested for parts by an e-recycler for fixing other switches (minus the bad RAM chips) so I won’t be able to work on that project again unless someone donated a 2017 Nintendo Switch for me to firmware mod or a Switch Lite for me to hardware mod.

That said, a neighbor recently gave me an HP Chromebook 14 also known amongst the Chromebook/Chrultrabook modding scene as nyan-blaze. This chromebook appears to have a physical write protect screw, which are fairly easy to undo, instead of a battery write protect method, so getting into developer mode and installing things shouldn’t be too difficult. The hard part comes when I want to install another distro.

So far it seems NVIDIA Tegra K1 chip support amongst ARM Linux distros is fairly limited. With that in mind, and seeing that the volunteeer postmarketOS community may have worked with this in the past, I’ll go ahead and try running that from a MicroSD card on this system.

Now it looks like the battery on this system my be dead or the cable may be shorted, as it seems to turn off immediately when unplugged. I may have to open it back up and check the battery, but first let’s try running through building and installing a postmarketOS image to a MicroSD card to chuck in here.

[12:39:39] EVERYTHING ON /dev/sdb WILL BE ERASED! CONTINUE? (y/n) [n]: y
(029929) [12:39:41] (native) calculate depends of cgpt (pmbootstrap -v for details)
(029929) [12:39:41] (native) install cgpt
(029929) [12:39:41] % sudo rm -f /home/s31bz/Documents/nyan-blaze/chroot_native/tmp/apk_progress_fifo
(029929) [12:39:41] % sudo mkfifo /home/s31bz/Documents/nyan-blaze/chroot_native/tmp/apk_progress_fifo
(029929) [12:39:41] (native) % cat /tmp/apk_progress_fifo
(029929) [12:39:41] (native) % sh -c exec 3>/tmp/apk_progress_fifo; apk --no-progress --progress-fd 3 add cgpt --no-interactive
(029929) [12:39:41] New background process: pid=36458, output=background
WARNING: opening /mnt/pmbootstrap/packages: No such file or directory
(1/1) Installing cgpt (6310032-r8)
Executing busybox-1.36.1-r25.trigger
OK: 23 MiB in 71 packages
(029929) [12:39:42] (native) partition /dev/install (boot: 256M, reserved: 0M, root: the rest)
(029929) [12:39:42] (native) % blockdev --getsz /dev/install
1048576000
(029929) [12:39:42] (native) % parted -s /dev/install mktable gpt
(029929) [12:39:42] (native) % cgpt create /dev/install
(029929) [12:39:43] (native) % cgpt add -i 1 -t kernel -b 8192 -s 32768 -l pmOS_kernel -S 1 -T 5 -P 10 /dev/install
(029929) [12:39:43] (native) % cgpt add -i 2 -t efi -b 40960 -s 524288 -l pmOS_boot /dev/install
(029929) [12:39:43] (native) % cgpt add -i 3 -t data -b 565248 -s 1048010719 -l pmOS_root /dev/install
WARNING: One of the GPT headers/entries is invalid

ERROR: please run 'cgpt repair' before adding anything.
(029929) [12:39:43] (native) % partx -a /dev/install
partx: /dev/install: error adding partitions 1-2
(029929) [12:39:43] % sudo touch /home/s31bz/Documents/nyan-blaze/chroot_native/dev/installp2
(029929) [12:39:43] % sudo mount --bind /dev/sdb2 /home/s31bz/Documents/nyan-blaze/chroot_native/dev/installp2
(029929) [12:39:43] % sudo touch /home/s31bz/Documents/nyan-blaze/chroot_native/dev/installp3
(029929) [12:39:43] % sudo mount --bind /dev/sdb3 /home/s31bz/Documents/nyan-blaze/chroot_native/dev/installp3
mount: /home/s31bz/Documents/nyan-blaze/chroot_native/dev/installp3: special device /dev/sdb3 does not exist.
       dmesg(1) may have more information after failed mount system call.
(029929) [12:39:43] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
(029929) [12:39:43] NOTE: The failed command's output is above the ^^^ line in the log file: /home/s31bz/Documents/nyan-blaze/log.txt
(029929) [12:39:43] ERROR: Command failed (exit code 32): % sudo mount --bind /dev/sdb3 /home/s31bz/Documents/nyan-blaze/chroot_native/dev/installp3
(029929) [12:39:43] See also: <https://postmarketos.org/troubleshooting>
(029929) [12:39:43] Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/pmb/__init__.py", line 63, in main
    getattr(frontend, args.action)(args)
  File "/usr/lib/python3.12/site-packages/pmb/helpers/frontend.py", line 329, in install
    pmb.install.install(args)
  File "/usr/lib/python3.12/site-packages/pmb/install/_install.py", line 1295, in install
    install_system_image(args, 0, f"rootfs_", step, steps,
  File "/usr/lib/python3.12/site-packages/pmb/install/_install.py", line 836, in install_system_image
    pmb.install.partitions_mount(args, layout, disk)
  File "/usr/lib/python3.12/site-packages/pmb/install/partition.py", line 52, in partitions_mount
    pmb.helpers.mount.bind_file(args, source, target)
  File "/usr/lib/python3.12/site-packages/pmb/helpers/mount.py", line 72, in bind_file
    pmb.helpers.run.root(args, ["mount", "--bind", source,
  File "/usr/lib/python3.12/site-packages/pmb/helpers/run.py", line 52, in root
    return user(args, cmd, working_dir, output, output_return, check, env,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/pmb/helpers/run.py", line 30, in user
    return pmb.helpers.run_core.core(args, msg, cmd, working_dir, output,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/pmb/helpers/run_core.py", line 403, in core
    check_return_code(args, code, log_message)
  File "/usr/lib/python3.12/site-packages/pmb/helpers/run_core.py", line 251, in check_return_code
    raise RuntimeError(f"Command failed (exit code ): " +
RuntimeError: Command failed (exit code 32): % sudo mount --bind /dev/sdb3 /home/s31bz/Documents/nyan-blaze/chroot_native/dev/installp3

From the looks of things, it seems the postmarketOS python script may be having issues with the installed python packages as well as some other issues that I haven’t troubleshot before.

Hmm, I wonder if it’s the aspects of Python on this oddball Nobara 39 install? Perhaps I’ll go give it a try on my pure Fedora 40 install that runs on my Framework. After rebooting the Nobara desktop (after running updates) it seems it’s still failing, and I’m a bit too lazy to dig in deep and see what could be wrong on this install.

While waiting for the process of installing to a new microsd card after fully updating the Fedora 40 Framework 13 (7840U, 48gb ram) I went ahead and unscrewed all the screws that clamp the keyboard deck and bottom half together.

Looks like someone was in here previously! An electrical-taped battery connector doesn’t seem like a safe sight to behold, but that could also explain why it seems this guy doesn’t have a functioning battery. As I got this system for free, and it’s quite flimsy, I’m not about to invest any amount of money in replacing the battery etc, so I’ll just repaste the ARM CPU for now and take out that bottom-right write protect screw.

Now that I’ve removed the write protect screw, let’s see if we can finally install postmarketOS edge to this chromebook, per the instructions on the postmarketOS site.

Sadly, it looks to be that even after updating pmbootstrap and trying to install to an sdcard again on the Fedora 40 laptop, it’s a failure, possibly stemming from more python issues.

Arch Linux on the HP "DRAGONAIR" Chromebook x360 14c

Greetings again! Back in the new year with another cheap Chromebook I’ve “Chrultrabook’d” so to speak. Got rid of ChromeOS and the Google bootloader, then installed Arch Linux the easy way on this guy.

Having already gone through the removal of write protect documented here and having already installed the latest firmware from MrChromebox per his script, I’ve reconnected the battery and run through the “archinstall” install script for Arch Linux.

As I’m apparently not able to install the “asciinema” package during the “archinstall” script’s installation procedure due to some python errors, I’ll share this short recording of the initial part of the automated install process. Yes, call me lazy for using “archinstall” but it sure beats the hell out of constantly triple-checking whether I’ve gone through the same steps over and over. I’m a Fedora user at heart, but I’ll be testing some packages from the AUR on this converted ultrabook on and off.

Shame about the eMMC being there and not having a populated NVMe slot on this HP “DRAGONAIR” board though, otherwise I’d throw one of my spare tester NVMe drives in.

Next, I went ahead and ran through the automated scripts to enable proper keyboard button mapping, and to make sure Audio was functioning properly, then rebooted.

After that, I made sure to install the rua (linked) AUR helper to install packages through a safe Rust interface from the AUR. Two such packages I’m interested in are the Jottacloud backup utility and Tailscale…..however Tailscale is an official Arch package now apparently.

Last thing I did was gather some of the aforementioned packages as well as BIOS/mainboard info for others that are looking to turn this Chromebook into a Linux-native ultrabook.

hp dragonair with arch linux

Fedora 39 Linux on the Lenovo C13 Yoga Chromebook

Greetings!

Previously, I tried a project called depthboot- which has since become defunct- to get my Chromebook I grabbed for work back in 2021 running Linux. Depthboot was interesting as it enabled you to custom-build images of various Linux distros to run on a Chromebook without any real tinkering with the coreboot BIOS needed.

There seemed to have been a falling-out amongst various developers in that project, and my focus went elsewhere. Fast forward to the end of this year, and I found the amazing group of individuals behind the Chrultrabook project!

My first step was to head over to their incredibly-well-documented guide here on how to free your Chromebook from Google’s clutches.

I unscrewed the back panel of my C13 Yoga to carefully disconnect the battery and repaste the now-two-year-old CPU to give it a cool new lease on life. I ended up becoming so engrossed in getting this to work that I didn’t end up taking many pictures- sorry for that!

The full story of my adventure is here on this Chrultrabook forum post as I figured out how to get the battery unplugged properly, run through the steps to enable developer mode, and then use the supplied script from MrChromebox to flash the “UEFI Full ROM” replacement Coreboot firmware to my C13 Yoga. It was running Google’s stock coreboot fork that only allowed for ChromeOS/ChromiumOS signed images at the time, and this would be quite more freeing.

Per the recording above, I’m now on Fedora 39 with the Cinnamon DE. I used the easy Fedora Media Writer from my desktop on Nobara to create a bog-standard F39 Cinnamon installer. After creating that installer, I waited for the system to start up, and then hit Esc at the coreboot boot screen to boot from the USB and continue the installation like you would on any other machine. Soon, I’ll try testing out Ubuntu on there too, and possibly use it to get an older Pixel phone of mine running GrapheneOS.

The Depthboot Project

New blog post, but this might be a short one. No updates on the job front, but a friend has tipped me off to a project that may finally get a full Linux distro booting on my Thinkpad C13 Yoga Chromebook that I purchased back at the beginning of 2021.

Perhaps I haven’t done enough research into getting it to run, but I haven’t previously been able to get any full Linux distro booting as the main OS on this thing. Perhaps it’s because of the odd AMD Ryzen 5 3500C SoC processor, perhaps it’s due to some hackery that Google has done regarding the booting firmware for AMD processors on Chromebooks in general. Either way, I was unable to get anything booted other than ChromeOS or Linux via an LXC container previously.

Below, I’ll run through a recording of what you need to do, according to the Eupnea Project’s instructions here, to get a bootable install of Linux running from a flash drive on your target Chromebook of choice. The Depthboot Project is an effort from the Eupnea Project’s community to get proper bootable Linux distros installed on Chromebooks without modifying the system’s firmware or hardware. Their scripts build a full bootable install of one of the available distros, utilizing Depthboot and the ChromeOS kernel or Mainline kernel depending on your choices.

For my C13 Yoga Chromebook, I found that only the ChromeOS kernel boots properly on this machine...so far. We’ll explore more later in this post. There are some occasional graphical glitches, and suspend is non-functional, but everything else works perfectly with this installed!

Below I’ll add a screenshot of my currently-installed Fedora KDE w/ChromeOS-kernel image on the system. Now I’ll get that Cinnamon install running the more recent mainline kernel booted and do another recording of the terminal in there on how I install it to the disk.

I then went ahead and setup audio while booting to the Fedora-38-with-Cinnamon-and-Mainline USB that I had built. I also went ahead and ran the install-to-disk script that the Eupnea project had added to image the drive with the current install I was booting from…but it seems asciinema corrupted that recording. So here’s the audio setup recording.

After I had the Thinkpad C13’s audio working fine from that script, and ran the install to drive script, I tried restarting the system from the terminal, but it seemed to hang on the screen that says “system rebooting NOW!” for at least five minutes. I hard powered it off, removed the USB and powered it back on. Things look to be working better now.

Next, I went ahead and installed Steam, Discord, Protonup-QT, my Mullvad VPN etc and took a screenshot :)

While it seems suspend still isn’t working properly on this fresh DE and mainline Kernel in this install, the audio is working fine and I don’t see nearly as many graphical glitches as on the ChromeOS-kernel install. Thanks again, Jade, for recommending them!

Giving ChromeOS an Honest Try

Hello there again! Long time no see!

Recently, I’ve been getting to using ChromeOS a bit more, with the Thinkpad C13 Yoga that was on sale recently in the USA.

My little ChromeOS desktop

My little ChromeOS desktop

So far, I’ve used this for a few use cases:

  • Blogging, as you see here

  • My job, customer support- mainly firefox and chrome with some VSCode in between

  • GeForce Now gaming

  • Casting videos to our various “smart” sticks in my family’s TVs

Some of the “workspace” functionality I usually see in my various Linux flavors is even here too! Well, I guess that should make sense, considering ChromeOS is technically based on Gentoo with some Google flair and design language thrown in.

The Linux container experience with Debian is definitely adequate for most developers’ needs it appears. A friend of mine who worked at Google for a short stint once mentioned “A Chromebook should be as simple as possible, while having the tools a web developer may need” and I can definitely see that here. Tons of partitions for updating on reboot, kind of like the frzr idea, and keeping the Debian instance in its own container…while also allowing you to see your Linux apps as icons in the launcher alongside everything else.

Now, onto the use cases in more depth!

Having edited this blog post, turned Medium article, on the Chromebook, everything is smooth as butter. When I receive a new machine, or have a machine that I’ve refurbished, I usually end up going through the quick process that is installing Fedora or Pop!_OS on it. However, running my bash script to set things up the way I like usually takes a while afterwards.

Not the case on ChromeOS. You sign in to your separate work and personal emails, and just get stuff done. Here I show myself doing some web browsing, editing this blog post and checking out the new Framework laptop, with fully modular components. This Thinkpad C13 Yoga breezes past it all.

For my work, now at System76, I’m mainly on my work-provided Gazelle getting things done. I would say I probably use this Chromebook two days a week for work, due to various time-sensitive things needing a full Linux experience. When I am on the Chromebook though, I’m answering calls through our dedicated call app, typing up notes in VSCodium and testing various packages in the Debian VM.

Outside of having a few web browser tabs open, a terminal and a text editor, I don’t need much else for my job. Having access to the Android app for our calling system is nice, for sure. That way I can have a dedicated device for it. I need the computing power to compile Linux kernels from time to time, but other than that I mostly live in the browser. Need I mention the keyboard? I’ve been spoiled by Thinkpads for most of my young adult, and now maturing adult life. I can type up to 100wpm on this bad boy.

Consuming media. We all do it, on various devices we own. I like that this is a 2-in-1 style laptop, so I can just fold it when I want to use it as a “director” of sorts for Youtube video playlists on the TV in our living room.
Want to have a music session? Easily cast various Soundcloud songs/Youtube videos to the television and sound system my family owns.

Not much more to say here, everything just works!

Something else I’ve been using this Chromebook for, is for testing various cloud gaming and streaming services.

I own a lot of games on Steam, but mainly play games on Linux- more info about that in a prior post. I’ve been testing GeForce Now game streaming for a month or two. When all I have is this Chromebook, I just plug my wired Xbox 360 controller into it, and jump into a Rocket League or No Man’s Sky session.

Games such as Destiny 2 or others that have had issues running on Linux either due to developers who do not support Linux or some sort of anti-cheat software incompatibility, I’ll play via this method…and in my testing, they run fine! Our home internet is fairly quick at around 100mb/s down and 40mb/up, and my work-from-home friends that I visit occasionally also have fairly quick internet, so game streaming wasn’t an issue there either. One thing to be careful with is if you’re streaming something like Rocket League from your phone, though, as that latency could potentially result in a lost match.

I have tried a Bluetooth 8bitdo Pro controller, but had issues using it with Moonlight or GeForce Now on my C13 Yoga. It appears that GeForce Now is very picky about what bluetooth controllers they’ll accept, so I mainly have been sticking to my USB Xbox 360 controller.

Those are my short thoughts on the use cases I’ve been testing out ChromeOS for recently, feel free to let me know your thoughts!