Páginas

martes, 24 de agosto de 2010

Reiserfs Gentoo


ReiserFS es un sistema de archivos de proposito general, soportado por GNU-Linux. Fue el primer sistema de fichero con journal incluido en Linux.

En estos momentos mi portatil tiene dos instalaciones Gentoo Linux, en un disco duro de 120Gb.

He decidido trasladar portage/ a una particion dedicada con el fin de compartirlo con las dos instalaciones Gentoo en el mismo equipo. El sistema de archivos elegido es reiserfs. 

Instalar las utilidades reiserfs necesarias para trabajar con el sistema de ficheros Reierfs. Es necesario que el kernel haya sido compilado para dar soporte a Reiserfs.
# hypatia # emerge reiserfsprogs

Darle formato a la particion con mkreiserfs
hypatia media # mkreiserfs -f --l "portage" /dev/sda11 
mkreiserfs 3.6.19 (2003 www.namesys.com)

A pair of credits:
Many persons came to www.namesys.com/support.html,  and got a question answered
for $25, or just gave us a small donation there.
Yury Umanets  (aka Umka)  developed  libreiser4,  userspace  plugins,  and  all
userspace tools (reiser4progs) except of fsck.
Guessing about desired format.. Kernel 2.6.34-gentoo-r1 is running.
Format 3.6 with standard journal
Count of blocks on the device: 1439808
Number of blocks consumed by mkreiserfs formatting process: 8255
Blocksize: 4096
Hash function used to sort names: "r5"
Journal Size 8193 blocks (first block 18)
Journal Max transaction length 1024
inode generation number: 0
UUID: a0c335fb-2c70-43d3-9138-ff638e360f36
LABEL: portage
Initializing journal - 0%....20%....40%....60%....80%....100%
Syncing..ok

Crear una carpeta para montar la nueva particion 
hypatia media # mkdir /media/reiserfs

Montar la particion
hypatia media # mount -v -t reiserfs /dev/sda11 /media/reiserfs

Copiar todos los archivos y directorios a la nueva particion:

hypatia media # cd /usr
hypatia usr/portage # cp -ax .  /media/reiserfs/

Renombrar, despues de comprobar que todo va bien se podra borrar.
hypatia usr # mv /usr/portage/ portage-backup

Crear el punto de montaje:
hypatia usr # mkdir /usr/portage

Agregar la entrada al archivo /etc/fstab que permitira montar la particion al iniciar la maquina:

#
/dev/sda11  /usr/portage  reiserfs  defaults  0 0


Montar todas las particiones presentes en /etc/fstab
hypatia usr # mount -a
hypatia usr # mount


Linux es genial!.

lunes, 23 de agosto de 2010

MPD servidor de musica

Configurar MPD en Gentoo Linux.

Instalar mpd y el cliente mpc (linea de comandos), y/o sonata un cliente con interfaz gráfica.
# emerge -av mpd
These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild N ] media-libs/libshout-2.1 445 kB
[ebuild N ] media-sound/mpd-0.16.2 USE="aac alsa bzip2 curl ffmpeg \
fifo flac id3tag ipv6 mad network ogg sqlite tcpd unicode vorbis -ao \
-audiofile -cdio -cue -debug -fluidsynth -inotify -jack -lame -lastfmradio \
-libsamplerate -mikmod -mms -modplug -mpg123 -musepack -openal \
-oss -pipe -profile -pulseaudio -sid -sndfile -twolame -wavpack -wildmidi \
-zeroconf -zip" 467 kB

Total: 2 packages (2 new), Size of downloads: 912 kB

Would you like to merge these packages? [Yes/No

# emerge -av media-sound/mpc

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N     ] media-libs/libmpdclient-2.4  USE="static-libs -examples" 268 kB
[ebuild  N     ] media-sound/mpc-0.20  USE="iconv -bash-completion" 97 kB

Total: 2 packages (2 new), Size of downloads: 365 kB

Would you like to merge these packages? [Yes/No]

El archivo de configuracion /etc/mpd.conf es basicamente como este:

