Major Chromebook fails

Some years ago, work lent me a Chromebook to do video meetings and such with. It's mostly done that fairly well.

But I not infrequently want to screen-share something. And, of course, the Chromebook has no way to access to my desktop screen. (Nor would I give it any; I trust Google about as far as I can throw them.) It does support a Linux VM, though, and it turns out that the Linux VM has effective access to an X server that displays rootless on the Chromebook display. So I cobbled together a basic VPN (basically, Ethernet-over-TCP with some encryption) to get direct access to the VM, which is normally walled away behind NAT villainy, and, since the X server (as has become depressingly usual recently) doesn't listen on TCP and I don't seem to have access to enough configuration to change that, wrote a forwarder program to accept TCP connections and forward them on to the AF_LOCAL listening point the X server does have. Then I'd run a terminal emulator on my desktop, displaying on the Chromebook's VM's X server, and share that window.

This all worked fine for...well over a year, probably more like two or three.

Then, about three days ago as I write this, I tried to start the VM only to have it fail, saying "Launching vmshell failed: Error starting crostini for terminal: 62 (NEED_UPDATE)". Without, of course, any indication of what it thinks needs updating or how to do the update.

The thing has been telling me for some time now that a so-called update has been available for the VM. I have not been installing it on `if it ain't broken, don't fix it' grounds, and it was telling me it would push me from Debian 10 to Debian 11 (and who knows what that would break). And my experience with Linux at work has been that their idea of an upgrade is usually my idea of a downgrade, breaking useful functionality. Apparently the Chromebook people decided that when they wanted my opinion they'd give it to me, thinking they know better than I do how I want my system run. (Well, "my"; it's really work's. But work hasn't been doing anything active to manage it as far as I can tell.) Presumably this is the update it thinks it needs, but I was at a loss for how to apply it.

I decided to deinstall and reinstall; I expected the worst plausible consequence would be that I couldn't reinstall. That would end up with no usable VM for screensharing, but, with that error, I had no usable VM anyway. (I hate this kind of "fix" in general. But the alternative would be to debug the actual problem, which the Chromebook is locked down far too hard for me to do.)

Deinstall went fine, mirabile dictu. Reinstall said I had to upgrade the host OS. I told it to do that, figuring videochat was crippled enough without screensharing that this was the lower risk. Then it was willing to "upgrade" the VM.

Doing this lost me the contents of the VM. It had something that was supposed to copy the contents out of the VM, but (of course) it didn't work, and, being a Chromebook, couldn't be bothered to tell me anything useful about why not or how I could make it work. (This thing's idea of an error message is "Operation failed".) I found a .tar.bz2 I took, but, on inspection, it proved to be sadly lacking, having none of the VPN software or keys.

So I set out to recreate it.

This VM, which is documented as being for developers, proved to be lacking rudimentary tools like telnet or a C compiler. (How they could call something that crippled a developer tool with a straight face I have no idea.) Mercifully, apt-get install worked. I thrashed around a bit trying to figure out how to create tap interfaces, but with the help of the OFTC IRC channel (thank you, people!), I got that sorted out. (Apparently it's been too long since I had to deal with Linux's userland API to tap interfaces. Of course, this could all have been avoided if they'd just document their software, but actually shipping documentation seems to have fallen out of favour in recent years. These days, `documentation' seems to mean `what somebody on stackoverflow once said'.)

Then I installed the suite I've developed of tools to render a Linux machine at least minimally usable. In the process, I found the VM was missing numerous other things I would have expected from anything designed for developers. I had to install packages make(!), bison, ncurses-dev, flex, zlib1g-dev, valgrind, and probably a few others I've forgotten.

Then, when (re)writing the X forwarder program, I made some mistakes which meant I needed to debug it. I didn't have to apt-get install gdb, but I suspect this is true only because one of the other packages I installed brought it in itself (I recall seeing it mentioned).

Of course, being Linux, it has broken core dumps. (Every Linux I've tried to use in the last, oh, decade or so, has lied about core dumps. Processes that crash claim in their wait statuses to have dumped core, but there is no core dump to be found.) The more recent Linuces have also broken gdb's attach command, but have provided a file in /proc that can be written to back out that misfeature. Sure enough, the VM didn't let me use attach.

But it also wouldn't let me change it. Even a process running as root was not permitted to change the pseudo-file to make ptrace work properly.

And this is supposed to be a developer tool. *facepalm*

Falling back on other techniques, such as printf, I managed to find the bugs in my X forwarder program. So, about three days after they decided to ram their "upgrade" down my throat and thereby break a working setup, I finally am back to approximately the functionality I had before this all started.

 
 

I really think work should bill Google for a day and a half of my time working around their damn crippled interfaces. (No, I know that's not going to actually happen.)

I can't really recommend a Chromebook for anything, possibly excepting keeping papers from blowing away, not unless you like being force-fed someone else's idea of what you want.

Main