Blogger Template by Blogcrowds

grupoed2k@localhost ~]#


*iNSTALANDO PAQUETES RPM

EN MANDRiVA,

RED HAT,

FEDORA

Y OTROS CON SOPORTE PARA .RPM

Siempre hay que instalar previamente todas las dependencias necesarias (bibliotecas, etc.)

para que el programa en sí pueda ser compilado en nuestra computadora.

Para esto luego de bajado el paquete .rpm mediante .tar.gz por ejemplo, buscamos el archivo README y seguramente en este nos informará de todas las bibliotecas que hay que bajar.

Una vez realizado este proceso, vamos a la instalacíon en sí.
Para instalarlo simplemente luego de descomprimirlo escribimos en consola

rpm -i [archivo.rpm]

Si nuestra distribución es mandriva, podemos utilizar urpmi, que tiene la ventaja de instalarnos las depencias en forma automática, veamos cómo:

urpmi [paquete.rpm]



*iNSTALANDO PAQUETES .DEB EN

DEBiAN,

UBUNTU/KUBUNTU,

KNOPPiX

Y OTROS CON SOPORTE PARA .DEB


La forma más sencilla de instalar paquetes .deb es escribiendo en consola:

dpkg -i [nombre_de_paquete.deb]

Otra forma que además contempla la instalación de las dependencias (bibliotecas, etc) en forma automatizada es:

apt-get install [nombre del programa]


*DESCARGA COMPLETA DE UNA WEB
O DE VARiAS WEBSs en Linux

Podemos descargar un sitio web completo, e incluso si nuestra conexión se cae,

seguir la descarga sin perder lo que habíamos descargado con anterioridad.

El método además es muy rápido y seguro.

Para usarlo disponemos del comando "wget".


A modo de ejemplo veamos cómo bajar nuestro sitio

wget -r http://linuxcursosgratis.org/

Ahora supongamos que deseamos bajar varios sitios webs. Simplemente creamos un archivo donde ponemos el nombre de las webs a bajar. Por ejemplo podemos hacer así:

touch archivowebs

Con esto creamos un archivo vacío llamado archivowebs

mcedit archivowebs

Cuando se abra el archivo en cuestión ponemos en cada línea una web diferente.

Guardamos el archivo. Escribimos en consola

wget -r -i archivowebs



VíA | Linux Es Libre

grupoed2k@localhost ~]#

1.- Prefacio.

La estructura del sitema operativo GNU/Linux parte del Kernel (el
propio Linux en cuestión). Éste puede ser reemplazado por otro de
diferente versión sin ningún tipo de problemas.
En dicho Kernel está especificado el hardware que poseemos, desde el
procesador o procesadores que tenemos, hasta la tarjeta de sonido, de
red, etc.; sistemas de ficheros soportados; protocolos de conexión a
internet, etc.
Una gran mayoria, posee un kernel pre-configurado y pre-compilado, lo
cual puede llevarnos a que parte del hardware que poseemos no funcione o no lo haga correctamente, además poseerémos una sobrecarga de módulos inútiles para nosotros.
Debido a esto a lo largo de este documento vamos a aprender a
configurar y compilar nuestra propia imagen del kernel para hacerlo a
nuestra justa medida.

2.- Introducción.

Dicho esto, empecemos con una introducción al Kernel.
El kernel de Linux (Linux) está escrito en C y es código abierto
licenciado bajo licencia GNU/GPL (excepto el planificador de recursos,
el cual pertenece a Linus Torvalds y al resto de programadores que se
han ocupado de dicha parte), con lo cual tenemos acceso al código para
su estudio y/o modificación.
Lo podemos encontrar en diferentes versiones, ahora explicaremos la nomenclatura de éste.
La nomenclatura del Kernel se divide en 3 campos separados por un punto (.), estos son:
Primer campo: Número de la versión, actualmente a fecha de este documento es la 2.
Segundo campo: Numero de "sub-versión", por llamarlo de algun modo, es la version dentro de la propia versión, si este numero es par, la
versión sera estable, si por el contrario es impar, ésta sera inestable.
Tercer campo: Nivel de corrección el en que se encuentra.
Asi pues el primer paso para configurar nuestro propio Kernel será bajarnoslo, lo podreis encontar en ftp://ftp.kernel.org/pub/linux/kernel/
En esta dirección de ftp encontrareis varios directorios, los que nos
atañen son los del tipo v2.4 ''' (última versión estable hasta el momento)'''.
En dicho directorio podemos encontrar tanto las sources del kernel con
los parches aplicados (linux-x.y.z), como las propias aplicaciones
(patch-x.y.z). Recomendamos descargar la última versión estable con la
ultima aplicación aplicada, en el momento que fue escrito este documento era la 2.4.18, y es la que vamos a tratar a lo largo de este documento, no os preocupeis si la vuestra es otra, ya que será bastante parecido.
Una vez hemos descargado las sources del kernel, las metemos en un
directorio, el más común es /usr/src.
Hecho esto procedemos a descomprimir y desempaquetar las fuentes.
Si lo habeís descargado en tar.gz o tgz, la sintaxis para descomprimir y desempaquetar es la siguiente:

# tar xvfz linux-x.y.z.tar.gz (substituid los campos x, y, z por lo que proceda)

Por el contrario, si lo teneis en tar.bz2, la sintaxis puede variar
según la distribución, pero ha de ser una de estas tres (debeis tener
constancia de que bunzip2 esta instalado en el sistema, de lo contrario
no podreis descomprimir el archivo).

# tar xvfj linux-x.y.z.tar.bz2

# tar xvfI linux-x.y.z.tar.bz2

# tar xvfy linux-x.y.z.tar.bz2

En caso de que ninguna de estas maneras funcione, haced lo siguiente:

# bunzip2 linux-x.y.z.tar.bz2 | tar xvf linux-x.y.z.tar

Esto nos generará un directorio llamado linux, para una mayor
organización, deberiamos renombrar el directorio linux como
linux-x.y.z, para saber con que versión estamos trabajando, esto es muy
util para cuando vayamos a configurar otro kernel.

# mv /usr/src/linux /usr/src/linux-x.y.z

Hecho esto, para mayor comodidad podemos crear un enlace simbolico llamado linux.

# ln -s /usr/src/linux-x.y.z /usr/src/linux

Ahora entramos en el directorio /usr/src/linux y estamos preparados para dar el siguiente paso.


3.- Modulos.

Integrados en la imagen o modulos.
La elección de si debemos marcar algo como módulo o bien integrarlo en la imagen, queda en la mayoría de los casos al libre albedrio de cada
individuo, no obstante hay casos en los que solo podemos integrarlo.
No es bueno tener todo integrado en la imagen, ya que esto la espesaría hasta tal punto de no caber en un disket o bien, en caso de que excediera mucho el tamaño "normal", produciría un error al compilarse.
Por tanto debemos escojer ciertas cosas como módulos. Claro ejemplo de ello son tarjetas de red, de sonido, soporte para dispositivos USB,
SCSI, PCI, Paralelo, AGP, etc.
Ya que esto suele ocupar bastante espacio en la imagen.


3.1.- Como cargar y descargar modulos.

Para cargar y descargar modulos instalados, contamos con dos herramientas, modconf y modprobe.
Ésta primera es la más sencilla, basta con poner modconf y seleccionar los modulos mediante un menú.
La segunda es algo mas compleja, para cargar un modulo hemos de poner:

# modprobe nombre_del_modulo

Y para descargarlo:

# rmmod nombre-del-modulo

Si desea obtener más información acerca de modprobe, lease el manual de éste.


4.- Configurar el Kernel.

4.1.- Modos de configuración del
Kernel.


Tenemos tres modos de configurar el Kernel.
Paso a paso, con lo cual debemos recorrer uno a uno todas las opciones (no aconsejable), esto se lleva a cabo con la opción make config.
Mediante menús, el modo mas aconsejable y comodo a mi parecer, y el que trataremos en este documento, se lleva a cabo mediante la opción make menuconfig.
Mediante menús graficos, lo cual está bien, make xconfig, aunque personalmente no me agrada.

4.1.1.- El metodo por menús.
Para ello necesitamos las librerias que se ocupan de los menús en la consola, las ncurses.
Aclarado esto, empezamos con el menu de configuración, para ello nos
dirigimos al directorio donde se encuentran las sources del Kernel y
escribimos

# make menuconfig

Y nos saldra una pantalla parecida a esta:



Pues bien, esto es el menu de configuración del kernel, desde aquí
damos soporte al hardware, protocolos etc., más tarde, esta
configuración sera compilada en una imagen con la que iniciaremos el
sistema. La leyenda de teclas para la utilizacion del menuconfig es la
siguiente:
Pulsando "Enter" entramos en el menú o submenús.
Pulsando "Y" incluimos lo que seleccionemos como parte de la imagen del Kernel.
Pulsando "M"lo incluiremos modulo, esto es, se compilara aparte y se
cargara si queremos o no y no ocupara espacio en la imagen del kernel.
Pulsando "N" lo excluiremos de la futura imagen.
Por último, si pulsamos "?" se nos mostrara información sobre el menú u opción (se aconseja utilizarlo si no se sabe que hace esa opción)
La leyenda es esta:

