Now here’s a surprise:
Linux users surpass macOS users on SO survey responses.
Windows still trumps both, though.
https://survey.stackoverflow.co/2022/#section-most-popular-technologies-operating-system

Now here’s a surprise:
Linux users surpass macOS users on SO survey responses.
Windows still trumps both, though.
https://survey.stackoverflow.co/2022/#section-most-popular-technologies-operating-system
Finally found a way to do the install on Wine on Fedora — and that’s using Lutris. Lutris lets you install Windows games onto Linux and allows you to script the setup of the game environment to fit the game itself.
So I used it to download the WeChat binary, setup the environment (which involved downloading fonts via winetricks) and adding a registry hack. That seems to work now. Have added it to my app-installs playbook on Gitlab (https://gitlab.com/blenderfox/pixelbook-fedora-setup)
It’s not fully automated, it does still require you to run through the setup manually, and then quit both the WeChat application (so Lutris sees that the setup has exited) and Lutris before the playbook proceeds.
This slightly lengthy article goes through my attempts at installing and setting up Fedora on my Pixelbook.
I previously had Ubuntu on there, modified and hacked using https://github.com/yusefnapora/pixelbook-linux.
However, as Ubuntu progressed on, it was clear this repo was not being maintained and updated and rapidly, stuff starting to fail as it required later versions of packages. Even the kernel was still on 4.4.x even now. I spent a long time trying to compile the kernel while trying to figure out the right options for a working kernel, with not much luck.
Putting in things like the “old-releases” repos helped keep things ticking over, but things were still breaking repeatedly, and the microphone kept breaking during calls due to the way the hacks were implemented.
The final straw came when the office decided to buy Apple M1 Macs for the developers (I refused to use one. My hate-hate relationship with Apple is well documented)
The decision to use M1 macs has now led to a problem whereby the docker images that are used are no longer compatible with the macbooks since they are arm64. The macs can use qemu emulation, but that is not perfect, giving weird errors when running the docker images under emulation. Leaving it to me, who is still using an amd64 machine to try to figure out multiarchtecture builds.
I was (and still am) reluctant to do the multiarch builds. Using multiarch builds would mean the devs are running a docker image that is not the same as that which is running on the test and production clusters and that in itself, means they are not developing on, or testing on an infrastructure that is representative of the test or production environments.
If the infrastructures were arm-based environments, sure, then that would be representative then, but not as it stands.
In fact, right now, if the developers build the docker image locally to test something, then pushed that to production, they would break production, as it runs on amd64 images.
I don’t think this was thought through carefully enough, to be honest.
But enough of the rant. We are where we are, and I need to try to bail out the situation.
My hacked Ubuntu would not support multiarch build no matter what I tried, but when I tried to use Fedora in a Qemu VM (virtualbox also wouldn’t work, since the virtualbox installer compiles kernel modules and that always failed with the custom kernel used by the hacked Ubuntu installation.)
So I decided to try to wipe the Ubuntu installation and start again from scratch, with Fedora.
Fedora 35 was the version I ended up using, and the latest at the time I started this activity.
Out of the box, it had native support for the touchpad, including two and three-finger scrolling via Unity 41. Two-finger scroll scrolls the active window. Three-finger scrolling up gives the window overview, and three-finger scrolling left or right switches workspaces.
Fedora by default uses btrfs. CloneZilla didn’t seem to play well with that so had to start again, but perhaps it was due to the MyChromebox BIOS being too old. Upgraded and that seemed to work better.
After CloneZilla’ing the initial install so I could rollback to that if everything fell over, I started setting up the installation.
First thing I did is visudo
‘ed myself into the sudoers
file, with a NOPASSWD param for passwordless sudo
Next I ran dnf update
to update packages. There was about 1G of data to update and install.
Then I ran a CloneZilla to backup the laptop state at this point.
From this point, I started setting up the laptop. I found this repo on GitHub where the owner created a setup for Pixelbook https://github.com/jmontleon/pixelbook-fedora — similar to the one I used for setting up Ubuntu on the Pixelbook. The repo owner also appears to have compiled his own version of the kernel and has his own COPR repository.
After spending a week tinkering with the instructions and getting some bugs ironed out, audio finally worked.
I built an Ansible playbook to help with the instructions running. This was adapted and incorporated into the repo.
With audio now working, I CloneZilla’ed the laptop state again, to have a good state to rollback to.
I then copied my file backup from my external USB into the laptop and then CloneZilla’ed the state again
With the files copied, now it was time to get the apps installed. I built another Ansible playbook to help speed things up and it’s located here https://gitlab.com/blenderfox/pixelbook-fedora-setup/
The repo contains two playbooks one for doing the audio (it’s essentially the same one in the jmontleon repo) and the second for app installs.
Summary of apps I installed initially:
module ‘collections’ has no attribute ‘Mapping’
. Followed this: https://gehrcke.de/2021/11/gcloud-on-python-3-10-module-collections-has-no-attribute-mapping/
to fix. Had to make sure to put the export line in ~/.bash_profilednf install gnome-extensions-app
— can also use the flatpak instead)sudo dnf install qemu-user-static
then docker build ls
to check available platforms on the builder. Docker ships with buildx https://github.com/docker/buildx#working-with-builder-instances on later version. dnf install openconnect
sudo systemctl restart snapd.seeded.service
Yes, that’s right, another place plans to ditch Microsoft and go to Linux and OpenOffice
Just a quick note to remind myself outhow to resize logical and physical LVM volumes
lvm vgchange -ay
lvm lvresize --size -100G /dev/vg/root -r --verbose
pvresize --setphysicalvolumesize {size of pv minus {size toreduce}}G /dev/path/to/pv
lvm pvs -v --segments /dev/sda5
to get position ids:
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g 0 xxx root 0 linear /dev/sda:0-xxx
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g xxx nnn 0 free
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g yyy zzz swap 0 linear /dev/sda5:yyy-zzz
lvm pvmove --alloc anywhere /dev/sda5:yyy-zzz
pvs -v --segments /dev/sda5
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g 0 xxx root 0 linear /dev/sda:0-xxx
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g xxx nnn swap 0 linear /dev/sda5:xxx-yyy(-1)
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g yyy zzz 0 free
pvresize --setphysicalvolumesize {size of pv minus {size toreduce}}G /dev/path/to/pv
LineageOS has now gone to Android 11, and like most users, I went ahead and upgraded to it. But then I started hitting lots of problems. Predominantly on location.
Android 11 changed the way location is requested and this breaks functionality in multiple apps. Ones I have noticed this issue with:
Other location apps may have also had the same issue, but I didn’t check those.
Waze did not have any issues locking on to location or tracking movement
Some non-location apps also broke. Fenix 2 (a Twitter client) and WeChat both stopped working and would not install off the Play Store, presumeably because of API differences.
I installed Plume instead (which I had previously purchased) and that installed and functioned happily.
WeChat I sideloaded by getting the apk from a mirror. That functioned okay, but could not log into Web WeChat
I decided to clean wipe and downgrade back to Android 10 (Lineage OS 17) to at least get things working again.
I formatted my SD card for Portable Storage, then took it to my laptop and saved the LOS flash zip, Open Gapps zip, and the latest Magisk.
I booted into TWRP Recovery and wiped, data, cache, system, ART and internal storage.
Switching to external storage, I then flashed LOS, OpenGapps, then Magisk.
I rebooted and let the OS do its thing until I got the welcome screen — that’s a good sign. I went through the setup but opted not to setup my Google Account yet.
Once through to the home page, I went and unlocked Developer options and enabled ADB, Local Terminal, Force Allow External Storage, and Force Close on Hold Back.
Then I plugged my phone into my pixelbook, allowed the debug connection and started up scrcpy
which allows me to copy-paste text to and from the device.
I installed TitaniumBackup and the pro key so I can batch move apps to/from the storage.
The SD Card is still setup as Portable. So I formatted it as Internal. This took a few attempts as it kept erroring.
I went into Play Store and installed a few apps. A couple installed file, but the other errorred with a message:
"App requires external storage"
This was weird, I never saw that before, but checking around, I found this: https://forum.xda-developers.com/t/app-requires-external-storage.4098673/ which describes fixing the storage permissions. I ran this:
adb shell
su
restorecon -FR /data/media/0
I reinstalled the apps again, and there were no errors. Fenix 2 installed happily this time, enhancing my suspicion of some API change breaking it on Android 11.
Also found out that Strava required Google Maps so I also had to install Google Maps.
WeChat finally did install, but was then told by the app that my account cannot use Web WeChat, and I should use WeChat for Windows or Mac….. and I’m running Linux, so both of those options are not feasible.
However, I did find this: https://github.com/qo6xup6/ubuntu-deepin-wechat which is a Wine wrapper around the Windows WeChat app. This seems to work well, although I did have to update the client using the instructions on the README.md
FitBit refused to pair with my Ionic (again — it always seems to have this trouble whenever I have to reinstall the app). I eventually resorted to factory resetting my Ionic, and re-setting it up again. It worked this time, although the pairing took a few attempts.
Surprisingly, I was then able to add my Curve card to FitBit Pay, and the SMS verification worked.
All in all, it took me from around 7am to 12:30 pm to reflash, reinstall, and setup all the apps again, and reboot to make sure the apps still worked. So around 5 hours.
Spent a big chunk of today preparing for, and attempting to upgrade my Pixelbook to Gallium OS.
I imaged it, then made a file backup of my home directory, before installing the OS, overwriting my Ubuntu, then restoring the home directory backup into the newly installed OS and then chown
ing the directory to me.
As a habit, I then imaged the laptop at this state.
I prepared a semi-automated script to install apps that I had installed on my Ubuntu, which included things like virt-manager
, virtualbox
, google-chrome
and the like.
However, I soon found out that VirtualBox 6.1 seems to crash the mouse driver on reboot and the mouse pointer no longer moves and Gallium doesn’t even seem to see a pointer device when you check the mouse and touchpad option. I had to revert back to the image just after the file copy.
There is always the option of installing VirtualBox 6.0 from the Ubuntu repositories rather than the Oracle repositories, which uses a different installation setup. Maybe that will result in a different outcome.
Eventually, I restored back to my original Ubuntu installation so I can retry again tomorrow.
EDIT: Retried again the next day, and found out the sound wasn’t working, even on the live disk. Better find out what’s the deal with that…
EDIT2: Found out that my Pixelbook model doesn’t have working sound drivers on GalliumOS. I guess I will have to wait until that is fixed before using that. I guess I’m staying on Ubuntu. In the meantime, I’m going to see if I can compile a later version of the kernel to see if I can somehow get VirtualBox working better.
After using my Pixelbook Eve on Ubuntu Eoan (19.10), my Ubuntu has started notifying me for an upgrade to 20.04 LTS. So, based on my past experiences of Ubuntu upgrades and how they always break things, I went through the process of backing up my files and making a Clonezilla image of my Pixelbook before even starting to do anything.
Then I went through the upgrade. It went through without any problems, but when it went to reboot afterwards, I was black screened after the Ubuntu splash screen.
I suspect it’s because my Pixelbook contains some tweaks via this GitHub repo, and that is still using a 4.x kernel. Last update was in 2019, so maybe it’s out of date.
Before restoring my old image back on, I installed GalliumOS which is an Ubuntu-based distro specifically aimed at ChromeOS devices. Then made a backup image of that before restoring the old image back on.
I might try installing Ubuntu 20.04 from clean and see if that has any better Pixelbook support than the older versions of Ubuntu, and make it so I don’t need to use the hacks. Bear in mind the hacks used the ChromeOS kernel, and I couldn’t do some things like use ufw
or gufw
. Using GalliumOS should fix that since I wouldn’t be using tweaks.
However, there’s still an annoying quirk GalliumOS has on my Pixelbook and that’s the jumpiness of the mouse pointer — touch the touchpad and the pointer jumps to that part of the screen, as if the touchpad was a representation of the screen, not a touchpad. It’s a quirk that can be gotten used to, but it is still annoying.
I’ve been getting horrendously slow speeds on Linux Steam (~500k/s) and 5-6Mb/s on Windows, and only now found out why. There’s a ticket on GitHub for this:
https://github.com/ValveSoftware/steam-for-linux/issues/3401
In short, the client is very aggressive on its DNS requests, which normally causes it to be throttled by servers, leading to really slow downloads. However, using dnsmasq
allows the requests to be cached locally and offload the requests.
Even though the instructions are for Arch, they worked for me:
dnsmasq
/etc/dnsmasq.config
and add the line listen-address=127.0.0.1
dnsmasq
service (systemctl restart dnsmasq.service
) or reboot your machineEnjoy the speed
So I haven’t been posting here much recently so here are some updates.
Been slowing trying to get back into running, have been slacking off WAAAAY too much lately. Tried using Aaptiv (@aaptiv) which is a training fitness app that has trainers talking you through the stuff, there are a few problems with it.
On a separate note, I have bought another attempt at the CKA exam, but this time bought the bundle with the Kubernetes Fundamentals Training from Linux Foundation. Let’s see how different that is to Linux Academy’s training….
You must be logged in to post a comment.