everything wrong with free software
"obedience breeds foolishness"
other pages: factory-reset | [[owning-your-computer]] | [[computing-fundamentals]] | [[beyond-computerphobia]] | [[treating-computerphobia]] | [[computerphobia]] | [[letters-to-a-computer-student]] | *originally posted:* jan 2021
if you open your computer, or you run a single-board computer which is already "open" because it isnt mounted in anything, you can (with the computer turned off) disconnect and physically remove the hard drive that stores all of your files, data and programs, along with the entire system. at least it likely contains all of the software, because part of the system is stored on a chip-- when you remove the hard drive though your computer still displays a logo when you switch it on, youre looking at something generated by the firmware on a chip.
single-board computers are a little different, because a hard drive can be attached via usb but the main "drive" is typically on a little card that goes in a slot on the board. overall, the same principle applies though-- remove the little card and you remove your files along the operating system.
this is a typical setup for a modern computer, which differs from typical older setups in a couple of a ways-- for one, (much) older setups are more amenable to removing the drive and simply putting it in anther computer. you can still do that, depending on what operating system you use, but its not always that simple for a typical setup these days. the other difference is that even farther back, in the 1980s, hard drives were physically larger, more expensive, held much less information and above all were *not* standard computer features.
many computers of the day were designed to be used without a hard drive at all-- and it is still possible to do that today.
while the point of this section is to replace, not remove the operating system on the hard drive, removing it is useful and illustrative. many people think the computer *is* windows, for example. removing the operating system demonstrates that the computer is still a computer without it.
it is even possible, but arguably wasteful, to run a computer without an operating system at all. in order to run a program, you need to load enough code to support the storage medium you run the program from, and most likely the input and output devices the program will use (maybe it wont use any input or output devices, other than the storage medium it loads the program from) but even though it would be ridiculous to do so-- technically it is possible to create such a program without loading the operating system.
our goal right now is just to imagine the computer without one. you can literally remove the hard drive, turn the computer on, and (on a pc for example) it will show a screen with a logo, followed by the point where the computer tries to find the operating system and-- "boot device not found". some message like that. no operating system found, no hard drive. this is also the message you will get *with* the hard drive installed, after you erase the drive. so whether you disconnect and remove it, or just erase it, you now have a computer that will not get past the "bios" (or uefi) part of the "boot process".
the "boot process" is called that because it is a process of the computer "picking itself up by its bootstraps", also known as bootstrapping or simply "booting". first the computer loads something from one of its chips, it displays a logo, it looks for a "boot" device like a hard drive or dvd or usb, then if it doesnt find what it needs it just says "boot device not found".
what do you do if it says this? *add a boot device!*
the average everyday computer user of the 1980s knew what to do in this situation; open a box of floppy disks, find the one labelled "boot disk" (many people had several of these, you can make them out of "ordinary" blank disks) and place it in the drive and restart. voila-- boot device.
the average everyday computer user of the 2020s does not know what to do in this situation-- they are accustomed to taking a boot device for granted; they just switch the computer on, the computer just boots. if something goes wrong in the boot process it is "broken" and they unplug it and take it somewhere to get "fixed"-- but note again that if your computer doesnt boot, all you normally have to do is *add a boot device*. (if the problem is more serious than that, which it quite often isnt, thats a different story).
generally a "factory reset" just puts the computer or tablet or phone back to its original settings and deletes your files. but erasing the boot device is a bigger deal, because it takes out not only your settings but all programs, files and operating system components.
that lets us do fun things like boot from a dvd or usb stick instead. in fact we can even boot from dvd or usb without erasing the drive, but if you are actually doing this for the first time its recommended you get a cheap or used machine for "experimenting", and booting from an external or secondary device is often one or two steps easier when the hard drive doesnt have an os. plus, the os we boot from the dvd or usb drive will have the power to erase the hard drive anyway; so if it is already erased we dont need to worry about that. and, we dont even need a hard drive to demonstrate this ability in the first place.
the tricky bit is getting a bootable usb or dvd. you can actually order a usb drive with an os already installed, but then you have to wait for shipping. you will most likely have fewer options this way, as well.
if you are using windows, plus you have a cd or dvd you can write to, and the computer youre experimenting with has a cd or dvd drive then i find this the most reliable way to get started. i just dont stay up to date on which boot-usb installers work, are free, or are compatible with the os you want to install. when i create a bootable usb it is with a standard utility, not one designed for bootable usbs in particular. so if i find myself in a situation where windows is the only option, i still hope there is a cd or dvd writer-- it makes this step easier (more standard, more reliable, more universally applicable) on windows. if you already had a different os (macos, gnu[lit]/[lit]linux, bsd) you could just use "dd" for this. i tried the "dd for windows" and... yeah, i wouldnt trouble you with that.
what youre looking for then is an "iso" file for the operating system you want to boot. iso is short for "iso 9660" which is an old but reliable standard for bootable cd and dvd media. most of the operating systems you might want to install (or just try out) can be downloaded as an iso file.
what you do when you find the operating system you want then, is to go to the downloads page and click on the iso file, save it to your computer, then write it cd or dvd. most cd or dvd writing software has an option to "write image" or "write iso", and if your program doesnt have that you can download a second cd[lit]/[lit]dvd writing program that does.
note that most operating systems you would download and install have instructions for this as well. but if you already know how to write isos then you mainly need to download the iso and write it to the disc. thats the nice thing about it being standard. if you dont have windows you can still write isos, but if "dd" is a real option then i typically prefer it. dont worry about what dd is, unless youre using it; its just a program that writes data to a device.
if youre up for an adventure, i recommend bsd over gnu[lit]/[lit]linux for actual computer use. if you just want to try booting a different operating system, then a fairly easy to run os is "plop linux": [url]https://www.plop.at/[url] if you go there and click on "downloads", then "download live version", you will hopefully find an iso you can download that says something like *blah-blah-blah-i486.iso*. you can download this iso for free, then write to a dvd, and then you can use a computer even if it doesnt have a hard drive (or if the drive is blank).
there is a long story about why i recommend plop linux over other "distributions" of gnu[lit]/[lit]linux, but it goes back to 2018 (when microsoft purchased github) or even 2014, when red hat (now ibm) unofficially took over debian. either (true) version of this is a long story, but i am only recommending plop as a toy to play with-- for your operating system i recommend bsd instead, if possible.
for years, i wasnt sure even i could get bsd working, but i underestimated how "ready" it is. these days, gnu[lit]/[lit]linux is so heavily co-opted and sabotaged, the extra work to get bsd running seems less of difference than it used to. i dont think gnu[lit]/[lit]linux is a good operating system anymore. its been co-opted too much, its too corporate, its supposed to be "free as in freedom" but it isnt forkable. microsoft controls too much of it, and thats exactly what im advocating you try to get away from. thus at best, any gnu[lit]/[lit]linux "distribution" is a step along the way.
bsd is the (free) operating system that macos and playstation are based on. what macos looks like, or what your playstation looks like when you run it, have very little to do with bsd iself; they are customised. "bsd" dates back to the 1970s, being based on the original "unix". gnu stands for "gnus *not* unix", while unix is a proprietary operating system developed also throughout the 1970s.
the biggest difference between bsd and gnu is in how and why they were developed. bsd was developed gradually from actual unix code, until a point where practically none of the code was actual unix code. gnu was a deliberate rewrite from the beginning, where features were reimplemented primarily from documentation, not the code itself. bsd was originally designed to customise or improve unix, while gnu was designed to recreate it to make it freely distributable and free for anyone to modify it.
traditionally at least, gnu has always cared more about *your* freedom than bsd. any aspect of bsd that intended to "liberate the user" with regards to their computing was an effect of legally distancing from the owners of unix, as well as bowing to advocacy from richard stallman (the original gnu author) and john gilmore of the electronic frontier foundation. today, gnu relies primarily (but not exclusively) on the linux kernel, which is thoroughly and most likely irrevocably co-opted by microsoft and others. for this reason if not others, i recommend bsd over the gnu operating system. i also advocate rebuilding gnu (this is very possible and i think it is very practical) around some parts of bsd-- especially the kernel.
the history lesson aside, a "distribution" is like the make and model of a car, with regards to gnu[lit]/[lit]linux. today there are literally hundreds of distributions, or "distros" for short, and i went to the trouble of ranking hundreds of these based on how much each relied on github for its functionality. plop linux was in the top 33 for "most github-free" distros according to my criteria. if you are as bothered by github as i am, i recommend openbsd as your next step from there-- but right now we are simply trying to get your experimental computer to boot without windows.
when you start your computer with plop linux, it will most likely boot directly to a graphical environment. the layers involved in getting you to this environment are noteable:
1. hardware: this is your physical computer.
2. firmware: this is the part of the system that is stored on a chip; unless you have updated it, its the system that came with your computer, but it is not windows or macos. if you remove windows, you still have this firmware. it is used for features like finding the a device to boot the system from, and displaying the logo of the manufacturer. in the early days of the pc, this was called the "bios" (and many continue to call it this). most of the computers you find (at least of the x86 architecture, such as the ones most commonly developed by intel and amd) now run firmware called "uefi" which stands for "unified extensible firmware interface"-- but if you know its called "uefi", thats pretty good. sometimes you need to change the settings for the firmware to boot from a different device.
3. bootloader: this is usually the first or one of the first pieces of software the computer runs; it either hands control of the computer to the operating system, or provides a menu that you can select which os to boot. it is possible to "dual boot" and have two or more distros installed, or sometimes to have windows plus one or more distros installed, although i generally consider this going to a lot of extra trouble. at any rate, the bootloader loads your operating system after the bios or "uefi" decides which device to boot from initially. the bootloader resides on the hard drive-- or for a bootable usb or cd or dvd, the bootloader resides typically on that device or media.
4. kernel: if an os is a car, then the kernel is the engine. its useful to think of it this way, because most people driving an engine around prefer to add things like wheels, and steering. and a fuel tank. you know, "accessories". similarly, the kernel is extremely important to the operating system, though you cant actually do much (if anything) with just the kernel. when the operating system wants to access hardware or memory, the kernel takes care of low-level things like that, while the rest of the operating system interfaces with it.
5. operating system: the core programs, along with any other software needed as a go-between for the kernel and applications. generally includes a "shell" to allow the user to interact with the os.
6. shell: the user interface to the operating system. if your graphical environment has some trouble starting, or if you remove it, or set it up to not start automatically, then this shell is something you can use to do far more than just maintenance tasks on the system. from the shell, you can develop programs. once the graphical system is running, you can typically run the same shell from within a term window.
7. graphical environment: the actual graphics-mode program that runs your dm, de or wm and ultimately your graphical applications.
8. display manager: (dm) -- an optional, though recommended login screen or graphical menu that lets you decide which desktop environment (de) or window manager (wm) you want to use in the graphical environment.
9. desktop environment: (de) -- an optional suite of desktop-related applications, generally including a window manager (which many people may use on its own, while skipping the installation or use of a desktop environment).
10. window manager: (wm) -- the program that runs on top of your graphical environment that (optionally) decorates your windows, and which lets you resize them, change their location on the screen, or switch between windows. the (optional) desktop environment you choose, or even the window manager you choose does a great deal to determine what the graphical environment looks like, and how it works from a user standpoint. some users will install more than one de or wm, though normally only one is used per session; the dm typically lets you choose which one.
11. applications: the programs that you run in either the text shell (6) or the graphical environment.
12. emulators: emulators are applications (or sometimes, operating system layers) that simulate a different (or separate) operating system or computer. if you have an old computer game or application designed for a much older (or much different) operating system or computer, you can sometimes run such a program from an emulator.
13. term window: an application that allows you to run a text shell (or alternatively, applications developed for the text shell) in a graphical window. as with window managers, you can have more than one different term window installed-- different term windows vary slightly in features, and you can even run two different types of term window (or several individual term windows) in a graphical environment at the same time.
whats fun about the term window is that it brings us full circle to the environment we would have without the graphical system, from within the graphical system. thus if you want an idea of what its like to use the computer without a gui, you can run commands or interactive programs inside the term window-- and get a pretty good impression of what it would be like to run the same things from the text shell.
emulators make this possible as well-- if you have an emulator that simulates an x86 computer, you can try running plop (with or without its gui) in a window, from a different operating system! also this means that instead of using a term window (which is the simpler, more efficient way to do this) to run a text shell, you could also run plop linux in an emulator window, and simply not "boot" into the graphical environment (in that window). this is arguably a ridiculous way to get a text shell (also it usually makes it more difficult to cut and paste) but say youre running windows or macos or bsd, and want to know what the text shell in plop linux is like? *an emulator lets you do this without even making a bootable cd, dvd or usb*. its like running *a second computer*, inside a window.
however, if you havent run a computer without macos or windows before, you might mistake an emulator for just another program (or wonder why someone would even run a second os inside a window)-- for the purpose of freeing yourself from windows or macos, emulators are a fun "peek" into a different world, but its just not the same as being able to watch a computer boot without something else to start it up first.
*one of the biggest mistakes people make, when learning about computers*, is they think they have to memorise all this stuff at once. *not at all*. the best way to accumulate knowledge is to *use* it, but unless theres a reason (say, professionally) you need all this information at your fingertips in an instant, people regularly look these things up, or go back and review them. becoming familiar with computers is an exploration, it is not just about regurgitating computer terms or being able to recite defintions. you dont (usually) need to know what a display manager is, to run a text editing application. you just start the text editor.
*it is* very useful however, to know these layers exist. without memorising this list, its useful to know that if you dont like your term window, you can either install a different one (or use both) or even switch to text mode. its useful to know that most of the "gui" you use is actually a superficial layer you can swap out (to get more features, or to replace it with something lighter and faster). its incredibly useful to know that if the gui doesnt start, its not "broken" (you probably just need to change a setting).
and even if you *need* a graphical system, to run the web browser, to go online, to look up the setting you need to fix your setup-- how useful is it to know you can simply throw a usb or dvd into the computer and temporarily boot into *that* instead, because it invariably works like a "fresh" installation and setup?
this is one more way you can take ownership of your computer, and start to understand computing on a level that gives you real options and solutions when youre having trouble.
"*my computers broken*."
"whats wrong with it?"
"*it only shows text when i start it*."
"can you run startx?"
"*no, theres something wrong with the gui setup*."
"can you boot from usb?"
"*yeah, it loads the gui fine when i do it that way*."
so now you have options, and an extra way to fix things without packing your machine up and leaving it somewhere else. plus if its easier and you dont want to fix anything-- you can probably just back up your files and reinstall. plus if youre experimenting, you might find it easier to just reinstall. maybe you dont have anything important on your experimental machine (or you already keep your files copied to something else).
most people with a bit of experience would rather fix the problem than do another installation, but now you have the option.