|
@@ -0,0 +1,149 @@
|
|
|
+\documentclass{article}
|
|
|
+\usepackage[T1] {fontenc}
|
|
|
+\usepackage[italian]{babel}
|
|
|
+
|
|
|
+% Per i link nell'indice
|
|
|
+\usepackage{hyperref}
|
|
|
+
|
|
|
+\title{OpenLab Virtual 2021\\GNU/Linux Intro, Tips \& Tricks}
|
|
|
+\author{Matteo Savatteri}
|
|
|
+
|
|
|
+\begin{document}
|
|
|
+\maketitle
|
|
|
+
|
|
|
+\tableofcontents
|
|
|
+
|
|
|
+\section{Introduzione}
|
|
|
+\begin{itemize}
|
|
|
+\item Benvenuto e ringraziamenti ad admin e pubblico
|
|
|
+\item Chi sono?
|
|
|
+\item Cos'è LCM?
|
|
|
+\item Regole conferenza: come interagire
|
|
|
+\item Outline e obbiettivi conferenza:
|
|
|
+ \begin{itemize}
|
|
|
+ \item Storia di \texttt{GNU/Linux}
|
|
|
+ \item \texttt{GNU/Linux} per un fisico
|
|
|
+ \item \texttt{GNU/Linux}: nozioni e strumenti importanti
|
|
|
+ \item Testimonianze ospiti + domande
|
|
|
+ \end{itemize}
|
|
|
+\end{itemize}
|
|
|
+
|
|
|
+\section{Storia di \texttt{GNU/Linux}}
|
|
|
+\begin{itemize}
|
|
|
+\item \texttt{UNIX} (\emph{Uniplexed Information and Computing Service, "eunuchs"}),
|
|
|
+ '69, Ken Thompson, Dennis Ritchie \& Co., Assembly:
|
|
|
+ \begin{itemize}
|
|
|
+ \item AT\&T, Bell Labs
|
|
|
+ \item '69-73, sviluppo del C, K.T. \& D.R. $\rightarrow$ Portabilità
|
|
|
+ \item Distribuzione università (es. Berkeley, BSD) $\rightarrow$ Codice aperto
|
|
|
+ \item '84 commercializzazione $\rightarrow$ Codice chiuso!
|
|
|
+ \item Standard:
|
|
|
+ \begin{itemize}
|
|
|
+ \item '85 POSIX (Portable Operating System Interface for UNIX), IEEE
|
|
|
+ \item '98 SUS (Single UNIX Specification), The Open Group
|
|
|
+ \end{itemize}
|
|
|
+ \end{itemize}
|
|
|
+\item GNU (\emph{GNU's Not UNIX}), '84, Richard Stallman:
|
|
|
+ \begin{itemize}
|
|
|
+ \item Sistema operativo Libero (cosa significa?)
|
|
|
+ \footnote{Per approfondire vai a https://www.fsf.org/it}
|
|
|
+ clone di \texttt{UNIX}
|
|
|
+ \item '90 Sviluppo di tutte le componenti del sistema
|
|
|
+ \item Esempi software GNU: \texttt{gcc}, \texttt{glibc}, \texttt{bash},
|
|
|
+ \texttt{coreutils}, \texttt{GNOME}, etc.
|
|
|
+ \item '90 inizia sviluppo \texttt{GNU Hurd}
|
|
|
+ \end{itemize}
|
|
|
+\item Digressione su OS:
|
|
|
+ \begin{itemize}
|
|
|
+ \item OS = Insieme di programmi che consentono all'operatore
|
|
|
+ di utilizzare un computer
|
|
|
+ \item Kernel = Nucleo dell'OS deputato ad allocare le risorse
|
|
|
+ della macchina e altri servizi agli altri programmi
|
|
|
+ \end{itemize}
|
|
|
+\item \texttt{Linux}\footnote{Pronuncia del nome \texttt{Linux} a
|
|
|
+ \url{https://mirrors.edge.kernel.org/pub/linux/kernel/SillySounds/}
|
|
|
+ }
|
|
|
+ , '91, Linus Torvalds:
|
|
|
+ \begin{itemize}
|
|
|
+ \item Progetto personale annunciato su
|
|
|
+ \href{https://groups.google.com/g/comp.os.minix/c/dlNtH7RRrGA/m/SwRavCzVE7gJ}{com.os.minix}
|
|
|
+ \item Kernel Libero (GNU GPLv2), Monolitico, Modulare, UNIX-like
|
|
|
+ \item '92 \texttt{Linux} diventa kernel del sistema \texttt{GNU}
|
|
|
+ \item Adozione in ambito commerciale
|
|
|
+ \item Prima diffusione in supercomputer (
|
|
|
+ \href{https://top500.org/statistics/list/}{Vedi TOP500 OS Family}
|
|
|
+ )
|
|
|
+ \item Poi leader in ambito server
|
|
|
+ \footnote{Guarda ad esempio statistiche su web server a
|
|
|
+ \url{https://w3techs.com/technologies/overview/operating_system}
|
|
|
+ }
|
|
|
+ (in particolare LAMP)
|
|
|
+ \item 2000, Linux Foudation $\rightarrow$ LSB (\emph{Linux Standard Base})
|
|
|
+ Standardizzazione OS che adottano kernel \texttt{Linux}
|
|
|
+ (Da tempo \emph{standard de facto})
|
|
|
+ \item Oggi diffuso in dispositivi mobili (\texttt{Android}), embedded
|
|
|
+ (router board, wearables) e altre applicazioni (es. \emph{TESLA})
|
|
|
+ \item Percentuale diffusione workstation, desktop, laptop e gaming
|
|
|
+ (es. Valve Corporation, SteamOS) in crescita
|
|
|
+ \end{itemize}
|
|
|
+\item Concetto ed esempi di distribuzione \texttt{GNU/Linux} (Ubuntu, Mint, Fedora, Arch, Gentoo, Debian,
|
|
|
+ CentOS, RHEL, SUSE, LFS, OpenWRT, Raspbian)
|
|
|
+\end{itemize}
|
|
|
+
|
|
|
+\section{\texttt{GNU/Linux} per un Fisico}
|
|
|
+Perhé un fisico dovrebbe conoscere ed utilizzare il sistema \texttt{GNU/Linux}?
|
|
|
+
|
|
|
+\begin{itemize}
|
|
|
+\item Cluster di computer e farm (es.
|
|
|
+ \href{https://www.hpc.cineca.it/hardware/marconi}{MARCONI},
|
|
|
+ \href{https://www.indaco.unimi.it/}{INDACO},
|
|
|
+ \href{https://lcm.mi.infn.it/farm/}{LCM Farm}
|
|
|
+ ) nel mondo sono quasi
|
|
|
+ interamente costituite da reti di sistemi \texttt{GNU/Linux} (es. CentOS, RHEL, Debian)
|
|
|
+\item Codice libero = adattabilità, trasparenza, riproducibilità, no interessi
|
|
|
+\item Calcolo scientifico ha storia basata su sistemi UNIX-like da decadi
|
|
|
+ $\rightarrow$ applicazioni vengono prevalentemente sviluppate su e per
|
|
|
+ questa famiglia di sistemi
|
|
|
+\item Tutte le persone dovrebbero usare un OS Libero, per ragioni etiche
|
|
|
+\end{itemize}
|
|
|
+
|
|
|
+\section{Nozioni e Strumenti}
|
|
|
+\subsection{Il concetto di \emph{Shell}}
|
|
|
+\begin{itemize}
|
|
|
+\item \emph{shell} è programma per computer che espone all'utente o ad
|
|
|
+ altri programmi i servizi dell'OS
|
|
|
+\item Si chiama così perché è strato più esterno dell'OS
|
|
|
+\item Può essere GUI (es. \texttt{GNOME}, \texttt{KDE}) o \texttt{CLI}
|
|
|
+ (es. \texttt{sh}, \texttt{ksh}, \texttt{bash}, \texttt{csh},
|
|
|
+ \texttt{csh}, \texttt{COMMAND.COM})
|
|
|
+\item Nel caso di shell CLI $\rightarrow$ \emph{interprete dei comandi}
|
|
|
+\end{itemize}
|
|
|
+
|
|
|
+\subsection{\emph{Interprete dei Comandi} vs \emph{Emulatore di Terminale}}
|
|
|
+\begin{itemize}
|
|
|
+\item \emph{emulatore di terminale} = GUI che emula una \emph{telescrivente}
|
|
|
+ \footnote{Video interessante di \emph{telescrivente} connessa a sistema
|
|
|
+ \texttt{GNU/Linux}:
|
|
|
+ \url{https://www.youtube.com/watch?v=9TGQ4pnVWSQ}
|
|
|
+ }
|
|
|
+ \begin{itemize}
|
|
|
+ \item Programma \emph{master} che riceve e interpreta le stringhe
|
|
|
+ digitate dall'utente alla tastiera, le mostra in una finestra
|
|
|
+ grafica e le passa al programma \emph{slave}
|
|
|
+ (es. \emph{interprete dei comandi})
|
|
|
+ \item Riceve stringhe dal pogramma \emph{slave} e le mostra all'utente
|
|
|
+ grazie ad una finestra grafica
|
|
|
+ \item Esempi: \texttt{xterm}, \texttt{urxvt}, \texttt{st}
|
|
|
+ \item Quando non è un GUI si chiama \emph{console virtuale}
|
|
|
+ (es. le \texttt{Linux tty})
|
|
|
+ \end{itemize}
|
|
|
+\item \emph{interprete dei comandi} = una shell di tipo CLI
|
|
|
+ \begin{itemize}
|
|
|
+ \item Programma \emph{slave} che riceve stringhe dal programma
|
|
|
+ \emph{master}, le interpreta e chiede a OS di eseguire programmi
|
|
|
+ corrispondenti
|
|
|
+ \item Può passare stringhe al programma \emph{master} perché vengano
|
|
|
+ mostrate a schermo
|
|
|
+ \end{itemize}
|
|
|
+\end{itemize}
|
|
|
+\end{document}
|