[*] ó <*> indica que la opción sera compilada como parte de la imagen.
[ ] ó < > inidca que la opción no esta incluida.
indica que la opción esta cargada como módulo.
Una vez hechas las presentaciónes comencemos a recorrer los puntos más necesarios, dejando atras aquello que no sea tan importante.


4.2.- Configurando el Kernel.
Code maturity level options
En este primer grupo nos encontramos solamente con la opción Prompt for development and/or incomplete code/drivers.
Esta opción debe activarse en caso de que vayas a desarrollar drivers o
bien en caso de utilizar drivers que de otra forma no funcionan, por
ejemplo, si estamos usando el sistema de particiones EXT 3, es muy
aconsejable incluir esto como parte el kernel. En caso contrario no
marcar.

Loadable module support
Enable loadable module support esta opción es para poder hacer uso de modulos (inclúyala).
Set version information on all module symbols esta opción hace
posible que los modulos sean siempre compilados independientemente de que cambiemos de kernel (no la incluya a menos que esté seguro de lo que hace).
Kernel module loader esta opción hace posible que el kernel, por
si mismo, pueda cargar los modulos por si mismo si una parte del Kernel lo necesita (incluyalo y si es posible lea Documentation/kmod.txt).

Processor type and features
En la primera opción debemos expecificar el procesador que poseemos,
por ejemplo, si tenemos un AMD Athlon, Duron o K7, quedaría de la
siguiente manera: (Athlon/Duron/K7) Processor family
Las 5 siguientes opciones son muy expecificas y de procesadores
específicos, por lo que no las vamos a tratar, si su procesador posee
alguna de ellas, lea detenidamente la información de éste.
High Memory Support si nuestro sistema tiene menos de 960 MB de
memoria RAM, la respuesta ha de ser "off", si poseemos entre 1GB y 4GB
seleccionad "4GB", si tiene mas de 4GB, seleccionad "64GB").
Math emulation si su sistema carece de un co-procesador que
realice las operaciones matemáticas, habilite esta opción, para saber
si usted tiene co-procesador mire la información de la bios.
MTRR (Memory Type Range Register) support si escoje esta opción,
se podran manipular El tipo de rango de registros de memoria (MTRR), en caso de no poseer MTRR puede escojerlo también. Escoja esta opción, ya que mejora el rendimiento grafico.
Symmetric multi-processing support escoja esta opción sólo si su sistema tiene dos o más procesadores, esta opción deshabilita el APM que más adelante veremos.
Local APIC support on uniprocessors habilita un "controlador avanzado de interrupciones de entrada/salida", en caso de haberlo (sólo si posees un solo procesador).

General setup
Networking support necesario si tienes conexión a internet.
PCI support necesario si tienes hardware PCI.
PCI access mode esta opción especifica cómo se detectaran los
PCI's. Si eliges "BIOS", se detectaran de ella, si eliges "Direct", la
BIOS no será usada y si eliges "Any", el kernel primero tratara de
detectarlo directamente y si falla usara la BIOS. Por tanto es
aconsejable escojer "Any"
PCI device name database habilita la base de datos de todos los devices (dispositivos) PCI conocidos.
EISA support escoja esta opción sólo si esta haciendo un kernel para una maquina basada en EISA.
MCA support habilita el la Arquitectura MicroCanal para algunos IBM PS/2, esto es un bus de sistema simiar a PCI o ISA.
Support for hot-pluggable devices escogiendo esta opción, usted
puede conectar devices en su sistema sin necesidad de apagar y estos
funcionaran, como por ejemplos tarjetas PCMCIA, tarjetas de red,
modems, ratones, teclados, incluso discos duros, al igual que sucede
con el hardware USB.
PCMCIA/CardBus support si usted tiene tarjetas PCMCIA, puede
configurarlas en este submenu, para ello habilite la opción
PCMCIA/CardBus support y elija la tarjeta que posee.
Support for PCI Hotplug si su placa base posee soporte para conectar en caliente tarjetas PCI, habilite esta opción dentro de este submenú.
System V IPC es un conjunto de librerias que permiten la comunicación entre procesos (escoja esta opción).
BSD Process Accounting esta opción permite al kernel guardar la
información de los programas en un archivo, esta información es
referente al proceso que dicho programa lleva a cabo, fecha de
creacion, propietario del programa, nombre del comando, memoria usada,
etc. (escoja esta opción).
Sysctl support esto creará sistema de ficheros llamado /proc donde los procesos se llevaran a cabo (escoja esta opción).
Kernel core (/proc/kcore) format escoja "ELF", ya que es mejor que el antiguo "A.OUT".
Kernel support for a.out binaries esta opcion no es necesaria, ya que anteriormente hemos elegido "ELF".
Kernel support for ELF binaries escoja esta opción, ya que anteriormente hemos asignado este formato de librerias.
Kernel support for MISC binaries escoja esta opción si va a usar
programas que necesitan interpretes tales como Java, Python o bien
emuladores de otros sistemas operativos o maquinas (es recomendable
escojer esta opción).
Power Management support si desea controlar el que su ordenador
pueda ser "dormido" o bien apagado sin necesidad de usar el boton
power, elija esta opción. Esta opción solo funciona en placas base ATX,
las AT quedan excluidas.
ACPI support controla la energia del sistema para poder apagarlo o dormirlo, no obstante es preferible usar APM.
Advanced Power Management BIOS support controla la energia del
sistema para poder apagarlo o dormirlo, si no responde use la opción
Use real mode APM BIOS call to power off.

Parallel port support
Parallel port support habilita el uso del puerto paralelo, normalmente para impresoras o escaners.
PC-style hardware escoja esta opción si eligio la anterior.
Multi-IO cards (parallel and serial) escojala si posee una tarjeta de estas.
Use FIFO/DMA if available escoja esta opción.
SuperIO chipset support no escoja esta opción.
Support foreign hardware escoja esta opción solo si desea obtener soporte para puertos paralelos no estandars (esto pude suponer un problema).
IEEE 1284 transfer modes si su impresora no soporta leer hacia atras no lo active.

Plug an Play configuration
Plug and Play support escoja esta opción si desea que linux configure el hardware Plug and Play (PnP).
ISA Plug and Play support escoja esta opción si posee hardware ISA Plug and Play.

Block devices
Normal PC floppy disk support escojalo si desea hacer uso de la disquetera.
El resto de opciones son bastante expecificas, por lo cual no las trataremos en este documento.

Multi-device support (RAID and LVM) desde este menú podra configurar su disco duro RAID en caso de poseerlo.

Networking options
Packet socket es usado para las aplicaciones con comonicación directa con la red, si tienes internet marca esta opción.
Packet socket: mmapped IO si elige esta opción, el protocolo
Packet usara un mecanismo de Entrada/Salida (I/O), si no esta seguro de
que elegir, no lo elija.
Netlink device emulation algunos programas usan nodos especiales
como /dev/tap0 o /dev/route, escojalo según su libre elección. Esta
opcion sera eliminada del kerel en futuras versiones.
Network packet filtering (replaces ipchains) puede usarlo si quiere, pero no es en abosoluto necesario, en lugar de esto pude usar ipchains.
Socket Filtering elija esta opción si va a realizar conexion mediante PPP.
Unix domain sockets da soporte para el acceso a la red mediante el estandar UNIX (escoja esta opción).
TCP/IP networking escoja esta opción si desea tener conexion mediante el protocolo TCP/IP (protocolo usado en internet).
Asynchronous Transfer Mode (ATM) escoja esta opción si tiene una red LAN.
802.1Q VLAN Support si escoje esta opción debe tener el programa vconfig para configuralo.
The IPX protocol eso da soporte al protocolo Novel network.
Appletalk protocol support Appletalk es la forma por la que los
computadores Apple "hablan" entre ellos en la red, si tu linux esta
conectado a una red de Apple's y el tuyo tambien lo es, elige ésta
opción.
DECnet Support este protocolo es usado en algunos productos hechos por Digital (Compaq) (no es necesario).
802.1d Ethernet Bridging sirve para usar la maquina como puente ethernet.
CCITT X.25 Packet Layer es un grupo de protocolos de red estandarizados (no es necesario).
Algunos de estos protocolos no los trataremos aquí debido a que es un documento explicativo, no exaustivo.
WAN router elijalo si su tarjeta ethernet utiliza el interfaz WAN.
Fast switching esto permite la comunicación directa entre
interfaces de tarjetas de red. Esta opción no es compatible con
"Network packet filtering", si la ha escojido no elija ésta.
Forwarding between high speed interfaces esta opcion habilita NIC (Network Interface Card) durante periodos de congestión extrema.