# /etc/mpd.conf
# Archivo de configuracion para MPD
# Files and directories #######################################################
#
music_directory "/media/data/musica"
#
playlist_directory "/var/lib/mpd/playlists"
#
db_file "/var/lib/mpd/database"
#
log_file "/var/log/mpd/mpd.log"
#
pid_file "/var/run/mpd/mpd.pid"
#
state_file "/var/lib/mpd/state"
#
# General music daemon options ################################################
# cambie por su nombre de usuario.
user "gentoo"
#
# For network
bind_to_address "localhost"
#
# And for Unix Socket
#bind_to_address "/var/lib/mpd/socket"
#
port "6600"
#
log_level "default"
#
save_absolute_paths_in_playlists "no"
#
#
metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc"
#
# Symbolic link behavior ######################################################
#
follow_outside_symlinks "yes"
#
follow_inside_symlinks "yes"
#
input {
        plugin "curl"
#       proxy "proxy.isp.com:8080"
#       proxy_user "user"
#       proxy_password "password"
}
#
# Audio Output ################################################################
#
# An example of an ALSA output:
#
audio_output {
type "alsa"
name "HDA Intel"
auto_resample "no"
## device "hw:0,0" # optional
format "44100:16:2" # optional
mixer_device "default" # optional
mixer_control "PCM" # optional
mixer_index "0" # optional
}
#
audio_output_format "44100:16:2"
#
samplerate_converter "Fastest Sinc Interpolator"
#
# Volume control mixer ########################################################
#
mixer_type "software"
#
# Resource Limitations ########################################################
#
connection_timeout "60"
max_connections "10"
max_playlist_length "16384"
max_command_list_size "2048"
max_output_buffer_size "8192"
#
# Character Encoding ##########################################################
#
filesystem_charset "UTF-8"
#
id3v1_encoding "ISO-8859-1"
###############################################

Hay que crear los directorios y archivos que faltan en la seccion Files and directories:

# touch /var/lib/mpd/database

# touch /var/log/mpd/mpd.log
# touch /var/run/mpd/mpd.pid
# touch /var/lib/mpd/state

Agregar al usuario gentoo al grupo audio:
# gpasswd -a gentoo audio

Cambiar el propietario de los archivos y carpetas creados con anterioridad:
# chown -R gentoo.audio /var/{lib,log,run}/mpd

Cambiar permisos de manera recursiva al directorio de musica:
# chmod -R a+x /media/data/musica.

Es el momento de crear la base de datos:
# mpd --create-db

Agregar mpd al arranque y reiniciar:
# rc-update add mpd default

# shutdown -r now

Llego el momento de iniciar mpc (linea de comandos), o sonata (interfaz grafica), como usuario normal:

gentoo@hypatia ~ $ mpc play
Various Artists - Deusa do Amor
[playing] #1145/1188   0:04/4:57 (1%)
volume:100%   repeat: off   random: on    single: off   consume: off

Los comandos del cliente mpc:
gentoo@hypatia ~ $ mpc help

Linux es genial!.

Configurar tarjeta sonido

Configurar tarjeta de sonido Gentoo

hypatia # emerge alsa-utils

Comprobar si soundcore fue compilado como modulo:

hypatia # modinfo soundcore
filename:       /lib/modules/2.6.34-gentoo-r1/kernel/sound/soundcore.ko
alias:          char-major-14-*
license:        GPL
author:         Alan Cox
description:    Core sound module
depends:      
vermagic:       2.6.34-gentoo-r1 SMP mod_unload modversions
parm:           preclaim_oss:int

Tiene este modulo, no tiene que recompilar su kernel.

Detalles de la tarjeta de sonido
hypatia # lspci | grep -i audio
00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio Controller (rev 02)
hypatia etc # updatedb
hypatia etc # modinfo soundcore
filename:       /lib/modules/2.6.34-gentoo-r1/kernel/sound/soundcore.ko
alias:          char-major-14-*
license:        GPL
author:         Alan Cox
description:    Core sound module
depends:      
vermagic:       2.6.34-gentoo-r1 SMP mod_unload modversions
parm:           preclaim_oss:int
hypatia # alsaconf














===============================================================================

 Now ALSA is ready to use.
 For adjustment of volumes, use your favorite mixer.

 Have a lot of fun!

hypatia # rc-update add alsasound boot
* alsasound added to runlevel boot

Agregar usuario al grupo audio
hypatia # gpasswd -a gentoo audio
Adding user gentoo to group audio

Iniciar demonio alsasound
hypatia # /etc/init.d/alsasound start

Comprobar el volumen
hypatia # alsamixer

Fuente: http://bugtrack.alsa-project.org/main/index.php/Matrix:Module-intel8x0#The_module_options_for_snd-intel8x0
http://www.gentoo.org/doc/es/alsa-guide.xml

