Linux/Advice to Windows users
Most non-Apple computer users are used to the Mircosoft Windows operating system, since it usually comes pre-included with computers. Should you wish to try out Linux, or install it on a live USB (which is difficult with Windows due to licensing restrictions), here are some considerations.
Distributions
editThere are a variety of distributions of Linux, such as Mint, Ubuntu, and Arch. Due to varying user preferences, it is not possible to have "one big Linux" operating system for everyone.
Workflow
editWhen installing a program on Windows, the usual workflow is to visit a web site through a web browser and download an installer executeable (.exe
or .msi
file). While a similar concept exists on Linux, AppImage, the typical method of installing software is from repositories that are accessed by a locally installed package manager. This is usually done through the terminal, but a graphical application manager might be provided or installable.
Terminal
editWhen using Linux, you should familiarize yourself with the terminal (command prompt), since it contains useful and essential commands for searching and managing files, and listing and managing tasks. Examples for common commands include cp
for file copying, mv
for file moving and renaming, grep
for text searching in one or multiple files (more functional than findstr
from Windows CMD), find
for file searching, wc
for word and line counting, ls
for file listing, ps
for process listing, free
for system memory (RAM) statistics, df
("disk free") for total disk usage statistics, and du
for individual directories' disk usage.
All these tools are pre-installed as core utilities on Linux, so one can be certain that any computer running Linux has these available.
Like on Windows CMD, the output from terminal commands can be redirected into a text file for later viewing, by appending >>
and a file name, with or without path, after the command. Additionally, the |tee -a
pipeline allows both reading the output in the terminal window and storing it in a text file. Other pipelines are |head
for showing the first ten lines only, |tail
for the last ten lines, each with the -n
parameter for a custom number of lines; |more
for pausing after each screen height until a button is pressed, and |less
for making the text scrollable using the arrow keys and pgUp and pgDn. |wc
counts and shows the number of lines, words, and characters in the output to prevent a potentially large output from flooding the terminal window, and can also be used to approximately count files inside a folder (ls -r folder_name |wc
).
Multiple pipes can be stacked onto each other. For example |grep
can be used multiple times to filter lines by search terms, and then |less
to make the results scrollable.
Aliases, variables, and functions are shortcuts which can be specified in the ~/.bashrc
file which is loaded each time the terminal is opened. "~
" is a shortcut for the home directory, usually located at "/home/username/
". For example, the line alias RLF="readlink -f"
creates the command RLF
as a shortcut for readlink -f
, dl=~/Downloads/
creates the shortcut variable $dl
for the download folder, and mkcd() { if [ ! -d "$@" ];then mkdir -p "$@" ;fi; cd "$@"; }
creates a function command to create and enter a directory in one step. A starting working directory can also be set using the cd
("change directory") command.
Some interactive command-line utilities output and update information directly in the terminal window, such as top
and htop
for monitoring processes, and iotop
for monitoring disk speed usage.
Aliases can also be used to set default parameters or change the behaviour of commands. For example, alias clear="sleep 5;clear"
adds a five-second delay to clearing the terminal when using the clear
command to allow for interruption when accidentally entered, and cp=cp -n -p -v
causes the cp
command to be run with the parameters for not overwriting ("no clobber"), for preserving the date and time stamps ("preserve"), and for printing each copied file into the terminal ("verbose").
Command parameters can sometimes be combined. For example, ls -a -l -R
has the samee effect as ls -alR
.
Using the terminal can be somewhat more difficult at the beginning, but once you are familiar with the commands, getting some tasks done can be faster through the terminal than through graphical user interfaces. For example, once you are somewhat familiar with the parameters of the ffmpeg
command-line utility, multimedia conversion can be launched quickly and conveniently through the terminal. So-called wildcard characters such as asterisks ("*
") and question marks ("?
") allow for the convenient selection of multiple files.
Third-party graphical user interfaces that make use of command-line interface software exist, such as "gparted" for the "parted" command-line utility.
Proprietary software
editSome vendor-specific software might not be provided for Linux due to its relatively small user base compared to Windows. Such includes software for controlling the lighting of peripherals like USB keyboards and mice or built-in laptop keyboards, or printer and scanner drivers and control software. Third-party workarounds may or may not exist.
Printers and scanners should support the generic scanning and printing tools pre-included with Linux, but those might not be able to make use of all features of the scanner or printer.
Some professional software such as that by Adobe has limited support for Linux. The "Wine" utility that aims to support Windows software under Linux does not work with all software, so it is not guaranteed to work with a popular proprietary software you might be using. Consider seeking and familiarizing yourself with open-source cross-platform alternatives. Should they lack some functionality, consider filing feature requests at the developers' bug tracker sites.
Graphics
editWindows computers typically have the driver for the GPU (graphical processing unit) out of the box, since vendors of Windows computers typically pre-install the graphics driver that matches the graphics card. On Linux, a graphics driver usually has to be installed manually by the user, and video player software and web browsers might have to be configured to make use of it.
Support for very recent graphics cards might be delayed.
Most tasks can be completed without a graphics driver, but playback of video is more power-efficient through the purpose-built graphics card, also known as "hardware decoding", than the more generic CPU (central processing unit), also known as "software decoding". Encoding tasks finish faster and consume less power through hardware encoding.
The CPU (software decoding) might not even be able to play back video at high resolutions such as 4K 2160p smoothly, and the lower efficiency could cause the cooling fans to spin up and is especially detrimental to battery-powered video playback.
Before connecting or disconnecting an untested external monitor for the first time, make sure to save any unsaved information such as text documents beforehand. There might be compatibility issues with some graphics cards, causing your screen(s) to black out and enforcing a reboot, meaning any unsaved information would be lost. If no screen blackout occurs, you can connect and disconnect that monitor safely.
Dependencies
editOn Windows, software libraries are typically bundled with downloaded software. On Linux, so-called shared objects (".so
" files) are preferred. While this allows for a more efficient memory usage due to less duplication, you might run into what is known as the dependency hell. If software developers are uncooperative, they might make their software dependent on different versions of shared libraries. Usually, these can be installed simultaneously, but not in all cases. This is known as "conflicting dependencies". Should any dependencies be missing, a package manager might refuse to install any new software. As of 2022, this problem has not been solved yet.
Here is an example of the terminal output when dependency errors occur:
The following packages have unmet dependencies: libbrotli1 : Depends: libc6 (>= 2.29) but 2.23-0ubuntu11.3 is to be installed libfreetype6 : Depends: libc6 (>= 2.33) but 2.23-0ubuntu11.3 is to be installed libpng16-16 : Depends: libc6 (>= 2.29) but 2.23-0ubuntu11.3 is to be installed Depends: zlib1g (>= 1:1.2.11.dfsg) but 1:1.2.8.dfsg-2ubuntu4.1 is to be installed proftpd-basic : Conflicts: ftp-server vsftpd : Conflicts: ftp-server E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
References
edit- Linux ist KEIN Ersatz für Windows – m4xFPS ("Linux is not a Windows replacement" in German, July 17th, 2022)