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.

Looking Back At My PC Handheld Timeline

Greetings! Feeling a bit nostalgic currently, so let’s take a look at the handhelds I’ve used over the years. I’ve always been a big fan of tiny PCs my whole life. While “smart”phones have been heralded as the best entry point into computing these days, I’ve always found more enjoyment with handheld x86/64 computers.

This journey started High School Seibz occasionally walking to the mall about a mile from his place of education. I used to go window-shop at the SonyStyle store, back when those were a thing in the late 2000s/early 2010s, to check out all the cool handheld PCs coming out of Japan.

Above, an image of the first one I ever had hands on in 2010 as well as the first one I acquired in 2013 from a summer job while in university. This was the Sony VAIO UX380N. I recall my IT boss at the time telling me I could have anything so long as prior storage was removed and I repaired it onsite so he could make sure I did a good job. I went ahead and upgraded the dead wifi card back then with a spare found in one of the ultralight laptops hanging around the IT office, then bought my own ZIF-connector-based 1.8” SSD to replace the tiny hard drive. After that, and a successful boot-up, it was mine.

More info on this project is available on my page here.

While more information is available on my project page, I’d also like to note that the version of XFCE that shipped with Ubuntu 18.04 at the time was quite capable for older hardware!

It wasn’t until many years later in late 2019/early 2020 that I was able to save up enough funds to afford another handheld PC. This was around the time I was working at Salesforce on contract in the Bay Area. Living in Oakland was nice, and it was even nicer that I had access to the Noisebridge hackerspace in San Francisco whenever something with some hardware went wrong. It was nice being able to just ask people across the Bay what could be fixed, as I needed to swap out the display housing at once point.

More information on this lovely little i5-powered early handheld PC is available on the first GPD project page.

Then, Valve did what I always wished for. They released a Linux first-party gaming handheld, specifically designed to be comfortable and incredibly accessible while gaming. The Steam Deck came out.

I received mine around August 2022 and used it daily pretty much up until the time that I received a GPD Win Mini with the Ryzen 7 and more power at the cost of battery life. The Steam Deck was and still is the only piece of hardware I recommend for new PC gamers coming from a console background, and for Linux enthusiasts that want a handheld developed with them in mind as well.

Want to just play games and not customize anything? That’s fine! Just sign in using the Steam app with a QR code and start installing games! Want to customize the hell out of the interface, install other Linux distros or whatever else you want? That’s fine too! There are tons of Youtube videos on how to customize the Steam Deck using Decky Loader, CryoUtilities and more like this one from Hi-Tech Lo-Life or this one about Desktop mode.

This guy was running a customized-by-Valve distro of Arch out of the gate. The upside to this and their custom Gamescope environment, is that it takes far far less resources to run Steam games than it otherwise would with Windows running in the background. What a wonderful time this gave me.

I thoroughly enjoyed the various lower-power games on the Deck. While it’s max power usage was usually 15W or 20W if I was really pushing it, I tended to mainly go through my backlog of games such as Core Keeper, Fall Guys, Slay The Spire, Risk of Rain Returns and onwards on there. I also did a lot of working on my Deck script (that I need to finish eventually) with getting Nix packages installed along with Flatpaks, and CryoUtilities preinstalled etc. It seems some in the community appreciate that.

At one point, I ordered an Anbernic Win600 low-powered handheld PC to see what it would be like as a testbed for ChimeraOS on another Windows-first-party handheld. I detail my time with this more in a previous blog post here, however know that it was a tad underpowered for the Amazon price it was listed at at the time ($320).

I ended up giving this to my friend Nate who wanted to try out a similar form factor to the Deck before debating getting one. What a nice lad.

Next up we have a rare Japanese-market Nanote P8 that was designed for note-taking and to serve as a little palmtop for students. I was gifted this at some point either at the beginning or end of 2023 from a friend that brought it back when he came back from Japan for his wedding... or to visit the in-laws? It’s quite the low powered fanless Pentium-based guy with an optical trackpoint for mouse navigation and QUITE the cramped keyboard!

This originally shipped with Windows 10 for some UNGODLY reason, as it could barely function on the soldered 8GB of slower RAM and 64GB eMMC soldered drive. I ended up wiping that off, adding a 512gb MicroSD card and did a custom Arch Linux install split between the eMMC for booting/OS and the MicroSD card for the home folder.

I also tested various Ubuntu distros on here with lighter desktop environments, but Arch ultimately won over due to how lightweight it was. I love seeing interesting little handhelds come out of Japan!