Telephony Support mediante este menú configurará su tarjeta de telefono en caso de que la posea.

ATA/IDE/MFM/RLL support
ATA/IDE/MFM/RLL support elija esta opción si tiene algun
interfaz ATA, IDE, MFM o RLL (normalmente todas las maquinas tienen
algun interfaz de estos, sobre todo IDE, excepto las puramente SCSI).
IDE, ATA and ATAPI Block devices en este submenú configuraremos nuestros interfaces IDE, ATA y ATAPI.
Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support elija esta opción.
Use old disk-only driver on primary interface esta opción se usa para configurar el antiguo driver para discos duros MFM/RLL/IDE, lo más normal es usar el nuevo.
Include IDE/ATA-2 DISK support elija esta opción para dar
soporte a los discos duros MFM/RLL/IDE con el nuevo driver. Escoja esta
opción a menos que hubiera tenido que escojer la anterior.
Use multi-mode by default si teneis este error al arranque:
hda: set_multmode: status=0x51 { DriveReady SeekComplete Error }
hda: set_multmode: error=0x04 { DriveStatusError }
De lo contrario y ante la duda no escoja esta opción.
Include IDE/ATAPI CDROM support escojalo si posee un CDROM
IDE/ATAPI, en el caso de que usted posea una grabadora o regrabadora de
CD's o bien de DVD's, no escoja esta opción, ya que debera emularla
como SCSI.
Include IDE/ATAPI TAPE support escoja esta opcion en el caso de tener una grabadora de cintas magneticas.
Include IDE/ATAPI FLOPPY support normalmente no debera elejir
esta opción, ya que el device que utiliza la disquetera es otro, no
obstante si lo tiene conectado a uno de los dos IDE's elija esta opción.
SCSI emulation support escoja esta opción si necesita emular
algún interfaz IDE/ATAPI como SCSI. Si usted posee una grabadora de
CD's o DVD's ha de escojer esta opción.
--- IDE chipset support/bugfixes durante este apartado, se
configurara el chipset de los interfaces IDE, esto es bastante
especifico del propio sistema, así que he optado por expecificar mi
configuración para que ustedes elijan o copien según su libre albedrio.
CMD640 chipset bugfix/support (seleccionadla).
CMD640 enhanced support (no seleccionadla).
RZ1000 chipset bugfix/support usado en algunas placas base 486 y Pentium, esto corrige algunos errores con linux (seleccionada).
Generic PCI IDE chipset support elegid esta opción para dar soporte a sistemas PCI que usan drivers IDE.
Sharing PCI IDE interrupts support (seleccionadla).
Generic PCI bus-master DMA support (seleccionadla).
Boot off-board chipsets first support (no seleccionadla).
Use PCI DMA by default when available (seleccionadla).
ATA Work(s) In Progress (no seleccionadla).
Las siguientes opciones no las vamos a tratar debido a que son bastante expecificas, informese bien de su hardware.
VIA82CXXX chipset support esta opción habilita el uso del chipset VIA para PIO/DMA.
Support for IDE Raid controllers habilita el soporte para discos IDE's RAID.

SCSI support
SCSI support habilite esta opción en caso de que posea interfaces SCSI o bien en caso de que desee emularlos.
SCSI disk support esta opción le permite dar soporte a discos duros SCSI.
Maximum number of SCSI disks that can be loaded as modules esto
controla la cantidad de espacio adicional localizada en tablas para
drivers que son cargados como moulos despues de que el kernel se halla
iniciado, salvo que este seguro de lo que este haciendo no modifique el
valor predeterminado (40).
SCSI tape support da soporte a lectores de cintas magneticas SCSI.
SCSI CD-ROM support habilite esta opción en caso de que posea un lector de CD SCSI o bien posea una grabadora tanto IDE como SCSI.
Enable vendor-specific extensions (for SCSI CDROM) esto habilita
el uso de los comandos del vendedor especifico de la unidad SCSI, esto
es requerido para soportar CD's multisesión con antiguos cdroms
NEC/TOSHIBA y grabadoras HP.
Maximum number of CDROM devices that can be loaded as modules especifique aqui el numero maxcimo de unidades de CDROM, grabadoras o DVD que pueden ser cargadas como módulos.
SCSI generic support si desea usar escaners SCSI o bien grabadoras sean o no SCSI, lectores de cintas magneticas etc. escoja esta opción.
Probe all LUNs on each SCSI device escoja esta opción si usted tiene unidades SCSI las cuales soportan mas de un LUN (Logical Unit Number).
Verbose SCSI error reporting (kernel size +=12K) escoja esta
opción para que los mensajes de error leidos por el hardware SCSI sean
comprendidos más fácilmente, portanto escoja esta opción.
SCSI logging facility escoja esta opción si escojio "/proc file system support".
SCSI low-level drivers en este submenú usted podra configurar
las tarjetas SCSI que posee, al ser algo propio de cada sistema,
consulte su hardware y configurelo usted mismo.

Fusion MPT devide support
en este menu usted podra configurar su hardware Fusion MPT.

IEEE 1394 (FireWire) support
en este meú usted podra configurar su hardware FireWire.

Network device support
Network device support escoja esta opción si tiene acceso a internet.
ARCnet devices desde este submenu configuraras tu tarjeta ARCnet (si la tienes).

Dummy net driver support si conectas mediante SLIP o PPP, deberias seleccionar esta opción.

Bonding driver support seleccione esta opción si desea tener
multiples canales conjuntos de tarjetas ethernet. Si posee dos
conexiones ethernet en algun ordenador, puedes usarlas para una doblevelocidad de conexión usando este driver.

EQL (serial line load balancing) support si posee dos
conexsiones en serie con otro ordenador y usas para ello SLIP o PPP en
ellos, tu puedes hacer, mediante este driver, que ellos se comporten
como una doble velocidad de conexión.
Universal TUN/TAP device driver support esta opción poporciona
un paquete de recepción y transmisión para el espacio de los programas
del usuario. Esto puede ser visto como un simple dispositivo PPP o
ethernet, el cual en lugar de recivir paquetes de un medio fisico los
recibe del espacio del programa y en lugar de enviarlos "fisicamente",
los escribe en el espacio del programa. A no ser que realmente sepa que
es esta opción, no la marque.
Ethertap network tap en caso de marcar esta opción, deberiamos
marcar también "Kernel/User network link driver", no obstante esta
opción
es bastante avanzada para ser tratada en el documento, ya que caso de
escojerla, deberiamos tener cierto conocimiento en cuanto a
linux se refiere.


Ethernet (10 or 100Mbit) en este submenú configuraremos la
tarjeta de red ethernet de 10 o 100 Mbits. podemos configurar tarjetas
de diferentes marcas ya sean pci o isa, además de tambien poder
configurar tarjetas portatiles. Para ello solo debemos seleccionar la
opción Ethernet (10 or 100Mbit) y la de vuestra tarjeta, para ello
debeis conocer el chip
de esta, lo cual puede llevar a confusión, por ejemplo, una ethernet
Genuis usa un chip RealTek, como metodo de ayuda puede utilizar el
comando lspci con el flag -v para ver expecificaciones sobre su
hardware, sea o no pci. lspci es un comando que se encuentra dentro delpaquete pciutils.

Ethernet (1000 Mbit) en caso de que poseamos una tarjeta ethernet de 1000Mbits, la podremos configurar en este submenú.
FDDI driver support Fiber Distributed Data Interface (FDDI) está
diseñado para aportar grandes velocidades en redes locales,
esencialmente esto es un remplazo para grandes velocidades de ethernet.
FDDI puede funcionar sobre cobre o fibra.
HIPPI driver support HIgh Performance Parallel Interface (HIPPI)
permite una transmisión entre 800Mbits/segundo y 1600Mbits/segundo dual
o simple. HIPPI puede funcionar sobre cableado de cobre de hasta 25
metros o de fibra de hasta 300 metros en multi-modo o 10 Kilometros en
modo-simple. Esto normalmente es utilizado para conectar super
ordenadores, en caso de que posea una tarjeta HIPPI, seleccione esta
opción.
PLIP (parallel port) si desea conectar dos o más ordenadores mediante el puerto paralelo, escoja esta opción.
PPP (point-to-point protocol) support si va a conectar a
internet a traves de este protocolo, si por ejemplo va a usar un modem,
seleccione esta opción, para más información a cerca de como conectar a
internet via PPP, consulte el documento Como conectar a internet via
pppd.
SLIP (serial line) support si va a conectar mediante el protocolo SLIP, seleccione esta opción.
Wireless LAN (non-hamradio) si usted posee una red local Wireless, en este submenu puede configurarla.
Token Ring devices en caso de que posea una red local instalada en forma de anillo, en este menú puede configurarla.
Fibre Channel driver support es un protocolo serie de gran velocidad que se usa para conectar dispositivos de gran almacenaje al ordenador.
Red Creek Hardware VPN esto es el driver para el hardware que
proporciona una Rel Privada Virtual (Virtual Private Network),
seleccione esta opción en caso de que posea dicha red.
Traffic Shaper esto es una red virtual que permite limitar el
ratio de salida de datos sobre otros dispositivos de red. El trafico
que tu quieres restringir puede ser enrutado a estos dispositivos
virtuales.
Wan interfaces en caso de que tengamos montada una red local mediante WAN, en este submenu podemos configurarla.