Linux es genial!.

viernes, 13 de agosto de 2010

Capturar pantalla

Capturar pantalla al estilo Linux



Como capturar una pantalla en Linux desde la consola como usuario root.

1er metodo:

   1. Capturar pantalla completa, ejecutar como root:
      xwd -root -screen > screen_fvwm-crystal.xwd

   2. Para visuarlizar la captura:
      ee screen_fvwm-crystal.xwd

   3. Para cambiar formato xwd a png:
      convert screen_fvwm-crystal.xwd screen_fvwm-crystal.png

2do metodo:

   1. Capturar pantalla en el formato nativo del xwd:
      xwd -out screen_fvwm-crystal.xwd

   2. Convertir formato creado por xwd a formato pnm:
      xwdtopnm screen_fvwm-crystalxwd screen_fvwm-crystal.pnm
      xwdtopnm: writing PPM file

   3. Por último, pasar el archivo pnm al formato más comun png:
      pnmtopng screen_fvwm-crystal.pnm screen_fvwm-crystal.png

xwdtopnm y pnmtopng, pertenecen al paquete netpbm (Portable Bitmap Plus Utilities).

3er metodo:

También podemos utilizar el programa imagemagick de la siguiente forma:

    * import -window root screen_fvwm-crystal.png

Fuente: http://www.benavent.org/

Linux es genial!

sábado, 7 de agosto de 2010

OpenSSh

Propuestas de Linux para administrar un servidor y acceder a nuestra estación de trabajo remotamente. Tener solamente una linea de comandos o un escritorio gráfico completo.


OpenSSH es la herramienta para la administración remota, es seguro y fácil de instalar y usar. Desempeña la autenticación, el cifrado y la garantía de la integridad de la transferencia de datos. Si ocurre algo que altere los paquetes, SSH nos lo comunicará.

Componentes:

- sshd: Demonio del servedor OpenSSH
- ssh: Significa shell segura.
- scp: Copia segura, ofrece transferencia cifrada de ficheros
- sftp: Protocolo seguro de transferencia de ficheros.
- ssh-copy-id: Para instalar clave personal de identidad en el fichero authorized_keys de un equipo remoto.
- ssh-keyscan: Genera y gestiona claves de autenticación RSA y DSA.
- ssh-add: Agrega identidades RSA o DSA al agente de autenticación ssh-agent.
- ssh-agent: Recuerda las frases de acceso durante varias entradas a SSH para una autenticación automática. Funciona durante una misma sesión. Salir, abrir otra terminal, supone volver a empezar. En cambio, keychain recuerda las frases de acceso mientras no reiniciemos.

Tipos de autenticación:

- Autenticación por clave de host. Utiliza la identificación de entrada y contraseña de Linux para la autenticación y nuestras claves SSH para cifrar la sesión.
- Autenticación por clave pública. En lugar de utilizar nuestro sistema de identificación de entrada, autentica con una clave de identidad SSH. Las claves de identidad autentican usuarios individuales, las claves de host autentican servidores. Tiene que crear claves de identidad además de claves de host, luego distribuir copias de la clave pública a todos los hosts a los que se quiere acceder. Su clave privada no debe compartirla nunca.
- Autenticación sin frase de acceso. Similar a la autenticación por clave pública, pero el par de claves se crea sin frase de acceso. Resulta útil para servicios automatizados, como los guiones y tareas con cron. Una forma de usar frases de acceso con procesos automatizados es usar las utilidades ssh-agent o keychain.

Tipos de claves:

Las claves en símismas son del mismo tipo, RSA o DSA. Cada clave tiene dos partes, una pública y otra privada. El servidor se queda con la clave privada y el usuario, (cliente) emplea la clave pública. Las transmisiones se cifran con la clave pública y se descifran con la clave privada.

La dirección de la transmisión definen Servidor y Cliente. El demonio SSH debe estar ejecutándose y escuchando los intentos de conexión en el Servidor. El Cliente es cualquiera que entre a dicha máquina.

Configurar OpenSSH

para entrar en un host remoto con el método más sencillo soportado:

La autenticación por clave de host es el método más sencillo de configurar el acceso remoto SSH. Será necesario:

- Tener OpenSSH instalado en la máquina a la que queremos acceder remotamente.
- Demonio SSH ejecutándose en el servidor remoto y que el puerto 22 no esté bloquedo.
- Software cliente en el ordenador cliente.
- Una cuenta de acceso en el servidor remoto.
- Por último, distribuir la clave pública del host a los clientes.

