GNU’S NOT UNIX
GNU’S NOT UNIX vers. 0.0.1-alpha
INDICE
GENERALE:
CREAZIONE E COPIA DI DISCHI DI BOOT
LDR - Linux Domande e Risposte
AGGANCIARE IL MENU’ DI KDE IN QUELLO DI GNOME
ACQUISTARE LINUX - DISTRIBUZIONI
Linux è un sistema operativo nato dall’integrazione di un kernel scritto da Linus Torvalds con le numerose utility scritta dalla GNU.
All’accensione del PC il BIOS carica in memoria il settore 0 cilindro 0 del disco di avvio chiamato MBR (Master Boot Record). Complessivamente il MBR è composto da 512 bytes: gli ultimi 64 bytes contengono la tabella delle partizioni mentre i restanti bytes contengono il programma da eseguire al boot-strap che ottiene il controllo del PC e carica il sistema operativo. Per fare questo l’MBR non può sfruttare altro che le routine messe a disposizione dal BIOS, nasce così il problema del cilindro 1024. Il BIOS, infatti, non è in grado di vedere locazioni del disco oltre questo limite. Nel caso di Linux l’MBR conterrà un programmino in grado di caricare il LILO (LInux LOader), il quale a sua volta avvia un rudimentale programmino 8086 che si trova in boot/bootsect.S. Quest’ultimo carica il boot/setup.S, un altro programma 8086 che tenta di identificare alcune caratteristiche della macchina, carica il kernel, entra in modalità protetta e lo lancia. Quando passa in modalità protetta il kernel si libera di tutte le limitazioni del BIOS ed esce dal mondo degli 8 bit. Viene avviato il programma zboot/head.S che inizializza i registri in modalità protetta e la routine del kernel che lo decomprima. Il bootstrap finisce quando il kernel è in memoria ed ha il controllo (I kernel normalmente sono in arch/i386/boot.
Quando termina head.S il kernel esegue una serie di inizializzazioni: IRQ, Bus PCI e quasi tutto l’hardware ma anche i moduli ed i drivers, definisce i limiti della memoria e genera un processo chiamato IDLE. Analizza la linea di comando passato da LILO e calibra il loop di ritardo, cioè calcola i BogoMips della macchina: in un certo senso ne misura le prestazioni. Viene poi montata la dir di root in Read-Only. Verifica se col processore funziona l’INT 16, libera la memoria non più necessaria, apre la console ed avvia INIT. Fino a prima dell’avvio di init era il kernel ad avere il controllo della macchina e seguiva un comportamento sequenziale, ossia svolgeva una serie di compiti previsti all’atto della compilazione. Una volta avviato init il kernel assume una posizione più passiva, quella di gestore delle risorse: tiene traccia dei files su disco, avvia i programmi e li fa’ girare contemporaneamente, assegna la memoria ed altre risorse, riceve e manda i pacchetti in rete, evita che chiunque acceda all’hardware direttamente forzando tutti ad utilizzare gli strumenti che fornisce proteggendo gli utenti uno dall’altro. Gli strumenti forniti dal kernel vengono usati attraverso chiamate al sistema, ma il kernel fornisce solo delle chiamate a basso livello, quindi altri “strati” si appoggiano al kernel per fornire servizi più ad alto livello. Questi strati si dividono in 2 categorie: le librerie dinamiche ed i daemon. Le librerie dinamiche mettono a disposizione chiamate di più alto livello rispetto al kernel facilitando la programmazione. I demoni invece svolgono la maggior parte dei servizi del sistema operativo e conferiscono a Linux la sua struttura modulare.
IDLE è un processo speciale, generato prima di init, che non può né dormire né morire. Idle ha il pid 0 (mentre init ha l’1), è sempre pianificato con la priorità più bassa ed è sostanzialmente un loop continuo. In pratica viene eseguito solo se non c’è nessun altro processo da eseguire. Il compito di IDLE è quello di far lavorare il processore, facendogli perdere tempo, perché quest’ultimo non può mai rimanere fermo. Più tempo viene dedicato a IDLE più il sistema è scarico.
Init attiva tutti i processi ed i daemon definiti nel run-level in cui portare il sistema, attiva tutte le console virtuali ed assume la paternità dei processi rimasti orfani. Se si dispone dell’hardware adeguato init gestisce le cadute di tensione ed il ritorno allo stato normale. Permette di cambiare il R.L. della macchina compreso quindi il riavvio (init 6) e l’arresto (init 0). Gestisce la pressione di CTRL-ALT-CANC all’interno di una console ma in generale risponde a qualunque combinazione di tasti presenti nella console per i quali il sistema sia capace di trasmettere il segnale a init. Il daemon init una volta caricato sarà la colonna vertebrale alla quale si appoggeranno tutti i processi ed i daemon del sistema. Init, in funzione di ciò che trova scritto in /etc/inittab, controlla il file-system, avvia alcuni demoni, rimuove dei files temporanei e aggiorna l’orologio di sistema. Fatto ciò init inizia la sua attività normale: è il padre di tutti i processi. In particolare avvia una getty separata per ogni terminale da cui è consentito loggarsi. Getty legge il nome dell’utente ed avvia login che legge la password. Se user e password sono corretti login avvia la shell. Quando la shell termina init avvia un’altra copia di getty. Quando si arresta il sistema è init che uccide tutti gli altri processi, smonta il filesystem e ferma il processore.
Linux è un sistema multiutente, di conseguenza per accedere è necessario specificare il nome della propria utenza e la relativa password. Ad ogni utente viene creato un account nel sistema ed a ogni account vengono assegnati o meno alcuni privilegi. Per gestire altri utenti è necessario ricorrere all’utenza speciale “root” che corrisponde all’amministratore del sistema ed ha pieni poteri, compresa la distruzione. Data la pericolosità potenziale di tale user normalmente anche l’amministratore si crea una utenza normale, ricorrendo a root solo in casi particolari.
Linux è un sistema operativo che è nato e si è sviluppato sulla rete e tramite la rete, è scontato quindi che dia il meglio di sé stesso se collegato in rete. Una di queste funzionalità è l’accesso da remoto, tramite il quale, ad esempio, ci si può connettere al proprio sistema linux per mezzo di un modem e lavorare come se ci si trovasse di fronte al proprio computer.
Normalmente sono definite 6 console virtuali in modalità testo selezionabili tramite tasti CTRL-ALT-F1 fino a F6 (o ALT+frecce sx/dx o col comando cbit n, in cui n è il numero della console) ma tramite le porte parallele potremmo attaccare altre console. In realtà queste ultime non sarebbero vere e proprie console perché non collegate direttamente al sistema come il video e la tastiera principali ma le funzionalità sarebbero le stesse.
Vedi GESTIONE ACCOUNT per ulteriori informazioni.
Vedere la sezione “CONFIGURAZIONE DEL SISTEMA”
Aggiungere i fonts TrueType
configurando l’”xfs” come descritto nella sezione “CONFIGURAZIONE DEL SISTEMA”.
Creare un link simbolico
/usr/X11R6/lib/X11/fonts/TrueType verso /usr/share/fonts/default/TrueType.
Inserire anacron nei run-level 3-4-5 e l’impostazione di setserial per i 115.200 bps nel file/etc/rc.d/rc.local.
In /etc/profile inserire:
‘ulimit –c 0’ (per evitare la creazione dei Dump)
‘export LANG=”it_IT”’. (lingua italiana)
export PRINTER=”lp1” stampante di default
I moduli sono parti del kernel che si possono caricare “al volo” quando servono e scaricare quando non servono più; il loro utilizza permette di risparmiare memoria mentre il non utilizzo costringe a compilare un kernel monolitico con una maggiore occupazione di memoria ma ugualmente efficiente. Il caricamento dei moduli può essere fatto in maniera completamente manuale con insmod ma, dato che è necessario rispettare una certa sequenza è preferibile utilizzare modprobe che carica oltre al modulo richiesto anche quelli necessari al funzionamento del modulo stesso nella giusta sequenza. Il daemon kerneld, sostituito da kmod (/usr/scr/linux/kernel/kmod.o) a partire dalla versione 2.2.*, è integrato nel kernel e carica e scarica autonomamente i moduli necessari in maniera trasparente.
I moduli sono in /lib/modules/”versione del kernel”.
insmod carica un modulo
insmod –r carica un modulo e lo rende scaricabile
rmmod scarica il modulo
rmmod –a scarica tutti i moduli non usati
modprobe carica il modulo e tutti quelli ad esso necessari
modprobe –r scarica il modulo e quelli che aveva caricato per il suo funzionamento
modprobe –a lista dei moduli disponibili
depmod –a genera modules.dep partendo da /etc/modules.conf
Per scaricare periodicamente i moduli non usati inserire in /etc/crontab:
0-59/5 * * * * root /sbin/rmmod -a
Un processo è una sezione di un programma: ogni programma origina almeno un processo; è la capacità di gestire più processi simultanei che rende un sistema operativo multitasking.
Ad ogni processo viene assegnato un numero che lo identifica univocamente ed è il PID (Process Identificator), init è il processo con PID 1.
Esistono dei processi “speciali” che prendono il nome di DAEMON: sono processi che normalmente non hanno fine se non allo spegnimento della macchina per poi ripartire alla riaccensione. Girano in background senza un terminale di controllo ed in genere ognuno di loro rappresenta un servizio.
Alcuni di essi sono:
inetd si mette in ascolto sulla porta definita ed accetta connessioni di rete
lpd demone di stampa
cron scheduler: esegue operazioni a tempo
syslogd tiene traccia di quello che avviene nel sistema creando i log
gpm gestisce il mouse, anche al di fuori di X
Ogni processo lanciato da un utente ha anche un numero di job che è simile al PID ma si riferisce solo a quel particolare utente che lo ha lanciato: ogni utente ha il suo job n° 1, 2, 3…… Per identificare univocamente un processo si ricorre al PID.
Il controllo dei processi viene fatto dalla shell: fg, bg, &, jobs e kill sono comandi interni alla shell.
& alla fine del comando: lo esegue in background
CTRL-C interrompe un processo
CRTL-Z: mette in “pausa” un processo e ritorna il controllo alla shell
Il numero tra parentesi che viene restituito a video è il job, il “+” signigica che è l’ultimo processo ad essere stato sospeso (fg senza parametri fa’ ripartire l’ultimo processo sospeso), l’altro numero è il PID. I comandi fg, bg, kill funzionano sia con il PID che col numero job.
Jobs mostra i processi attivi in background lanciati da un certo utente.
bg <pid> mette in background un processo
fg <pid> mette in foreground un processo
kill <pid> termina il processo con un certo pid
kill –i <pid> riavvia il processo
kill –9 <pid> “uccide” il processo
ps –aux|less mostra tutti i processi in maniera dettagliata
nice cambia la priorità di esecuzione di un processo
kill –HUP <pid> riavvia un demone
Vedi sezione “FILE-SYSTEM”
La configurazione è in /etc/rc.d/; in questa directory c’è un file chiamato rc.local che è una sorta di “Autoexec.bat” del DOS.
Init.d contiene i files che vengono eseguiti per attivare i principali processi di sistema (ogni singolo files può essere lanciato in qualsiasi momento seguito da “start”, “stop” o “restart”, es: /etc/rc.d/init.d/lpr start).
La sequenza eseguita da init.d è la seguente:
· /etc/rc.sysinit
· avvio di un run-level specifico
·
/etc/rc.local
At pianifica l’esecuzione di un’attività da eseguire una sola volta, non periodicamente. La sintassi è:
at “ore”:”min” “mese”/”giorno”/”anno”
“mese”/”giorno”/”anno” sono facoltativi perché per default viene preso il giorno corrente.
Nell’editor che compare scrivere il comando da eseguire e poi premere CTRL-D per uscire. In alternativa si può preparare un file di solo testo con i comandi e poi usare:
at “ore”:”min” “mese”/”giorno”/”anno < “comandi”.txt
atq mostra la lista dei lavori di at
atrm “n” cancella il comandi n° “n” di at
Cron è un demone che viene inizializzato, in genere, all’avvio della macchina o, al limite, da root lanciando solo il comando cron senza parametri, neanche la & perché cron ritorna da solo alla riga di comando. Ad intervalli regolari (1 minuto) viene risvegliato, controlla una serie di tabelle ed eventualmente esegue delle attività. Le tabelle sono in /var/spool/cron e in /etc/crontab, proprio su quest’ultimo root deve agire per impostare le sue preferenze mentre non è consigliabile agire sul primo. Esistono, inoltre, tabelle personalizzate per ogni utente e che devono essere attivate esplicitamente col comando “crontab”.
Sono costituite da un insieme di righe che possono essere commenti, assegnazioni di variabili o stringhe di comando.
Cominciano con # e sono ignorati da cron.
E’ possibile impostare o modificare qualsiasi variabile d’ambiente ma il suo ambito di visibilità sarà il file stesso in cui risiede la tabella cron e tutti gli script richiamati da tale file. La sintassi è nome=valore.
Sono costituite da 6 campi scritti tutti sulla stessa riga separati da spazi o tabulazioni. I primi 5 indicano quando deve essere lanciata l’attività (sesto campo) e devono verificarsi tutti. Il primo campo corrisponde ai minuti in cui verrà eseguita l’attività, il secondo all’ora, il terzo al giorno del mese, il quarto al numero del mese (gennaio è 0), il quinto al giorno della settimana (domenica è 0). Per ognuno di questi campi valgono le seguenti regole:
Ø un asterisco esprime una condizione sempre vera
Ø una virgola separa più possibilità per lo stesso campo
Ø un segno “-“ indica un intervallo di opzioni
Ø un segno “/” indica un incremento
Ø è possibile combinare le precedenti regole
Esempi:
* * * * * ogni risveglio di cron
0 * * * * all’inizio di ogni ora
2 2 4 6 * alle 02:02 del 4 di luglio
30 5 * * 1,3,5 alle 05:30 tutti i lunedì, mercoledì e venerdì
0 6 * * 1-5 alle 06:00 dal lunedì al venerdì
*/10 0-4 * * * ogni 10 minuti tra mezzanotte e le quattro del mattino
2 2 1-15/2 * * alle 02:02 dall’1 al 15 del mese ogni 2 giorni
Si può raggiungere livelli ancora più complicati, ad esempio l’espressione 2-20/3,23,27-30 è valida!
Sommando più righe è possibile indicare anche il fine-mese:
* * 31 0-6/2,7-11/2 * script_di_fine_mese
* * 30 3-5/2,8-12/2 * script_di_fine_mese
* * 28 2 * script_di_fine_mese
Il sesto campo è la stringa che sarà eseguita.
Occorre fare attenzione che l’attività lanciata termini prima del successivo lancio altrimenti un po’ alla volta si accumuleranno una miriade di istanze dello stesso programma, cosa che in certi casi può risultare disastroso. Se non si riesce a prevedere la durata di una certa attività oppure la durata è variabile occorre prevedere un meccanismo di semafori.
Le modifiche alla tabella di cron degli utenti di per sé non servono a nulla, bisogna eseguire il comando crontab per aggiornare le tabelle interne a cron. Senza parametri il programma legge il file crontab dell’utente; è possibile indicare un file diverso con la sintassi
crontab nome_file
Il parametro –r invece elimina la tabella di cron che si sta utilizzando in quel momento.
La tabella in /etc/crontab viene letta, invece, ad ogni risveglio di cron e di conseguenza viene sempre aggiornata automaticamente.
Si trova in /etc/crontab e rispetto alle tabelle utente ha un campo in più tra il giorno della settimana ed il comando da eseguire. Viene riletta ad ogni avvio di cron quindi non ha bisogno di essere rinfrescata con crontab.
Spesso questa tabella richiama periodicamente il comando “run-parts nome_directory” che esegue tutti gli script presenti all’interno della directory specificata.
Non tutti gli utenti possono usare cron. Le regole sono così definite:
Ø se esiste il file /etc/cron.allow solo gli utenti elencati nel file stesso potranno usare cron
Ø se esiste ma è vuoto solo root potrà usare cron
Ø se non esiste potranno usare cron tutti gli utenti non elencati nel file /etc/cron.deny
Ø se /etc/cron.deny non esiste o è vuoto tutti gli utenti potranno usare cron
Esistono diversi strumenti che configurano le tabelle di cron interagendo con l’utente:
gcrontab www.arquired.es/users/aldelgado/proy/gcrontab
VCRON www.linux-kheops.com/pub/vcron/vcronGB.html
Kcron 24.8.19.113/kcron.html
cromagnon www2.andrews.edu/~aldy/cromagnon.html
Un run-level è un particolare tipo di funzionalità complessiva del sistema (processi, demoni, servizi in genere…….), in pratica definisce quali processi saranno avviati e quali terminati. Cambiando tali impostazioni cambia il profilo della macchina, ad esempio si possono escludere le funzionalità di rete, o l’X o altro ancora. I run-level sono configurabili ma in genere esistono alcuni punti fissi:
I run-level sono configurati nelle dir rc#.d e sono così definiti:
0 Sistema spento
1 Utente singolo
2 Multiutente senza NFS
3 Multiutente in modalità base
4 Non utilizzata
5 Modalità grafica (run-level standard)
6 Riavvio
Digitando “init #” (dove # è il numero di un run-level) si chiede il passaggio a quel run-level, es: init 6 riavvia il sistema (chiudendolo ordinatamente). Il cambio di R.L. si può fare anche “a caldo” perché non vengono interrotti i processi che devono restare attivi anche nel R.L. nel quale si sta passando. Il run-level da attivare all’accensione viene indicato dal file /etc/inittab con una riga del tipo:
id:3:initdefault
In /etc/rc.d/rcx.d ci sono gli script che vengono eseguiti ad ogni avvio del sistema per ogni run-level; un esempio potrebbe essere:
s10syslogd
s15kerneld
s20crond
s99xdm
Tutti i file presenti nelle directory sono in genere collegamenti simbolici ai relativi files in /etc/rc.d/init.d. La “s” iniziale significa che il demone deve essere avviato (start), la “k” significa che il demone deve essere arrestato (kill). Le due cifre che seguono determinano l’ordine con cui i servizi devono essere attivati o disattivati. I caratteri restanti indicano il nome del demone.
Nella Red Hat è disponibile l’utility chkconfig che attiva o disattiva i servizi di un run-level specifico e dispone di alcuni switch:
--list[name] visualizza lo stato del demone [name] o di tutti se [name] è omesso
--add“name” avvia “name” ad ogni run-level
--del“name” rimuove “name” da ogni run-level
--level“n..” “name” <on|off|reset> avvia, arresta o riavvia “name” nei run-level “n….”. Es: “chkconfig –level234 xfs on”
attiva xfs per i run-level 2, 3 e 4.
Per verificare gli interrupts usati si può usare:
cat /proc/interrupts
|
CONFIGURAZIONE DELLA SHELL E DEL PROFILO |
|
|
/etc/bashrc |
contiene gli alias validi per tutti gli utenti e le funzioni per il sistema |
|
~/.bash_profile |
contiene le variabili di ambiente ed i programmi di avvio dell’utente. Configura la shell di login |
|
~/.bashrc |
contiene gli alias e le funzioni valide solo per un utente. Configura le shell interattive. |
|
/etc/profile |
contiene le
variabili di ambiente ed i programmi di avvio del sistema
|
|
SICUREZZA |
|
|
/etc/passwd |
Descrive gli utenti e le rispettive password con un eventuale commento, l’home-directory e la shell di login. Ad ogni utente corrisponde una riga del file: login:psw:uid:gid:info:home:shell Le password sono in forma criptata. Se compare solo un * allora sono gestite da /etc/shadow. |
|
/etc/shadow |
Descrive, con la stessa sintassi di /etc/passwd, login e password di ogni utente in forma criptata. E’ possibile specificare il numero di giorni dopo i quali scade la password e dopo quanti giorni di inutilizzo l’user viene bloccata. |
|
/etc/group |
Contiene gli identificativi numerici dei vari gruppi. Es: ftp::50: |
|
CONFIGURAZIONE DI CRON |
|
|
/etc/contab |
configura di cron, ma ogni utente può avere configurazioni personali |
|
CONFIGURAZIONE FILE SYSTEM |
|
|
/etc/fstab |
vedi file-system |
|
CONFIGURAZIONE DI RETE |
|
|
/etc/host.conf |
configura la risoluzione dei nomi |
|
/etc/hosts |
indirizzi numerici dei server conosciuti |
|
/etc/hosts.allow |
elenca gli indirizzi IP che possono accedere alla nostra macchina e quali servizi possono usare |
|
/etc/hosts.deny |
elenca gli indirizzi IP che non possono accedere alla ns. macchina |
|
/etc/networks |
traccia la mappa delle sottoreti |
|
/etc/ppp/chap-secret |
userID e password per protocollo CHAP |
|
/etc/ppp/options |
parametri per connessioni ppp |
|
/etc/ppp/pap-secret |
userID e password per protocollo PAP |
|
/etc/resolv.conf |
configura i server DNS. L’opzione search permette di specificare fino a 6 domini di default. Es.: search paperino tin.it pippo |
|
/etc/smb.conf |
configurazione di Samba |
|
/etc/services |
|
|
/etc/ftpaccess |
Configura gli accessi FTP |
|
/etc/ftpconversion |
Usato da FTP per determinare la modalità di conversione dei files compressi |
|
/etc/ftpusers |
Impedisce gli accessi FTP agli utenti indicati al suo interno |
|
/etc/ftphosts |
Impedisce gli accessi FTP da parte sei nodi indicati al suo interno |
Generalmente è buona norma prima escludere tutti gli indirizzi in hosts.deny con all:all e successivamente autorizzarli selettivamente in hosts.allow. La sintassi prevede prima il servizio, poi i “:” e poi il numero IP. Es.:
all:pippo.pluto
|
CONFIGURAZIONE LIBRERIE |
|
|
/etc/ld.so.conf |
Contiene tutti i paths in cui vengono cercate le librerie dinamiche |
|
CONFIGURAZIONE LILO |
|
|
/etc/lilo.conf |
configurazione di LILO |
|
CONFIGURAZIONE DEL KERNEL |
|
|
/usr/src/linux/.config |
configurazione del kernel |
|
/etc/conf.modules |
link simbolico a conf.modules |
|
/etc/modules.conf |
configurazione dei moduli del kernel. Elenca tutti i parametri aggiuntivi (indirizzi di I/O e IRQ) che servono durante il boot per usare le periferiche collegate di cui non è stato possibile fare l’autodetect. |
|
CONFIGURAZIONE DELLE STAMPANTI |
|
|
/etc/princap |
configura le stampanti |
|
CONFIGURAZIONE RUN-LEVEL |
|
|
/etc/inittab |
Gestisce i diversi R.L., imposta quello di default e contiene le entries che avviano diversi programmi di getty, come il faxgetty e l’mgetty, che gestiscono il comportamento che il sistema deve assumere in caso di eventi particolari come la pressione di CTRL-ALT-CANC, l’improvvisa mancanza di corrente, il ripristino dell’alimentazione ecc. |
|
/etc/rc.d |
E’ una directory che contiene tutti gli script dei processi e dei servizi che vengono attivati durante la procedura di bootstrap. Sono inoltre presenti anche i rispettivi script di shutdown e riavvio. Il file che gestisce i diversi R.L, anche quello di default, è /etc/inittab. |
|
CONFIGURAZIONE DELLE MAIL |
|
|
/etc/mail |
Configura endmail |
|
/etc/sendmail.cf |
Configura sendmail |
Per valutare le prestazioni dei dischi si può sfruttare:
hdparm –t “device”
L’opzione –t testa la velocità della cache dei dischi. L’uso di –tT effettua anche altri test.
Sfruttare le apposite utility messe a disposizione da ogni distribuzione oppure in alternativa usare XF86Config o XF86Setup (vedi X Window). Volendo procedere manualmente la tastiera si imposta nel file /etc/sysconfig/keyboard con la riga:
KEYTABLE=”/usr/lib/kbd/keytables/it.map”
E’ possibile cambiare “it.map” con le altre mappe installate a seconda della tastiera in uso, normalmente in /usr/share/keytables. Vedere anche “man loadkeys”. Per rimappare la tastiera si può provare con:
xkbdcomp :0 - > /tmp/tast.map
Si può modificare il file prodotto e ricaricare col comando inverso.
Per rimappare i tasti speciali, anche quelli “extra”:
showkey –k per controllare i tasti già assegnati.
Premere i vari pulsanti e segnarsi i codici corrispondenti, per uscire non premere niente per 10 secondi. Se alcuni tasti non danno segni di vita provare con
shokey -s
Bisogna assegnare ai tasti da utilizzare (tramite il codice segnato) un keycode con setkeycodes. Il keycode è un numero a piacere ma attenzione a non utilizzarne uno già utilizzato, meglio controllare la keymap attiva. ES:
setkeycodes 0063 122 (
Poi editare la keymap /etc/kbd/default.map.gz ed inserire una riga del tipo:
keycode 122=F69
e poi anche:
string F69=”operazione\n”
Attenzione a terminare la stringa con \n.
Per avere il “Num Lock” sempre attivo dopo la partenza del sistema generalmente occorre inserire in /etc/rc.d/rc.sysinit:
for t in 1 2 3 4 5 6
do
/usr/bin/setleds –D +num
< /dev/tty$t > /dev/null
done
Nella Debian GNU/Linux bisogna creare in /etc/rc.boot uno script con le stesse righe, mentre con la Slackware vanno messe nel file rc.keymap
Per settare la risposta di alcuni tasti (come CANC) provare con “xmodmap” e “xev”.
Per le altre impostazioni vedi la sezione VIDEO/MOUSE per l’uso di X86Setup e Xconfigurator.
/opt/kde/share/config/kdmrc
/etc/X11/kdm/Xsession
/etc/X11/gdm/Xsession
Volendo aggiungere fonts TT è molto facile se si usa l’X Font Server (XFS): copiare i fonts TT da c:\windows\fonts a /usr/X11R6/lib/X11/fonts/ttfonts e far partire l’xfs all’avvio del sistema se non lo fa già. Questo con la RH 6.2 è già sufficiente.
Eventualmente provare a digitare da /usr/X11R6/lib/X11/fonts/ttfonts:
ttmkdir –o fonts.dir (ad ogni aggiunta di fonts)
ttmkfdir > fonts.scale (ad ogni aggiunta di fonts)
chkfontpath --add /usr/X11R6/lib/X11/fonts/ttfonts (solo la prima volta)
Per rendere Netscape più protetto dai crash da applicazioni java modificare il file /etc/X11/fs/config in modo che vi sia una sezione simile alla seguente:
catalogue = /usr/X11R6/lib/X11/fonts/75dpi,
/usr/X11R6/lib/X11/fonts/Speedo/,
/usr/X11R6/lib/X11/fonts/misc:unscaled,
ecc. ecc.
In pratica inserire il percorso dei fonts da 75dpi prima di tutti gli altri ed invertire le righe con “Speedo” e “misc”
In un sistema Linux una connessione dial-up presuppone un dispositivo di rete virtuale proprio come una scheda di rete. Normalmente viene identificato con ppp0. Per server DNS si intende un server che consenta di risolvere gli indirizzi, ossia di trovare il corrispondente indirizzo numerico di un dominio (Es: www.qwertyuiop.com potrebbe essere 202.174.22.190). Per Dominio di default si intende il suffisso che viene aggiunto ad un dominio quando non si specifica un indirizzo completo (ES: se il dominio di default è tin.it digitando www si sottointende www.tin.it).
Per l’autenticazione dell’accesso ad una rete tramite connessione PPP (internet) si usano generalmente due protocolli: CHAP o PAP. Il CHAP è generalmente meno usato ma e’ il più sicuro. MTU e MRU sono parametri che impostano la dimensione massima dei pacchetti spediti e rivevuti.
Per la configurazione delle porte seriali esiste il comando setserial, con le relative opzioni:
-g mostra le informazioni
-a mostra tutte le informazioni
-b mostra un riassunto delle informazioni
port xxx specifica l’idirizzo di I/O
irq xx specifica l’IRQ da usare
uart xxxxx specifica il tipo di porta seriale, i valori possono essere: 8250, 16450, 16550, 16550a, 16650 o 16750. Normalmente il tipo è 16550a.
spd_hi imposta la velocità a 57.600 kbit
spd_vhi imposta la velocità a 115.200 kbit
ES: setserial /dev/ttyS1
spd_vhi
Essendo un comando di configurazione dovrebbe essere inserito in /etc/rc.d/rc.local.
Per rendere la porta seriale disponibile a tutti gli utenti bisogna usare il comando “chmod 666 /dev/ttySx”.
Chat è un programma che si usa per stabilire una connessione e generalmente, una volta stabilita, passa il controllo a pppd. Le sue opzioni sono:
-e echo dei caratteri sullo stderr
-f “file” legge uno script
-r “file” scrive un report
-t xx imposta un timeout
-v verbose: i messaggi vengono inviati a syslogd
-V verbose: i messaggi vengono inviati su stderr
Il pppd è il demone che consente di effettuare connessioni di tipo PPP (Point to Point Protocol). Si Configura tramite:
Dispone di alcune modalità di lavoro che consentono una configurazione ottimale:
debug fornisce informazioni diagnostiche passate a syslogd e quindi archiviate in /var/log/messages
kdebug “n” informazioni diagnostiche delle routine del kernel che si occupano della gestione del pppd passate a syslogd. Se n=1 le informazioni sono generiche, se n=2 le informazioni riguardano i pacchetti ricevuti, se n=4 le informazioni riguardano i pacchetti inviati. Per combinare le informazioni da ricevere sommare i relativi numeri (ES: se n=7 vengono fornite tutte le informazioni).
nodetach il pppd non lavora in background
lock la porta seriale viene bloccata
modem usa le linee di controllo del modem. E’ il contrario di local che le ignora
local vedi sopra
xonxoff controlla il flusso tramite software
crtscts controlla il flusso tramite hardware
mru “n” dimensione dei pacchetti in ricezione
mtu “n” dimensione dei pacchetti in trasmissione
noipdefault si forza l’assegnazione di un indirizzo dinamico
netmask ….. stabilisce la maschera di rete
default route definisce l’instradamento predefinito dei pacchetti TCP/IP
nodefaultroute contrario di defaultroute
user “utente” nome con cui ci si identifica al server
connect “command” permette di usare il comando “command” per connettersi, di solito è chat
noauto non esegue l’autenticazione
auth specifica il tipo di autenticazione (ES: auth –chap +pap)
Generalmente sul pppd si usa il comando “chmod u+s /usr/sbin/pppd” per dare al pppd i permessi di root anche quando viene lanciato da un utente.
linuxconf Presente nelle RH configura diversi parametri
netcfg o netconfig
ifconfig ethx configurazione di una scheda di rete
netstat controlla lo stato della rete
traceroute mostra il percorso dei pacchetti
arp mostra gli indirizzi fisici collegati alla macchina
hostname mostra o imposta l’hostname
ping richiede un echo alla macchina chiamata
· /etc/hosts.conf
Indica dove ricercare la risoluzione dei nomi. La direttiva “host” indica di ricercare l’indirizzo numerico nel file /etc/hosts, “bind” indica di avvalersi dei server DNS.
ESEMPIO:
order hosts,bind
multi
on
·
/etc/resolv.conf
Contiene gli indirizzi dei server DNS, i quali permettono la conversione degli indirizzi dal formato testuale (www……….) in formato numerico (xxx.yyy.zzz.kkk).
La sintassi è la seguente:
domain aaabbbccc.it opzionale
search aaabbbccc.it opzionale
nameserver xxx.yyy.zzz.kkk indirizzo del DNS principale
nameserver aaa.bbb.ccc.ddd indirizzo del DNS secondario
<inserire un esempio!!!!!!!!>
· /etc/hosts
Memorizza gli indirizzi numerici dei server “conosciuti”.
Per cambiare nome alla macchina modificare il file /etc/hosts ed aggiornare di conseguenza la voce “HOSTNAME” del file /etc/sysconfig/network.
· /etc/ppp/options
Contiene alcuni parametri per la configurazione della connessione. Con “noipdefault” si intende che l’assegnazione dell’indirizzo IP è dinamica: di volta in volta viene assegnato un indirizzo differente.
57600 velocità
del modem
/dev/modem dispositivo da usare
lock inibisce
l’uso del modem ad altre applicazioni
crtscts tipo
di controllo del flusso (hardware)
defoultroute interfaccia di default per i pacchetti
in uscita
mtu 552 dimensione
dei pacchetti trasmessi
mru 552 dimensione
dei pacchetti ricevuti
·
/etc/ppp/pap-secret /etc/ppp/chap-secret
Normalmente per le connessioni si utilizza il protocollo TCP/IP, ma per l’autenticazione della coppia userID/password si usano i protocolli PAP (più diffuso) oppure CHAP (più sicuro). Per configurare l’autenticazione in modo automatico (se non si dispone di appositi tool grafici) vanno modificati, a seconda del caso, i files /etc/ppp/pap-secret o /etc/ppp/chap-secret. La sintassi è la stessa:
UserID * Password
Es: pippo * pluto
Per ovvi motivi di sicurezza i permessi di tali file devono essere impostati ad accesso esclusivo da parte di root.
#!/bin/sh
chat –v “” ATDTnumprovider CONNECT “”
In /etc/ppp ci sono due files (ip-up e ip-down) che vengono eseguiti all’inizio ed alla fine della connessione: possono essere personalizzati per ottenere effetti particolari (messaggi, ecc.).
Samba implementa il protocollo smb (usato anche da Windows NT) per interfacciare Linux con altri sistemi operativi, permettendo la condivisione di files, stampanti ed anche connessioni ad internet. E’ utile installare swat (Samba Web Administration Tool) per la configurazione anche se si può sempre agire direttamente sul file /etc/smb.conf. Esiste inoltre un tool chiama Gnomba.
Per superare i 9600 bps il controllo del flusso deve essere fatto dall’hardware (CRTSCTS) e non dal software (Xon/Xoff).
I login in rete funzionano in modo leggermente diverso dai login normali. C’è una linea seriale fisica separata per ciascun terminale attraverso cui ci si collega; per ciascuna persona che si collega via rete c’è invece una connessione virtuale separata e ce ne possono essere infinite: non è quindi possibile avviare una getty separata per ciascuna connessione virtuale possibile. Ci sono diversi modi per collegarsi attraverso una rete: i principali, nelle reti, TCP/IP sono TELNET e RLOGIN. I login di rete hanno, invece di un insieme di getty, un daemon singolo per ciascun modo di collegamento che stanno in ascolto per i tentativi di login in ingresso. Quando ne notano uno inizializzano una copia di se stessi per gestire quel singolo tentativo; l’istanza principale continua ad aspettarne altri.
telnet xxx.xxx.xxx.xxx per collegarsi ad un pc con un certo indirizzo ip
mput “file” per inviare files verso il pc con cui si e’ connessi
mget “file” per ricevere files dal pc con cui si e’ connessi
lcd visualizza la directory corrente
Oltre a “telnet” e’ possibile usare il Midnight Commander.
E’ disponibile l’utility “ftp” ma si può usare anche il Midnight Commander.
Attraverso i servizi di rete è possibile condividere files; normalmente si sfrutta l’NFS (Network File System) tramite il quale si può operare su file via rete come su files locali; anche per i programmi la cosa è trasparente.
Getty legge il nome dell’utente ed avvia login che legge la password. Se user e password sono corretti login avvia la shell. Quando la shell termina init avvia un’altra copia di getty.
utilizzare. E’ necessario inserire nel file /etc/resolv.conf l’indirizzo di almeno un indirizzo numerico di un server DNS:
search tiscalinet.it
nameserver xxx.xxx.xxx.xxx (server DNS primario)
nameserver yyy.yyy.yyy.yyy (server DNS secondario)
Impostare il timeout del modem e del pppd a 120 secondi.
Per rendere disponibile Kppp agli utenti normali:
Per configurare un firewall in tutte le distribuzioni è presente ip-chains, facilmente amministrabile tramite un tool grafico chiamato gfcc. Naturalmente per i più esperti valgono sempre i comandi da shell.
Se non è disponibile una utility fornita nella distribuzione si possono provare:
|
XF86Config |
È un programma che funziona in modalità a carattere che permette la configurazione di XFree86. Se il mouse è PS2 si può provare con protocol “MouseSystems” e Device “/dev/gpmdata”. |
|
XF86Setup |
Strumento grafico per la configurazione di XFree86. Rispondere Riconfigurazione: no X86Config come default: no Poi seguire le istruzioni |
|
Xconfigurator |
Funziona in modalità a carattere, è presente nelle distribuzioni Red Hat e permette la configurazione tramite il probing (autodetect) dell’hardware |
|
Sax |
Presente nelle distribuzioni S.u.S.E., configura il Server X in modalità a caratteri. |
|
Xvidtune |
Permette di selezionare la frequenza del monitor |
|
Mouseconfig |
Imposta il mouse |
Per modificare la risoluzione è possibile usare “CTRL”-”ALT”-”+” e “CTRL”-”ALT”-”-”
Una volta configurato il Server X lo si fa’ partire con “startx” o “X”.
Normalmente è bene che ci sia un link simbolico /dev/mouse verso il dispositivo usato ad esempio /dev/psaux se il mouse è PS2. Per sfruttare la rotellina del mouse si utilizza normalmente imwheel, la cui documentazione è presente in /usr/doc/imwheel.
Linux accumula tutte le stampe in una zona del disco denominata spool, normalmente /var/spool/lpd/”nome_stampante”, e gestisce una coda di stampa. All’interno di ognuna di queste directory esistono almeno 4 files:
LOCK semaforo per evitare di stampare più lavori contemporaneamente
LOG log degli errori
ACCT la sequenza dei lavori da stampare
STATUS immagazzina il messaggio che viene generato col comando lpc –stat
Il file /etc/printcap contiene la descrizione delle stampanti; in genere le stampanti descritte corrispondono alle directory presenti in /var/spool/lpd/.
Questo file viene trattato come fosse un’unica stringa, ecco perché si usa la “\” alla fine di ogni riga. I comandi presenti nel file sono separati da “:”.
La prima stringa contiene gli alias con cui si può chiamare la stampante:
lp|Stampante|HP500C:\ si può chiamare lp, Stampante oppure HP500C
La seconda riga indica il dispositivo di stampa:
:lp=/dev/lp0:\ porta alla quale è collegata la stampante
Seguono tutti gli altri parametri:
:sd=/var/spool/lpd/HP500C:\ il nome della directory di spool
:if=/var/spool/lpd/HP500C/log:\ file di log degli errori
:af=/var/spool/lpd/HP500C/acct:\ sequenza delle attività
La stringa successiva è molto importante perchè riguarda il nome e l’ubicazione del filtro di input.
:if=/var/lib/apsfilter/bin/FILTRO-HP500C-MONO-300:\
Il filtro di stampa elabora i dati prima di spedirli alla stampante e se non si riesce a reperirne uno per la propria stampante si deve ricorrere a quello di un modello compatibile, col rischio di non riuscire a sfruttare tutte le potenzialità. Si può tentare di impostarne uno col comando /usr/lib/apsfilter/setup.
:sf:\ elimina le pagine bianche alla fine della stampa
:mx#0:\ non limita la dimensione massima dei blocchi
Un’altra cosa molto importante è che non ci siano spazi in bianco all’interno del file.
Diverse distribuzioni mettono a disposizione tool per la configurazione automatica della stampante, ad esempio SuSe con YaSt, Caldera con COAS e RedHat con printtool.
Il demone deputato alla stampa è LPR; questo demone cerca la variabile PRINTER per conoscere la stampante predefinita, se non la trova vuole che gli sia passato come parametro il nome della stampante da utilizzare. E’ quindi consigliabile inserire nel file /etc/profile la riga:
export PRINTER=”lp0”
nel caso la stampante sia collegata sulla prima porta parallela.
Per eliminare il nome utente ed il nome job dalle stampe inserire in /etc/printcap la riga:
:sh:\
Per informazioni sulla configurazione usata usare “cat /dev/sndstat”.
Se, invece, ci fossero problemi di configurazione della scheda audio si può usare “isapnp” per risolvere i conflitti e “pnpdump” per verificare le configurazioni possibili:
Ø
pnpdump >
/etc/isapnp.config
A questo punto editare il file isapnp.config e decommentare la configurazione che si vuole usare.
E’ sempre possibile inoltre eseguire lo script in fondo a /etc/src/linux/drivers/sound.
Esiste un meccanismo alternativo per gestire l’audio e ricorre ad ALSA che, in futuro, sarà più gestibile e funzionale del classico OpenSound. Bisogna scaricare i drivers da www.alsaproject.org :
Ø alsadriver-x.y.z.tar.gz
Ø alsa-lib-x.y.z.tar.gz
Ø alsa-util-x.y.z.tar.gz
ed installarli nell’ordine drivers, libs, util con “./configure”, “make”, “make install”.
Disattivare nel kernel ogni supporto per specifiche schede audio, deve rimanere attivato solo il supporto generico.
Linux gestisce benissimo senza dover installare drivers tutti i modem esterni sfruttando semplicemente un link /dev/modem alla porte seriale alla quale è collegato (es: /dev/ttyS1 per com 2).
Per quanto riguarda i modelli interni il discorso cambia: normalmente non sono dei veri e propri modem ma, dato il basso costo, sono semplicemente delle interfacce alla linea telefonica e demandano tutta la logica alla CPU ed al driver.
In mancanza del proprio driver il modem non può funzionare! E’ disponibile il sito www.linmodems.org per ulteriori informazioni.
SCSI: compilare ‘sane’.
Paralleli: non supportati
Per masterizzare con dischi IDE bisogna ricompilare il kernel facendo in modo che il masterizzatore (ed il cdrom) siano visti non come dispositivi ma come scsi tramite emulazione.
In “Block Device” disabilitare “IDE/ATAPI cdrom support” e abilitare “SCSI emulation”
In “SCSI support” abilitare “SCSI support”, “SCSI cdrom support”, “Generic SCSI support”
Esistono diverse utility per masterizzare a riga di comando:
cdrecord –scanbus mostra i dispositivi SCSI ed i loro “indirizzi”
cdda2wav –D0,0,0 –t 1 –B –x preleva le tracce audio dal CD in files .wav
cdrecord –v –dev=0,1,0 –speed=2 –audio *.wav masterizza le tracce su un CD audio
mkisofs –v –o immagine.cd –J –a “dir” crea un immagine iso della “dir”
cdrecord –v –dev=0,1,0 –speed=2 –data imm.cd masterizza l’immagine su un CD-ROM
cdrecord dev=0,1,0 blank=fast cancella velocemente un CD riscrivibile
Avendo sufficiente memoria si può sfruttare un buffer FIFO con:
mkisofs –R –l –L –o fifo /directory | cdrecord
dev=0,0,0 speed=4 fifo=nnnn
Attivare nel kernel il “supporto generico SCSI” e “IOMEGA parallel port”.
Il modulo è ‘ppa.o’.
Per attivare la modalità U-DMA e l’accesso a 32 bit inserire:
/sbin/hdparm –c1 –d1 /dev/hdx nel file /etc/rc.d/rc.sysinit
Per consentire la chiusure delle attività in corso e lo scarico della cache su disco il sistema deve essere arrestato correttamente. Le soluzioni sono diverse: la più pratica è probabilmente usare il menù dell’interfaccia grafica scelta ma esistono comandi e stratagemmi che possono essere sfruttati da console o tramite script:
shutdown –h now arresta il sistema
shutdown –r now riavvia il sistema
init 0 arresta il sistema
init 6 riavvia il sistema
Nel caso che la tastiera non rispondesse, se il demone gpm è stato avviato con
gpm –s “ “
resta sempre a disposizione il mouse.
Tenendo premuto un tasto del mouse, triplo click con l’altro, click sul sinistro e si ottiene un arresto pulito del sistema; premendo il destro, invece, si ottiene un reboot. La pressione dell’ultimo tasto deve avvenire entro 3 secondi dal triplo click.
Per pacchetti in formato .rpm si usa l’utility rpm con le seguenti opzioni:
i install
e rimozione
q query
U upgrade
V verify
v verbose
h mostra avanzamento
Normalmente si usa “rpm –ivh xxxxxxx.rpm” per installare il pacchetto xxxxxxx e “rpm –evh xxxxxxx.rpm” per disinstallarlo.
Per creare un pacchetto rmp occorre seguire i seguenti passi:
1. creare in file di testo semplice xxxxx.spec
2. scrivere all’interno le righe:
name: Pippo
Summary: <descrizione>
Version: x.y
Release: z
Copyright: ___________
Group: Applications
Packager: <creatore>
%description
____________
____________
____________
%files
/…/…/…/xxxx.yyy
/………..
3.
rpm –bb
xxxxx.spec
Contengono i sorgenti di un programma che va compilato con:
rpm –recompile xxxx.src.rpm
che compila ed installa gli eseguibili. Per creare ANCHE un pacchetto rpm si usa:
rpm –rebuild xxxxx.src.rpm
I pacchetti “.deb” sono pacchetti per la distribuzione Debian di Linux ma possono essere sfruttati anche su altre versioni o attraverso software in grado di gestirli o, eventualmente, tramite i normali strumenti di Linux:
ar x abcd.deb restituisce abcd.tar.gz
tar zxvf abcd.tar.gz scompatta il pacchetto
Per pacchetti .tar.gz (o .tgz):
Il file-system nativo di linux è l’EXT2 (cod. 83) mentre la memoria virtuale viene gestita tramite una partizione di swap (cod. 82). Sono comunque supportati moltissimi altri file-system (MSDOS, VFAT, NTFS ecc. ecc.). E’ da notare che nei sistemi UNIX-like le maiuscole e le minuscole hanno la loro importanza: un file di nome “foo” è diverso da un altro che si chiama “Foo”.
SELEZIONARE UN SISTEMA OPERATIVO
LILO dà la possibilità di eseguire non solo Linux ma anche altri sistemi operativi.
Un sistema viene definito “di default” ed è quello che parte se quando compare la scritta “LILO:” non si preme nessun tasto oppure se si preme enter. Se, invece, alla partenza di LILO si preme il tasto “TAB” (prima che scatti il timeout) compare la lista degli altri sistemi operativi che sono configurati. Digitando il nome del sistema operativo scelto lo si fa’ partire.
Se selezioniamo Linux possiamo inserire dopo uno spazio degli argomenti che vengono passati al kernel, ad esempio digitando “linux 1” viene selezionato Linux come sistema ed 1 come run-level; in pratica si entra nel sistema con i privilegi di root senza digitare alcuna password.
Il file da configurare è /etc/lilo.conf: le sezioni con “image=” si riferiscono a sistemi Linux (possono essere più di uno, ad esempio se s intende avere un kernel stabile ma nello stesso tempo provarne uno ancora in fase di sviluppo) mentre quelle con “other=” si riferiscono ad agli altri sistemi per i quali LILO è configurato. La riga “default=” definisce ovviamente il sistema “di default”. Ogni modifica di tale file va’ attivata con “lilo –v”.
Attenzione: LILO non riesce a far partire Windows NT quindi bisogna sfruttare il loader di NT per la selezione del sistema operativo ed installare LILO sul boot record della partizione di boot di Linux.
DOVE INSTALLARE LILO
Per selezionare dove installare LILO modificare la voce “boot=” del file /etc/lilo.conf, per esempio: se “boot=/dev/hda” LILO si installerà nell’MBR del primo disco IDE, se boot=/dev/hdb2 LILO si installerà nel settore di boot della seconda partizione del secondo disco IDE. In quest’utlimo caso bisogna rendere avviabile la partizione tramite fdisk (comando “a”) o cfdisk (comando “b”). Dopo le modifiche lanciare “lilo –v” per renderle effettive.
ELIMINARE LILO
Volendo eliminare LILO le soluzioni sono 2: da Windows “fdisk /mbr” e da Linux “lilo –U”.
Le partizioni visibile a Linux normalmente sono indicate nel file /etc/fstab, mentre quelle montate sono in /etc/mtab. E’ possibile assegnare una label alle partizioni con:
tunefs –L “label” “device”
Si può quindi usare mount –L “label” /mnt/xxxxxxx
In sistemi Unix-like “everything is a file” quindi anche una partizione viene vista come un file (Es. /dev/hda1). I files che cominciano con “.” sono nascosti.
Per impostare il proprietario di un file si usa il comando chown:
chown “utente” “file” oppure
chown “utente”.”gruppo” “file”
In un sistema multiutente deve esistere un meccanismo di protezione dei file per garantire la sicurezza di tutti e del sistema. Linux riconosce tre tipi di persone per ogni file: il proprietario (autorizzato ad usare chmod, il gruppo del proprietario e tutti gli altri. Per ognuno di essi è possibile stabilire i permessi di lettura, scrittura ed esecuzione.
Notare che nei sistemi Unix c’è una concezione del sistema che dice “everything is a file”, ossia tutto è un file, questo significa, per esempio, che anche i dispositivi vengono visti dal sistema come un file.
I permessi dei file e delle dir si vedono col comando “ls –l” e vengono visualizzati tramite 10 caratteri (es: -rwxr-xr--).
Il primo carattere indica il tipo di file:
- =file normale
d =directory
c =character special file
p =named pipe
s =socket
l=link simbolico
Gli altri caratteri possono valere “r”, “w” o “x” e vanno presi a gruppi di tre.
Il primo gruppo si riferisce ai permessi del proprietario, il secondo ai permessi relativi agli appartenenti allo stesso gruppo del proprietario ed il terzo a tutti gli altri.
La “r” indica il permesso di lettura, la “w” il permesso di scrittura e la “x” è per il diritto di esecuzione. Per le directory il permesso di esecuzione va inteso come permesso di poter accedere a tale directory (con cd xxxx), il permesso di lettura significa poter “listare” i files, il permesso di scrittura significa poter aggiungere files.
Per modificare i permessi di un file si usa il comando chmod “permessi” “file”.
I permessi possono essere digitati in due modi.
FORMA OTTALE
Si usa un numero compreso tra 0 e 7 per ogni tipo di utenza (proprietario, gruppo, altri):
|
Numero ottale |
Permesso |
Descrizione |
|
0 |
--- |
Nessuna autorizzazione |
|
1 |
--x |
Solo esecuzione |
|
2 |
-w- |
Solo scrittura |
|
3 |
-wx |
Scrittura ed esecuzione |
|
4 |
r-- |
Solo lettura |
|
5 |
r-x |
Lettura ed esecuzione |
|
6 |
rw- |
Lettura e scrittura |
|
7 |
Rwx |
Lettura, scrittura, esecuzione |
Un esempio potrebbe essere “chmod 755 pippo” che attribuisce per il file pippo tutti i permessi al proprietario mentre agli utenti dello stesso gruppo e a tutti gli altri solo lettura ed esecuzione.
FORMA “CHIARA”
Si specifica prima l’utente con una lettera identificativa (o=proprietario, g=gruppo, o=altri, a=tutti), poi il segno “+” se si intende aggiungere un permesso, “-“ per toglierne oppure “=” per fissare determinati permessi e poi i permessi su cui agire.
Un esempio potrebbe essere “chmod g+x pippo” che “aggiunge” agli appartenenti allo stesso gruppo del proprietario il diritto di esecuzione del file pippo.
Per identificare quali utenti o processi stanno usando un file o una socket si usa il comando fuser:
fuser –v file1,file2,…..,filen per i files
fuser –v –n tcp
hostpart1,hostpart2,……,hostpartn per
le socket
TCP può essere sostituito con UDP a seconda del tipo di connessione.
Fuser restituisce nell’ordine: utente proprietario, pid, tipo di accesso, il comando con cui è stato lanciato il processo.
c (current directory) il processo ha settato il file specificato come dir corrente
e (executable being run) il file specificato è un eseguibile correntemente in exec
f (open file) il file è aperto
r (root directory) il file specificato è la root del comando
m (shared memory) il file è una libreria condivisa correntemenet in uso.
Per quanto riguarda la socket può risultare più utile:
netstat –p
che restituisce i pid ed i nomi dei possessori della socket.
|
/bin |
binari indispensabili per la partenza del sistema |
|
/boot |
Contiene tutti i files necessari all’avvio di linux, compreso il kernel |
|
/dev |
file speciali associati ai dispositivi: |
|
/dev/fbx |
Frame Buffer x della scheda video |
|
/dev/fdx |
floppy x |
|
/dev/hdxy |
HD o CDROM collegato sul canale IDE. hday = Primary Master, hdby = Primary Slave, hdcy Secondary Master, hddy = Secondary Slave. La y e’ opzionale e si usa nel caso di più partizioni sulla stessa unità (es: hda2 è la seconda partizione dell’unità Primary Master |
|
/dev/lpx |
Porta parallela x |
|
/dev/null |
nullo: se letto ritorna solo 0, se scritto assorbe tutto l’output che gli si manda come un buco nero |
|
/dev/psaux |
Porta PS2 |
|
/dev/random |
Ritorna numeri random |
|
/dev/rtc |
Real Time Clock |
|
/dev/sdxy |
Simile alla precedente ma per dischi SCSI |
|
/dev/ttxy |
Console virtuale n° y |
|
/dev/ttySx |
Porta seriale n° x |
|
/etc |
contiene files di configurazione |
|
/etc/rc.d |
contiene tutti gli script che vengono eseguiti durante l’avvio e l’arresto del sistema |
|
/home |
contiene le home degli utenti |
|
/lib |
librerie condivise dai programmi |
|
/lost+found |
Contiene i file persi o corrotti recuperati dopo un riavvio “brutale” del sistema |
|
/mnt |
contiene i mount-point |
|
/opt |
vecchia dir Unix per i programmi (ex /usr) |
|
/proc |
dir virtuale gestita dal kernel per la gestione dei processi |
|
/root |
home dell’utente root |
|
/sbin |
binari per la gestione del sistema da parte di root |
|
/tmp |
file temporanei |
|
/usr |
applicazioni, librerie ecc. per gli utenti |
|
/usr/bin |
comandi utente |
|
/usr/include |
header per compilazioni |
|
/usr/lib |
librerie |
|
/usr/local/bin |
programmi installati da sorgenti |
|
/usr/sbin |
programmi non essenziali |
|
/usr/share |
dipendente dall’architettura del sistema |
|
/usr/src |
sorgenti |
|
/usr/X11R6 |
sistema Xwindow |
|
/var |
varie: log, spool, ecc. |
Dopo un riavvio “brutale” di Linux o comunque dopo n riavvii del sistema viene eseguito automaticamente il controllo del file-system (fsck).
Nel caso lo si voglia forzare a mano occorre smontare prima il disco da controllare ed usare, eventualmente, l’opzione “–a” per chiedere la correzione automatica degli errori riscontrati.
Per spostare una dir da una partizione ad un’altra:
mv /home /old-home
mkdir /home
mount –t ext2 /dev/hdax /home
cp –dpR /hold-home/* /home
aggiornare /etc/fstab con “/dev/hdax /home ext2 defaults”
Per creare l’immagine di un dischetto:
cp /dev/fd0 immagine.img
Per creare un dischetto da un’immagine:
cp immagine.img /dev/fd0
Per montare un’immagine:
mount –o loop –t ext2 immagine.img /mnt/xxx
Per creare l’immagine masterizzabile di una directory:
mkisofs –a –r –v –T –o immagine.img /…/dir
Per montarla:
mount –o loop –t iso9660 immagine.img /mnt/xxx
Se viene segnalata la mancanza di librerie dinamiche (*.so.*) inserirne la path in /etc/ld.so.conf e poi eseguire ‘ldconfig –v’
locate “file” trova un file velocemente sulla base di un elenco aggiornato periodicamente
find “dir di partenza” –name “nome-file” cerca un file setacciando tutto il file-system
Per eseguire un comando sui files trovati da find:
find “dir di partenza” –name “nome-file” –exec “comando” {} \;
Quando si usano i caratteri jolly con l’opzione “-name” bisogna usare le doppie apici, es:
find / -name “foo*”
Quando si usa “-exec” bisogna mettere una “\” alla fine del comando, es:
find / -name “foo*” –exec cat {} \
Un link permette di dare più nomi allo stesso file. I link possono essere hard o simbolici.
Gli hard-link si creano col comando “ln” e generano semplicemente un’altra “entrata” nell’elenco dei file di una directory, il risultato è che due nomi corrispondono allo stesso file, quindi modificarne uno significa modificare anche l’altro. I permessi sono gli stessi del file originale. Cancellando il link il file non viene eliminato.
I link simbolici si creano col comando “ln –s” e generano un collegamento ad un nome di file. Questa forma è molto più usata perché più elastica, ad esempio il link può avere permessi diversi dal file originale.
GZIP, gestisce un solo file alla volta:
gzip –9 xxxx.abc comprime xxxx.abc in xxxx.abc.gz con la massima compressione, xxxx.abc viene eliminato
gunzip xxxx.abc.gz decomprime xxxx.abc.gz
gzip –d xxxx.abc.gz come gunzip
Per gestire più files normalmente gzip si combina con tar:
tar zxfvp xxxx.tar.gz decomprime archivi “tar.gz” o “tgz”
tar cvzfp ……… crea un archivio “tar.gz” o “tgz”
Notare l’uso dell’opzione “p” che salva i permessi: non e’ indispensabile ma è molto utile quando si intende effettuare un back-up del sistema.
ZIP, gestisce archivi:
zip –9 xxxx.zip *.txt comprime tutti i files .txt nell’unico file xxxx.zip
unzip xxxx.zip decomprime il file xxxx.zip
BZIP2, gestisce un solo file alla volta:
bzip2 xxxx.abc comprime xxxx.abc in xxxx.abc.gz, xxxx.abc viene eliminato
bunzip xxxx.abc.bz2 decomprime xxxx.abc.bz2
bzip2 –d xxxx.abc.bz2 come bunzip
Bzip2 viene spesso usato insieme a tar:
tar cvfp “dir da comprimere” | bzip2 –9 > abcd.tar.bz2 comprime una dir con bzip2
bzip2 –dc abcd.tar.bz2 | tar xfvp decomprime l’archivio
Utility grafiche:
Esistono varie utility grafiche che semplificano la gestione di archivi compressi, alcuni di essi sono:
·
LinZip
·
Tkzip
In /etc/fstab ogni riga indica quale dispositivo deve essere montato, qual è il suo mountpoint, di che tipo è (ext2, vfat, ntfs ecc. ecc.) ed altre opzioni. Alcune righe hanno la parola “auto” altre no: serve per indicare quali dispositivi devono essere montati automaticamente in fase di partenza e quali invece devono essere montati manualmente. Dichiarare dei dispositivi “noauto” serve per poterli montare specificando solo il dispositivo oppure solo il mountpoint (es. mount /mnt/cdrom).
Tutti i campi vanno separati da tabulazione.
L’opzione “umask=xyz” permette di stabilire quali permessi INIBIRE ai vari utenti (x=root, y=utenti del gruppo di colui che monta il file-system, z=altri). X y e z possono valere:
0 tutti i permessi
1 inibisce l’esecuzione
2 inibisce la scrittura
3 inibisce scrittura + esecuzione
4 inibisce la lettura
5 inibisce lettura + esecuzione
6 inibisce lettura + scrittura
7 nessun permesso
N.B.: se si specifica l’opzione “user” solo l’utente che ha montato un file-system può smontarlo, mentre se si specifica “users” lo può fare qualunque user.
Per creare un’immagine di un floppy su hd:
dd if=/dev/fd0 of=floppy.img
Per scrivere un floppy partendo da un’immagine:
dd if=floppy.img of=/dev/fd0
Per creare un disco di boot (es per kernel 2.2.7):
mkbootdisk --device /dev/fd0 2.2.7
oppure
cp /boot/bzImage /dev/fd0
rdev /dev/fd0 /dev/”partizione di root”
La shell è l’interprete comandi di linux (e la più famosa e la shell Bash) ma è anche un completo linguaggio di programmazione e permette l’esecuzione di veri e propri script. Esistono costrutti per il controllo del flusso del programma (ramificazioni, cicli, ecc.) ed anche variabili.
La shell può essere di login o interattiva. La shell di login è quella in cui viene chiesto di identificarsi per accedere al sistema ed è configurata tramite il file “.bash_profile”; le shell interattive sono tutte le shell che vengono aperte dopo il login, in questo caso il file di configurazione è “.bashrc”.
All’interno dei files di configurazione delle shell (~/.bashrc e ~./.bash_profile) ma anche in /etc/profile è possibile inserire le personalizzazioni. Il file /etc/profile fa’ da “.bash_profile” globale, ossia valido per tutti gli utenti. Normalmente vengono definiti degli alias che modificano il funzionamento di un comando oppure creano un nuovo comando. Ad esempio con
alias ls=”ls –la”
alias pippo=”
digitando ls si otterrà in realtà “ls –la” (modifica) mentre digitando pippo si otterrà “ cat ~/pippo | grep pluto” (nuovo). Usare sempre i doppi apici nella definizione degli alias.
E’ inoltre possibile definire delle variabili valide solo all’interno della shell oppure valide sempre:
abc=”1”
export PRINTER=”lp1”
La variabile abc avrà valore 1 all’interno della shell mentre la variabile lp sarà sempre impostata col valore lp1.
Per estrarre il valore di una variabile si premette il carattere $, ad esempio:
echo $PRINTER
restituirà lp1.
La variabile PATH contiene tutte le directory in cui vengono cercati gli eseguibili quando nel richiamare un comando non viene specificato il percorso.
La variabile per la configurazione del prompt e PS1. Con
export PS1=’$pwd’
il prompt indicherà la directory in cui ci si trova perché gli apici singoli indicano che la variabile deve essere valutata di volta in volta.
Il comando “env” elenca tutte le variabile d’ambiente definite ed il relativo valore.
Può risultare utile mettere in “.bash_profile” la riga “source ~/.bashrc” per mantenere tutte le personalizzazioni della shell interattiva anche nella shell di login: quando viene richiamato il file “.bash_profile” viene eseguito ANCHE “.bashrc”.
Il file /etc/termcap è un elenco di tutti i terminali che il sistema conosce.
E’ possibile cambiare la shell di login col comando chsh, la lista di quelle disponibile è in /etc/shells.
Per “stdout” (standard output) si intende il monitor, mentre per “stdin” (standard input) si intende la tastiera; l’ “stderr” è lo standard errors ed è un filtro che intercetta solo i messaggi di errore. Tutti e tre possono essere rediretti tramite appositi operatori:
> redirige l’stdout
< redirige l’stdin
>> redirige l’stdout accodando
<< redirige l’stdin accodando
2> redirige l’stderr
2>> redirige l’stderr accodando
Il reindirizzamento può essere fatto solo su files, non su comandi. Per passare l’output ad un programma si utilizza l’operatore “|” (pipe).
Esempi:
ls –f > lista.txt crea (o sovrascrive) lista.txt con l’elenco dei file della dir corrente
cat lista.txt >> lista2.txt accoda lista.txt al file lista2.txt
ls | more mostra “ls” una videata alla volta.
I nomi dei file possono essere indicati tramite l’uso di caratteri jolly, al fine di passare ai comandi più di un file.
* indica 0 o più caratteri
? indica un carattere
a-z un carattere compreso tra a e z
abc un carattere a scelta tra a b e c
^ vieta la corrispondenza
~ equivale alla home directory
|
cat |
conCATena più files. Generalmente e’ usato per visualizzare un file sullo standard output (video) oppure redirigendo l’output, es: cat xxxxx.txt | grep cc cerca “cc” nel file xxxxx.txt e lo visualizza a video cat /dev/hda1|bzip2>img salva nel file img l’intera partizione hda1 compressa con bzip2 |
|
chmod |
cambia i permessi |
|
chogrp |
cambia il gruppo |
|
chown |
cambia il proprietario |
|
chsh |
cambia la shell di login |
|
clock |
modifica l’orologio hardware e software |
|
cmp |
compara due files |
|
cp |
copia files |
|
date |
modifica la data/ora del pc ma non nell’hardware |
|
diff |
simile a cmp |
|
dcho |
manda l’echo sullo standard output |
|
dile |
determina il tipo di file analizzandone il contenuto |
|
export |
rende “globale” la visibilità di una variabile |
|
find |
Ricerca un file (vedi la sezione FILE-SYSTEM) |
|
grep |
cerca una stringa in un file |
|
halt |
arresta il sistema |
|
init |
passa ad un altro run-level |
|
less |
mostra il contenuto consentendone lo scorrimento su e giù |
|
ln |
crea link a files esistenti, con l’opzione “-s” crea link simbolici |
|
lpc |
Verifica lo stato delle stampanti, avvia ed arresta lo spool, attiva e disattiva le stampanti, riorganizza l’ordine dei lavori |
|
lpq |
mostra la coda di stampa (lpq –l). In alternativa: cancel [stampante] oppure lpstat |
|
lpr |
stampa un file. Se è definita la variabile d’ambiente PRINTER questa viene usata come stampante predefinita, altrimenti bisogna specificare –Pstampante. |
|
lprm |
rimuove i processi accodati (“lprm –“ li rimuove tutti). In alternativa “cancel all” |
|
ls |
lista il contenuto di una dir. Dispone di diverse e utili opzioni una delle quali è senz’altro “-l”: mostra i files e le directory incolonnati con i relativi dettagli, permessi ecc.(il secondo campo indica quanti sono i collegamenti a quel file). Per le directory si usa “-ld”. |
|
man |
cerca la documentazione relativa ad un comando |
|
mkdir |
crea un directory |
|
more |
mostra un file una videata alla volta |
|
mount |
monta un file-system “esterno” |
|
mv |
muove files o li rinomina |
|
nice/renice |
visualizzano o modificano la priorità di esecuzione dei processi (da –20 che è la più alta a +19) |
|
passwd |
modifica la password di un utente |
|
pr |
prepara uno o più files per la stampa |
|
printenv |
mostra le variabili d’ambiente |
|
ps |
mostra i processi in esecuzione |
|
pstree |
mostra i processi in esecuzione sotto forma di albero |
|
pwd |
mostra la directory corrente |
|
pwd |
indica il percorso in cui ci si trova al momento |
|
quota |
mostra l’occupazione del disco per un determinato account |
|
rdate |
legge l’ora da un time-server in rete. Es: “rdate www.clock.org|hwclock -systohcc” messo in /etc/ppp/ip-up aggiorna la data/ora ad ogni connessione ad internet |
|
reboot |
riavvia il sistema |
|
rm |
rimuove files |
|
rm –r |
rimuove una cartella ed il suo contenuto |
|
rmdir |
rimuove una directory |
|
rpm |
installa/disinstalla/aggiorna pacchetti in formato rpm (Gestione pacchetti) |
|
split |
spezza un file in più parti |
|
su |
passa momentaneamente ad un altro utente |
|
tar |
archivia più files in un unico file |
|
tee |
legge dallo standard input e scrive sullo standard output |
|
touch |
se si specifica un file inesistente lo crea vuoto, altrimenti aggiorna la l’ora e la data dell’ultima modifica |
|
umount |
smonta un file-system “esterno” |
|
whatis |
ricerca la descrizione di ogni comando |
|
who |
mostra gli utenti connessi |
La shell mette a disposizione una serie di caratteri speciali molto utili per la creazione di script ma utilizzabili anche direttamente da riga di comando:
|
; |
separa due comandi sulla stessa riga |
|
(com1;com2) |
raggruppa più comandi, crea una sub-shell |
|
{com1 |
raggruppa una serie di comandi in un unico blocco |
|
com1|com2 |
reindirizza l’output di com1 nell’input di com2 |
|
`expr` |
valuta l’espressione |
|
\xx |
non valuta l’espressione |
|
$var1 |
indica la presenza di una variabile |
|
$comando |
restituisce l’output di un
comando. ES: month=$(cat
xxxx) |
|
com1&&com2 |
esegue com2 solo dopo che com1 è terminato correttamente |
|
com1||com2 |
esegue com2 solo se fallisce l’esecuzione di com1 |
|
“ “ |
racchiudono una stringa che non va elaborata tranne che per i caratteri $, `, “ |
|
‘ ‘ |
racchiudono una stringa che va presa alla lettera |
for $var1 in “stringa” do
<istr1>
<istr2>
……..
<istr n>
done
while <cond.> ;
do <istr.> ;
done
until <cond.> ;
do <istr.> ;
done
if <cond. 1> ; then <istr. 1> ;
elif <cond. 2> ; then <istr. 2> ;
else <istr. 3>
case $var1 in
“stringa 1” ) <istr. 1> ;;
“stringa 2” ) <istr. 2> ;;
…….. ) ………. ;;
“stringa n” ) <istr. n> ;;
esac
CTRL-S arresta il flusso di output sullo schermo
CTRL-Q lo riprende
CTRL-Z sospende un programma
CTRL-\ “killa” un programma con tanto di file core
CTRL-D genera un carattere di EOF
Parentesi graffe: ALTGR+7 ALTGR+0
Parentesi quadre ALTGR+8 ALTGR+9
Tilde ALTGR+ì
I file script sono riconoscibili normalmente ma non sempre dall’estensione”.sh”. Non sono altro che dei files di testo in cui viene inserita una serie di comandi. Ogni script è in realtà un programma e deve quindi avere i permessi di esecuzione e deve trovarsi nella path di ricerca dei binari. La prima riga indica quale interprete deve essere utilizzato e comincia sempre con #! seguito dall’indirizzo e dal nome della shell (es.: #!/bin/sh).
Tutte le altre righe che cominciano col carattere “#” sono commenti e non vengono interpretate.
Uno script lanciato da una shell esegue i comandi in una shell secondaria e quando termina vengono perse tutte le impostazioni quindi, ad esempio, una riga del tipo VAR=”pippo” attribuirebbe il valore pippo alla variabile VAR solo all’interno dello script stesso. Per modificare permanentemente la variabile è necessario usare export VAR="pippo”
Il compilatore più diffuso è gcc della GNU e si usa con:
gcc –o pippo.c
e produce un file “.o” (object) che va poi passato ad un linker(????).
Sono necessarie le librerie glibc-devel o libstdc++-devel.
Wine è un programma che consente di eseguire programmi progettati per Windows su Linux ma, come dice l’acronimo Wine Is Not an Emulator, non è un emulatore anche se il risulato è lo stesso. Wine è reperibile allindirizzo http://www.winehq.com.
Wine si configura globalmente tramite due files:
/etc/wine.conf
/usr/local/etc/wine.conf
mentre la configurazione per ogni utente si trova in
~/.winerc
Wine può funzionare sia appoggiandosi ad una partizione con Windows installato sia da solo.
Nella modalità stand-alone (senza Windows installato) bisogna creare una directory windows ed una windows/system ad esempio in /usr/local/lib/win e dare i permessi di accesso agli utenti. Nella dir windows bisogna creare un file win.ini vuoto mentre nella dir system creare vuoti shell.dll, shell32.dll, winsock.dll, winsock32.dll.
Per la modalità con Windows installato invece ………VEDI INTER.NET N° 58/2000 PAG. 121.
Il sistema X Window è alla base dell’ambiente grafico di Linux. X implementa una struttura client-server ma client e server non devono necessariamente essere sulla stassa macchina.
Server X: è il programma che gestisce l’interfaccia grafica e accetta le connessioni di rete per la gestione remota. Fornisce i servizi ai client.
Client X: lo sono tutti i programmi che utilizzano l’ambiente grafico gestito dal Server X, sia sulla macchina locale che in rete.
Protocollo X: è il protocollo di comunicazione utilizzato dal Server X e dai Client X
WM: Window Manager, sono particolari software che comunicano al server dove posizionare le finestre ed altri componenti. Forniscono all’utente i mezzi per spostarle e ridimensionarle. Si appoggiano al Server X e sono anch’essi client.
Normalmente per avviare X si usa il comando startx, in questo caso si avvia prima il server e poi diversi client (twm, xterm, …..).
Il server XFree86 non è altro che una delle implementazione del sistema X Window che di per sé è solo un modello. E’ una versione liberamente ridistribuibile, normalmente si installa nella directory /usr/X11R6/ mentre i file di configurazione sono in /etc/X11/. Per i settaggi si usa l’XF86Config.
~/.xinitrc viene usato da X all’avvio
~/.twmrc viene letto dal window manager twm
~/.fvwmrc viene letto dal window manager fwm
Se si blocca l’X11 si può tentare di ucciderlo con CTRL-ALT-BACKSPACE oppure riavviare il sistema in maniera pulita con CTRL-ALT-CANC.
Naturalmente vale la pena di tentare il passaggio alla modalità a carattere con CTRL-F1 (F2, F3..F6); per ritornare alla modalità grafica usare ALT-F7.
Per capire gli errore si può esaminare il file prodotto con: “startx 2> report.txt”.
uname –a: per informazioni sul computer (microprocessore, kernel, nome del PC,…….)
free –mt: per verificare l’uso della RAM
top: per vedere i processi più “pesanti”
sar: riporta l’attività del sistema, è utilizzabile per creare grafici
jobs: per vedere i processi in background
dmesg: per vedere i messaggi di BOOT del kernel
/”stringa” per cercare nelle pagine del man
df (disk free) per vedere l’occupazione dei dischi
du (disk usage) per vedere l’occupazione dei dischi
wc per vedere statistiche su files di testo
ldd <prog> visualizza le librerie usate da <prog>
man “comando” per fare ricerche all’interno della pagina /”stringa”
Per stampare le pagine man si può procedere come segue:
man –t “comando” | lpr
man –t “comando” | mpage –2 | lpr solo Rh per un risultato migliore
Reperibili su http://www.pluto.linux.it sono una vera e propria enciclopedia del Linux
Contiene una vastissima serie di FAQ ed è reperibile sempre su http://www.pluto.linux.it .
Se non si trova niente usare “man –k” per cercare qualcosa di attinente.
apropos trova le pagine di man contenenti una certa parola chiave
whatis mostra una breve descrizione dei comandi
Eventualmente cercare in /usr/src/linux/documentation o in /usr/doc.
Per amministrare un sistema Linux esiste un programma molto comodo che si chiama webmin, sono inoltre disponibili i vari tool messi a disposizione da ogni distribuzione (linuxconf, YaST, ecc.).
Webmin non ha bisogno di compilazioni, è sufficiente scompattare l’archivio in /usr/local, fare “cd webmin-x.yy e poi “./setup.sh”. Fare attenzione alla login che non corrisponde alla login del sistema ma soltanto a webmin: per root la passeord è “admin”. Il programma ri richiama lanciando il browser e ricercando la porta 10.000.
Da terminale digitare “adduser” poi rispondere a “login name” col nome dell’utente da creare poi battere INVIO fino alla fine.
Da terminale digitare “groupadd <nome del gruppo>”.
Da terminale digirate “usermod –G <gruppo> <nome>”.
Da utente root digitare “passwd <utente>” oppure loggarsi come utente e poi battere “password”.
Con la Red Hat 6.x è possibile sfruttare le apposite utilità grafiche: dal menu G selezionare “System Configuration” e poi scegliere “User and group configuration” oppure la voce con l’icona del direttore d’orchestra.
In /etc/passwd (o /etc/shadow se criptate) si trovano le password di tutti gli utenti, mentre in /etc/group c’è l’elenco dei gruppi.
Linux non ha una gestione precisa della memoria perché il gestore della memoria è strettamente dipendente dall’architettura della macchina.
Sulle architetture x86 per Linux la memoria è divisa a pagine di 4kb. Ogni processo “vede” solo un certo numero di pagine (spazio virtuale) che sono riservate solo a lui. Il kernel permette di concatenare logicamente pagine fisicamente separate ma per i processi ciò è trasparente. Se un processo si blocca non blocca gli altri processi e tanto meno il sistema operativo perché ha una zona definita di memoria ed ha diritto ad una percentuale di risorse del sistema, tra cui anche il processore: non è possibile teoricamente che un processo monopolizzi una risorsa. Inoltre ogni processo può avere a disposizione più RAM di quanta non ne sia fisicamente installata nel sistema per mezzo dell’area di swap: una partizione dell’hard-disk che viene vista come fosse RAM sempre grazie al kernel. Più processi possono comunque condividere aree di memoria che vengono chiamate Shared Memory. Per quanto riguarda la protezione della memoria Linux usa 2 livelli: kernel space e user space.
0 Nel file /usr/src/linux/arch/i386/makefile:
2 Se non ci sono creare i link:
ln –s
/usr/src/linux/include/asm-i386/ /usr/include/asm
ln –s /usr/src/linux/include/linux/ /usr/include/linux
ln –s /usr/src/linux/include/scsi/
/usr/include/scsi
3
cd
/usr/src/linux
4 make mrproper (cancella il file .config quindi resetta la configurazione, si può evitare se si stà ricompilandi la stessa versione, mentre è indispensabile se si aggiorna il kernel con una nuova versione)
5
make
xconfig o make menuconfig
6
make
dep
7
make
clean
8
make
bzImage (si può anche scrivere “make dep clean bzImage”)
9
rm –R
/lib/modules/”versione del kernel”
10
make
modules
11
make
modules_install
12 make install
In alternativa al punto 9 è possibile utilizzare ‘rm “depmod –a|cut –d: -f1”’ alla fine di tutto.
Volendo “salvarsi” il kernel occorre salvare le directory /boot, /usr/src/linux/include e /lib/modules/x.x.xx
GNOME è l’acronimo di GNU Network Object Model Environment cioè ambiente di Lavoro basato su oggetti di rete del progetto GNU ed è un’interfaccia grafica per il desktop. GNU è un’acronimo ricorsivo per “GNU’s Not Unix.
Gnome è multipiattaforma, non è legato a nessun gestore di finestre in particolare ma ne può sfruttare diversi a patto che rispettino determinate specifiche (Enlightenment, IceWM, Sawmill sono solo alcuni). Gnome si basa sulle librerie di Gimp, le GTK, su CORBA e sulle imlib; inoltre supporta l’OpenGl per gli effetti 3D. La pronuncia ufficiale di GNOME è “guh-NEW”.
Per avviare Gnome si può inserire la riga “exec gnome-session” alla fine dello script di avvio di X; questo script si può chiamare “.xinitrc”, “.xsession” o “xclient”. Tuttavia la maniera più semplice e più elastica è sfruttare programmi come XDM, GDM o KDM.
Avviando gnome-session si attiveranno il window manager predefinito, il pannello e il Gnome Midnight Commander. Se crashasse il pannello o se ci fosse la necessità di ucciderlo il comando per riavviarlo è “panel” mentre per cancellare le personalizzazioni e ripartire con le impostazioni di default eliminare il file ~/.gnome-session.
Tasto dx sul “piede”
Proprietà
Attivare “Menù di KDE in sottomenù”
Per attivare i pulsanti per i workspaces aggiungere nel pannello il Gnome-pager, poi configurarli col Centro di Controllo di Gnome e/o cliccando col destro sul pannello e poi su “proprietà di questo pannello.
|
|
|