Amateur Radio support si deseas conectar tu ordenador a una radio amateur, mediante este menu puedes configuralo.

IrDA (infrared) support el protocolo Interfared Data Associations (IrDA) es usado para interfaces de comnucicacion wireless.

ISDN subsystem esto es usado para redes de
servicios digitales, por ejemplo, si usted posee RDSI, mediante este
menú podra darle soporte tanto al servicio como a su tarjeta. Para una
RDSI deberia seleccionar la opción ISDN support, Support synchronous
PPP, en el el submenú Passive ISDN cards o Active ISDN cards,
seleccionar su tarjeta ISDN para RDSI.

Old CD-ROM drivers (not SCSI, not IDE) si posee un ispositivo de CDROM que no es ni SCSI ni IDE/ATAPI, mediante este menú puede darle soporte.

Input core support
en este menú se habilita el soporte
para dispositivos USB Human Interface Device (HID). En caso de poseer algo que lo requiera de soporte desde aqui.

Character devices
Virtual terminal esta opción da soporte para terminales virtuales o consolas virtuales, seleccionela.
Support for console on virtual terminal da soporte para usar una consola en un terminal virtual, seleccionela también.
Standard/generic (8250/16550 and compatible UARTs) serial support en caso de querer utilizar el puerto serie, seleccione esta opción.
Support for console on serial port esto puede ser util si posee una impresora conectada al puerto serie.
Extended dumb serial driver options seleccione esta opción si tiene un hub para conectar mas de 2 dispositivos SCSI o si su placa posee mas de 2 puertos serie.
Non-standard serial port support si posee puertos series no
estandarizados, como por ejemplo una placa base que no soporta el
estandard "dumb", seleccione esta opción.
Unix98 PTY support seleccione esta opción, ya que es muy
probable que la utilicemos. Esto hace posible el uso de xterms,
servidores de telnet, rlogins y ssh.
Maximum number of Unix98 PTYs in use (0-2048) aquí se indica el
máximo número de Unix98 PTYs que pueden ser utilizados a la vez, en un
sistema normal nos basta con la opción por defecto (256), en caso de
que tengamos montado un servidor grande de telnet, ssh, rlogin o algo
semejante, deberiamos incrementar el número.
Parallel printer support si tenemos una impresora conectada al puerto paralelo, debemos seleccionar esta opción.
Support for console on line printer seleccione esta opcion si desea que los mensajes del kernel sean impresos.
Support for user-space parallel port device drivers esto es necesario para programas que han de acceder al puerto paralelo.
I2C support en este submenu configuraremos las opciones para ver
la información de nuestro procesador, por ejemplo mediante el uso de
programas tales como lmsensors podemos ver la temperatura. En nuestro
caso hemos seleccionado las siguientes opciones: I2C support, I2C
device interface y I2C /proc interface.
Mice en este submenu configuraremos el soporte para nuestro
ratón en caso de no estar conectado al puerto serie, si nuestro raton
es USB, deberemos seleccionar la primera opción: Bus Mouse Support, en
caso de no ser ni serie ni bus, seleccionaremos la opción Mouse Support
(non serial and bus mice) el tipo de dispositivo que use el ratón.
Joysticks desde este submenú podremos configurar nuestro joistick.
QIC-02 tape support si posees un dispositivo de cintas magneticas no SCSI, seleccione esta opción.
Watchdog Card desde este submenú podra configurar su tarjeta Watchdog.
Intel i8x0 Random Number Generator support elijalo si su placa base lo tiene.
/dev/nvram support esta memoria es llamada convencionalmente
CMOS RAM en los PC's. Puede ser usada para guardar algunos bits de
datos muy importantes los cuales seria inseguro en caso de escribirlos
en el disco.
Enhanced Real Time Clock Support lea el documento explicativo en documentation/rtc.txt.
Siemens R3964 line discipline este driver ayuda a sincronizar la
comunicacion entre los dispositivos usando este protocolo. A menos que
utilice hardware especial como PLCs, no es necesario.
Applicom intelligent fieldbus card support seleccionelo en el caso de poseer esta tarjeta.
Sony Vaio Programmable I/O Control Device support si tienes una tarjeta de estas, selecciona esta opción.
Ftape, the floppy tape device driver si tienes un lector de cintas magnéticas conectado al controlador de la disquetera marca esta opción.
/dev/agpgart (AGP Support) AGP (Accelerated Graphics Port) es un
bus generalmente usado para conectar tarjetas graficas al resto del
sistema. Si tienes una tarjeta AGP y seleccionas esta opción, será
posible usar las caracteristicas AGP que tu tarjeta gráfica proporciona.
Direct Rendering Manager (XFree86 DRI support) esta opción da
soporte a DRI, introducido en los XFree86 4.0 y superiores. Si
selecciona esta opción, debera seleccionar el modulo correcto para su
tarjeta gráfica en la lista que mas abajo veremos.
Build drivers for old (XFree 4.0) DRM esta opción es para versiones de XFree86 inferiores a la 4.0.
3dfx Banshee/Voodoo3+ escoja esta opción si posee una tarjeta gráfica de estas caracteristicas.
ATI Rage 128 elija esta opción si tiene esta tarjeta gráfica.
ACP Modem (Mwave) support si posee uno de estos modems, éste es
el driver para poder utilizarlo. Soporta varios Thinkpads de IBM y
tiene el chipset Mwave, escoja esta opción. Una vez configurado el
modem, puede aprender más sobre la conexión a internet madiante PPP
leyendo el documento: Conectar a internet via pppd.

Multimedia devices
Video For Linux esta opcion da soporte para la captura de
audio/video, por tanto, si posee una tarjeta de televisión, de radio o
bien una webcam, seleccione esta opción.
Video For Linux mediante este submenú, usted podra dar soporte
para su tarjeta de televisión, en ella deberá seleccionar la opcion V4L
information in proc filesystem para dar acceso al dispositivo de video
en /proc/video, siempre y cuando halla habilitado la opción "/proc file
system support"; y tu modelo de tarjeta y expecificaciones de ésta.
Radio Adapters en caso de disponer de tarjeta de radio, mediante este submenú puede darle soporte.

File systems en este menú se configuraran los diversos tipos de sistemas de particiones que serán soportados en nuestro sistema.

Quota support esta opción da la posibilidad de limitar el
espacio de disco que los usuarios pueden usar. Normalmente, a no se que
este configurando un servidor en el que habran muchos usuarios, no
tendra porque seleccionar esta opción. Normalmente funciona sobre ext2.
En caso de seleccionar esta opción, lea más sobre esto en http://www.linuxdoc.org/docs.html#howto.

Kernel automounter support esto es una herramienta para montar automaticamente
sistemas de ficheros remotos.

Kernel automounter version 4 support (also supports v3) esta opción es más nueva que la anterior.

Reiserfs support en caso de que use el sistema de particiones
ReiserFS, marque esta opción. ReiserFS es un sistema de archivos muy
bueno con directorios largos y archivos pequeños y es muy rapido. Otra
caracteristica a destacar es el journailling. Supuestamente ReiserFS ya
es estable a partir del kernel 2.4.18.

ADFS file system support marque esta opción si desea dar soporte para el sistema de archivos standard del sistema operativo RiscOS.

Amiga FFS file system support seleccione esta opción si desea dar soporte para lectura y escritura al Fast File System de Amiga.

Apple Macintosh file system support marque esta opción si desea dar soporte al sistema de archivos de Macintosh.

BFS file system support escoja esta opción si desea dar soporte
al sitema de ficheros usado en SCO UnixWare para permitir el acceso a
la imagen del kernel y otros archivos importantes durante el proceso de
arranque.

Ext3 journalling file system support ext3 es un sistema de
archivos evolucionado de ext2, es journalling, muy rapido y compatible
con ext2, si desea obtener información para pasar su ext2 a ext3 lea el
documento: pasar de ext2 a ext3. Escoja esta opción si posee ext3.

DOS FAT fs support si desea habilitar el soporte para sistemas de particiones FAT, ya sea de MSDOS o Windows, marque esta opción.

EFS file system support (read only) EFS es un antiguo sistema de
ficheros udado para los CD-ROMs que no cumplían con el standard ISO9660
y el sistema de archivos del sistema operativo IRIX.

