Linux - History, Terms, and Concepts
PDP-8/L 12-bit minicomputer, introduced in 1968
Motivation - Why Linux and Open Source
As a choice for practical reasons
Some statistics
"Linux rules all the clouds now, including Microsoft's own Azure.",
ZDnet, 2019
- About 90% of cloud infrastructure operates on Linux
- 96.3% of the top one million web servers are running Linux
- The world's top 500 fastest supercomputers all run on Linux
- Linux powers nearly 40% of websites whose operating system is known (22% Windows)
- 85% of smartphones are Android-based, which originates from the Linux kernel
- 47% of professional developers use Linux-based operating systems (61% Windows, 44% MacOS)
"StatCounter reported that desktop Linux reached over 4% market share for the first time."
zdnet.com, March 2024.
From the same source: Windows 72.13%, MacOS 15.46%, Linux 4.03%, ChromeOS 2.26%
See also
Big Tech Giants and Personal Values
As a choice for principal reasons
"Some users prefer Linux due to its focus on open source and user freedom, which aligns with their personal values."
10 Reasons
Why Linux Is Taking Market Share From Windows, iOS
Big Tech: Too Big, Too Powerful -- untrustworthy searches,
self-promotion, product placement, data collection, dynamic pricing, ...
consumerreports.org
Selected acquisitions:
- Google (Alphabet):
- YouTube, 2006, 1.6B, video sharing
- DoubleClick, 2007, 3.1B, online advertising
- Motorola, 2011, 12.5B, smartphones
- Kaggle, 2017, ?B, data science online community
- FitBit, 2021, 2.1B, wearables
- Amazon:
- IMDB, 1998, 55M, Internet Movie Database
- Audible, 2008, 300M, audio books
- Goodreads, 2014, ?M, social book cataloging
- Twitch, 2014, 970M, live streaming video games and esports
- Whole Foods Market, 2017, 13.7B, multinational supermarket chain
- MGM, 2021, 8.5B, Film and TV media
- Facebook (Meta):
- Instagram, 2012, 1B, photo and video sharing social networking service
- WhatsApp, 2014, 19B, messaging and voice over IP service
- Oculus VR, 2014, 2B, VR and AR hardware and software
- Apple: tends to buy lots of smaller companies
- NeXT, 1997, 400M, hardware and software
- Beats, 2014, 3B, headphones and music streaming
- Shazam, 2018, 400M, music and image recognition
- Intel's smartphone modem business, 2019, 1B
- Microsoft:
- Skype, 2011, 8.5B, video chat and messaging
- Nokia, 2013, 7.2B, mobile phones
- LinkedIn, 2016, 26B, professional social networking
- GitHub, 2018, 7.5B, software development and version control
- Activision Blizzard, 2023, 69B, video games (global games market
$188
billion in revenue in 2023)
- openAI chatGPT, 2023, 10B - 49% stake in company, artifical intelligence
See also
Why Desktop Linux instead of Windows -- just a few more reasons
- No advertising
- No data collection
- Efficient, runs on older hardware
- Stable, can run for weeks or even months without restart
- Free software is really free and unlimited, no nagging or freemium
See also:
History
In the 1960s batch operating systems still dominated computing;
writing and running software was awkward and far from user-friendly. Programmers submitted their code
on punched card or paper tape; operators scheduled and ran the program and returned results hours (or days) later.
New time-sharing systems were in development to allow for sharing computing resources by many users.
Multi-tasking and interactive operation were to
make computer programming more accessible, particularly with the new and much more affordable minicomputers.
Multics
was one of the early time-sharing systems, started in 1964 by MIT, GE, and Bell Labs, but the project was
not doing well, and Bell withdrew from it in 1969.
- 1969:
- Ken Thompson at Bell Labs has his own ideas about a new new operating system; in August 1969
he uses the opportunity of a month-long absence of his wife and young son to write kernel, shell, editor, and
assembler of the new system in one week each. The operating system was written
in assembly language for the DEC PDP-7. This minicomputer used 18 bit words and came with 4K standard
magnetic core memory (9KB).
- he is soon joined by Dennis Richie and later others at Bell Labs
- 1970:
- the system is named Unics (pun on Multics), later changed to Unix
- Thompson develops interpretive language B
- 1971: Unix moves to PDP 11 (16-bit architecture, more powerful, easier to program; a few are still in use today! e.g. GE
power plants, US Navy Radar)
- 1972: Dennis Ritchie develops C (based on B)
- 1973:
- Unix rewritten in C
- pipe added
- 1974:
- UC Berkeley receives copy of Unix
- ACM Journal article by Thompson and Ritchie creates big demand for Unix
- 1976: UUCP (Unix-to-Unix Copy Program) for network transfer of files, e-mail and Usenet
- 1977: ported non-DEC hardware Interdata 8/32 and IBM 360
-
1978: Berkeley Software Distribution (BSD)
- Unix derivative developed by UCB until 1995
- initially closed source, but easily licensed, and transition to open source from 1991
- base for many Unix versions such as FreeBSD, and later Mac OS X
-
1983: GNU Project announced by Richard Stallman at MIT
-
free software: not in price, but in being unrestricted by other
distributors to modify the program as necessary
-
mass collaboration project
-
develop a sufficient body of free software ... to get along without
any software that is not free
-
full access to source code
-
requirement of then posting any changes made publicly for other
users to benefit from as well
-
lots of software, but no stable kernel
-
26 Aug 1991: Linus Torvalds posts to comp.os.minix: ``I'm doing a (free)
operating system''
-
Sep 1991: Linux version 0.01 released to FTP server ftp.funet.fi of the
Helsinki University of Technology
-
Dec 1991: Linux 0.11 - self-hosted (compile Linux on Linux)
-
Aug 1993: Debian
-
Nov 1994: Red Hat
-
1996: S.u.S.E Linux 4.2
-
2000: Knoppix Live CD
-
2003: Fedora (free Red Hat)
-
2004: Ubuntu 4.10 The Warty Warthog Release
In terms of lines of code:
Linux System = Linux Kernel (6%) + GNU software (15%) +
other free software (79%)
See also:
Terms
-
Distributions :
- Debian, Ubuntu, Mint, Suse, Red Hat, Fedora, ...
- software collections with support for easy installation
- package manager installs dependencies automatically
-
updates : security patches and other updates can be installed
via the package manager, for all installed applications
-
release : depending on the distribution, new releases become
available with certain frequencies, e.g. Ubuntu has a new release every 6
months for up to 18 months for regular releases, and up to 3 years for
LTS i.e. long term support releases.
Going to a new release is often a
difficult and risky process, and is therefore avoided unless absolutely
necessary.
-
kernel : central part of the operating system, always in memory,
takes care of the most essential functions. Modular kernels employ
dynamically re-configurable sets of software modules that provide
additional functionality, e.g. encryption.
-
swap space : virtual memory extension for parts of data and code
that are not needed at the moment and only read back at a later time.
When swapping starts the performance is affected strongly, but at least
the system continues to work. Without swap space the system starts
terminating arbitrary processes, often with unfortunate results. There
are two options for swap space:
-
swap partition: a contigous physical area on the disk is reserved
-
swap file: a file is created with physically adjacent blocks of data
for fast access. Tools are dd, mkswp. Performance is only slightly
worse then a swap partition, and the setup is much more flexible.
Desktop computers can work without a swap space, although creating one
is still recommended. Server installations always use swap space; about
3 x physical memory is a rule of thumb.
-
boot manager : a small piece of code presenting a list of
operating systems at startup. The selected system is started and used
for the remainder of the session.
-
dual-boot : two operating systems are installed, one of them is
selected in the boot manager for use in the session.
-
desktop : graphical framework including window manager, task
panels, and many other user interface elements.
-
Some commonly used desktops: Gnome, KDE, Cinnamon, XFCE
-
appearance and interface design varies, but functionality within
applications remains unchanged, e.g. Gnome apps can be run in KDE or XFCE
-
X window system : implementation of client-server-architecture
for graphical user interface in Unix systems. The X server runs on the
local machine and provides a graphics (and mouse/keyboard) interface;
clients run locally or remotely and communicate with the X server
-
Live CD : Linux installation on CD or USB stick to be used
during a session, without changes to the hard disk.
Useful for evaluating a distribution; can also be used for installation.
-
ram disk : a section of RAM is used as a temporary hard disk,
e.g., for installation of additional applications; these are gone when
the live session is terminated.
-
root user : computer account with unlimited permissions. Only
used for adminstration, such as installation of additional packages.
Should never be used for day-to-day work.
-
installation : permantly putting the operating system onto the
hard disk, possibly using dual-boot and a boot manager. Usually involves
setting up partitions.
-
apt : Mint, Ubuntu, and Debian package manager. Most versatile in the
shell: apt-get
- apt-get update: get the current list of packages from the repository
-
apt-get dist-upgrade : every installed package is upgraded to the
current version. Should be done in regular intervals, especially with
computers that are connected to the Internet.
-
repositories (Ubuntu specific): software is available with different
licenses and levels of support, reflected in the different Ubuntu repositories:
-
main : free software, maintained by Canonical (the company
the provides the Ubuntu distribution)
-
restriced : proprietary i.e. non-free, but supported by
Canonical, e.g., graphic card drivers developed and provided by card
manufacturer
-
universe : free software maintained by the open source
community
-
multiverse : software encumbered by license problems, which
are irrelevant for most users
In most cases all repositories can be used
(System/Administration/Software Sources). This is the default since
Ubuntu 9.04.
-
apt-mirror : with slow or bandwith-limited Internet connections
the installation of additional package can be very time consuming or
costly; apt-mirror provides a simple solution. Take an external USB hard
disk with at least about 50 GB of free space to a location with good
Internet access and use apt-mirror to put the complete Ubuntu
distribution on the disk. This disk can then be used at home as
installation source.
File systems
File systems provide a unified interface to physical media
for applications
i.e. program code for reading and writing files to hard disk, USB stick,
and SD card is identical.
File systems differ in terms of (among other things)
- support across various operating systems and devices
- maximum volume size
- maximum file size
- character set in file names
Often file names are given and
cannot be changed. However, if you have the choice, consider the
following:
-
for maximum compatibility only use file names containing a-z, A-Z,
0-9, dot (.), underscore (_), and hyphen (- not at start of name)
-
under no circumstances use backslash (\), forward slash (/),
semicolon (;), or colon (:) in your filenames.
-
national language characters such as German umlauts are also not
recommended for filenames.
Here is an overview of the most commonly used file systems:
-
FAT32
-
old Windows file system
-
simple and robust
-
best support in non-Windows systems, including devices like mp3
players
-
many tools e.g. for recovery
-
maximum file size of 4 GB
-
recommended maximum volume size of 2 TB, otherwise compatibility problems
- file names are not case-sensitive
NTFS
-
newer file system for Windows
- supports large files and volumes
-
fully supported in Linux, but not necessarily by other systems or
devices
ext3/ext4
-
standard Linux file system
- very high limits for file and volume sizes; details (such as total number of files on volume)
depend on configuration at file system creation
-
support in Windows via free driver Ext2Fsd
fine in XP, problems in Vista/7/8 due to driver signing forced by Microsoft
workaround by putting Windows into test mode, search for install unsigned drivers Windows
Buffers and Page Cache
When applications read or write files the system does not implement each access as a physical operation
on the disk; this would result in very poor performance. Instead, files are copied to RAM
where they stay for some time so subsequent requests can be performed much faster.
A large amount of available RAM is therefore beneficial for performance.
Buffers are used for I/O operations that move data between storage devices, such as
from RAM to disk.
The page cache is an area of memory where file content is stored for faster access. This area is
typically much larger than the buffers and can occupy a significant part of the total RAM, leaving very little
free memory, since the cache memory can be quickly re-allocated for programs if needed. Memory usage is only
meaningful when listed for programs and cache separately.
Under normal conditions the system takes care of the
buffering and page caching without the user noticing, with the exception of removable drives like USB sticks which
need to be 'unmounted' or 'ejected' before physical disconnect in order to make sure that any data in memory can
be written to the device before it is unplugged.
Encodings
Character encodings are used to translate byte streams into characters
displayed on the screen. The hard drive contains files which in turn
contain bytes. Each byte contains 8 bits, therefore a single byte can
encode 256 different characters.
The ASCII code (American Standard Code for Information Interchange)
is a 7 bit code. Its 128 positions are occupied by the characters used in
the English language, and some control characters used in data
communication. Each character is encoded in one byte.
The ISO 8859-1 character encoding contains the ASCII characters as
the first 128 entries, and other characters used in Western European
languages in the remaining 128 positions. Each character is encoded in one
byte.
UTF8 is the standard encoding for Unicode. The Unicode
project aims at providing support for all characters
used by any major community in the world. Currently the Unicode table contains about
110,000 characters.
From the position in the Unicode table the UTF8 encoding of the character can
be derived:
-
The first 128 characters in the Unicode table are the ASCII characters.
These characters are encoded in single bytes, and the byte values are identical to the ASCII code.
-
The next 1920 characters are encoded in two bytes. This part of the
Unicode table contains characters frequently used in European languages, such as
German umlauts, French accents, and Cyrillic letters.
-
The remaining characters are encoded in three bytes (e.g. Chinese and
Japanese characters, and, oddly enough, the Euro symbol), and four
bytes.
UTF8 is becoming the standard in information processing. However,
many applications still use other encodings, and this continues to cause
problems.
Note that the ASCII characters have the same byte values in all three
encodings described above. Files containing only ASCII characters have
the best chance of being correctly transferred across different types
of systems and processed by whatever
application software will work on them. For this reason it is still a
good idea to only use ASCII characters if at all feasible.
Network Basics
Linux and Unix systems are usually connected to the Internet, and often function as servers i.e.
provide a number of services to the outside world.
In order to achieve data communication between networked computers (hosts)
a number of protocols have to be established; these form the Internet Protocol Suite which is commonly
described in the following layers (in the TCP/IP model):
- Link Layer: protocols concerned with the local network segment a host is directly connected to,
such as Ethernet, PPP, DSL
- Internet Layer: protocols for getting individual packets from the source to the destination host
across network boundaries, thereby forming an inter-net by connecting multiple networks through
gateways; IP
- Transport Layer: protocols providing host-to-host communication services, most importantly
TCP and UDP
- Application Layer: protocols and methods covering various specific Internet functionalities, such as HTTP, SSH, DHCP, DNS
Ethernet is a family of networking technologies commonly used in the LAN (Local Area Network).
DSL (Digital Subscriber Line) is a family of technologies for transmitting digital data
over telephone lines.
PPP (Point to Point Protocol) is used to establish a direct connection between two nodes
over many types of physical networks, including cellular phone.
IP (Internet Protocol) is used for packet construction, addressing and routing along a number
of nodes from source to destination.
-
A packet contains a header with information such
as destination address, followed by the data.
- Each host in the Internet needs a unique numeric IP address which is associated with the MAC
(media access control) address of the network interface hardware.
- Clients such as notebooks or desktop PCs are usually assigned IP addresses temporarily via DHCP
(Dynamic Host Configuration Protocol).
- Servers
are usually assigned permanent IP addresses.
- Numeric IP addresses are associated with more easily remembered host names
via DNS (Domain Name System).
- Routing involves reading the packet destination address and selecting the next
node along the path through the network in order to
propagate the packet towards the destination. This is usually done by special hardware called routers.
UDP (User Datagram Protocol) is a fast and lightweight connection-less protocol.
- In order to send data across the network the data is split into packets.
- In UDP these packets are sent without guarantee of success
or order of arrival. At the destination packets can arrive in changed order or in duplicate, and packets can be lost.
- UDP is used in applications where speed is paramount, and occasional errors are not
much of a problem, e.g. video streaming; however, DHCP and DNS also use UDP.
TCP (Transmission Control Protocol) is a slower, heavyweight connection-oriented protocol.
- TCP employs mechanisms that guarantee
that packets are assembled at the destination in correct order without any packets missing.
- TCP is used to transfer files and other data
that need to arrive complete and unchanged, e.g. HTTP and Email.
- Note that while checking and correcting mechanisms are applied
there is still a (very) small risk of error. Therefore, checksums are often used when very large files
are transferred.
Both UDP and TCP use port numbers: when an application sends a request to a server host, the correspoding service at the destination
is identified by port number, since that host may provide a number of different services.
Some services are identified by their well-known ports, such as
- Port 80: HTTP (HyperText Transfer Protocoll). A web server (http daemon, such as the Apache httpd)
is a program that runs continously and listens
for requested URLs on this port. When a request arrives, it spawns an instance
that answers the request by sending a reply in HTML.
- Port 22: SSH Secure SHell. The ssh server allows remote users to connect to the server
and login to the system, using their credentials.
A firewall is commonly used to allow only certain types of network traffic to certain hosts and
ports, thereby avoiding a
large number of problems associated with malicious requests. A firewall establishes a barrier
against attacks and involves one or more computers or specialized hardware.
If a host is meant
to answer HTTP request and allow users to connect via ssh then the ports 80 and 22 have to be open.
The following command can be used to find the open ports of a given host, and the services
listening on those ports. Scanning
for open ports can be interpreted as preparing for an attack, so consider carefully before using
this command on hosts outside you own control.
nmap localhost
Note that while this command identifies the open ports on your local host, the results do not
mean that those ports are actually reachable from outside your LAN or organisation.
A number of port scanner web sites are available to test the ports on your host reachable from the
Internet.
Linux Installation
Look at the website distrowatch.com to get
an overview of current Linux distributions, their popularity, and their features.
Popular distributions are:
- Mint is based on Ubuntu and comes in several 'spins' i.e. desktops:
- The Cinnamon desktop is based on Gnome 2 and sports a user interface
that includes effects and tends to offer a little more brand-new features.
- The XFCE desktop uses a little less memory and processing resources and
is therefore suited for machines with slower CPUs or small RAM, and for
people who prefer a particularly simple and slim design.
- The MATE desktop is another plain desktop close to Gnome 2.
- Ubuntu is based on Debian. It comes with the new Gnome 3 desktop which is not universally popular with
users, especially those coming from Gnome 2, as the interface design has been changed
considerably and for no good reason, many would feel, the present author included.
By switching to the 'Classic' desktop upon login the traditional Gnome 2 design can be restored to some extent.
- Debian is the system of choice for servers. It can be run on the
desktop, but this is best left to more experienced users.
- Fedora is another popular choice; this one is not based on Debian.
The choice of desktop is not critical, you can always install additional desktops later. Switching to
another distribution can be a hassle; the software will be basically the same, but all those personal configurations
need to be migrated, and many things will work slightly differently -- expect some headaches.
Better choose once and stick with it.
Download the ISO image
32 or 64 bit: today 64-bit is the only sensible choice for practically everyone.
Nearly all current desktop computers and notebooks work in 64-bit mode.
The main difference is memory addressing. A 32-bit pointer can address 2^32 = 4294967296 bytes
of memory i.e. 4 GB, a serious limitation when PCs today come with 8 GB of RAM or more.
Download the ISO file, e.g. for Linux Mint 21.3 Cinnamon:
linuxmint-21.3-cinnamon-64bit.iso
Checksum:
The download is about 3 GB; it is very unlikely but possible to end up with a corrupted image file.
Therefore, also download the checksum file sha256sum.txt
and compare with the hash of your downloaded ISO file.
On Windows open a CMD prompt, go to your download directory, and enter:
certutil -hashfile linuxmint-21.3-cinnamon-64bit.iso SHA256
type sha256sum.txt
Compare the hashes (at least the first and last few chars)
Or, if you are feeling lucky, just forget about the checksum and hope for the best..
VirtualBox Installation
You can install Linux inside a virtual machine such as VirtualBox (Open Source, Developer Oracle).
Virtualization is very common in IT, and some experience with the concept is useful. Modern operating systems
and hardware support virtualization in various ways. However, you may need to enable those options
in the BIOS (called e.g. Intel VT or AMD-V).
Pros and Cons of this method:
- + no need for disk partitioning
- + you can run both systems (host and guest) at the same time
- - noticeable impact on performance (esp in GUI interaction)
- - expect problems with 3D graphics and GPU support
For trying things out, comparing various distributions, and
getting comfortable with the Linux system the VM is a sensible option. For gaming or other
applications that depend on full support for the 3D functions of your graphics card or iGPU
the VM is definitely not a good choice.
Steps:
- Download the software from virtualbox.org
- in Windows you may also need the Visual C++ runtime
- Start VirtualBox and create a New VM
- as ISO file use your downloaded Linux ISO image
- Skip unattended install
- Defaults for Memory, CPU, and virtual disk image (VDI) are probably fine
- Once the VM is created, check the parameters
- under System check Acceleration: should show KVM Paravirtualization
- under Storage check IDE/Optical = Linux ISO file, SATA = VDI file
- start the VM, it should boot from the ISO file
- you are now running the Linux live system and can install from there
- you probably want to go to full screen mode
- During the installation you can use Erase Disk, Use Entired Disk or similar since it refers to the virtual disk file
- At the end of the installation the Enter key may not do anything, you need to Power Off the VM in VirtualBox
- Check the VM parameters again: the IDE/Optical drive should now be empty
- Start the VM and it should boot into your new Linux system
Once the guest is installed you can
- select Devices/Add Guest Additions which adds
Linux kernel modules for features like shared folders and clipboard, and dynamic window resizing
- go to fullscreen and set the display resolution (in Linux) to your native monitor resolution
☆ Performance benchmarking is notoriously tricky, what do we mean by performance?
How fast the system boots and applications start up, how sluggish or snappy the GUI interactions are,
CPU number crunching, file IO, or everything together, but weighted how?
Here is a basic CPU benchmark using the 7z compression package
which comes standard in Linux Mint; done on a Lenovo X200 (2.4-GHz Intel Core 2 Duo, 4 GB RAM, 2009)
- on the command line (in terminal): 7z b -mmt1
- Compare Total Rating MIPS:
- Mint 21.3 in VirtualBox with Windows 10 host: 1773
- Mint 21.2 native: 2259
This indicates a performance loss on CPU-only tasks of about 20% because of virtualization; the subjective user
experience for the whole Linux system would suggest a much higher value.
Dual-boot Installation
This means you have to select the OS at the start of your session i.e. when you boot your computer.
You get the full performance of your hardware, and also all the support for your GPU that your Linux distro offers.
The process is certainly not rocket science, but you can erase your existing operating system, if you are not careful.
The re-partitioning of the hard disk or SSD can lead to nasty situations. Definitely backup all your user data
before you start.
- If you already have another operating system
installed then that partition will have to be
resized to make room for the new Linux partition. On Windows you can use "Disk Management"
and then "Shrink volume"
to shrink the C: partition (enter "disk m" in the search bar). Make it about 50 GB of free space.
- Put the ISO image file on a USB stick with Etcher,
or Unetbootin, or a similar tool.
The stick needs to be at least 4 GB (for Linux Mint). Do not simply copy the ISO file to the stick,
this does not work.
- Reboot and watch the screen during startup:
You need to press a key like Del, F12, or Esc to get to the BIOS/Startup/Setup menu and
boot from the stick. You want to select the USB stick as a temporary startup device; often there is an option
just for that.
- The system boots from the stick, and you can now try the live system. See if everything works: sound, WiFi,
Bluetooth, ...
- Start the installer. It should
guide you through the whole process.
☢ A little thinking is still needed: if you already
have another operating system on your PC which you want to keep then you do NOT want to use the entire
disk for Linux. Instead, choose 'install alongside' (in the Mint installer), or define the partitions yourself.
Partitions: For a very basic desktop system you only need one partition mounted as / (root) with
a minimum size of about 20 GB (Mint).
Unless your hard disk or SSD space is severly limited about 50 GB (at least) is a more reasonable choice.
Swap space: The installer suggests to create a swap partion, but for a desktop installation
with a single Linux system it is more flexible to use a swap file which can be set up later.
/home partition: by default /home is in the system partition so the disk space can be shared among
system and user data; however, there are a few advantages to having a separate /home partition, such as
keeping your data and user settings when you upgrade to a new major release of your distribution.
On the other hand, you can do this e.g. with the Backup and Restore tool. In both cases there
is a chance of incompatible user settings.
When in doubt stick to the default i.e. no separate /home partition.
Encryption
Encrypting the home directory is usually, but not always, a good idea.
Notebooks: encryption is very much recommended - they can get lost or stolen easily.
Obviously it means using a sufficiently strong login password. See
section Tools/Keyring for details.
A strong password should be at least 12 characters long
and must not be based on dictionary words. Use upper case, lower case, and digits, but do not
substitute digits for letters: good old simple passwords like netw0rk or g0ldf1sh
can be cracked almost instantly nowadays.
Desktop PC: they tend to be at a much lower risk of theft or loss compared to laptops,
and home directory encryption comes with some downsides:
- If things go wrong recovery can be a nightmare. You cannot simply mount the disk on another Linux system, as you
can with an unencrypted file system.
- ecryptfs limits the number of characters in filenames to about 140 vs 255 in ext4. This can cause
problems for some applications.
For these reasons many people opt for other encryption solutions on their desktop, such as using it only on a
particular folder. Tools are e.g. gocryptfs (apt-get install gocryptfs) and
veracrypt.
Encrypting only the home directory is a sensible option; however, the swap space can also contain private
data, at least for a short period of time, so encrypting the swap space as well is still a reasonable choice.
Encrypting the complete Linux system is not sensible in most cases.
Boot Menu
After the installation is finished you will see the boot manager taking over at startup.
It shows the boot menu and allows you to choose an operating system for this session.
After installation the boot manager defaults to the new Linux system. Once the system is up and you are logged in
the default can be changed with
sudo grub-set-default n
in a terminal window, where n is the number of the entry you see in the boot menu
(index origin zero!).
Even if you do not intend a dual-boot setup the installation will still use the boot manager. However, you can
set the grub timeout to something like 2 seconds to speed up the startup. Do not set it to 0, you
want to be able to go into rescue mode (without a USB stick containing the live system, which is always an option).
WSL is not Linux
The Windows Subsystem for Linux. Some Pros and Cons:
- + comes with Windows 10 and 11
- + at least WSL 1 is more efficient than VirtualBox (e.g. 7z benchmark equal to native)
- + allows you to run Linux programs in Windows
- - developers using WSL stay in the Windows world rather than switch to full Linux system
- - discourages users from installing a full Linux system since they already have a desktop
- - as a consequence, drive development effort away from the Linux desktop
- - also more generally discourage native Linux application development, esp. games (note Activision Blizzard acquisition!)
- - easier for IT departments in organizations to forbid Linux installations, since 'you can do it in WSL'
- - and of course, everyone still needs to pay Windows licenses
Note that all the cons very much benefit Microsoft.
There are two versions of WSL, but in fact they are very different products:
- WSL 1 is a compatibility layer allowing you to run Linux programs on Windows
(like Wine for Windows programs in Linux).
- WSL 2 is essentially a VM using Hyper-V virtualization; it uses a custom Linux kernel from Microsoft (!)
There is no login, WSL starts the shell with the default user and requests no password.
WSL is often praised for simplifying the development and testing in Windows/Linux environments:
- You can install e.g. a web server and a database server in WSL and test the system with
a Windows browser, however:
- WSL is not Linux. Things work slightly differently in WSL, esp. with startup and services
- Note that WSL 2 is available for Windows Server..
WSL 2 is generally an improvement over WSL 1, but it is not better in every respect, e.g.
since WSL 1 is not virtualization, there is no performance hit -- if programs run, then
they run at native speed.
It is possible to install Linux GUI applications in WSL 1, but you need an X server to run them,
e.g. VcXsrv. In WSL 2 it should work after you
install some drivers; see e.g. itsfoss.com.
See also:
Some more things to consider in connection with Microsoft and Linux
-
Microsoft is a member of the Linux Foundation and the Linux kernel security mailing list.
CEO Nadella famously said 'Microsoft Loves Linux'. Or is it really
Microsoft needs Linux?
linux.com
-
"On Microsoft's Azure cloud computing platform, more customers run Linux servers than Windows servers.
So when you take the wide view, it seems that Linux dominates Microsoft rather than the other way around.
It was likely this reality that prompted Microsoft to develop WSL in the first place."
makeuseof.com
- Microsoft may not care so much about the Windows OS anymore.
"Microsoft's profits these days come from its Azure cloud and Software-as-a-Service (SaaS), Microsoft 365 in particular. "
They want you to subscribe to Windows 365 Cloud PC which can be run practically everywhere, including Linux.
ZDnet, March 2024.
computerbild.de, Nov 2023:
prices start at 28 EUR per user per month!
- Some people in the Open Source community
believe that
WSL is essentially another embrace/extend/extinguish strategy by Microsoft.
- "Microsoft adopts or supports Linux when the customers are there, or when it wants to take
advantage of the ecosystem with open-source projects."
techrepublic.com.
- "10 Reasons Why Linux Is Taking Market Share From Windows, iOS",
gadgetmates.com, March 2024
WSL allows Microsoft to offer all the great free software from the Linux community to their Windows users while still
keeping those users in the Microsoft world, treating them with advertising and self-promotion, collecting data,
and charging license fees.
However, Windows users can now more easily see the huge amount of
high quality free software out there, and may well decide to ditch Windows and Microsoft altogether.
It is tempting to view the recent rise in desktop Linux adoption in this light (2.94% in Feb 2023, 4.03% in Feb 2024
according to statcounter,
derived from website tracking).
The stringent hardware requirements of Windows 11 may also play
a role in the recent rise of Linux;
neowin.net,
Mar 2024. Combined with runaway inflation after the Covid crisis many users may have chosen not to buy a new computer
to upgrade to Windows 11, but instead use Linux on
their older hardware. Note that desktop market share of Linux in India,
the fifth-largest economy, went from 8.19% in February 2023 to 15.21% in Feb 2024.
See also: "Sick of Microsoft?" Switch to Linux.
PCmag, May 2023
Upgrades
In most popular Linux distributions the software comes in 'packages'. This often corresponds to an application,
but it may also be software that is used as a component in apps and other packages. It is vital for your
system to keep all packages in their proper versions, and install additional packages as needed, e.g. when
you install something like the game Wesnoth the package manager will also install a host of other packages
that are needed as well. The total number of packages goes into the thousands quickly.
Debian-based distributions like Ubuntu and Linux Mint use the apt package manager. You can upgrade all installed
packages by entering on the command line:
sudo bash
apt update
apt upgrade
This should be done regularly.
You can also set it to automatic (in Linux Mint: Control Center/Administration/Update Manager).
- All software packages installed in your system will be upgraded as new versions are available in your release.
- This should never cause any problems, as long
as you only use the provided manager for your software (e.g. in Linux Mint either apt
on the command line, or the GUI apps like Software Manager).
- If you also installed software in other ways, such
as compiling from source, subtle (or not so subtle) problems can be introduced, possibly not recognized
until much later.
At some point your release will no longer be supported i.e. new versions of your software can no longer
be installed with the package manager.
New Releases
This depends on your distribution; in Linux Mint there are
new major versions every other year or so.
There are also three point releases (or minor releases).
A release is identified by major and minor number and a name, e.g. Linux Mint 19.3 Tricia.
Releases are supported for five years, e.g. Mint 19 was released
in 2018 and supported until (end of) 2023. Mint 21 was released in July 2022 and will be supported until
April 2027.
Transitions between minor releases such as from 21.2 to 21.3 tend to cause no problems and can be done
with the Update Manager: Refresh, then look in Edit.
Going to a new major release is usually not painless.
There are several options, and the choice is tricky.
Whatever you opt for, backup your home directory first; also make a list of your installed packages.
The Backup Tool (in the Administration menu) helps with that; however, it creates a single (possibly huge)
tar file. Another simple backup of your home directory is e.g.
rsync -av /home/myuser /media/myuser/myusbstick
This creates a copy of your home directory on your USB stick
with all the files and directories, ready to work with. It includes all the dot files and directories
that contain your user config for various applications (somewhere in .config and maybe .local),
and when you do this again later only the new files will be copied.
The following are feasible options for a major release upgrade, in order of probable usefulness:
- Make a fresh install and keep your user settings, e.g. in a separate /home partition or backup and restore your whole
home directory, including dot files. There may be some incompatible settings.
- Make a fresh install and restore your home directory without the config files. This means you will have to do a lot
of configuration in the new system, but once you are finished everything works as intended for the new release.
- Use the mintupgrade tool. apt install mintupgrade, then sudo mintupgrade.
It may work flawlessly, or not at all, or somewhere in between.
Here there be dragons.
You do not have to go to a new major release as soon as it becomes available. As long as your current release
is still supported you get the all important security updates.
Only go to a new major release when you really want some of the new features.
Otherwise better wait for at least the next point release, when the rough edges of the new major have been polished a bit.
Additional Packages
When your system is up and running you may want to start your Software Manager
and install some additional packages. There are thousands of packages, here are only a few suggestions:
- Blender: 3d modelling and rendering
- Krita: painting app - unleash your inner Picasso
- Inkscape: vector-based drawing
- 0ad: real-time strategy game
- Wesnoth: challenging turn-based strategy game
- Gnome-Mahjongg: solitaire version
- Stellarium: astronomy software
- VLC: media player
- Firefox: one browser to rule them all
- LibreOffice: the free office suite
- Evolution: mail, calendar, groupware
- Thunderbird: another popular Email client
- r-base: the Gnu R statistical computation and graphics system
- GIMP: the Gnu Image Manipulation Program
- Vim: vi improved, the editor of choice for the serious Linux user
- PostgreSQL: relational SQL database
- Mysql: another relational SQL database
Check the Software Manager (in the Start Menu) for software.
You can install it from there, or on the command line; in Debian-based systems like Ubuntu
and Linux Mint open a terminal window and enter:
sudo bash
apt update
apt install wesnoth
..and start playing - just like that.
Running software for other operating systems
Within your Linux session you sometimes want to run software from other
operating systems.
Participate!
Even if your programming skills are not top-notch, and you don't have the skill or time
to write documentation and tutorials,
you can still take part in the Open Source movement with moderate effort:
- Submit bug reports and help making applications better
- Spread the word and get people away from proprietary systems to free and open
solutions
- Simply set an example just by using Open Source software