Averiguar dependencias y USE local para el paquete openssh en Gentoo Linux, (no es necesario en otras distribuciones).
gentoo@hypatia / # emerge -pv openssh

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R   ] net-misc/openssh-5.3_p1-r1  USE="X* pam tcpd -X509 -hpn -kerberos -ldap -libedit -pkcs11 (-selinux) -skey -smartcard -static" 1,004 kB

Total: 1 package (1 reinstall), Size of downloads: 1,004 kB

Por lo tanto la información dentro de package.use quedará asi:
gentoo@hypatia / # vim /etc/portage/package.use
...
net-misc/openssh USE="X* pam tcpd -X509 -hpn -kerberos -ldap -libedit -pkcs11 (-selinux) -skey -smartcard -static"

Instalar openssh en Gentoo:

gentoo@hypatia / # emerge -av net-misc/openssh

Iniciar el demonio sshd:
gentoo@hypatia / # /etc/init.d/sshd start
* Starting sshd ...
gentoo@hypatia / # /etc/init.d/sshd status
 * status:  started

Para iniciarlo automáticamente:
gentoo@hypatia / # rc-update add sshd default

¿Crear claves RSA o DSA?, es igual. Ambas son fuertes criptográficamente.

La cuenta a utilizar será:
username -- > gentoo
passwdord -- > ********

Generar claves SSH:

Siguiendo con nuestro ejemplo, generamos un nuevo par de claves utilizando el nombre de clave de host por defecto de /etc/sshd_config. No cree nunca una frase de acceso en clave de host, en el momento que le solicite una pulse Intro:
gentoo@hypatia / # cd /etc/ssh
gentoo@hypatia / # ssh-keygen -t rsa -f ssh_host_rsa_key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ssh_host_rsa_key.
Your public key has been saved in ssh_host_rsa_key.pub.
The key fingerprint is:
f1:d0:8f:de:1f:41:75:5e:51:11:76:9d:c6:1d:3f:64 root@hypatia
The key's randomart image is:
+--[ RSA 2048]----+
|              .E/|
|         .    +*B|
|        o .   o.o|
|         + o .  .|
|        S o . .  |
|         . .   . |
|          . . .  |
|             . . |
|              .  |
+-----------------+
gentoo@hypatia / #

Creo una pequeña red utilizando dos ordenadores, dos claves de red y un router.  El que hará de servidor se llamará hypatia, (Gentoo Linux instalado) y el cliente lucy_ubuntu, (Ubuntu 10.04 - Lucy instalado). Crear

Agregar regla al firewall:

Puede que quiera agregar regla que permita las peticiones de entrada del cliente tanto en el archivo /etc/host.allow como en su guión iptables:
# /etc/host.allow ALL:10.0.0.3/255.255.255.0

En mi caso particular:
# /usr/local/bin/fw_host
...
$ipt -A INPUT -p tcp --dport 22 --sport 1024:65535 -j ACCEPT
---

Esta regla permite las peticiones de entrada del cliente a traves del puerto 22 (puerto por defecto de openssh), desde rango de puertos de origen no privilegiados.

Con la finalidad de realizar pruebas utilizo un viejo router D-Link 504 con 4 puertos Ethernet. A traves de un navegador accedo a la dirección por defecto del router 192.168.1.1 (username y password admin), y cambio la dirección IP  10.0.0.1 con máscara de subred 255.255.255.0.

De esta manera tendré dos redes: La red LAN 10.0.0.0/24 y la 192.168.1.1/24 perteneciente al router de mi proveedor de acceso a Internet. Esta última no la necesito para las pruebas. Desactivo mi tarjeta inalámbrica traves del controlador que utiliza:
gentoo@hypatia / # rmmod iwl3945

No hace falta tocar ningún fichero de configuración ya que con el siguiente comando es posible establecer IP de manera temporal:
gentoo@hypatia / # ifconfig eth0 10.0.0.2 netmask 255.255.255.0 up

gentoo@hypatia / # ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:21:9b:e2:cd:44 
          inet addr:10.0.0.2  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::221:9bff:fee2:cd44/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:448 errors:0 dropped:0 overruns:0 frame:0
          TX packets:562 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:171419 (167.4 KiB)  TX bytes:66852 (65.2 KiB)
          Interrupt:16