Compressed ROM file system support CramFS es de solo lectura y
está limitada a 256 MB (con archivos de 16 MB) y no soporta 16/32 bits
uid/gid, enlaces duros y marcas de tiempo. Escoja esta opción si desea
dar soporte a CramFS.

Virtual memory file system support (former shm fs) este sistema
de archivos guarda todo en memoria virtual, por tanto todo es temporal,
ya que nada es grabado en el disco duro, cuando apagas el ordenador
todo se pierde.

Simple RAM-based file system support Ramfs es un tipo de sistema de archivos que guarda todos los archivos en ram, esto permite acceso a lectura y escritura.

ISO 9660 CDROM file system support esta opción da soporte a los CD-ROMs con el formato estandard ISO 9660.

Microsoft Joliet CDROM extensions esta opción da soporte al formato para CR-ROMs Joliet de Microsoft.

Transparent decompression extension esta es una extensión expecífica de Linux.

Minix fs support da soporte al sistema de archivos del sistema operativo Minix.

FreeVxFS file system support (VERITAS VxFS(TM) compatible) esta
opción da soporte al sistema de archivos estandar de SCO UnixWare, el
cual también puede ser usado en otros sistemas operativos como Sunsoft
Solaris, HP-UX y algunos más.

NTFS file system support (read only) da soporte para el sistema
de archivos propio de Windows NT, tambien usado por Windows 2000 y XP,
debido al tremendo esfuerzo de Microsoft por no dar a conocer el codigo
de programacion de nada, no es posible aún escribir en una partición
NTFS sin que esta este expuesta a daños serios.

NTFS write support (DANGEROUS) si aún exponiendote a la
posibilidad de sufrir grandes daños, deseas escribir (o almenos
intentarlo) en una NTFS, escoje esta opción.

OS/2 HPFS file system support da soporte al sistema de archivos HPFS
de OS/2.

/proc file system support esto da soporte al sistema de archivos virtual de procesos, escoja esta opción.

/dev file system support da soporte a devfs, otro sistema de
archivos virtual como /proc. Si desea utilizar esto, lea todo lo
referente en Documentation/filesystems/devfs/. devfs tiene multiples
ventajas y es muy aconsejable, incluso en algunas distribuciones de
linux, como gentoo, se convierte en algo más que un mero consejo.

/dev/pts file system for Unix98 PTYs si escojió la opción Unix98
PTY support marque esta opción, no obstante en caso de haber optado por
defs, no es necesario escoger esta opción.

QNX4 file system support (read only) habilita la compatibilidad con el sistema de archivos del sistema operativo QNX 4.

ROM file system support este es un sistema muy pequeño de solo
lectura para "ram disk" de los discos de instalacion, pero también
puede ser usado para otros medios de solo lectura.

Second extended fs support da soporte para ext2 (el sistema de archivos estandar de Linux).

System V/Xenix/V7/Coherent file system support da soporte al sistema de archivos de los mencionados sistemas operativos.

UDF file system support (read only) este es el nuevo sistema de archivos de algunos CD-ROMs y DVDs.

UFS file system support (read only) BSD y algunas versiones de
UNIX como SunOS, FreeBSD, NetBSD, OpenBSD y NeXTstep usan este tipo de
sistema de archivos, marquelo si desea compativilidad.

Network File Systems desde este submenú usted podra configurar sisetmas de archivos network.

Partition Types si deseas usar discos duros bajo linux, los
cuales estan particionados con otro sistema de archivos, mediante este
submenú puede configurarlo.

Native Language Support desde este submenu podrá configurar el
lenguaje de su equipo, en nuestro caso puede elegir entre NLS ISO
8859-1 (Latin 1; Western European Languages) y NLS ISO 8859-15 (Latin
9; Western European Languages with Euro).
* Para una información más detallada consulte el siguiente documento publicado por IBM http://www-106.ibm.com/developerworks/library/l-fs.html

Console drivers
VGA text console si marca esta opción podra usar Linux en modo
texto con el modo de VGA estandar. También puede ser utilizado por
tarjetas de video SVGA.

Video mode selection support esta opción da soporte para poder
cambiar la resolución de linux en modo texto, si da soporte a esto,
puede quitar la opción anterior.

MDA text console (dual-headed) esta opción le permite utilizar
dos monitores para un solo ordenador, si posee un adapador MDA antiguo
o un Hercules atuando como segunda tarjeta grafica.

Frame-buffer support en este submenú podrá dar soporte para
poder utilizar graficos en modo texto, podra entre otras cosas, ver
videos en modo texto. Para configurarlo correctamente, escoja la opción
Support for frame buffer devices, VESA VGA graphics console y escoja su
tarjeta gráfica, a menos de que, como en el caso de nvidia, disponga
del driver oficial. Para obtener mas información lease el documento:
Configurar una tarjeta nVIDIA.

Sound en este apartado podrá configurar su tarjeta de sonido.
Sound card support esto habilita el soporte para una tarjeta de sonido,
una vez escojida esta opción busque su modelo y marque la opción. Si es
posible lease la documentación del kernel sobre su tarjeta y compruebe
la documentación de su hardware. Puede hacer un lspci, comando que se
halla en el paquete pci-utils.

USB support en este menú puede dar soporte a dispositivos USB.
Support for USB una vez habilitado el soporte para USB, escoja el driver que necesite en este menú.

Bluetooth support en este menú se da soporte para redes
Bluetooth con tectonologia sin cable. Bluetooth puede operar en un area
personal de unos 10 metros, para más información visite http://www.bluetooth.com/.

Kernel hacking esta opción es generalmente
para desarrolladores de drivers o administradores que buscan problemas
en el Kernel, por tanto, esto se sale del motivo del documento y no lo
trataremos.


5.- Compilar la nueva configuración.

Una vez hecho esto (esperemos que correctamente) seleccionaremos en el
menú la opción Save Configuration tu Alternate File y guardamos la
configuración en un archivo cualquiera, cerciorese de que el nombre del
archivo sea claro y facil de recordar.
Ya guardada la configuración en un archivo, seleccionamos exit y guardamos la configuración (esta esta en .config).
Con esto volveremos a la consola, ahora en el directorio en el que nos encontramos escribimos.

# make dep

Con esto configuramos las dependencias del kernel.

# make clean

Para limpiar las "impurezas".

# make bzImage

Esto creará una imagen del kernel compilada y comprimida con bzip2, por
lo cual obviamente necesita tener instalado bzip2, en
/usr/src/linux/arch/i386/boot, en caso de nuestra arquitectura sea
80x86. En caso contrario en lugar de i386 estara en otro directorio
expecifico para la arquitectura.

# make modules

Con esto compilamos las opciones escojidas como modulos.

# make modules_install

Y finalmente con esto otro instalaremos los diversos modulos.

Si queremos podemos ponerlo todo en una sola linea como esta:

# make dep && make clean && make bzImage && make modules && make modules_install

Si quisieramos hacer una limpieza de nuestra configuración actual basta con usar mrproper:

# make mrproper

OJO: Ésto no sólo eliminará la configuración actual, sino
también todos los ficheros que se han generado en la compilación,
incluida la imagen. Sí quieres conservar la configuración asegúrate
antes de guardarla en un fichero distinto a ".config".

6.- Configurando LILO para cargar con la nueva imagen.

Nos falta el último paso de todos, pero no por ello el menos importante,
ya que en éste pondremos en uso la nueva imagen creada.
Para
ello moveremos la imagen creada al directorio /boot, esto no es
necesario pero es para tener un mayor orden. También deberiamos cambiar
de nombre a la nueva imagen y ponerle uno más orientativo, en nuestro
caso,
como estamos compilando el kernel 2.4.18, la llamaremos "linux-2.4.18"

# mv /usr/src/linux/arch/i386/boot/bzImage /boot/linux-2.4.18

También deberiamos mover System.map a /boot

# mv /usr/src/linux/System.map /boot

Ahora configuraremos el LILO (LInux LOader) para arrancar con la nueva imagen,
para ello modificaremos el archivo de configuración de LILO (/etc/lilo.conf),
si usais GRUB para arrancar, consultad el man de esta herramienta.

# joe /etc/lilo.conf

Y al final del archivo añadimos:

image = /boot/linux-2.4.18
label = Linux

Este es un ejemplo del archivo /etc/lilo.conf, fijese en las lineas 12 y
13.


/etc/lilo.conf

boot = /dev/hda
map = /boot/System.map
delay = 20
timeout = 50
prompt

    default = Linux
    vga = 791
    root = /dev/hda2
    read-only


lba32
install=/boot/boot.b
image = /boot/linux-2.4.18

    label = Linux


#En caso de tener otro sistema operativo, lo añadimos a continuación
other = /dev/hdb1

    label = otroOS




En caso de no ser la primera compilación del Kernel sería conveniente
crear una nueva entrada en el lilo, preservando la carga de la imagen
anterior. Por tanto deberíamos renombrar la anterior imagen del kernel.

# mv /boot/linux-x.y.z /boot/linux-x.y.z.OLD

Y dejar lilo.conf de la siguiente manera:

http://notinportland.com/images/ud8ogkog5cy9rse02y.jpeg



/etc/lilo.conf


boot = /dev/hda
map = /boot/System.map
delay = 20
timeout = 50
prompt


    default = Linux
    vga = 791
    root = /dev/hda2
    read-only

lba32
install=/boot/boot.b
image = /boot/linux-2.4.18 #Nueva imagen


    label = Linux

image = /boot/linux-2.4.17.OLD #Antigua Imagen (segura)

    label = Linux.SAFE

other = /dev/hdb1


    label = otroOS




Con esto nos cercioramos de que si por algún motivo cometieramos algún
error grabe en la configuración del nuevo Kernel por la cual no
pudieramos iniciar nuestro sistema, tendríamos la posibilidad de
hacerlo con la anterior sin necesidad de diskets ni CD's.
Hechas ya las modificaciones en dicho archivo, cargaremos la nueva configuración en el LILO, para ello escribimos.

# lilo -C /etc/lilo.conf

En nuestro caso el resultado sería:
Added Linux *
Ahora reiniciaremos nuestro sistema y escojeremos la etiqueta para cargar la nueva imagen del kernel.
Y esto es todo, ahora teneis un kernel hecho a vuestra medida y con el
cual conseguireis un mayor rendimiento de vuestro sistema Linux.


7.- Parchear el Kernel.

Una tarea que suele realizarse bastante amenudo es la de parchear el
Kernel, ya sea para aplicar un parche de seguridad o bien para
actualizarlo con una nueva corrección (por ejemplo, del 2.4.17 a
2.4.18), para ello una vez tengamos el parche correspondiente lo
movemos a /usr/src

# mv patch-x.y.z /usr/src

Lo descomprimimos

# bzip2 -d patch-x.y.z.tbz

Y finalmente aplicamos el parche

# patch -p0 <> err.z

Con esto aplicamos el parche y guardamos los posibles errores que pueda
ocasionar en el archivo err.z donde "z" es el nivel de corercción del
parche.
Para más información sobre el uso de patch

# man patch



By zayer (Federico Moro del Álamo).
Frikis.org
e-mail address: zayer@frikis.org.

http://www.frikis.org/staticpages/index.php?page=kernel

grupoed2k@localhost ~]#

Programación de scripts bajo shell de LINUX.

  • Que es un script?.
  • Centrándonos mas en los scripts para LINUX.
  • Con que crear un script?.
  • Como ejecutar un script?.
  • Que es el shell?.
  • Entrecomillados y caracteres especiales.
  • Utilización de parámetros.
  • Variables.
  • Manejo de expresiones.
  • Sentencia condicional if-else.
  • Sentencia CASE.
  • Instrucciones iterativas (looping).
  • Funciones.
  • Instrucciones varias.

Javier Fernández Rivera - www.aurea.es

Programación de scripts bajo shell de LINUX

¿Que es un script?

Es un tipo de "nueva" programación (interpretada) o estilo de lenguajes que se impone día a día en el mundo de la informática,
debido principalmente a su facilidad, funcionabilidad.

Generalmente los scripts son programados con lenguajes de relativa
facilidad pero no por ello son menos funcionales que cualquier otro programa realizado en un lenguaje de alto nivel (C, pascal,
delphi, Vbasic, etc).

Los scripts (guiones) son meros ficheros de texto ASCII que presentan una serie de ordenes y estructuras organizadas secuencialmente.

Así pues el script se ejecuta de forma lineal-secuencial orden tras orden.

Los lenguajes scripts son lenguajes "interpretados".
Lo que quiere decir que sus ordenes secuenciales son interpretadas por un sistema o programa padre.

Hoy en día es muy habitual haber oído hablar de este tipo de programación, dando lugar a una serie de lenguajes-scripts, cada uno con su propia sintaxis y ordenes especiales,
pero todos ellos presentan algo en común y es que no dejan de ser guiones.

Algunos lenguajes -scripts son:

Para el desarrollo de webs

Ø JavaScripT: Lenguaje-script que permite la creación de paginas webs dinámicas locales (en el propio navegador).

Ø PHP,ASP,etc...:Lenguajes-scripts que permiten la creación de paginas webs dinámicas en servidor.
Para los clientes de IRC:
Ø mIRC: Presenta su propio lenguaje script (revolucionario donde los halla).
Podemos aumentar con el, la potencia de nuestro mIRC, claro ejemplo de script sería el OrioN ScripT para mIRC
(www.ircorion.cjb.net).

Y un larga lista, que seguirá aumentando día a día.

Centrándonos mas en los scripts para LINUX

El sistema operativo LINUX esconde tras de si una larga lista de utilidades.

Tales utilidades se ejecutan a través de comandos bastante complicados,
y con muchos parámetros o argumentos.

Lo que hace un script es recoger todos esos comandos y presentarlos al usuario de una forma sencilla y de rápido acceso.

Básicamente los scripts son pequeñas y potentes aplicaciones creadas por el programador para facilitar la tarea al usuario.

Si alguno conoce el S.O. MSDOS sabra de la existencia de sus bien conocidos bats (ficheros de procesamiento por lotes),

bien pues los scripts en linux seria el homologo.
Aunque todo sea dicho, los scripts en linux presentan un mayor potencial
frente a los bats, como lenguaje de programación; usando estructuras condicionales, bucles iterativos típicos, recursividad,
mayor numero de palabras reservadas, etc.

Con que crear un script?

Al ser un lenguaje interpretado, no necesitamos compilar su código para poder ejecutarlo, con lo que solo necesitamos escribir ASCII en un fichero.
Para ello podemos usar cualquiera de nuestros editores preferidos.
En linux personalmente uso VI.
A la hora de guardar el fichero, bastaría con salir del editor pulsando ":wq" para salir y guardar cambios.

Abriendo un fichero con VI: vi miScript

Con este comando crearíamos y abriríamos un fichero con el nombre de miScript. (vease mas información sobre el editor VI
en tutorial “Comandos básicos Linux” by Quasi ayuda-internet.net).

Como ejecutar un script?

Bastaría con poner: sh namefile

sh: Era la orden encargada de ejecutar scritps.
A continuación el nombre del fichero que contiene el guión.

Que es el shell?

El shell es un programa-interface, que se provee como un elemento comunicacional entre el usuario y el S.O.

El shell presenta dos grandes funciones, que son:

Ø Servir de interprete de comandos:
Acepta los comandos escritos y se encarga de su ejecución.
A la hora deinterpretar comandos, puede pasar que se trate de comandos internos del propio SO de tal forma que el mismo (shell) se encarga de su propia ejecución, o que se trate de ordenes o comandos realizados por los usuarios (scripts, etc..) en tal caso da paso al KERNEL y es este quien ejecuta y procesa estas ordenes.

Ø Servir como interprete de programación:Presentando las mismas características de un lenguaje de programación interpretado de alto nivel. Como ya dije el equivalente a MSDOS.Pero muchos mas potente.

Una vez vista esta teoría vamos a pasar a explicar la sintaxis de este lenguaje.

Sintaxis del lenguaje-script de programación en shell LINUX

Entrecomillados y caracteres especiales

Existen 3 tipos de entrecomillados:

Ø Comillas simples: El contenido no es interpretado por el shell. Se suele usar para indicar caracteres literales.
Por ejemplo 'a' es tomada como un carácter literal no es procesada por el shell. Ø Comillas dobles: Agrupa una cadena de caracteres o string. Por ejemplo: "OrioN ScripT www.ircorion.cjb.net".
Se suelen usar para almacenar una string entera en una variable. Por ejemplo: VAR="hola soy Quasi",
aquí estaríamos almacenando en la variable VAR el texto hola soy quasi.
Para ver el resultado basta con hacer: echo $VAR.
Ø Comillas invertidas: Hacen que se evalue el contenido y que su resultado sea devuelto como el de una variable.

Por ejemplo. verfecha=`date`
Si ejecutamos esto, echo $verfecha, veríamos como el valor devuelto por el comando date es devuelto como una variable y almacenado en otra variable (verfecha).

Algunos caracteres especiales son:

Ø Separando comandos: Linux interpreta comandos de forma lineal-secuencial de ahí que si en en un script escribimos:
echo HOLA1
echo HOLA2
echo HOLA3
Se ejecutaría un comando tras otro, pero si pusiéramos:
echo HOLA1 echo HOLA2
Estaríamos cometiendo un fallo sintáctico y es que el interprete de linux esta preparado para ejecutar orden tras orden de forma lineal y secuencial y aquí se rompe esa secuencia. Si queremos hacer esto deberemos especificar
el fin de un comando para el comienzo de otro con el signo ";"
echo HOLA1; echo HOLA2; echo HOLA3
Esto si estaria bien expresado, para linux.

Ø Insertando comentarios: A la ahora de programar todo buen programador sabe de la importancia de incluir comentarios en su código,
esto facilitaría su trabajo de actualización, comprensión, rapidez, etc.

Además si el trabajo es en grupo el resto de programadores podrán saber la finalidad del código sin tener que descifrarlo.

UN BUEN PROGRAMADOR CREO QUE DEBE PROGRAMAR COMENTANDO SU CODIGO, a no ser excepciones especiales. ;)

Bien, en linux para insertar un comentario dentro del código del script se debe preceder de ese comentario el signo

"#".

Ejemplo:

#esta orden muestra la fecha
date
En este caso el comentario es totalmente inútil seria una risa
:P pero como ejemplo no esta mal.

El interprete al llegar a la primera línea de código y empezar por el principio detecta la almohadilla y pasa automáticamente a la
segunda línea de código (algo así aria internamente.)

Ø Comodines:
1) Signo "*": el asterisco es un comodín que funciona como sustitución de cadena de literales.
2) Signo ?: Sirve como comodín que sustituye un carácter. Si añadimos mas interrogantes sustituirá tantos caracteres como interrogantes haya.
3) Carácter (~) “alt+126”: Este carácter devuelve la ruta del home del usuario.

Utilización de parámetros : Esta es una utilidad muy preciada en la programación.Se trata de pasar uno o varios parámetros
al programa principal para luego operar con ellos.
Se denominan parámetros posesiónales.
Esto es porque preceden y son gestionados de forma posicional.

Mejor verlo con un ejemplo:

sh PasoParametros Quasi pukii MoAsT

Si ejecutamos esto, estaríamos diciendo que le pasamos al script con nombre

"PasoParametros" 2 parámetros que son: Quasi, pukii, y moast.

Dentro del script podríamos operar con estos parámetros,
puesto que tales son almacenados en variables del tipo: $n

Con lo que la variable $1 devolvería el primer parámetro dado al script (Quasi), $2 daria (pukii), y $3 (moast).

El script podria operar con esto, de esta forma (codigo):

echo "Parametro 1: $1"
echo "Parametro 2: $2"
echo "Parametro 3: $3"
echo "Todos los parámetros pasados son: $*"
echo "El numero de parámetros pasados es: $#"
echo "El nombre del script (parámetro 0) es: $0"

Variables -parámetros

$1-$9: Parametros posesiónales.
$*: Todos los parametros pasados.
$#: Numero total de parámetros pasados.
$0: Nombre del script.

Si se diera el caso que pasamos mas de 9 parámetros (no es usual XD), se debería de introducir la orden shift n.
Donde "n" seria un numero, esto provocaría un efecto de salto.
Con lo que el valor de $1 se perdería, el valor de $2 seria almacenado en
$1, el de $3 en $2 y así sucesivamente.Lo mejor para ver esto es probándolo.

Ejemplo:

echo "Parametro 1: $1"
shift 1
echo "Parámetro 2: $2"
echo "Parámetro 3: $3"
echo "Todos los parámetros pasados son: $*"
echo "El numero de parámetros pasados es: $#"
echo "El nombre del script (parámetro 0) es: $0"

Variables

Definición de variable: Las variables son como una fuente de almacenamiento en la que depositamos un determinado dato.
Además, sirven de enlace entre el usuario remoto y el programa, otra de sus utilidades es poder utilizarlas en distintas partes
de nuestro código-script. La semejanza que se suele dar a una variable en informática es la de un contenedor en el que almacénanos datos.
Existen dos tipos de variables en linux.
A nivel de creación.
Por un lado se encuentran las variables de sistema (son las que crea el sistema), y por otro lado están las variables de usuario (son las que creamos nosotros mismos).

Creación de variables: Para crear una variable se usa la sintaxis: namevar=valordatos
Donde namevar es el nombre (identificador) de la variable
y valordatos (contenido) es el valor o los datos que queremos almacenar.
Así pues la variable namevar devolvería unos valores o datos.

Ejemplo:

webOrioN="www.ircorion.cjb.net"

La variable se llama webOrioN y en ella se alberga una string o cadena de caracteres (debido al entre comillado doble).
Viendo el contenido de las variables:
Para ver lo que contiene una variable, se precede del nombre de la variable un signo "$".

Además necesitamos un comando que nos muestre texto por pantalla.
Con lo que podemos usar el comando echo.
Así pues con:
echo "Este es el contenido de la variable: $webOrioN"
Así veríamos el contenido.
Podemos también, hacer que el usuario sea quien almacene un dato en una variable.

Hasta ahora lo que vimos, fue como a nivel de código,
le debamos un dato a una variable.
Pero si lo que queremos es darle un dato que sea el que quiere el usuario,
¿como lo haríamos?,
en este caso no podemos predefinir la variable en el código a un
dato concreto,
puesto que puede ser esto o no el dato que quiera meter el usuario.

Para solucionar esto, esta la orden (read).

Ejemplo (código):

echo "Introduce un numero: " read numero echo "El numero introducido es: $numero"

En este código al usuario le saldría el mensaje (introduce un numero), automáticamente saltaría el interprete a la siguiente
línea, y el read provocaría una espera continuada, hasta que el usuario introduzca un dato por teclado una vez pulsado el intro,
el usuario vería el mensaje del ultimo echo con el numero que el introdujo, este se grabaría en la variable numero.

Algunas variables de entorno (creadas por el SO),
son: $HOME devuelve la ruta del directorio raíz del usuario,
$LOGNAME,
etc...

Los nombres de las variables se denominan identificadores, puesto que identifican a un elemento en este caso variable.
Como tales un identificador debe hacer referencia a un dato.
Por ello es buena costumbre a la hora de programar usar nombres de
variables acordes al valor o contenido que valla a devolver.

Si por ejemplo queremos crear una variable que almacene la fecha,
seria mejor llamarla: verfecha que kk.

Como "programador" que soy son pequeños consejillos, que os doy ;)

Manejo de expresiones
Existen dos tipos de expresiones: expresiones aritméticas y expresiones condicionales.

Expresiones aritméticas: Son evaluadas y por el shell con el comando expr. A la hora de programar un programa siempre se
precisan de comandos matemáticos que realicen una serie de operaciones, básicas o complejas. Este comando hace que el
shell evalue la expresión matemática y devuelva un resulta (como una variable).
Cada termino especificado en su sintaxis lleva un espacio.
Este comando solo acepta operaciones básicas y con números enteros.
Operadores disponibles:
Ejemplo
+: suma expr 2 + 2
-: resta expr 5 - 2
/: divide expr 7 / 3
\*: multiplica expr 4 \* 2
Metiendo en variable: result=`expr 2 + 1`

En el ultimo caso, el valor devuelto por la expresión es tomado como variable y metido dentro de la variable result.
En el caso del asterisco no se pone solo el *, porque vimos que este era un carácter interpretado por el shell, un comodín.

Expresiones condicionales: Son evaluadas por el shell. Pueden comparar: enteros, strings, así como también puede chequear
la existencia de ficheros y directorios, permisos de acceso a ellos, etc. Este tipo de instrucciones de control tienen la finalidad
de ramificar la ejecución de sentencias del script, en base a una variable u otro elemento en cualquier otro tipo de lenguaje.
Para evaluar una condición podremos usar:
a) test
b) [ expresión ]
Las dos formas de uso son validas y funcionan efectivamente. No olvidemos situar un espacio entre los corchetes y los
caracteres de la expresión en el caso de uso "b".
En caso de que la expresión sea cierta y se cumpla, esta devolverá un cero, en caso contrario devolverá cualquier otro valor
distinto de cero. Esto se ha hecho internamente así por convenio.



















Posibles expresiones para condicionales
Para ficheros:

-r Es Verdadero si el fichero existe y se puede leer
-w Es Verdadero si el fichero existe y se puede escribir en el
-x Es Verdadero si el fichero existe y es ejecutable
-f Es Verdadero si el fichero existe
-d Es Verdadero si es un directorio
-s Es Verdadero si el fichero existe y tiene un tamaño mayor que cero.
-b fichero - Verdadero si fichero existe y es un block especial.
-c fichero - Verdadero si fichero existe y es un character special.
-e fichero - Verdadero si fichero existe
-g fichero - Verdadero si fichero existe y es un set-group-id.
-k fichero - Verdadero si fichero tiene su ``sticky'' bit set.
-L fichero - Verdadero si fichero existe y es un symbolic link.
-p fichero - Verdadero si fichero existe y es un named pipe.
-S fichero - Verdadero si fichero existe y es un socket.
-t [fd] - Verdadero si fd está abierto en un terminal. Si fd es omitido, su defecto es 1 (standard output).
-u fichero - Verdadero si fichero existe y su set-user-id bit is set.
-O fichero - Verdadero si fichero existe y es un owned by the effective user id.
-G fichero - Verdadero si fichero existe y es un owned by the effective group id. fichero1 -nt fichero2 - Verdadero si fichero1 es
mas nuevo (according to modification date) que fichero2.
fichero1 -ot fichero2 - Verdadero si fichero1 is mas viejo que fichero2. fichero1
-ef fichero2 - Verdadero si fichero1 y fichero2 tienen el mismo numero de device and inode.
-z string - Verdadero si la longitud de string es 0.
-n string - Verdadero si la longitud de string no es 0.
string1 = string2 - Verdadero si los strings son iguales
string1 != string2 - Verdadero si los strings no son iguales.
! expr - Verdadero si expr es falso.
expr1 -a expr2 - Verdadero si expr1 y expr2 son verdaderos.
expr1 -o expr2 - Verdadero si expr1 o expr2 es verdadero.
arg1 OP arg2 - OP es uno de -eq, -ne, -lt, -le, -gt, or -ge.

-l string, evalúa la longitud de string.

Para cadenas:
-z cadena Es Verdadero si la longitud de la cadena es cero.
-n cadena Es Verdadero si la longitud de la cadena es distinta de cero.
cadena1 = cadena2 Verdadero si las dos cadenas son iguales (atención a los espacios en blanco).
cadena1 != cadena2 Verdadero si las cadenas son distintas (atención a los espacios en blanco).
cadena Verdadero si la cadena no es nula
Para operaciones aritméticas
-eq Igual. Viene de "equal".
-ne Distinto. Viene de "not equal".
-gt Mayor que. Viene de "bigger than".
-lt Menor que. Viene de "less than".
-ge Mayor o igual. Viene de "bigger equal".
-le Menor o igual . Viene de "less equal".

Operadores lógicos
AND: && ó -a Verdadero si ambas expresiones son ciertas
OR: || ó -o Verdadero si una de las expresiones es cierta.
NOT: !expresión Verdadero si la expresión no es cierta
La orden true devuelve un 0, se emplea en estructuras repetitivas.
La orden false devuelve un valor distinto de 0, igual que true se emplea en estructuras repetitivas.

Sentencia condicional if-else: La sintaxis que siguen este tipo de estructuras de control es:
if (condición)
hacer
instrucciones
else
instrucciones
fi
En español ;)

Si CondicionEsVerdadera
hacer
instruccion1
instruccion2
...
SiNO
instruccion1
instruccion2
...
fin


Si se cumple la condición de la primera línea. Ósea que sea cierta la condición, que se cumpla, entonces se ejecutarían las instrucciones que se dan a continuación del then.
Luego saldría al final de la estructura. Si por el contrario no se cumple, se
ejecutarían las instrucciones del bloque del else y saldría al final.

Ejemplos:
algoritmo1:
if test $num -eq 1
then
echo "La variable num contiene el valor 1"
else
echo "La variable num no es uno"
fi


algoritmo2:
if [ $num -eq 1 ]
then
echo "La variable num contiene el valor 1"
else
echo "La variable num no es uno"
fi

Es el mismo caso que el anterior pero sin test, al poner los corchetes obtenemos el mismo resultado.

Sentencia CASE: Este tipo de sentencia, seria al equivalente al swicht en lenguaje C. Como otro tipo de estructura seria el equivalente a una serie de if anidados, con estos podría obtener el mismo resultado, la diferencia es que usando la sentencia case, el algoritmo es mas ordenado y completo.
Su funcionamiento es: Toma un valor (en este caso numérico)
y lo alberga en la variable $num. Una vez que entre en el case,
procesara: Si la variable es el caso 1 (osea si la variable "num" contiene el valor "1" ) realizara las instrucciones de esa linea. Y así sucesivamente.
Si se da el caso que no existe ningún caso que sea igual al valor de la variable, entonces se ejecutaría el case "*" que es por defecto (no ha introducido una opción valida).
Podemos especificar dos patrones o mas en una sola línea, con el signo "|" (alt gr + 1).
case $num in
1) instruccion1;insruccion2; ...;;
2) instruccion1; ...;;
3) instruccion1; ...;;
*) echo "Opcion no valida";instruccion23;....;;
5)echo "Saliendo del CASE";exit;;
esac

Instrucciones iterativas (looping)
Bucles: Lleguemos ante los denominados bucles, (procesos de repetición iterativa).
Los bucles son un tipo de estructuras de programación (algoritmos) tremendamente útiles, que realizan una serie de
comportamientos repetitivos (iterativos) mientras o hasta que se cumpla la condición. Esto hace que ahorremos muchas
líneas de código, entre otras cosas: orden, estructuración, etc.
Esta técnica también es denominada rizo o looping. Su homologo en MSDOS seria el GOTO y sus etiquetas, que cumpliría la
misma función, con la única diferencia es que el GOTO por lo normal esta mal visto en la programación estructurada, debido
a que se "pierde" la estructuración secuencial del algoritmo del programa. En Linux contamos con verdaderas sentencias de
control para el uso de bucles , son las siguientes:

Sentencias while y until: En el caso del while. Las instrucciones se realizaran mientras (la condición se cumpla). Cuando se deje de cumplir, el bucle se saldrá y finalizaría.
Por contrario en el caso del until, las instrucciones s e ejecutan hasta (until) que la conducción se cumpla. Seria el bucle inverso al while.
Sintaxis:
while (condición)
do
instrucción1
instrucción2
.....
done

until (condición)
do
instrucción1
instrucción2
.....
done

Ejemplo:
opcion=0
while [ $opcion -ne 4 ] || [ $opcion -ne 0 ]
do
clear
echo "Menu (selecciona un editor)"
echo "1-vi"
echo "2-emacs"
echo "3-joe"
echo "4-Salir"
echo "Introduzca una opcion: "
case opcion in
1)echo "Ejecutando editor VI";Vi;;
2)echo "Ejecutando editor emacs";emacs;;
3)echo "Ejecutando editor joe";joe;;
4|0)echo "Fin de programa";exit;;
*)echo "Opcion no valida";read;;
esac
done

Aquí vemos de forma clara el funcionamiento de la sentencia while (bucle) y el case (ifs anidados).
Si no se comprende el algoritmo en su primer vistazo, seria bueno que lo probase en su ordenador y comprobar su funcionamiento.
Lo que hace este programilla, es preguntar por el editor que se desea usar en LINUX. Usted introduce un numero y este es almacenado en la variable "opción". Si introduce un 1, ejecuta el VI, si es un 2 será el emacs, y si es un 3 se tratara del joe. Si el usuario pulsa el 4 o el numero 0, automáticamente sale del case y llegara al done puesto que la condición no se cumplirá.

Sentencia for: Este es el ultimo tipo de bucle a ver. Este bucle se repite tantos elementos hay en la cadena de elementos
Sintaxis:
for variables in var1 var2 var3 var4 ....
do
instrucción1
instrucción2
......
done

Su traduccion seria:

(para)(elemento)(en)(cadenaElementos)
hacer
instrucciones
final

Ejemplos:
for num in `seq 1 10`
do
echo "Contador: $num"
done

En este ejemplo la variable num toma los valores del 1 al 10 cuando llega a este sale del bucle for. Hasta entonces se ejecuta el comando echo con el que visualizamos el valor de la variable "num".

Funciones
Las funciones son pequeños algoritmos o trozos de código que cumplen una determinada función. Son creados por nosotros mismos para su posterior utilización en distintas partes de nuestro script, mediante llamadas.
Y se sitúan en el propio script.
Las funciones son independientes, solo se ejecutaran si en el código principal se hace una llamada a ellas. Un buen programador debe cuidar que sus funciones realicen tareas bien determinadas, y que podamos usarlas con un margen de
actuación elevado, ósea hacer funciones lo mas genéricas posibles.
También es recomendable darles un nombre que identifique su función o lo que realizan.
A menudo los nuevos programadores suelen cometer el error (para mi), de no dar la suficiente importancia a las funciones y no realizarlas e incluirlas dentro del código del script.

Sintaxis:
function NombreFuncion (){
instrucciones
}

A las funciones se les pueden pasar parámetros de la misma forma que al programa principal, luego podríamos operar con ellos con las variables $1, $2, $3, etc.
Si deseamos forzar la salida en la función, nos bastara con poner la palabra "return". En las funciones se usa return en vez de exit tal y como se hace en el script principal.

Ejemplo:
#inicio del programa
function saludo () {
echo "HOLA MUNDO (la variable conter vale: $1)"
}
conter=1
while test $conter -le 10
do
saludo $conter
conter=`expr $conter + 1`
done
#fin del programa



créditos Aurea

descarga su Tutorial Completo aquí -> PDF

Entradas más recientes Entradas antiguas Página principal