Above is a more recent picture of the Nanote, docked at the current “workbench” area of my condo. I ended up going with a bulletproof Fedora KDE install on there instead of Arch, as I knew I wasn’t going to be staying on top of updates for this device in the long run. As slow as that Pentium is, it somehow handles KDE fine these days!

As I have with all other devices I’ve owned on this blog post, I added the specs for this to my Hardware Setup timeline page here.

Enter 2023 and my era of owning the GPD Win Mini. Towards the end of the year, my preorder for the Ryzen 7 7840U + 32GB Ram + 1TB NVMe model came. I ended up swapping the NVMe it came with that ran Windows 11 with a faster NVMe, so I could keep the original image safe as well as have a dedicated fresh drive to boot Linux from.

My testing originally started out with Nobara Linux and then ChimeraOS, to see how things were running. I originally posted info about testing those distros in this Github issue here. What a fun little handheld this is! It’s around the size of a Nintendo 3DS if not smaller from certain angles. This guy ran almost any game I threw at it, but most higher-power games at the expense of battery life for sure.

While more information is available about this GPD Win Mini on the dedicated project page, I went from ChimeraOS over to Arch Linux KDE more recently, as this thing could serve quite well as an everything machine on the go. Open Steam Big Picture to feel like the Deck when gaming, then switch the input from controller to mouse and keyboard when working on documents or streaming media.

I quite fancy this little guy.

With that said, I hope you enjoyed this blog post. Below are a few videos and projects I’ve been taking a look at recently:

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.

Fable III on Steam Deck, and the Framework 13 AMD board

Greetings, all! It’s been a while. Recently, I’ve done some tweaking and tinkering to get the good old Fable 3 game from the early 2000s running fine on the Steam Deck. I’ve also gone ahead and upgraded my OG Framework 13 to the recent AMD 7840U board.

I don’t have too many photos of the motherboard replacement process for the FW13 board replacement, but needless to say, it took only about 4-5 minutes and the tool that they shipped with the laptop was all I used. What a wonderful experience!

Ended up having to get new DDR5 RAM for the Ryzen 7 7840U board, as it doesn’t take DDR4. Now, the only issue after updating the BIOS to 3.03 is that only one of my sticks is being seen. Am currently testing things and sorting that out with Framework’s support staff. Also need to replace this warranty-replacement screen, as it’s pretty bad. That will all get sorted in due time, though! Onwards to the other projects I’ve been working on.

With GloriousEggroll’s recent GE-Proton8-24 release, he’s made a few protontricks edits. While I’m not much of a coder myself, he figured out how to streamline the changes I and a few others made in the Steam Discussions tab for Fable 3. I went ahead and reinstalled the game using his recent Proton GE release to see if the game would start up.

Looks like, as per previous attempts, it gets stuck here even with the protontricks enabled.

I forgot if that protontricks change grabbed certain DLLs that were required, according to the community, to get this to work. I went ahead and opened up the protontricks application to grab those, but it looks like it still sticks at the install script part. I might need to replace that basic xlive.dll with one mentioned in an article, so let’s go try that.

Next, I went ahead and downloaded this file linked here as a Games For Windows Live DLL replacement that doesn’t seem to get added into the game directory by default when using GE-Proton nor Valve’s official Proton releases for some reason. I downloaded the zip file, extracted it in my Downloads folder and then moved the file to this directory where the local Fable 3 files are: /home/gamer/.local/share/Steam/steamapps/common/Fable 3. Please note that it will be /home/deck/ for those of you currently on a Steam Deck. Note that I’m doing this on my Steam Machine ChimeraOS box in the living room, as this is the only machine I don’t have Fable 3 currently installed on.

BAM it works! Looks like you mainly need to replace that xlive.dll file to redirect the game to a local activation server or something and it’ll work fine! I’m not entirely sure if you need to do the protontricks thing, I think it’s mainly the xlive.dll holding us back.

Also, I’d like to note that this game saves game data to this directory on the Steam Deck, once you’ve opened it and started the game for the first time:

/home/deck/.local/share/Steam/steamapps/compatdata/105400/pfx/drive_c/users/steamuser/Saved Games/Lionhead Studios/Fable 3

I went ahead and started a new game. Having messed up my syncthing configuration, it appears the 10 hours or so that I previously put into the campaign had disappeared. This game is so old and defunct that it doesn’t support Steam Cloud Saves, so you’ll have to come up with your own save-syncing solution. As sad as it is, I did it to myself, so I only have myself to blame. Onwards to a new campaign! Definitely going to sync this with the Framework as well, so I can play it on that too.

In other news, here are some articles and videos I’ve watched recently that I found interesting: