diff options
-rw-r--r-- | content-org/bsd.org | 491 | ||||
-rw-r--r-- | content/bsd/history/01_multics.md | 4 | ||||
-rw-r--r-- | content/bsd/history/02_unix.md | 4 | ||||
-rw-r--r-- | content/bsd/history/_index.md | 6 | ||||
-rw-r--r-- | content/bsd/why-bsd.md | 133 | ||||
-rw-r--r-- | content/bsd/why-not-bsd.md | 6 | ||||
-rw-r--r-- | layouts/partials/header/header.html | 4 | ||||
-rw-r--r-- | layouts/partials/menu.html | 26 | ||||
-rw-r--r-- | layouts/partials/menu/item.html | 31 | ||||
-rw-r--r-- | layouts/partials/menu/new-or-up.html | 9 |
10 files changed, 498 insertions, 216 deletions
diff --git a/content-org/bsd.org b/content-org/bsd.org index 011c4e81..77c27863 100644 --- a/content-org/bsd.org +++ b/content-org/bsd.org @@ -15,27 +15,23 @@ CLOSED: [2024-03-06 Wed 14:45] :EXPORT_HUGO_PAIRED_SHORTCODES: recent-updates menu img-r :END: -* BSDs :@bsd: + +* BSDs :PROPERTIES: -:EXPORT_HUGO_MENU: :menu bsd :EXPORT_HUGO_CUSTOM_FRONT_MATTER: :primary_menu bsd +:EXPORT_HUGO_MENU: :menu bsd :END: -** Unix history :@bsd: -:PROPERTIES: -:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :primary_menu bsd-history -:EXPORT_HUGO_SECTION: bsd/history -:EXPORT_HUGO_MENU: :menu bsd-history -:END: -*** DONE History of BSD and Unix +** DONE History of BSD and Unix CLOSED: [2024-04-08 Mon 09:37] :PROPERTIES: +:EXPORT_HUGO_SECTION: bsd/history :EXPORT_FILE_NAME: _index -:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :primary_menu bsd :EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :abstract the long and turbolent history :EXPORT_HUGO_PAIRED_SHORTCODES: menu img-r -:EXPORT_HUGO_MENU: :menu bsd +:EXPORT_HUGO_MENU_OVERRIDE: :post " from Multics to OpenBSD" :END: + Does computer history have any real appliance? Not really. Does it explain certain, potentially baffling things? Certainly. @@ -45,219 +41,127 @@ Especially when discussing systems with such rich history as BSD. I will be gentle here, I promise. No /Hardcore History/ in sight. - #+attr_shortcode: "bsd-history" #+begin_menu History of BSD #+end_menu -*** DONE History of BSD part I: Multics -CLOSED: [2024-03-09 Sat 21:03] +** DONE Why you should run a BSD on a PC :@bsd: +CLOSED: [2024-04-27 Sat 22:29] :PROPERTIES: -:EXPORT_FILE_NAME: 01_multics -:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :abstract BSD history starts with Multics -:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :shortname Part I: Multics -:EXPORT_HUGO_MENU: :menu bsd-history :name "Multics" -:EXPORT_HUGO_PAIRED_SHORTCODES: img-c +:EXPORT_FILE_NAME: why-bsd +:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :abstract Reasons why BSD may be the best OS for you +:EXPORT_HUGO_PAIRED_SHORTCODES: img-r +:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :menu_item_override "Why you should run BSD on a PC" +:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :menu_item_override_start_li true +:EXPORT_HUGO_MENU_OVERRIDE: :post " or perhaps " :END: -**** Origins of time-sharing - -Let's start our journey back when dinosaurs roamed the earth, engineers wore ties, and Barbie was first gaining popularity - the 60s. -Nowadays, we have grown accustom to companies selling devices at lower profit margins - with most profit coming from software subscriptions. -But 70 years ago it was the complete opposite. -Companies bought expensive computers, huge machines, and what was running on them was of lesser value. -And I really mean /expensive/. -An IBM System/360 Model 20, presented in 1964, could have been bought starting from USD 62,710 (USD 622,626 adjusted for inflation) or rented for USD 1280 (USD 12,708 adjusted)[fn:IBM360]. -Sellers earned a lot from the devices. -But, naturally, companies making all those investments wanted a nice return. -This led to the creation of /time-sharing/. - -#+attr_shortcode: "ibm-360.jpg" "https://www.nbcnews.com/tech/gadgets/5-reasons-love-mad-mens-new-star-ibm-360-n101716" -#+begin_img-c -IBM 360 in an official photoshoot. -#+end_img-c - -This concept seems natural now: multiple processes were able to share computer resources, so multiple applications could run at the same time. -Applications could even run for different users. -Ergo, time-sharing allowed for multi-user multitask processing. -This is in stark contrast to batch-processing, where only a single program would be able to compute at any particular time. -An example of such processing would be EDSAC, the first electronic computer[fn:root]. -I won't go into detail of time-sharing, but you can read more in "Time sharing in large computers", C. Strachey, 1959. -But what is important here is how it was used. -All computation happened on a single, large server. -End users would use /computer terminals/ which were /multiplexed/ into that server, called a /mainframe/. -What is multiplexing you ask? -Simply said, it's a way to combine different signals into a shared medium. -It was used extensively for land-line telephony, where all signals were transferred over shared wires. - -#+attr_shortcode: "edsac.jpg" "https://www.datacenterdynamics.com/en/analysis/rebuilding-edsac-the-first-real-computer/" -#+begin_img-c -EDSAC, the "first computer". -#+end_img-c +There's multitude of Operating Systems to choose from. +You use something like Windows or MacOS and be perfectly happy with it. +You can step up and use Linux, Haiku or even Amiga OS. +So, why do I think a BSD system may be the best choice? -**** Multics +*** FOSS -Let's jump to 1969. +The most popular systems out there are propietery. +This has the small downside of having to pay, but there's another one. +Closed systems have tendency to limit the user. +It's visible much more with MacOS than in Windows, but the user is always blocked from doing what the user wants to do. +Are you following the product manager's ideal path? +Is web browser everything you need to run? +If so - getting something from Sillicon Valey may enough. -/Multics (MULTiplexed Information and Computing)/ was an early time-sharing operating system developed by /MIT/, /General Electrics/ and /Bell Labs/. -It pioneered many of innovations which are still widely used in the computing systems of today: hierarchical file system, redirection as interprocess communication, or the existence of a shell[fn:wiki], as well as memory pages, memory protection, or the ability for a single machine to use multiple CPUs and memory[fn:allen]. -It was however also huge, both in terms of memory usage (the resident kernel could occupy a huge part of memory living not enough for applications) and code size (it consisted of about 1,5k source modules)[fn:wiki]. -/Multics/ was experimental and therefore ambitious, complex - designed by trial and error. -It was delivered late, early on had performance problems, and in 1969 /Bell Labs/ withrew from the project[fn:earlylin]. - -#+attr_shortcode: "multics-login.png" "https://en.wikipedia.org/wiki/Multics#/media/File:Multics-Login.png" -#+begin_img-c -Multics login screen. -#+end_img-c - -#+attr_shortcode: "thompson-ritchie.jpg" "https://computerhistory.org/blog/discovering-dennis-ritchies-lost-dissertation/" -#+begin_img-c -Ken Thompson and Denis Ritchie. -#+end_img-c - -Ken Thompson, Dennis Ritchie, Douglas McIlroy, and Joe Ossanna, frustrated with their experiences with /Multics/ Operating System are starting to work on their own alternative. -Their work will become one of the most beloved computer products of all time - /UNIX/. -The team armed with previous experience set up to create simple, manageable OS that would still fulfill all the requirements /Multics/ was to fulfill. +But a lot of us are hungry for more; we want to be in control instead of being controlled. +Only be having the system be, not only Open Source, but also Free, our desires may be fullfilled. -Currently, however, they have problems convincing /Bell Labs/ management to get them a new computer. -This has not stopped them from designing the system on black blackboards and paper. +FreeBSD gives the user a huge power to adjust itself to the needs and wims. -[fn:IBM360] [[https://ibms360.co.uk/?p=902][IBM 360 Model 20 Rescue and Restoration: Machine Overview]] -[fn:root] [[http://blog.wovenmemories.net/2023/10/30/First.Operating.System_Part.1.html][First Operating System -- Part One]] -[fn:wiki] [[https://en.wikipedia.org/wiki/Multics][Multics --- {W}ikipedia{,} The Free Encyclopedia]] -[fn:allen] [[https://www.youtube.com/watch?v=UYb6WqWBTE0][Mark Allen - Before Unix: An Early History of Timesharing Systems]] -[fn:earlylin] [[https://www.youtube.com/watch?v=ECCr_KFl41E][The early days of Unix at Bell Labs - Brian Kernighan (LCA 2022 Online)]] -*** DONE History of BSD part II: Unix -CLOSED: [2024-03-16 Sat 21:00] -:PROPERTIES: -:EXPORT_FILE_NAME: 02_unix -:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :abstract How Unix came to be? -:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :shortname Part II: Unix -:EXPORT_HUGO_MENU: :menu bsd-history :name "Unix" -:EXPORT_HUGO_PAIRED_SHORTCODES: img-c -:END: +*** License -**** Bell Labs -Let's pause here and discuss a few things. +One of the reasons is the legal term under which all BSDs are provided - the BSD license. +It differs strongly from what GNU and others propose. +While also being "freedom respecting", it does not limit anyone. +Want to create a closed source fork of FreeBSD and stop giving anything back after few short years? +Don't want to have your hands tied by GPL? +Are you Apple? +Because that's how MacOS X started. -/Bell Labs/ was a research institute founded by no other, but the famous Alexander Graham Bell in 1876. -It is known as one of the most innovative places ever conceived. -It was the birthplace of radio astronomy, the transistor, the laser, the photovoltaic cell, the charge-coupled device (CCD), information theory, and the programming languages B, C, C++, S, SNOBOL, AWK, AMPL, and the UNIX operating system. -The work completed there was awarded 10 times with a Nobel Prize[fn:wikibell]. +BSD licenses are amongst the most liberal one. +The most popular, "[[https://opensource.org/license/bsd-3-clause][3-Clause BSD License]]" limits only the liability of the code provider. -But it wasn't all pretty. -AT&T (owner of the lab) was /the/ telephone company in the USA. -It had the /de facto/ monopoly for most of the 20th century. -This led to a consent decree with US Government under which AT&T was forbidden to branch out to other markets. -This agreement happened in 1956 and will be very important for our story[fn:hiddenunix]. +Some say that BSD License are a problem as companies may take and never give up (like Sony did for PS4), but it's as close to the idea of "Free software" as it gets. -Another cool tidbit: back then computer screens as we know them now were yet to be invented. -There were ways for computer to present information on a screen, but it was not feasable to present information back to the user in real time. -The monitor was a separate machine and an /assembly/ code to light up individual pixels would need to be sent every time to it. -If the user wanted to see what the edited document looked like, the only way to achieve that was via a printer. -Try to print a page every few lines - let alone every character. -Even the bravest of the brave would not escape the anger of the finance department. +*** No BigTech -**** Getting a computer +As a result of this, there is very little interference from Big Tech. +While Linux is happily in bed with the likes of Microsoft or Google or who are able to steer the development, BSDs are still very much a niche product. +Just look at list of sponsrs of [[https://www.linuxfoundation.org/about/members][Linux Foundation!]] -After this short intermission, let's return to /UNIX/. +In BSD-land we've got some big players, with Netflix being the most promiment one. +But the cooperation is very much on partner terms. -The popular history of /UNIX/ goes as follows: -Ken Thompson finds a PDP-7 microcomputer, starts playing with it and suddenly realizes that he has created a new operating system. +*** A designed OS -What he actually wanted to do, was to play a damn game. -A completely reasonable reason to revolutionize the industry if you ask me. +But the biggest differential factor between BSDs and GNU/Linux is the way it is structured. -Ken was a huge fan of /Space Travel/, but it was only available on mainframes. -And since those costed an arm and a leg, end users were paying for time they used. -A single game of /Space Travel/ could cost Ken USD 50-75[fn:uvlist]. -Luckily, he was able to find a discarded PDP-7 from another department[fn:hiddenunix]. +In Linux, all components are designed to work together but are completely separate. +You've got the kernel, init systems, multimedia daemons, userland, bootloader, virtualization and contenerization mechanisms, or package managers. +They are all separate project with their own goals operated by separate entities. +This is why we've got different Linux Distrubitions instead of Operating System. +Everyone can take the kernel, start adding components above it and a few minutes lated the distrowatch is even harder to keep up with. -#+attr_shortcode: "space-travel.png" "https://www.uvlist.net/game-164857-Space+Travel" -#+begin_img-c -Space Travel -#+end_img-c +Each BSD on the other hand is designed as single environment. +Each component is created and developed together. +While this makes the landscape a bit boring, it also makes it extremely coharent. +Things work together perfectly, because they are designed, coded, tested and released as one. -What the PDP-7 was, was a refrigerator size 18bit monstrosity[fn:hiddenunix]. -It was at the time a 5-year-old and obsolete[fn:earlylin] leftover from an ended research into audio-psychology. -No one cared what would happen to this particular machine. -Have I mentioned just how stinky rich the /Bell Lab/ was? -So, Ken started rewriting the game for that PDP-7 as /GECOS Space Travel/. +*** Build-in technology -Porting the game proved challenging and difficult to debug, so they developed a system for PDP-7 to make developing the game easier. -This was how /PDP UNIX/ was born[fn:lcm]. -A guy wanted to play a god-damn game and now bankrupt in the process[fn:hiddenunix] +To give just two examples here: -Labs management was very happy with this turn of events as /UNIX/ was something to show after the /Multics/ fiasco. -They allowed Ken to get himself a /PDP-11/ and port /UNIX/ to it. -It was a cheaper machine compared to /PDP-7/, but it was also 16bit - which was a nice change. -Officially, the new system would allow for document preparation for patent applications[fn:earlylin]. -The biggest benefit however was the popularity of this machine - over the next decades it could be seen everywhere across enterprise America. -You can buy a working one from /eBay/ today. -It won't be easy nor cheap, but definitely possible. +1. OpenBSD comes with complete web stack built in. + We've got a firewall (best in class), reverse proxy and http server. + We've even got a TLS certificate manager. + And the security of each of those is as high as rest of the OS. + All things work together in perfect harmony, it is designed as such. -#+attr_shortcode: "pdp-7.jpeg" "https://en.wikipedia.org/wiki/PDP-7#/media/File:Pdp7-oslo-2005.jpeg" -#+begin_img-c -PDP-7 -#+end_img-c +2. FreeBSD comes with ZFS. + One thing this file system provides are efficent and bullet-proof snapshots. + The developers of FreeBSD used it to create the idea of boot environments - a snapshots of OS. + The user can easily boot from any of those in any moment. + Even the standard update process creates a new boot env, just in case something goes wrong. -#+attr_shortcode: "thompson-ritchie-pdp11.jpg" "https://www.bell-labs.com/institute/blog/invention-unix/" -#+begin_img-c -Ken Thompson and Denis Ritchie working on the legendary PDP-11. -#+end_img-c +Such integration would be very hard to achieve without up-front design. -**** Unix 1 +And the list goes on: Jails, Beehive, Vnet, Dtrace, Ports system, OpenSSHm Libre SSl. +The crazy folks over at OpenBSD are even working on their own version control system called Game of Trees. -So here we are, November 1971, and /UNIX 1/ for /PDP-11/ is released[fn:50] +This has the added benefit of having it all in a single place. +One needs to follow only a few repositories to be up to date and informed. +Mind you, those are /gigantic/ repositories, but if you are smart enough[fn:src] - it's there. -A year later Ken notes: -#+begin_quote +*** Stability -[...]the number of UNIX installations has grown to 10, with -more expected. None of these has exactly the same complement of -hardware or software. Therefore, at any particular installation, -it is quite possible that this manual will give inappropriate -information. [...] Also, not all installations have the latest versions of all the software.'' +being there --- Unix Programmers Manual, Second Edition. Thompson Ken, Ritchie Denis, 1972 -#+end_quote -Note, that this is 10 mainframes across /Bell Labs/, so user count was significantly higher. +*** Dedicated uses-cases -It's also worth to talk about release cycle. -UNIX was in constant development, and each installation would use current snapshot at the moment of installation. -This is why Ken notes that each part of /UNIX/ could differ between installations. -What is also important is that due to licensing of /UNIX/ (or rather lack of thereof), each installation would be accompanied by full source code. -Administrators were able to modify the system. -Crazy times. +*** Documentation -Still, in June 1972 the 2nd Edition of /UNIX/ was released and every 7–8 months a new release was out. +*** Community and culture -In November 1973, a 4th Edition was released, and it was the first one released to Universities. -It made quite the buzz, and first user groups started forming under the /USENIX/ name[fn:hiddenunix]. -It's worth to mention that this version was rewritten in C, as previous versions which were created in Assembly -This made it the first portable /UNIX/, as it could be recompiled to any compared, as long as it also had a C compiler[fn:earlylin]. -The system was presented by Ken and Denis during the /4th Symposium on Operating System Principles/ the same year, -and a year later Ken and Dennis publish the first paper on /UNIX/ - "The UNIX Time-Sharing System" in the /Communications/ journal of ACM. +*** History -#+attr_shortcode: "unix-tech-journal.jpg" "https://leancrew.com/all-this/2011/10/dennis-ritchie-unix-and-clarity/" -#+begin_img-c -Bell System Technical Journal cover. -#+end_img-c +*** POSIX and widening perspective +ccc -The word was out and /UNIX/ became known outside of /Bell Labs/. +*** OSes, not distributions -In the next episode of History of BSD: the scariest creature of them all. -Lawyers. + [fn:src] I am not; just barely licking C for now. -[fn:wikibell] [[https://en.wikipedia.org/wiki/Bell_Labs][Bell Labs --- {W}ikipedia{,} The Free Encyclopedia]] -[fn:hiddenunix] [[https://www.youtube.com/watch?v=xuzeagzqwrs][The hidden early history of unix the forgotten history of early unix]] -[fn:earlylin] [[https://www.youtube.com/watch?v=ECCr_KFl41E][The early days of Unix at Bell Labs - Brian Kernighan (LCA 2022 Online)]] -[fn:uvlist] [[https://www.uvlist.net/game-164857-Space+Travel][UVL]] -[fn:50] The 50th anniversary of this event was very big for a small group of fans. -[fn:lcm] [[https://livingcomputers.org/Blog/Restoring-UNIX-v0-on-a-PDP-7-A-look-behind-the-sce.aspx][Living Computer Museum]] has a real PDP-7 running /PDP Unix/ if want to chek it. ** DONE Why you shouldn't run a BSD on a PC :@bsd: CLOSED: [2024-04-20 Sat 22:13] @@ -265,6 +169,8 @@ CLOSED: [2024-04-20 Sat 22:13] :EXPORT_FILE_NAME: why-not-bsd :EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :abstract Reasons why BSD may not be the best OS for you :EXPORT_HUGO_PAIRED_SHORTCODES: img-r +:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :menu_item_override "why you shouldn't" +:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :menu_item_override_end_li true :END: Changing GNU/Linux distribution can be done on a whim, as underneath all of that you've got the same basic operating systems. @@ -1568,3 +1474,224 @@ prosodyctl check connectivity - ios *** Modern XMPP ** TODO BSD and Linux + + :@bsd: +:PROPERTIES: +:EXPORT_HUGO_MENU: :menu bsd +:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :primary_menu bsd +:END: +* Unix history :@bsd: +:PROPERTIES: +:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :primary_menu bsd-history +:EXPORT_HUGO_SECTION: bsd/history +:EXPORT_HUGO_MENU: :menu bsd-history +:END: + +** DONE History of BSD part I: Multics +CLOSED: [2024-03-09 Sat 21:03] +:PROPERTIES: +:EXPORT_FILE_NAME: 01_multics +:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :abstract BSD history starts with Multics +:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :shortname Part I: Multics +:EXPORT_HUGO_MENU: :menu bsd-history :name "Multics" +:EXPORT_HUGO_PAIRED_SHORTCODES: img-c +:END: + +**** Origins of time-sharing + +Let's start our journey back when dinosaurs roamed the earth, engineers wore ties, and Barbie was first gaining popularity - the 60s. +Nowadays, we have grown accustom to companies selling devices at lower profit margins - with most profit coming from software subscriptions. +But 70 years ago it was the complete opposite. +Companies bought expensive computers, huge machines, and what was running on them was of lesser value. +And I really mean /expensive/. +An IBM System/360 Model 20, presented in 1964, could have been bought starting from USD 62,710 (USD 622,626 adjusted for inflation) or rented for USD 1280 (USD 12,708 adjusted)[fn:IBM360]. +Sellers earned a lot from the devices. +But, naturally, companies making all those investments wanted a nice return. +This led to the creation of /time-sharing/. + +#+attr_shortcode: "ibm-360.jpg" "https://www.nbcnews.com/tech/gadgets/5-reasons-love-mad-mens-new-star-ibm-360-n101716" +#+begin_img-c +IBM 360 in an official photoshoot. +#+end_img-c + +This concept seems natural now: multiple processes were able to share computer resources, so multiple applications could run at the same time. +Applications could even run for different users. +Ergo, time-sharing allowed for multi-user multitask processing. +This is in stark contrast to batch-processing, where only a single program would be able to compute at any particular time. +An example of such processing would be EDSAC, the first electronic computer[fn:root]. +I won't go into detail of time-sharing, but you can read more in "Time sharing in large computers", C. Strachey, 1959. +But what is important here is how it was used. +All computation happened on a single, large server. +End users would use /computer terminals/ which were /multiplexed/ into that server, called a /mainframe/. +What is multiplexing you ask? +Simply said, it's a way to combine different signals into a shared medium. +It was used extensively for land-line telephony, where all signals were transferred over shared wires. + +#+attr_shortcode: "edsac.jpg" "https://www.datacenterdynamics.com/en/analysis/rebuilding-edsac-the-first-real-computer/" +#+begin_img-c +EDSAC, the "first computer". +#+end_img-c + +**** Multics + +Let's jump to 1969. + +/Multics (MULTiplexed Information and Computing)/ was an early time-sharing operating system developed by /MIT/, /General Electrics/ and /Bell Labs/. +It pioneered many of innovations which are still widely used in the computing systems of today: hierarchical file system, redirection as interprocess communication, or the existence of a shell[fn:wiki], as well as memory pages, memory protection, or the ability for a single machine to use multiple CPUs and memory[fn:allen]. +It was however also huge, both in terms of memory usage (the resident kernel could occupy a huge part of memory living not enough for applications) and code size (it consisted of about 1,5k source modules)[fn:wiki]. +/Multics/ was experimental and therefore ambitious, complex - designed by trial and error. +It was delivered late, early on had performance problems, and in 1969 /Bell Labs/ withrew from the project[fn:earlylin]. + +#+attr_shortcode: "multics-login.png" "https://en.wikipedia.org/wiki/Multics#/media/File:Multics-Login.png" +#+begin_img-c +Multics login screen. +#+end_img-c + +#+attr_shortcode: "thompson-ritchie.jpg" "https://computerhistory.org/blog/discovering-dennis-ritchies-lost-dissertation/" +#+begin_img-c +Ken Thompson and Denis Ritchie. +#+end_img-c + +Ken Thompson, Dennis Ritchie, Douglas McIlroy, and Joe Ossanna, frustrated with their experiences with /Multics/ Operating System are starting to work on their own alternative. +Their work will become one of the most beloved computer products of all time - /UNIX/. +The team armed with previous experience set up to create simple, manageable OS that would still fulfill all the requirements /Multics/ was to fulfill. + +Currently, however, they have problems convincing /Bell Labs/ management to get them a new computer. +This has not stopped them from designing the system on black blackboards and paper. + +[fn:IBM360] [[https://ibms360.co.uk/?p=902][IBM 360 Model 20 Rescue and Restoration: Machine Overview]] +[fn:root] [[http://blog.wovenmemories.net/2023/10/30/First.Operating.System_Part.1.html][First Operating System -- Part One]] +[fn:wiki] [[https://en.wikipedia.org/wiki/Multics][Multics --- {W}ikipedia{,} The Free Encyclopedia]] +[fn:allen] [[https://www.youtube.com/watch?v=UYb6WqWBTE0][Mark Allen - Before Unix: An Early History of Timesharing Systems]] +[fn:earlylin] [[https://www.youtube.com/watch?v=ECCr_KFl41E][The early days of Unix at Bell Labs - Brian Kernighan (LCA 2022 Online)]] +** DONE History of BSD part II: Unix +CLOSED: [2024-03-16 Sat 21:00] +:PROPERTIES: +:EXPORT_FILE_NAME: 02_unix +:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :abstract How Unix came to be? +:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :shortname Part II: Unix +:EXPORT_HUGO_MENU: :menu bsd-history :name "Unix" +:EXPORT_HUGO_PAIRED_SHORTCODES: img-c +:END: + +**** Bell Labs +Let's pause here and discuss a few things. + +/Bell Labs/ was a research institute founded by no other, but the famous Alexander Graham Bell in 1876. +It is known as one of the most innovative places ever conceived. +It was the birthplace of radio astronomy, the transistor, the laser, the photovoltaic cell, the charge-coupled device (CCD), information theory, and the programming languages B, C, C++, S, SNOBOL, AWK, AMPL, and the UNIX operating system. +The work completed there was awarded 10 times with a Nobel Prize[fn:wikibell]. + +But it wasn't all pretty. +AT&T (owner of the lab) was /the/ telephone company in the USA. +It had the /de facto/ monopoly for most of the 20th century. +This led to a consent decree with US Government under which AT&T was forbidden to branch out to other markets. +This agreement happened in 1956 and will be very important for our story[fn:hiddenunix]. + +Another cool tidbit: back then computer screens as we know them now were yet to be invented. +There were ways for computer to present information on a screen, but it was not feasable to present information back to the user in real time. +The monitor was a separate machine and an /assembly/ code to light up individual pixels would need to be sent every time to it. +If the user wanted to see what the edited document looked like, the only way to achieve that was via a printer. +Try to print a page every few lines - let alone every character. +Even the bravest of the brave would not escape the anger of the finance department. + +**** Getting a computer + +After this short intermission, let's return to /UNIX/. + +The popular history of /UNIX/ goes as follows: +Ken Thompson finds a PDP-7 microcomputer, starts playing with it and suddenly realizes that he has created a new operating system. + +What he actually wanted to do, was to play a damn game. +A completely reasonable reason to revolutionize the industry if you ask me. + +Ken was a huge fan of /Space Travel/, but it was only available on mainframes. +And since those costed an arm and a leg, end users were paying for time they used. +A single game of /Space Travel/ could cost Ken USD 50-75[fn:uvlist]. +Luckily, he was able to find a discarded PDP-7 from another department[fn:hiddenunix]. + +#+attr_shortcode: "space-travel.png" "https://www.uvlist.net/game-164857-Space+Travel" +#+begin_img-c +Space Travel +#+end_img-c + +What the PDP-7 was, was a refrigerator size 18bit monstrosity[fn:hiddenunix]. +It was at the time a 5-year-old and obsolete[fn:earlylin] leftover from an ended research into audio-psychology. +No one cared what would happen to this particular machine. +Have I mentioned just how stinky rich the /Bell Lab/ was? +So, Ken started rewriting the game for that PDP-7 as /GECOS Space Travel/. + +Porting the game proved challenging and difficult to debug, so they developed a system for PDP-7 to make developing the game easier. +This was how /PDP UNIX/ was born[fn:lcm]. +A guy wanted to play a god-damn game and now bankrupt in the process[fn:hiddenunix] + +Labs management was very happy with this turn of events as /UNIX/ was something to show after the /Multics/ fiasco. +They allowed Ken to get himself a /PDP-11/ and port /UNIX/ to it. +It was a cheaper machine compared to /PDP-7/, but it was also 16bit - which was a nice change. +Officially, the new system would allow for document preparation for patent applications[fn:earlylin]. +The biggest benefit however was the popularity of this machine - over the next decades it could be seen everywhere across enterprise America. +You can buy a working one from /eBay/ today. +It won't be easy nor cheap, but definitely possible. + +#+attr_shortcode: "pdp-7.jpeg" "https://en.wikipedia.org/wiki/PDP-7#/media/File:Pdp7-oslo-2005.jpeg" +#+begin_img-c +PDP-7 +#+end_img-c + +#+attr_shortcode: "thompson-ritchie-pdp11.jpg" "https://www.bell-labs.com/institute/blog/invention-unix/" +#+begin_img-c +Ken Thompson and Denis Ritchie working on the legendary PDP-11. +#+end_img-c + +**** Unix 1 + +So here we are, November 1971, and /UNIX 1/ for /PDP-11/ is released[fn:50] + +A year later Ken notes: +#+begin_quote + +[...]the number of UNIX installations has grown to 10, with +more expected. None of these has exactly the same complement of +hardware or software. Therefore, at any particular installation, +it is quite possible that this manual will give inappropriate +information. [...] Also, not all installations have the latest versions of all the software.'' + +-- Unix Programmers Manual, Second Edition. Thompson Ken, Ritchie Denis, 1972 +#+end_quote + +Note, that this is 10 mainframes across /Bell Labs/, so user count was significantly higher. + +It's also worth to talk about release cycle. +UNIX was in constant development, and each installation would use current snapshot at the moment of installation. +This is why Ken notes that each part of /UNIX/ could differ between installations. +What is also important is that due to licensing of /UNIX/ (or rather lack of thereof), each installation would be accompanied by full source code. +Administrators were able to modify the system. +Crazy times. + +Still, in June 1972 the 2nd Edition of /UNIX/ was released and every 7–8 months a new release was out. + +In November 1973, a 4th Edition was released, and it was the first one released to Universities. +It made quite the buzz, and first user groups started forming under the /USENIX/ name[fn:hiddenunix]. +It's worth to mention that this version was rewritten in C, as previous versions which were created in Assembly +This made it the first portable /UNIX/, as it could be recompiled to any compared, as long as it also had a C compiler[fn:earlylin]. + +The system was presented by Ken and Denis during the /4th Symposium on Operating System Principles/ the same year, +and a year later Ken and Dennis publish the first paper on /UNIX/ - "The UNIX Time-Sharing System" in the /Communications/ journal of ACM. + +#+attr_shortcode: "unix-tech-journal.jpg" "https://leancrew.com/all-this/2011/10/dennis-ritchie-unix-and-clarity/" +#+begin_img-c +Bell System Technical Journal cover. +#+end_img-c + +The word was out and /UNIX/ became known outside of /Bell Labs/. + +In the next episode of History of BSD: the scariest creature of them all. +Lawyers. + +[fn:wikibell] [[https://en.wikipedia.org/wiki/Bell_Labs][Bell Labs --- {W}ikipedia{,} The Free Encyclopedia]] +[fn:hiddenunix] [[https://www.youtube.com/watch?v=xuzeagzqwrs][The hidden early history of unix the forgotten history of early unix]] +[fn:earlylin] [[https://www.youtube.com/watch?v=ECCr_KFl41E][The early days of Unix at Bell Labs - Brian Kernighan (LCA 2022 Online)]] +[fn:uvlist] [[https://www.uvlist.net/game-164857-Space+Travel][UVL]] +[fn:50] The 50th anniversary of this event was very big for a small group of fans. +[fn:lcm] [[https://livingcomputers.org/Blog/Restoring-UNIX-v0-on-a-PDP-7-A-look-behind-the-sce.aspx][Living Computer Museum]] has a real PDP-7 running /PDP Unix/ if want to chek it. + diff --git a/content/bsd/history/01_multics.md b/content/bsd/history/01_multics.md index 7e3b5eb6..ff10f17c 100644 --- a/content/bsd/history/01_multics.md +++ b/content/bsd/history/01_multics.md @@ -4,13 +4,13 @@ author = ["Michał Sapka"] date = 2024-03-09T21:03:00+01:00 categories = ["bsd"] draft = false -weight = 3002 +weight = 2001 primary_menu = "bsd-history" abstract = "BSD history starts with Multics" shortname = "Part I: Multics" [menu] [menu.bsd-history] - weight = 3002 + weight = 2001 identifier = "history-of-bsd-part-i-multics" name = "Multics" +++ diff --git a/content/bsd/history/02_unix.md b/content/bsd/history/02_unix.md index cbf6ef5f..f8243fd6 100644 --- a/content/bsd/history/02_unix.md +++ b/content/bsd/history/02_unix.md @@ -4,13 +4,13 @@ author = ["Michał Sapka"] date = 2024-03-16T21:00:00+01:00 categories = ["bsd"] draft = false -weight = 3003 +weight = 2002 primary_menu = "bsd-history" abstract = "How Unix came to be?" shortname = "Part II: Unix" [menu] [menu.bsd-history] - weight = 3003 + weight = 2002 identifier = "history-of-bsd-part-ii-unix" name = "Unix" +++ diff --git a/content/bsd/history/_index.md b/content/bsd/history/_index.md index 8b3b89d7..35050c45 100644 --- a/content/bsd/history/_index.md +++ b/content/bsd/history/_index.md @@ -2,15 +2,15 @@ title = "History of BSD and Unix" author = ["Michał Sapka"] date = 2024-04-08T09:37:00+02:00 -categories = ["bsd"] draft = false -weight = 3001 +weight = 2001 primary_menu = "bsd" abstract = "the long and turbolent history" [menu] [menu.bsd] - weight = 3001 + weight = 2001 identifier = "history-of-bsd-and-unix" + post = " from Multics to OpenBSD" +++ Does computer history have any real appliance? diff --git a/content/bsd/why-bsd.md b/content/bsd/why-bsd.md new file mode 100644 index 00000000..66714cba --- /dev/null +++ b/content/bsd/why-bsd.md @@ -0,0 +1,133 @@ ++++ +title = "Why you should run a BSD on a PC" +author = ["Michał Sapka"] +date = 2024-04-27T22:29:00+02:00 +categories = ["bsd"] +draft = false +weight = 2002 +primary_menu = "bsd" +abstract = "Reasons why BSD may be the best OS for you" +menu_item_override = "Why you should run BSD on a PC" +menu_item_override_start_li = true +[menu] + [menu.bsd] + weight = 2002 + identifier = "why-you-should-run-a-bsd-on-a-pc" + post = " or perhaps " ++++ + +There's multitude of Operating Systems to choose from. +You use something like Windows or MacOS and be perfectly happy with it. +You can step up and use Linux, Haiku or even Amiga OS. +So, why do I think a BSD system may be the best choice? + + +## FOSS {#foss} + +The most popular systems out there are propietery. +This has the small downside of having to pay, but there's another one. +Closed systems have tendency to limit the user. +It's visible much more with MacOS than in Windows, but the user is always blocked from doing what the user wants to do. +Are you following the product manager's ideal path? +Is web browser everything you need to run? +If so - getting something from Sillicon Valey may enough. + +But a lot of us are hungry for more; we want to be in control instead of being controlled. +Only be having the system be, not only Open Source, but also Free, our desires may be fullfilled. + +FreeBSD gives the user a huge power to adjust itself to the needs and wims. + + +## License {#license} + +One of the reasons is the legal term under which all BSDs are provided - the BSD license. +It differs strongly from what GNU and others propose. +While also being "freedom respecting", it does not limit anyone. +Want to create a closed source fork of FreeBSD and stop giving anything back after few short years? +Don't want to have your hands tied by GPL? +Are you Apple? +Because that's how MacOS X started. + +BSD licenses are amongst the most liberal one. +The most popular, "[3-Clause BSD License](https://opensource.org/license/bsd-3-clause)" limits only the liability of the code provider. + +Some say that BSD License are a problem as companies may take and never give up (like Sony did for PS4), but it's as close to the idea of "Free software" as it gets. + + +## No BigTech {#no-bigtech} + +As a result of this, there is very little interference from Big Tech. +While Linux is happily in bed with the likes of Microsoft or Google or who are able to steer the development, BSDs are still very much a niche product. +Just look at list of sponsrs of [Linux Foundation!](https://www.linuxfoundation.org/about/members) + +In BSD-land we've got some big players, with Netflix being the most promiment one. +But the cooperation is very much on partner terms. + + +## A designed OS {#a-designed-os} + +But the biggest differential factor between BSDs and GNU/Linux is the way it is structured. + +In Linux, all components are designed to work together but are completely separate. +You've got the kernel, init systems, multimedia daemons, userland, bootloader, virtualization and contenerization mechanisms, or package managers. +They are all separate project with their own goals operated by separate entities. +This is why we've got different Linux Distrubitions instead of Operating System. +Everyone can take the kernel, start adding components above it and a few minutes lated the distrowatch is even harder to keep up with. + +Each BSD on the other hand is designed as single environment. +Each component is created and developed together. +While this makes the landscape a bit boring, it also makes it extremely coharent. +Things work together perfectly, because they are designed, coded, tested and released as one. + + +## Build-in technology {#build-in-technology} + +To give just two examples here: + +1. OpenBSD comes with complete web stack built in. + We've got a firewall (best in class), reverse proxy and http server. + We've even got a TLS certificate manager. + And the security of each of those is as high as rest of the OS. + All things work together in perfect harmony, it is designed as such. + +2. FreeBSD comes with ZFS. + One thing this file system provides are efficent and bullet-proof snapshots. + The developers of FreeBSD used it to create the idea of boot environments - a snapshots of OS. + The user can easily boot from any of those in any moment. + Even the standard update process creates a new boot env, just in case something goes wrong. + +Such integration would be very hard to achieve without up-front design. + +And the list goes on: Jails, Beehive, Vnet, Dtrace, Ports system, OpenSSHm Libre SSl. +The crazy folks over at OpenBSD are even working on their own version control system called Game of Trees. + +This has the added benefit of having it all in a single place. +One needs to follow only a few repositories to be up to date and informed. +Mind you, those are _gigantic_ repositories, but if you are smart enough[^fn:1] - it's there. + + +## Stability {#stability} + +being there + + +## Dedicated uses-cases {#dedicated-uses-cases} + + +## Documentation {#documentation} + + +## Community and culture {#community-and-culture} + + +## History {#history} + + +## POSIX and widening perspective {#posix-and-widening-perspective} + +ccc + + +## OSes, not distributions {#oses-not-distributions} + +[^fn:1]: I am not; just barely licking C for now. diff --git a/content/bsd/why-not-bsd.md b/content/bsd/why-not-bsd.md index 8e1be999..c600bdd1 100644 --- a/content/bsd/why-not-bsd.md +++ b/content/bsd/why-not-bsd.md @@ -4,12 +4,14 @@ author = ["Michał Sapka"] date = 2024-04-20T22:13:00+02:00 categories = ["bsd"] draft = false -weight = 2001 +weight = 2003 primary_menu = "bsd" abstract = "Reasons why BSD may not be the best OS for you" +menu_item_override = "why you shouldn't" +menu_item_override_end_li = true [menu] [menu.bsd] - weight = 2001 + weight = 2003 identifier = "why-you-shouldn-t-run-a-bsd-on-a-pc" +++ diff --git a/layouts/partials/header/header.html b/layouts/partials/header/header.html index 05e9290c..ec4adede 100644 --- a/layouts/partials/header/header.html +++ b/layouts/partials/header/header.html @@ -1,5 +1,5 @@ <header> - <div class="logo"> + <a href="/" alt="return to homemage" class="logo"> {{ if in .Page.Params.categories "bsd" }} {{ $logo := resources.Get "logos/logo-beastie-white.svg"}} <img src="{{$logo.Permalink}}" class="beastie" alt="FreeBSD"> @@ -20,7 +20,7 @@ <img src="{{$logo.Permalink}}" class="emacslogo" alt="Emacs"> {{ end }} </a> - </div> + </a> <div class="name"> <nav> diff --git a/layouts/partials/menu.html b/layouts/partials/menu.html index 28421acf..b27d498d 100644 --- a/layouts/partials/menu.html +++ b/layouts/partials/menu.html @@ -12,16 +12,8 @@ {{- define "partials/inline/menu/walk.html" }} {{- $page := .page }} {{- range .menuEntries }} - - {{- if .Params.nonpage }} - <li>{{.Name }} {{ .Post }} - {{- else if .Params.placeholder }} - <li><span class="placeholder">{{.Name }} {{ .Post }}</span> - {{- else}} - <li><b><a href="{{ .URL }}">{{ .Name }}</a></b> {{ .Post }} - {{- partial "inline/menu/new-or-up.html" (dict "page" ($page.GetPage .URL)) }} - {{- end}} - + {{- partial "menu/item.html" (dict "page" $page "item" .) }} + {{- if .Params.inlineChildren}} {{- with .Children }} - {{- partial "inline/menu/inline.html" (dict "page" $page "menuEntries" .) }} @@ -31,7 +23,6 @@ {{- with .Children }} <ul>{{- partial "inline/menu/walk.html" (dict "page" $page "menuEntries" .) }}</ul> {{- end }} - </li> {{- end}} {{- end }} {{- end }} @@ -39,18 +30,7 @@ {{- define "partials/inline/menu/inline.html" }} {{- $page := .page }} {{- range .menuEntries }} - <a href="{{ .URL }}"> {{ .Name }}</a>{{- partial "inline/menu/new-or-up.html" (dict "page" ($page.GetPage .URL)) }} + <a href="{{ .URL }}"> {{ .Name }}</a>{{- partial "menu/new-or-up.html" (dict "page" ($page.GetPage .URL)) }} {{- end }} {{- end }} -{{- define "partials/inline/menu/new-or-up.html" }} - -{{- if lt (div (now.Sub .page.PublishDate).Hours 24) 15}} -<span class="new">(new)</span> -{{- else}} - {{if lt (div (now.Sub .page.Lastmod).Hours 24) 10 }} -<span class="new">(updated)</span> - {{- end}} -{{- end}} - -{{- end }} diff --git a/layouts/partials/menu/item.html b/layouts/partials/menu/item.html new file mode 100644 index 00000000..599f2db9 --- /dev/null +++ b/layouts/partials/menu/item.html @@ -0,0 +1,31 @@ +{{- $page := .page }} +{{- $item := .item }} +{{- $pageItem := $page.GetPage $item.URL }} + +{{- if $pageItem.Params.menu_item_override }} + + {{- if $pageItem.Params.menu_item_override_start_li }} + <li> + {{- end}} + + {{$item.Pre}}<b><a href="{{ $item.URL }}">{{ $pageItem.Params.menu_item_override }}</a></b>{{- partial "menu/new-or-up.html" (dict "page" $pageItem) }}{{$item.Post}} + {{- if $pageItem.Params.menu_item_override_end_li }} + </li> + {{- end}} + +{{- else}} + +<li> + {{- if $item.Params.nonpage }} + {{$item.Name }}{{ $item.Post }} + {{- else if $item.Params.placeholder }} + <span class="placeholder">{{$item.Name }}{{ $item.Post }}</span> + {{- else}} + <b><a href="{{ $item.URL }}">{{ $item.Name }}</a></b> + {{- partial "menu/new-or-up.html" (dict "page" $pageItem) }} + {{ $item.Post }} + {{- end}} + +</li> + +{{- end}} diff --git a/layouts/partials/menu/new-or-up.html b/layouts/partials/menu/new-or-up.html new file mode 100644 index 00000000..9eb9a9f9 --- /dev/null +++ b/layouts/partials/menu/new-or-up.html @@ -0,0 +1,9 @@ +{{- if lt (div (now.Sub .page.PublishDate).Hours 24) 15}} + <span class="new">(new)</span> +{{- else}} + + {{if lt (div (now.Sub .page.Lastmod).Hours 24) 10 }} + <span class="new">(updated)</span> + {{- end}} + +{{- end}} |