We Need a "Map of Qubes"

Dominic Walliman has been creating some awesome maps of knoweldge areas. It would be awesome if someone with design skills made one for Qubes.

This “poster” would improve discoverability of Qubes features by showing them all in a pleasing and funny way.

Bellow are some of Dominic’s work to take as inspiration:

Imgur

More are available on their flickr gallery.

6 Likes

I could imagine one section with a layout similar to the quarks grid, with the different standard sys- and app-VMs arranged as literal little cubes, with each being colored according to trust.

In each cube, there is a list of packages needed to build it from debian-minimal (just debian, to keep things simple). sys-net, for example, is colored red and has the HVM and PCI symbols, basic preferences (e.g. ‘provides networking’), while also listing qubes-core-agent-networking and qubes-core-agent-network-manager, and also including PCI-qubes instructions like qvm-service sys-net meminfo-writer off and qvm-prefs sys-net kernelopts nopat iommu=soft swiotlb=8192 . Lowest amount of RAM and vCPUs to function would also be helpful in helping both starters and enthusiasts get the most out of their Qubes.

Of course, the grid will have big squares, but this will serve as an at-a-glance organized guide to the standard configuration of VMs. At the same time, there can be an ‘exotic’ section that includes unikernels like Mirage and Unman’s OpenBSD sys-net, but that’s really optional for a starter guide.

An interactive (i.e. online) version of ‘the grid’ would be even more accessible.

1 Like

I missed you post. I can do lofi maps. Not cool lofi, actual lofi. And I’m starting to build out this map now but need help if anyone reading this has the time.

See my post here:

https://forum.qubes-os.org/t/building-a-qubes-os-map-from-boot-to-shutdown-for-efficiently-learning-certified-qubes-os-environments-in-months-not-years/6764

I need to become fluent in Qubes for my job, life and the security of my family. I also need to be able to eventually teach Qubes to learners of all intellects and ages. I have a senior I tried to help with matrix. It didn’t go well.

I need to efficiently not effectively learn Qubes due to time constraints.

Effective learning is when you learn something, and you’ll learn it but it will just take an excessive amount of time.

Efficient learning however is when you learn something leaving out anything unnecessary for your specific goals. And what’s left out according to your immediate goals is supplemented later when and if needed. But you as the efficient learner decide.

I experienced this in language learning. I needed to become fluent conversationally in a language in less than six months.

It worked when I learned about memory palaces and found a provider who made a map of the language. This map allowed me to decide what I need to learn right now, and for me to decide leaving out what I don’t need based on my immediate goals.

In my case, conversational use of the language, not written. But the map allowed me to fold in writing and punctuation at a later date, but my conversational ability served me immediately at work.

For Qubes, I don’t need to become a developer yet. I just need to maintain certified Qubes environments now, prevent us and myself from becoming dead in the water (hoping this doesn’t have dual meaning), and then learn development later.

I started to go through the Qubes documentation and other resources that recommends these books for learning Qubes:

Linux Kernal Development

A Practical Guide to Trusted Computing

Python Programming - A Complete Introduction

Rapid GUI Programming

The Definitive Guide to the Xen Hypervisor

Linux Device Drivers.

Source: Developer books | Qubes OS

The problem… For instance just take Linux Device Drivers. This is a 632 page and nearly 300,000 word book. At 500 words per minute, and 8 hours a day it will take me 75 days to get through this one book alone. This is excluding immersion via testing and practice. Also excluding being able to remember any of it. Which if you don’t know, you lose (memory-wise) what you don’t use. So not being specific to Qubes or my particular goals, I’ll likely remember none of it because it will have no meaning.

Add in the 5 other books, we’re talking about years of study and practice. And forgetting. Ultimately this is not an efficient route plan, which I’ll explain more.

I experienced this dilemma with language learning. People for years recommended text-books and grammar books, and practice books and all sorts of other types of resources.

Then I found maps and memory palace which gave me the ability to map my learning route based on my current goals in the moment. Then I was more dedicated to my very specific learning plan. But first I needed a map before I could decide for myself what resources I needed to commit to based on my current needs.

Without this map, I had no route plan, I was overwhelmed by the vastness of the resources, and history about this language rather then being able to learn quickly to use it in any meaningful way, in my case immediately.

The company I learned this from was a face to face company, but I found a similar resource just now online.

The only example on this website where I could get a preview of their language map and the rapid learning process I’m describing is here:

And here’s a sample picture of the map:

When I finally found such a resource, I went from trying to learn languages for years with no success, to becoming fluent in a new language in six months. Just conversationally of course. But I was able to become a valuable team member in that language.

And if I would’ve needed written ability in 6 months, I could’ve chosen written over conversational as my goal and used the map to plan that route, not visiting areas I don’t need to go to until later if need be.

I want to create the same type of map for Qubes OS.

I want to focus on the Lenovo x230 i7 only.

I don’t have the time to learning about drivers for AMD and Ryzer conflicts. And concerning i7, this is not puppy Linux, we shouldn’t be troubleshooting why qubes is slow running an i3, get a i7 with 16gb of ram, anyone can build this for under $300 if they shop around. We should be promoting this system to everyone who wants to get into Qubes quickly, and I think this map would help with that.

I also only want to focus on what I believe to be the full and correct implementation of Qubes that takes care of most attack vectors, which includes not just what the running operating system does, e.g. obfuscation, chaining, and compartmentalization, but also the physical security of device as well. With heads, Intel Management Engine disabled, a Librem key / TPM, full disk encryption, etc.