Crear ruta estatica:

Para la red 10.0.0.0/24 el gateway por defecto es 10.0.0.1 siendo este el router utilizado para conectar ambos ordenadores.
gentoo@hypatia / # route add default gw 10.0.0.1 eth0

Comprobando con el comando route:
gentoo@hypatia / # route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        *               255.255.255.0   U     0      0        0 eth0
loopback        *               255.0.0.0       U     0      0        0 lo
default         10.0.0.1        0.0.0.0         UG    0      0        0 eth0

Desde el ordenador que hara de cliente repito los comandos ifconfig y route respectivamente, cambiando la IP a 10.0.0.3:
gentoo@lucy_ubuntu ~ # ifconfig eth0 10.0.0.3 netmask 255.255.255.0 up    
gentoo@lucy_ubuntu ~ # route

Copiar la clave:

Una manera de distribuir la clave pública del host al(los) clientes es entrar desde el cliente y dejar que OpenSSH transfiera la clave. Puede utilizar el nombre de host o su dirección IP:

gentoo@lucy_ubuntu ~ $ ssh 10.0.0.2
The authenticity of host '10.0.0.2 (10.0.0.2)' can't be established.
RSA key fingerprint is 44:e0:bb:e2:92:45:d0:90:cd:54:44:19:7c:b2:97:df.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.2' (RSA) to the list of known hosts.
Password:

Last login: Fri Aug  6 19:01:40 CEST 2010 from 10.0.0.3 on pts/1

En este momento lucy_ubuntu puede en hypatia como si estuviera delante de la máquina, y el tráfico, incluida la identificación de entrada inicial, está cifrado.
gentoo@hypatia ~ $

Fijese, (en el prompt), que al salir volvemos a la máquina cliente.
gentoo@hypatia ~ $ exit
logout
Connection to 10.0.0.2 closed.

gentoo@lucy_ubuntu ~ $ ssh 10.0.0.2

Password:
Last login: Fri Aug 6 19:5:04 CEST 2010  from 10.0.0.3 on pts/1

gentoo@hypatia ~ $

En el fichero ~/.ssh/known_hosts está la clave pública en el PC cliente. Puede contener cualquier cantidad de claves de host. Es buena idea entrar como usuario normal y luego utilizar su para cambiar a usuario root.

Linux es genial!.

lunes, 2 de agosto de 2010

El mundo Linux (Unix)

Linux no es un simple producto de la moda ni de una campaña promocional. Desde sus primeros desarrollos en 1991 y hasta la fecha de hoy, Linux no ha dejado de evolucionar, cambiar. El mundo de la informática está vivo. Si no evoluciona, vegeta. Gracias a Linux, millones de personas han encontrado por fin lo que estaban buscando.

GNU-Linux no es más complicado que cualquier otro sistema operativo. La lentitud con la que parece penetrar en el gran público no está relacionada con su supuesta dificultad. El buen rendimiento admitido por numerosos usuarios principiantes o avanzados, grupos de usuarios Linux y profesionales en general muestra que se trata sobre todo de un problema relacionado con las costumbres de la gente, habituada durante años a un sistema operativo único. Resulta evidente que hay que modificar un poco estas costumbres para adaptarse a un entorno Linux.

Los ordenadores

 Un ordenador es una máquina muy polivalente. No debemos esperar que sea tan sencillo de usar como una máquina de mecanismo simple aunque no debemos conocer a toda costa los entresijos técnicos de nuestro ordenador para poder utilizarlo, hay que recordar y respetar algunas nociones y bases fundamentales.

Un ordenador no sabe hacer nada por sí mismo. No hay nada más estúpido que una computadora. Hay que decirle lo que debe hacer. Lo que le hace "inteligente" en el sentido de potencia de cálculo es el usuario y los programas que le hace ejecutar. Aunque esté inventado por humanos para humanos, el ordenador no entiende su lenguaje. Habla en binario, combinación de ceros (0) y unos (1). Estos valores combinados entre sí forman palabras y datos para el ordenador. El binario se convierte en un lenguaje llamado "lenguaje máquina". Los microprocesadores emplean un lenguaje llamado "ensamblador" en el cual cada instrucción dispone de un equivalente en binario. Con la ayuda de este lenguaje ensamblador, los informáticos desarrollan sus programas, uno de los cuales se llama "compilador" (un traductor de lenguaje de alto nivel y comprensible esta vez por un gran número de informáticos).

