My New Computer
blog.taoetc.org
blog.taoetc.org
How do you encrypt the flash drive? Do you run QEMU in the host OS or are there more optimal ways of "booting" it? How do you run QEMU to take benefit of all available resources on the "console" computer (the one running the image)? What's with the performance, and is the performance the reason for not running GUI? (But also - yay tmux!) How do you backup? (Do you just `dd` it? I don't put too much trust in the reliability of the flash drives...). What flash drive do you use? What are the pitfalls and limitations? I think I have more questions, but I will stop here, you see where I am going.
This is a really nice and simple idea and I will definitely try it too. I appreciate a lot if you can share your experience.
My wild guess in that particular case he just installed alpine with full disk encryption within the qemu image itself, no the flash drive: " The filesystem is encrypted, and I carry it in a small USB stick. "
However it is not complicated to encrypt a flash drive. What may be complicated is having an encrypted flash drive that can easily be decrypted from any kind of OS.
Was a lot of fun, but people are more wary of letting you run random scripts on their pc these days.
What they has really done is just redefined the word "computer" from being the hardware on which we run our software to being the software that we run on someone else's hardware.
I guess since a computer used to be someone who used computing machinery we are getting a little ouroboros here
I saw it as something he can run wherever he wants without having to migrate configs and data. Like you are flying in a different country, go to a store, buy a computer, start an hypervisor and you are done.
I would still reinstall first that new computer with an OS of my choice, but an extension of his method could be to have that qemu image stored on a liveusb that already has qemu installed. Maybe that is what he does.
Much more practical to use syncthing
To achieve the same with syncthing you'd need an aditionnal layer for the config like: git + stow, puppet, ansible, or using a distro like nix.
+ several GB of data may be moved faster from A to B using sneakernet than internet.
From the article:
> When I switch from my work computer to my personal computer I just bring the USB stick with me; same thing next time I upgrade a computer.
That’s news to me. I wish they would go over how they got that working. Does everything run from RAM? How large of flash drive do they use and how many snapshots/backups do they keep/where do they keep them?
> Ventoy is a great tool from what I’ve seen online and the use case it fills does save time and resources. However, I have some reservations about it. If I had to compromise a bunch of critical systems over a long time period, then publishing a great tool and having it tamper with your OS installation media silently would be a really good pick. At this time, I don’t trust the developers of the tool enough and I don’t have the time or skills to perform repeated audits of the software every time they release a new version.
...from the addendum to https://ounapuu.ee/posts/2023/02/15/shrinkflation/ (which was itself discussed previously [0]) - I don't have strong opinions of my own but reading this review was enough to put me off installing Ventoy the other day.
- Zram, useful for SBCL using 2GB of stack.
- CWM+Xclock+slock.
- UXTerm+ksh+TMux
- Links and "links -g" for image heavy sites, but often I just call sxiv with typing "i" while I'm at the image link.
- Sfeed+links with no cookies. Few sites: HN, Slashdot, some GNU sites, The Conversation. I avoid international news sites, http://68k.news it's more than enough for a quick glance on major issues in the planet.
- Gopher/Gemini with cgmnlm, with gopher://magical.fish as a good starting portal with useful services like torrent searching and, sometimes, news. Gopher blogs have tons of tech/science/math content not found anywhere else.
- I used to run lynx against gopher://gopherddit.com, but gemini against gemini://gemi.dev it's perfect. Yes, RSS, but I can read the local newspapaper over gemini by proxying the web page and save lots of bandwith, up to 95% if not more. Also, the local newspaper cuts down the RSS content.
- Mocp
- Nchat/Catgirl for TG/IRC.
- Custom ebook reader, for the ones without pics.
- MuPDF (graphical ebooks/PDF's).
- MPV+yt-dlp.
- Sxiv (pics)
- Mutt+msmtp+mbsync
- Tut for mastodon
- SBCL (Common Lisp) + rlwrap.
- Slrn
- MC, for fast documentation reading.
- Luakit for "emergencies": goverment pages with JS. Launched every few months and that's it.
On USB media, as long as you don't put local data on it, a system like Slax with a Linux Libre kernel would be very trustable and reliable:
Swap out the propietary kernel with Linux-Libre if your hardware supports it.
Not to mention you're going to freak out a lot of laypeople when you reboot their computer and it comes back up in Hackerman mode. Though if you could get it to play West Side Lane after it booted up then yeah this would be totally worth it.
In addition to encryption there's a physical access component to how a lot of my secrets are stored, no way I would ever transfer them to a phone for example.
Some necessary context for this is that I own a small business and it's not large enough to afford a dedicated person or people setting IT policy, but it's large enough that an attacker would have plenty of motivation to go the extra mile in terms of say doing some social engineering to drain our bank account.
Maybe the productive line of thinking here is, there is a set of secrets that does need a really high level of paranoia, but most of them don't and those would be OK sitting encrypted on a phone or USB stick. But it's easy to go down the rabbit hole and say if they get access to X and Y pieces of info can they call someone and get a password reset... etc.
I want to occasionally have my "virtual computer" with me to use on other hardware. (ie my SO's laptop, my Steam Deck; hardware I mostly trust). I find myself bringing my laptop many places where I don't actually plan to use it, just in case some server goes down or the like.
Why Qemu though? Why not a Live USB? Is it just for the ease of treating the VM as a regular file for backup and transfers? I have little experience with Qemu.
Funny, that's the opposite of my dream computer, which is running low amounts of software (or at least low amounts of dependencies for userspace) on lots of trusted and open hardware.
IMHO you do need a graphic environment in 2024 though; text-only, and gemini etc is a bit too monastic.
> A computer is a machine that can be programmed to carry out sequences of arithmetic or logical operations automatically.
I don't think his encrypted Qemu image on a usb stick can do any of that...
You might as well say that my desktop isn't a computer, because it needs external (electrical) power to do any logical or arithmetic operations. Or that my credit card doesn't run Java.
> It just needs one small extra dependency: to be plugged into a device that supplies processing power.
So it just needs a computer to be a computer?
Your logic doesn't work for me. It's like saying I am a cruise ship captain, just that I lack the ship, the certification and the knowledge.
I am not aware that there are credit cards which can run java (I assume that means they have a jvm that can interpret java bytecode). I think similarly they store data and programs (which might be java) but don't run them. e.g. https://www.oracle.com/java/java-card/
Why? I can make snapshots and backups of multi-terabyte drives just as easily.
qemu-img create -f qcow2 -b base-image.qcow2 -F qcow2 snapshot.qcow2
This takes mere milliseconds. The great thing about this is that snapshots are chainable, so you can create snapshots based on snapshots, and easily go back and forth to boot whatever version you want. Each snapshot only takes up the space of the data written to it, so they're like layers in an OCI image.The qcow2 format is quite ingenious and one of my favorite things about working with QEMU. I wish its CLI would be simpler and more intuitive, so for more advanced scenarios I prefer working with libvirt/virt-manager/Proxmox.
This whole post is an exercise in futility
I expected something around 1GB