Curs operarador Linux 6 al 13 Juliol, potser de 2004?
Introducció
-Per canviar amb su i obtenir les variables de l'entorn del nou usuari fem su - (amb guió al final).
-Les aplicacions poden accedir directament al kernel mitjançant crides al
sistema o a través d'una shell. Per llistar les shells que tenim disponibles al sistema: less /etc/shells. La comanda que tenim per sapiguer quina shell tenim activa és echo $SHELL.
-Crtl+l, neteja terminal; Esc+u a la dreta del cursor ho passa a majúscules, Esc+l, ho passa a minúscules
-Crtl+a, va a inici; Crtl+e va al final
-Per obtenir ajuda, help, info, whatis, apropos.
-RedHat deixa ajudes a /usr/share/doc
-Als paquets hi ha fitxers README, interessant llegir-lo. Documentació a
www.linuxdoc.org
-Identificador usuari uid, identificador grup gid
-Opcions per defecte en crear un usuari amb useradd: useradd -D
Navegació per directoris
-ls -l per veure també enllaços simbòlics
-Podem trobar directoris, fitxers regulars, enllaços, dispositius de bloc,
pipes i sockets. Quan fem un ls, si mirem un fitxer, el número que apareix vol dir el nombre d'enllaços que apunten a ell.
-cd . indica el mateix directori. Es interessant per què podem veure els permisos de la carpeta on estem. cd .. és el directori superior.
-mkdir -p /test/test1 crea els "parents" encara que no existeixin.
-Es el mateix cd test/test1 que cd ./test/test1
Usuaris
-userdel -r esborra usuari i la seva carpeta home.
-umask, 0002 es "invertit" la codificació dels permisos de creació per defecte. Normalment 002 usuari, root 022
-umask per fitxers, encara que per máscara permeti crear-los amb permisos
d'execució, es crean sense.
-Si un usuari es propietari d'un fitxer, encara que tingui permisos 000 el
pot esborrar i treballar amb llibertat??
Discs
-Fdisk -l ens llista particions del disc
-mount 10.10.1.75:/var/nfs /mnt/carles -t nfs
Vi
-Vi, dos modes de funcionament: inserció i commandes (té un altre del que
no parlarem). Per passar d'un a l'altre ho fem amb la lletra i o a. Sortim
del mode amb Esc.
x esborrar caracter
dd esborra línia
:q per sortir des del mode commandes
:wq sense gravar
-cat /etc/mtab mostra el mateix que el comandament mount
Variables d'entorn, prompt, bashrc
-echo $HOME, mostra variable
-Per modificar variables d'entorn: nom variable=valor. El problema és que
aquesta modificació només serveix per la sessió de bash que tenim
actualment. Si fem un bash, la nova sessió no conserva els canvis.
-export permet assignar un nou valor permanent a una variable d'entorn.
Exemple: export PS1="\T>" ens proporciona un prompt amb l'hora. Si obrim
nous terminals a partir d'aquest moment, es manté aquesta varialble
d'entorn.
-Per afegir p.e. un directori al PATH, podriem fer export PATH=$PATH:/etc/ruta
-Per fer els canvis permanents hem d'actuar sobre
.bashrc, cada cop que creem una subshell
.bashprofile, cada cop que fem un login
.bash_logout, cada cop que fem un logout
-unset per esborrar una variable d'entorn
Fluxes
-Fluxes: entrada estàndar (0), sortida (estàndar, 1) i d'errors (2). Exemple:
0 --------> ls ---------> 1
|
|
2 errors
-L'entrada per defecte és el teclat, la sortida la pantalla i la d'errors
la pantalla.
Es poden redireccionar. Tenim 3 símbols: < per l'entrada, > sortida i 2>
la d'errors.
-Si escric cat sense res és, queda pensant ja que espera dades per l'entrada
estàndar, per tant introduirem valors i ell els mostrarà.
-Si fem cat > borrar 1, el que teclejem anirà al fitxer.
-Amb un pipe puc enllaçar la sortida estàndar d'un commandament a l'entrada estàndar d'un altre. Un exemple podria ser: ls -la /dev | more. També pot ser útil
amb grep.
-grep noauto /etc/fstab, o per exemple ls /dev | grep fd0.
-Les expresions regulars defineixen un patró que ens servirà per cercar
uns valors, ... Exemple de pipes encadenades:
ls -R /etc | grep conf$ | sort | uniq | more
llista fitxers acabats en conf de /etc, els ordena, treu els repetits i ho passa al commandament more.
Processos
-Processos. podem fer ps, pstree, top
Sortida (parcial) de ps -a:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 2772 380 ? S 16:10 0:05 init [5]
root 2 0.0 0.0 0 0 ? SWN 16:10 0:00 [ksoftirqd/0]
-Podrem veure molta informació amb ps -axu
-Els procesos poden estar en els següents estats:
D uninterruptible sleep (usually IO)
R runnable (on run queue)
S sleeping
T traced or stopped
W paging
X dead
Z a defunct ("zombie") process
-time find ~ test, temps que triga en executar el find. Podem calcular temps consumit per qualsevol procés.
Primer plà / segon plà
-Find, buscar. find / -name sessio4*. Això triga molt. El podem passar a
segon plà amb & al final.
-Crtl+c acaba; Crtl+z torna el control i queda en pausa. jobs ens mostra les tasques que tenim corrent i amb fg o bg podem enviarla a segon o primer plà, indicant el num que ens proporciona jobs.
Enllaços
-Enllaç dur només es pot fer dintre del mateix sistema de fitxers. L'Enllaç tou si es pot fer a un altre sistema de fitxers. Els simbòlics al llistat comencen les seves característiques amb una l.
Tasques programades
-at, cron. Per editar cron, crontab -e. El format de les tasques es:
min hores dies mesos dies de la setmana commandament a executar
-Anacron, repara les mancances de cron si quan tocava executar alguna tasca, l'ordinador estava apagat. Es defineixen les regles en /etc/anacrontab. El primer num es els dies d'espera i el segon el retard quan executi les tasques pendents. Exemple de anacrontab:
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
1 65 cron.daily run-parts /etc/cron.daily
7 70 cron.weekly run-parts /etc/cron.weekly
30 75 cron.monthly run-parts /etc/cron.monthly
-/etc/crontab es el fitxer de configuració de cron. run-parts significa executar totes les comandes amb permisos d'execució d'un directori determinat.
Exemple de /etc/crontab:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
-Per netejar logs, logrotate.
Xwindow
-Xwindow, ve dels anys 80. Es va començar dient X11, i va afegint releases:
X11R2,... A partir de la 2, passa a ser lliure, i s'evoluciona fins que
surgeixen les Xfree86. En arribar a la 4.4, deixa de ser lliure i a partir
de la 4.3 (l'última branca lliure) es desenvolupa la Xorg.
Funciona amb arquitectura client-servidor. Els clients son les aplicacions
en si (xclock...)
El servidor de les X control.la les entrades (teclat i ratolí) i les imatges que apareixen per pantalla (monitor i tarjeta gràfica). Els fitxers de configuració estan a /etc/X11. Antigament el fitxer principal es /etc/X11/XF86config. Per Xorg, el fitxer es Xorg.conf
Quan arrenca el servidor X, inicialitza teclat i ratolí i espera peticions. Les aplicacions han de sapiguer a quina pantalla s'ha de visualitzar. Això ho sap per la variable d'entorn DISPLAY. Si fem echo $DISPLAY, obtenim :0.0, que vol dir
equip:display.pantalla_física. L'equip es 0 (la pròpia màquina) i el display 0.
Arrenquem amb X :0. Per sortir Crtl+c. Podem ara arrencar aplicacions
grafiques que facin servir Xwindow.
Podem canviar la variable d'entorn amb export DISPLAY=:0.0
Modificant l'últim zero, podriem enviar a un altre tarja gràfica si en
tinguessim.
-Veurem ara com enviar una pantalla a un altre ordinador. Editem
/etc/ssh/sshd_config per treure el X11 forwarding. També hem de fer xhost per donar permisos a les màquines a les que volem enviar pantalles. Ho fem amb xhost +10.10.1.61, p.e.
-Per enviar-me la pantalla: Em logo a la màquina remota i faig export
DISPLAY=10.10.1.67:0.0, indicant la IP de la màquina a la qual em trobo físicament.
-El gestor de displays permet logar-se amb una interficie gràfica, gnome
fa servir gdm i kde kdm. També existeix xdm. XDMCP es un protocol que fan
servir aquest gestors per obrir sessions d'usuari a un altre màquina. A Fedora, farem gdmsetup a gnome i habilitem XDMCP
-Ara podem executar des d'una màquina que es trobi a runlevel 3:
X -query ipremota
Ens proporcionarà un login remot i gràfic.
startx arrenca servidorx, gestor de finestres i escriptori.
Compilar el kernel
-a cd /usr/src hi ha un directori linux2.3.x.x... que son les fonts del kernel. Les podem descarregar de www.kernel.org. Fedora te a més, un directori redhat amb eines diverses.
El fitxer Makefile es propi dels programes en C que te comandes i macros
per compilar un programa. En el nostre cas veiem que el nou kernel tindrà
la denominació de
EXTRAVERSION = -1.358custom.
Podem fer make menuconfig, make config i make xconfig.
Les opcions que trobem activades son les que tenim currens en el nostre equip, ja que es la última configuració gravada en el fitxer .config.
Podem activar com a mòdul, per no fer el nucli més gran. Quan afegim fixe,
de c passem a .o i després compilem; si l'activem com a mòdul, només fa .o
i queda així.
Quan acabem guarda l'última configuració:
# using defaults found in /boot/config-2.6.5-1.358
#
*** End of Linux kernel configuration.
*** Execute 'make' to build the kernel or try 'make help'.
La segona vegada ens diu: # using defaults found in .config, que es el
fitxer que te l'última configuració.
Ara fem make dep, en el nostre cas ens diu que no es necessari, ja que ja
es va executar quan es va compilar el kernel original.
Ara:
[root@pc-003 linux-2.6.5-1.358]# make bzImage
El resultat serà un fitxer bzImage, que queda guardat a arch/i386/boot dintre del directori de les fonts. Aquest fitxer el copiarem a /boot.
make modules, compila els mòduls.
-Un cop compilats els mòduls van al directori /lib/modules/. Aqui queden
els mòduls del kernel. El directori té el nom de la versió del kernel. Evidentment poden haver-hi tantes versions com kernels tenim per arrencar.
make modules_install
-Finalment hem de copiar el kernel a /boot. Es troba dintre de les fonts a
/arch/i386/boot. Fem:
cp bzImage /boot/vmlinuz-2.6.5-1.358custom
-També System.map, que es troba a /usr/src/linux , per tant fem:
cp System.map /boot/System.map-2...
Hi han distribucions que els fa falta una imatge initrd per arrencar. Per
crearla hem d'executar
mkinitrd -v /boot/initrd-2.6.5-1.358custom.img 2.6.5-1.358custom.
Indicant l'últim paràmetre va a cercar al directori indicat de les fonts corresponents al kernel amb aquest nom i el crea. També l'hem de copiar a /boot.
Finalment hem de configurar el gestor d'arranc per afegir el nou menú de kernel.
Per acabar configurem grub. vi /etc/grub.conf:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd0,2)
# kernel /boot/vmlinuz-version ro root=/dev/hda3
# initrd /boot/initrd-version.img
#boot=/dev/hda
default=1
timeout=10
splashimage=(hd0,2)/boot/grub/splash.xpm.gz
title Fedora Core (2.6.5-1.358)
root (hd0,2)
kernel /boot/vmlinuz-2.6.5-1.358 ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-2.6.5-1.358.img
title Windows XP
rootnoverify (hd0,0)
chainloader +1
title Fedora Customitzat amb NTFS (2.6.5-1.358custom)
root (hd0,2)
kernel /boot/vmlinuz-2.6.5-1.358custom ro root=LABEL=/ rhgb
initrd /boot/initrd-2.6.5-1.358custom.img
Amb grub no falta executarlo com amb lilo, només reiniciem i ja ens surt
el nou menú.
Mirem amb fdisk -l i podem muntar la partició NTFS. !!!!!
Si hem d'afegir moduls, podem descarregar fonts i NOMES compilar els
mòduls, i instal.lar-los. No fa falta recompilar el kernel. En teoria el
kernel quan trobi el nom mòdul el farà servir.
(Tenim també:
make mrproper, neteja tot encara que hagem compilat, i deixa les fonts
com si les haguèssim baixat.
make clean, neteja però no tan dràstica)
Compilar el kernel (resum):
make menuconfig
make dep
make bzImage
make modules
make modules_install
-Copiar el kernel de ... /arch/i386/boot a /boot:
cp bzImage /boot/vmlinuz-2.6.5-1.358custom
-Copiar System.map .../usr/src/linuxxxx/ a /boot:
cp System.map /boot/System.map-2...
-executar mkinitrd -v /boot/initrd-2.6.5-1.358custom.img 2.6.5-1.358custom.
-Configurem el gestor d'arranc. Recordar que lilo s'ha d'executar, en canvi grub no.
Arranc del sistema. Runlevels
La imatge initrd, munta una mini-imatge a la memòria Ram,
que es la que realment arrenca la imatge bona que normalment es diu
vmlinuz. Vmlinuz carrega init que es la mare de tots els procesos. Les
opcions de init per defecte estan a /etc/inittab, on podrem configurar el
mode d'execució que tenim per defecte. Contingut d'inittab:
#
# inittab This file describes how the INIT process should set up
# the system in a certain run-level.
#
# Author: Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
# Modified for RHS Linux by Marc Ewing and Donnie Barnes
#
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
# When our UPS tells us power has failed, assume we have a few minutes
# of power left. Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly.
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm -nodaemon
Directoris amb serveis de runlevel: hi han directoris rcx.d, plens
d'enllaços a programes del directori /etc/rc.d/init.d/
----------------