El sistema operativo

Entre el momento en el que pulsa el botón de encendido de su ordenador y el momento en el que puede trabajar y utilizar sus programas, pasa un cierto tiempo durante el cual se cargan programas en la memoria de su ordenador. El objetivo de estos programas es simplificarle la vida al usuario y al programador, al hacer las cosas más sencillas. Estos programas forman un conjunto llamado sistema "operativo". El papel del sistema operativo consiste en sacar partido al ordenador tanto como sea posible. En otras palabras, el sistema operativo le proporciona todos los mecanismos necesarios para aprovechar lo mejor posible los recursos de su ordenador.

Un sistema operativo es un programa o un conjunto de programas que garantiza la gestión del ordenador y de los periféricos. Sirve de interfaz entre el medio físico (hardware) y el programa
(software).

El sistema operativo ofrece a los programadores una interfaz de programación de aplicaciones llamada API, Application Programming Interface. Todos los programadores utilizan las mismas funciones en sus programas, lo que simplifica mucho el trabajo. Pueden centrarse en el objetivo de su programa (crear un procesador de texto, por ejemplo) sin tener que escribir una y otra vez las secuencias de programas que gestionan el disco duro, la impresora o el acceso al teclado. Le corresponde al sistema operativo gestionar:
  •  la memoria,
  •   los accesos a los periféricos,
  •   los datos sobre los discos,
  •   los programas,
  •   la seguridad,
  •   la compilación de información.

La interfaz grafica

En un producto como Microsoft Windows la interfaz gráfica está incluida en el mismo interior del sistema operativo. De hecho, hay una ventana de diálogo para realizar cualquier ajuste en el sistema.
Los usuarios suelen pensar que la interfaz gráfica es el sistema operativo.La interfaz gráfica no siempre ha formado parte del sistema operativo. Viene como complemento. No encontrará ningún
libro sobre teoría de los sistemas operativos que trate de las interfaces gráficas. Aumenta la lentitud y ocupa preciosos recursos de la máquina, no es necesaria interfaz gráfica para gestionar un servidor . Linux propone interfaces, pero no son programas como los demás.

La interfaz gráfica no es un componente del sistema operativo y Linux no la necesita para funcionar correctamente. Es un conjunto de varios programas ejecutados de forma clásica "encima" del sistema operativo.

Linux es un sistema operativo de tipo Unix. Existen decenas de sistemas operativos en esta familia. Unix es un sistema operativo de la familia de los sistemas multitareas y multiusuarios:

  • Multitarea: el sistema gestiona la ejecución simultánea de varios programas llamados procesos (nota: un verdadero multitarea necesita contar con varios microprocesores o equivalentes; Hyper Threading, por ejemplo). 
  • Multiusuarios: el sistema permite la existencia de varios usuarios diferentes en una misma máquina, conectados o no.

Arquitectura lógica de un sistema Linux

El esquema anterior es una sintesis simplificada de la estructura interna de un sistema operativo Unix. Abajo se encuentra su medio físico; arriba, los programas que usted ejecuta en su máquina. Entre ambos, los diferentes componentes del sistema operativo aseguran su correcto funcionamiento:
  • Las llamadas al sistema son utilizadas por los programas para comunicarse con el sistema operativo Unix.
     
  • La gestión de los procesos se encarga de la conmutación de las tareas y de su prioridad. Este
    componente se encarga, por lo tanto, de la multitarea.

  • La gestión de las entradas y de las salidas de ficheros se encarga tanto de la lectura y escritura de los datos en sus discos duros como también en sus periféricos (tarjeta de sonido, impresora,
    etc.).

  • Se puede ubicar cierta información en una zona de memoria llamada caché. En lugar de escribir datos directamente en el disco duro (un proceso lento), Unix va a escribirlos provisionalmente en una zona de memoria para luego escribirlos en el disco, después de unos segundos. Así, la lectura de estos datos es más rápida porque ya están en memoria y el programa no pierde tiempo en esperar el fin de la escritura de los datos.

  • Los drivers tienen como papel gestionar al más bajo nivel el hardware o las estructuras lógicas del hardware (por ejemplo, los datos de una partición).
Una aplicación bien programada en un sistema operativo bien programado no puede cortocircuitar este esquema: no "discute" nunca con el hardware, sino que dialoga obligatoriamente con las API correspondientes.

Linux es genial!