So in this context there wouldn’t be reason to be talking about “how can I get fortnite to run on my qubes with a Geforce 1080, why doesn’t your map help me with fortnite?”. :slight_smile:

If other’s want to expand on the map with a “gaming qubes map with GPU passthrough” that’s awesome, but it seems to me x230 i7 is the standard for breaking into Qubes immediately with minimal problems while protecting one’s self from most attack vectors, additionally with minimal upfront investment costs. Also maintenance cost, it just works… Most of the time! Unless I break my own system, which such a map would help me become more experienced more quickly so I can break my system less.

So here’s what I need help with. I’ve stated “from boot to shutdown” in the title.

This is where I want to start and end with building this map. It would be great to figure how to see every module loaded, every driver, every application in a fresh and stock Qubes install. Then focus on very concise “Hows, Whats, Whens, Wheres, and Why” explanations of each of those modules in the context of a all around reasonably secure mobile x230 device.

Then after concise explanations, link to supplementary information which then I’ll pull from all these books and resources, while skipping over what is not necessary to a secure x230 device with Qubes installed on it.

Where I need help is I don’t even know how to get terminal to show this list of everything loaded. I don’t know how to see what’s running at any given time.

I don’t know where and which logs I can check, nor how to check. Journalctl, dmesg, logview? What sorcery is this? I don’t know.

But learning to know these fundamentals would become part of the map. “A go look at this running here, use this command to see it in action, find it located here in terminal, and this folder here, open this file in a text editor” etc.

But most importantly “why this module exists” with simple concise explanations for rapid learning a reasonably secure operating system with semi-mobility protection, i.e evil maid attack protection on an x230 and why? “Because you may leave it in your hotel room, and when we say “Evil Maid” that’s just a euphemism for something much much much worse.”

Being able to know all these commands and open the hood and start visually seeing what’s going on, this would be of great benefit for other noobs like myself who have been thrown into Qubes and don’t even know where to start.

Rather than being overwhelmed with a bunch of text books that go way beyond the scope I’ve presented. Yes going through all those books could make me a great developer, but right now I need to choose my goals. And such a map would help. For others, they may choose developer route. It’s all up to the map user.

So if you can help guide me here, this is where I’ll start reverse engineering your system and building this map. But first my Shamans, I can’t even see the great canoes in our bay. What white mountains atop these canoes? Thousands of ghost men? Clothes shining like the sunlit bay? Spear-tips as long as men? I have no frame of reference to perceive what I’m seeing. Help me to see my Shamans. Open my eyes and show me. :slight_smile:

There are wireframes here: Introducing the Next Generation Qubes Core Stack | Qubes OS

But I can hardly read this picture shown at that link. And for instance if I wanted to know or look at what specifically LVM versus libxenlight does, or why it exists? The documentation doesn’t even say anything about this. If it does say it, I’m probably so overwhelmed I can’t see it clearly, and this overwhelming feeling I want to reduce for other noobs like myself or anyone off the street and be able to pick up this map learn qubes efficiently aligned with their goals. That is my intent.

Also, I don’t know where I’ve found this, what exactly is this at this link?: Welcome to core-admin’s documentation! — core-admin mm_1e151335-0-g1e151335-dirty documentation

Would this be helpful in my quest? It says it’s “automatically generated” which if so may include unnecessary information. It’s just I’m not sure what the purpose is of what’s at this link. And I’m not sure it’s up to date or properly… or should I say legibly organized for a would-be Qubes learner.

I saw some generated wire-frames clicking around at the dev. link, I’m not sure how those work either, but could that auto generated system help me build such a map? If not, I’ll find another way. But first let’s just write out the whole thing "from boot to shutdown, then figure out better learning interactivity later.

Please help.

I’ll start writing this out here so everyone can benefit and suggest edits. Then when we get to something considered releasable, I’ll find a way to make it more interactive. Open source ways of course.

Thank you for your time.

1 Like

Totally missed this!

I have low fidelity design skills. And would be able to create a basic, not as beautiful map. But first it starts with writing everything out in text-form before a beautiful map comes.

me too, i have very bad gimp skill

1 Like

Anyone know if there are any good guides on text based diagramming and wireframing? I saw this cool diagram that Sven made, I never thought to be able to do anything like that. If I could find some sources for inspiration this would definitely help with outlining this map.

Check it out so cool:

(clockvm)-------------------------------------------------------+
                                                                |
(updates)-----------+                                           |
                    |                                           |
{private-*}--[sys-firewall-anon]--[sys-tor]--[sys-firewall]--[sys-net]
                                      |             |
(dvm-anon)----------------------------+             |
                                                    |
(dvm-cleanet)---------------------------------------+
                                                    |
{work-*}--------------------------------------------+

Source:

Page is private…

Anyway I made [1] just for that a while back.

If you’re looking for something more generic, go for mermaid-js [2].

There are even a few plugins [3,4] for discourse that might be interesting for the Qubes forum (@deeplow fyi).

[1] https://github.com/3hhh/qvm-ls-mermaid
[2] https://mermaid-js.github.io/
[3] https://github.com/unfoldingWord-dev/discourse-mermaid
[4] https://github.com/pnewell/discourse-mermaid

Merged the threads. Also, since it’s about Qubes, let’s keep the discussion in the #general-discussion instead.

2 Likes

Thanks for the tip. However for security reasons we keep plugins to a minimum. I would suggest using draw.io.

1 Like

I like draw.io, been using the install version securely in an offline Qube for NDA’ed projects.

1 Like

Found this, where graphical wireframes don’t make sense may try to implement one of these solutions: