How To: Manual Network Configuration without the need for Network Manager

In setting up their wireless connection for the first time, Im discovering many individuals having problems connecting through Network Manager or other GUI wireless connection tools. In fact my Network Manager is intermittently buggy, connecting sometimes and not others. This guide benefits all users in case the GUI tools are not working, and is useful for testing a wireless connection during initial installation of wireless drivers since it provides for good debugging output.

Clarification to those about to read this Guide
1. This method provides the most low level method to establish your network connection. It is the least common denominator. It does not use any reference to the /etc/network/interfaces file, as this file requires a method that is more high level.
2. If you are interested in making modifications to your /etc/network/interfaces guide to establish your connection, possibly Weiman01's guide covering this topic would be more applicable to your situation: http://ubuntuforums.org/showthread.php?t=318539. This method however uses processes that are more high level. If editing or use of the /etc/network/interfaces file fails, I would recommend reading the guide provided below, as it is "lower level".

Unencrypted/ WEP / WPA (PSK and EAP-TLS) connections will be covered in this guide.
This guide is for anyone attempting to establish a network connection manually at the command line.

Pre-requisites
1. Properly installed network driver -- This guide can be used to troubleshoot driver installation to see if it is properly functioning
2. The ESSID of your router must be broadcasted and not hidden
3. Knowlege of your wireless cards driver (please see Prerequisite #4 to determine driver). Those using the r8187/r818x driver please see the end of the guide
4. Knowledge of your wireless card's Interface Name - The user must know the proper interface of the wireless connection (wlan0, eth1, rausb1, etc). To discover this information, at command line type:

Code:
lshw -C network
There may be multiple interfaces listed, however look under the section appropriate to your wireless device for the line labeled logical name. Here is an example:

Code:
  *-network             
description: Wireless interface
product: BCM4306 802.11b/g Wireless LAN Controller
vendor: Broadcom Corporation
physical id: 0
bus info: pci@06:00.0
logical name: wlan0
version: 03
serial: 00:12:17:35:17:10
width: 32 bits
clock: 33MHz
capabilities: bus_master cap_list ethernet physical wireless
configuration: broadcast=yes driver=ndiswrapper+lsbcmnds driverversion=1.48rc1+Cisco-Linksys ,LLC.,02/1 ip=192.168.1.101 latency=64 multicast=yes wireless=IEEE 802.11g
resources: iomemory:3c000000-3c001fff irq:11
In the example above the interface name is wlan0. I will refer to the interface name throughout the rest of this guide as .

Attention All Users: Please Read
****All users of Atheros or Intel Chipsets (ipw****) -- Although lshw may list your interface as wmaster0 or wifi0 -- PLEASE NOTE this refers to the actual assigned interface name to the device, HOWEVER you interact through an assigned VIRTUAL INTERFACE!!!. Your will NEVER USE wmaster0 or wifi0 as the device name. If you type iwconfig, this may give you information on the assigned virtual interface used to access the physical device. -- BOTTOM LINE -- You will never use wmaster0 or wifi0 as the interface name, rather some other interface such as wlan0 of eth1. Please check ifconfig or iwconfig for cross referencing!!


***Please note -- as there exist exceptions to every rule, an exception applies to Atheros chipset employing the madwifi kernel module. Atheros cards are typically identified as wifi0. This is the physical logical name of the device. When working with madwif modules however, one or more virtual interfaces are made for every actual device. All configurations must be completed using the virutal interface device rather than the actual interface to the device. In most cases, Atheros chipsets will need to use the ath0 interface rather than the wifi0 interface.

For people first setting up their connection, please note that the above also lists the driver used for the network card. In the example above, the driver used is ndiswrapper. If your network device comes back UNCLAIMED or there is no driver listed, then you have not correctly installed the driver for your device. You must review the procedures for installation of your wireless driver.

For those wanting to use static IP addresses, please see section at bottom of guide regarding configuration for static IP addresses

__________________________________________________ __________________________
Unencrypted Connection

All commands typed at the command line:
Code:
sudo ifconfig  down
sudo dhclient -r
sudo ifconfig up
sudo iwconfig essid "ESSID_IN_QUOTES"
sudo iwconfig mode Managed
sudo dhclient
__________________________________________________ __________________________
WEP Connection

You must have either your 64bit or 128 bit HEX Key or the ASCII Equivalent of your HEX Key.

Code:
sudo ifconfig  down
sudo dhclient -r
sudo ifconfig up
sudo iwconfig essid "ESSID_IN_QUOTES"
sudo iwconfig key HEX_KEY <<<-------- If using ASCII Equivalent, this is s:ASCII_KEY (please make note of the prefix s:) ****Additional Comand that may be needed -- sudo iwconfig key open <<<----See note below sudo iwconfig mode Managed
sudo dhclient
***The security mode may be open or restricted, and its meaning depends on the card used. With most cards, in open mode no authentication is used and the card may also accept non-encrypted sessions, whereas in restricted mode only encrypted sessions are accepted and the card will use authentication if available.
__________________________________________________ __________________________
WPA Connection - WPA-PSK or WPA2-PSK (PSK=Pre-Shared Key) or WPA-EAP-TLS

For uses of Ra-based chipsets: rt61, rt73, rt2500 please skip directly to the WPA Section entitled WPA with Ra based chipsets

Requirements: In most cases the wpa_supplicant package is required in order to connect via WPA. If you have a working ethernet or unencrypted/WEP wireless connection, this package may be installed via:
Code:
sudo aptitude install wpasupplicant
If only wireless is available, I would recommend that an unencrypted connection first by established and tested first before directly proceeding to make a WPA connection. WPA adds another layer of complexity.

WPA-PSK - Covers WPA(1) and WPA(2)

1. Creation of /etc/wpa_supplicant.conf file

At command line:
Code:
gksu gedit /etc/wpa_supplicant.conf
Inside the file add the following for WPA(1):

Code:
ap_scan=1
ctrl_interface=/var/run/wpa_supplicant

network={
ssid="ESSID_IN_QUOTES"
scan_ssid=0
proto=WPA
key_mgmt=WPA-PSK
psk="ASCII PSK Password in Quotes"
pairwise=TKIP
group=TKIP
}
For WPA(2) (see this thread: http://ubuntuforums.org/showthread.php?t=607410):
Code:
ctrl_interface=/var/run/wpa_supplicant

network={
ssid="ESSID_IN_QUOTES"
psk="ASCII PSK Password in Quotes"
key_mgmt=WPA-PSK
proto=RSN WPA
pairwise=CCMP TKIP
group=CCMP TKIP
}
***Word of caution -- In some cases I have found WPA(2) to have different settings than the above. Some Broadcom cards use the pairwise/group TKIP cipher for WPA2 rather than CCMP. I would suggest all initially use WPA(1) and then later convert to WPA2 since some variations to the above may be needed

**WPA2 capabilities must also be built-into the driver set used with your hardware. If using ndiswrapper with an old windows driver, the driver may not contain code for wpa2.

2. Connect via command line
Code:
sudo ifconfig  down
sudo dhclient -r
sudo wpa_supplicant -D<****see footer below***> -i -c/etc/wpa_supplicant.conf -dd

***Note that starting with the -dd flag will create a lot of debuggin output.
If you choose to use the -dd flag to troubleshoot your connection, you must
open up a separate terminal and type the rest of the commands listed below in a
separate terminal window. You can also replace the -dd flag with the -B flag to
send the process to the background, avoiding the need to open up a separate
terminal window (however no debugging output will be generated)

sudo dhclient
***footer
The value listed here is dependent on the driver you have installed. Typing man wpa_supplicant at command line will give you the full gamut of choices however most recent versions of wpa_supplicant only recognize wext as the appropriate value (Despite all the information on the internet). If you would like to verify what drivers besides wext your installed version of wpa_supplicant recognizes, type at the command line:
wpa_supplicant -l
And look specifically at the section called drivers:

Here is what my stock wpa_supplicant lists for its drivers:

drivers:
wext = Linux wireless extensions (generic)
atmel = ATMEL AT76C5XXx (USB, PCMCIA)
wired = wpa_supplicant wired Ethernet driver

Other drivers can be compiled into wpa_supplicant if you compile wpa_supplicant, however please not that in recent kernel versions this is unnecessary. wext will work for ndiswrapper, madwifi, intel, etc.

WPA-PSK with Ra Based Chipsets

Ra cards do not require the wpa_supplicant package to use WPA. Here is how to connect from the command line with these cards:
References: http://ubuntuforums.org/showthread.p...=serial+monkey, http://rt2x00.serialmonkey.com/wiki/...owto#Using_WPA

WPA-PSK(1)
Code:
sudo ifconfig  down
sudo dhclient -r
sudo ifconfig up
sudo iwconfig essid "ESSID_IN_QUOTES"
sudo iwpriv set AuthMode=WPAPSK
sudo iwpriv set EncrypType=TKIP
sudo iwpriv set WPAPSK="YOUR_WPA_PSK_KEY"
sudo dhclient
For WPA-PSK(2), I have no working configuration yet. If someone would like to help me refine these instructions for WPA2 with Ra-based chipsets, I would appreciate your help!

WPA EAP-TLS
Information Provided Referenced from http://www.codealias.info/technotes/...x_client_setup
Thanks to CodeAlias for Providing Information

1. Prepare TLS Certificates

EAP-TLS requires client TLS certificates to be installed in the system. You need to ask the administrators in your institution to provide you your own TLS certificate.

In the most common cases, your admin will issue you a .p12 file and a password.

We need to create three files from this .p12 certificate

These files are cacert.pem, cert.pem and key.pem (The names may vary). Assuming that your certificate file name is example.p12, run the following :
Code:
 openssl pkcs12  -in example.p12  -out cacert.pem -cacerts -nokeys
openssl pkcs12 -in example.p12 -out cert.pem -clcerts -nokeys
openssl pkcs12 -in example.p12 -out key.pem -nocerts
Put the three generated files somewhere in the file system of your wireless device (e.g /etc/certs)

2. Configuration of the wpa_supplicant.conf file

Edit the wpa_supplicant configuration file (e.g. /etc/wpa_supplicant.conf), ant put the following:

Code:
  network={
ssid="ESSID_IN_QUOTES"
scan_ssid=1
key_mgmt=WPA-EAP
pairwise=CCMP TKIP
group=CCMP TKIP
eap=TLS
identity="XXXXX@yourdomain.com"
ca_cert="/etc/certs/cacert.pem"
client_cert="/etc/certs/cert.pem"
private_key="/etc/certs/key.pem"
private_key_passwd="YOUR-PASSWORD"
}
---“YOUR-PASSWORD” is the password provided by your administrator when your received your .p12 certificate

3. Connect via the command line
Code:
sudo ifconfig  down
sudo dhclient -r
sudo wpa_supplicant -D<****see footer below***> -i -c/etc/wpa_supplicant.conf -dd

***Note that starting with the -dd flag will create a lot of debuggin output.
If you choose to use the -dd flag to troubleshoot your connection, you must
open up a separate terminal and type the rest of the commands listed below in a
separate terminal window. You can also replace the -dd flag with the -B flag to
send the process to the background, avoiding the need to open up a separate
terminal window (however no debugging output will be generated)

sudo dhclient
***footer
The value listed here is dependent on the driver you have installed. Typing man wpa_supplicant at command line will give you the full gamut of choices however most recent versions of wpa_supplicant only recognize wext as the appropriate value (Despite all the information on the internet). If you would like to verify what drivers besides wext your installed version of wpa_supplicant recognizes, type at the command line:
wpa_supplicant -l
And look specifically at the section called drivers:

Here is what my stock wpa_supplicant lists for its drivers:

drivers:
wext = Linux wireless extensions (generic)
atmel = ATMEL AT76C5XXx (USB, PCMCIA)
wired = wpa_supplicant wired Ethernet driver

Other drivers can be compiled into wpa_supplicant if you compile wpa_supplicant, however please not that in recent kernel versions this is unnecessary. wext will work for ndiswrapper, madwifi, intel, etc.
__________________________________________________ __________________________
A successful connection in all cases will similarly result in: (Example Provided Below):
Code:
user@computer:~$ sudo dhclient wlan0
There is already a pid file /var/run/dhclient.pid with pid 134993416
Internet Systems Consortium DHCP Client V3.0.4
Copyright 2004-2006 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/

Listening on LPF/wlan0/00:12:17:35:17:10
Sending on LPF/wlan0/00:12:17:35:17:10
Sending on Socket/fallback
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 4
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7
DHCPOFFER from 192.168.1.1
DHCPREQUEST on wlan0 to 255.255.255.255 port 67
DHCPACK from 192.168.1.1
bound to 192.168.1.101 -- renewal in 299133 seconds.
The computer in this example has received an IP address of 192.168.1.101

__________________________________________________ __________________________
Users of RTL 8180, RTL8185, RTL 8187 using the built in native r8187 / r818x drivers

By default the r8187 and r818x drivers are blacklisted due to a know bug. These drivers are usuable however with a twist to the above methods

If you want to try using these drivers, please load the kernel modules:
Code:
sudo modprobe r818x
sudo modprobe r8187
These drivers require a bogus or extra letter be suffixed to the essid name in order for these drivers to work
For example if your are trying to connect to a router with essid=Router, at he command line you would type essid=Routerx. Notice the extra x or bogus character. I have provided an example using the unencrypted connection procedure below, however this extra character needs to be used if attempting to connect to all network types (unencrypted/ WEP / WPA)

Code:
sudo ifconfig  down
sudo dhclient -r
sudo ifconfig up
sudo iwconfig essid "Routerx"
sudo iwconfig mode Managed
sudo dhclient
If these drivers work for you, and you would like these drivers to load automatically at startup for you, avoiding to have to type sudo modprobe everytime, please edit your blacklist file:

Code:
gksu gedit /etc/modprobe.d/blacklist
And comment out (or prefix the following lines with a # sign). You want the following lines to appear as below:
Code:
#blacklist r8187
#blacklist r818x

__________________________________________________ __________________________
Static IP Addresses

Im going to give an example of how to configure your interface using a static IP address using an unencrypted wireless connection. The two lines highlighted below however can be used with WEP and WPA connections. Values in italics must be customized to meet your particular situation

Code:
sudo ifconfig  down
sudo dhclient -r
sudo ifconfig 192.168.1.100 netmask 255.255.255.0 up
sudo route add default gw 192.168.1.1

sudo iwconfig essid "ESSID_IN_QUOTES"
sudo iwconfig mode Managed
If when using static IP addresses you are getting a problem with name resolution, you will have to specifiy specific dns (domain name servers) in order to translate URLs to IP addresses. Unfortunately there is not an easy way to configure this from the command line. This requires that you edit the /etc/resolv.conf file and manually enter the domain name server(s) you want to use. In many cases users can specifiy their router, their internet service providers dns servers, or use opendns (or use all three). Up to three nameservers can be specified.

Code:
sudo gedit /etc/resolv.conf
and add the nameservers you want to use, one to a line, in the following format.
Code:
nameserver 
***Spaceboy909 has also reported that when using this technique with static IP addresses, network manager has to be uninstalled because it keeps trying to reset the connection. In order to uninstall networkmanager:

In Ubuntu:
Code:
sudo aptitude uninstall network-manager-gnome
In Kbuntu:
Code:
sudo aptitude uninstall knetworkmanager
__________________________________________________ _________________________
Setting the Wireless Interface to Connect at Boot ***Courtesy of Maricaibo

If you are successful in bringing up the Interface Manually, the commands may be placed inside the /etc/rc.local file to run the commands at boot, and establish a wireless connection. There is no GUI to give visual confirmation of the connection. The user should type ifconfig at the command line to verify an IP address has indeed been granted by the router.

The process of adding the commands to the /etc/rc.local file is documented below (this connects to an unencrypted network -- to connect to a WEP or WPA encrypted network, some modifications as used above will need to be added):

Code:
gksu gedit /etc/rc.local
This opens up the file in the gedit utility and allows you to make changes and save the file

Code:
ifconfig <wired network connection interface> down
ifconfig <wireless network connection interface> down
dhclient -r
iwconfig essid
iwconfig mode Managed
ifconfig up
dhclient
Be sure this text goes into the /etc/rc.local file BEFORE the line reading "exit 0".

Save and close the /etc/rc.local file.

Open up a Terminal window (the shell) and type in:

Code:
sudo chmod +x /etc/rc.local
This command turns the rc.local file into an executable that will run at startup. Here's an example of what the /etc/rc.local file should contain. Your device names may be different:

Code:
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

ifconfig eth0 down
ifconfig wlan0 down
dhclient -r wlan0
iwconfig wlan0 essid "ESSID_IN_QUOTES"
iwconfig wlan0 mode Managed
ifconfig wlan0 up
dhclient wlan0

exit 0
NOTE: The first line in the rc.local file downs your wired connection, so if for some reason you need the wired connection back just open up a Terminal window (shell) and type:

sudo up
sudo dhclient
__________________________________________________ __________________________
Useful Commands

ifconfig - lists IP address (similar to ipconfig in Windows)
iwlist scan - shows wireless networks that are available in the area along with basic encryption information
lshw -C network - Shows interface and driver associated with each networking device
lspci -nn - Shows hardware connected to the pci bus
lsusb - Shows USB connected hardware
lshw -C usb - Additional info on USB related hardware (good for USB dongles)
cat /etc/modprobe.d/blacklist - List modules that will not be loaded by the Operating System at boot time
lsmod - lists currently loaded kernel modules. (Example usage - lsmod | grep ndiswrapper)
route -n - Lists kernel IP routing table -- Good for troubleshooting problems with the gateway (netstat -rn = equivalent command)
sudo route add default gw 192.168.1.1 - Example of how to set the default gateway to 192.168.1.1
sudo route del default gw 192.168.1.1 - Example of how to delete the default gateway setting
sudo modprobe ***** - Loads the kernel module **** . (Example usage - sudo modprobe ndiswrapper, sudo modprobe r818x, sudo modprobe ath_pci)
sudo modprobe -r **** - Unloades the kernel module ****. (Example usage - sudo modprobe -r ndiswrapper)
sudo ifup/ifdown - Brings up/down the interface and clears the routing table for the specified interface
sudo ifconfig up/down - Brings up/down the interface for the specified interface
sudo dhclient - Request IP address from DNS server for specified interface
sudo dhclient -r - Release IP address associated with specified interface
sudo iptables -L - Lists firewall rules
dmesg | more - Lists boot log -- good for troubleshooting problems with modules/drivers not being loaded
uname -r - Displays kernel version
/etc/iftab (Feisty and pre-releases (Edgy, etc)) - /etc/udev/rules.d/70-persistent-net.rules (Gutsy) - File which assigns logical names (eth0, wlan0, etc) to MAC addresses
cat /etc/resolv.conf - Lists DNS servers associated with network connections (Network Manager)
/etc/dhcp3/dhclient.conf - File which sets or modifies dns (domain name servers) settings

__________________________________________________ __________________________
WPA_SUPPLICANT.CONF - Good Description and Explanations of All Available Options that can be Placed with the wpa_supplicant.conf file
http://hostap.epitest.fi/cgi-bin/vie...?revision=HEAD

__________________________________________________ __________________________
References for Specific Wireless Chipsets - Please see Link if Your Specific Chipset is Not Working with Above Tutorial's Instructions

Official Broadcom site for bcm43xx firmware - http://linuxwireless.org/en/users/Drivers/b43
Broadcom 64bit Drivers for Use with Ndiswrapper - http://www.linuxant.com/driverloader/drivers.php
Broadcom Guid for Ubuntu Hardy/Intrepid and Ibex -- A very informative sight! - http://linuxfans.betaserver.org/inde...ides&Itemid=61 - Author Ayuthia

Ra chipsets - Serial Monkey Drivers - rt2500, rt73, rt61, rt2570 drivers - http://ubuntuforums.org/showthread.p...=serial+monkey - Author diepruis
rt2500 chipsets with the Serial Monkey rt2500 CVS driver - http://ubuntuforums.org/showthread.p...ghlight=rt2500 - Author zoiks
Ralink RT2860 (m)PCI(e) (RT2760/RT2790/RT2860/RT2890) - http://ubuntuforums.org/showthread.php?t=1045703 - Author Fass
Rutilt - A Network Manager Like GUI for Ra Chipsets - http://ubuntuforums.org/showthread.p...ghlight=rutilt - Author sulilogs
Ndiswrapper Official Compatibility Reference - http://linuxfans.betaserver.org/ndis_drivers/toc.html - Author Ayuthia (Borrowed from the Ex-Official Ndiswrapper Site)
Ndiswrapper installation for Broadcom chipsets - http://ubuntuforums.org/showthread.php?t=475963 - Author Jamie Jackson
Ndiswrapper General Installation Guide - SVN, Troubleshooting Tips (My Personal Guide) - http://ubuntuforums.org/showthread.php?t=574501 - Author KevDog
Madwifi website for certain Atheros Chipsets - http://madwifi.org/ -- If your Atheros chipset is listed on this website - it should work out of the box with installation of the linux restricted drivers package for your kernel version
Atheros 5006eg Chipset work-around - Card apparently listed as 5007eg - http://ubuntuforums.org/showpost.php...5&postcount=14 - Author ugm6hr
Does your madwifi connection keep dropping??? Possible solution -- http://ubuntuforums.org/showthread.php?t=540101 = Author robnz/tranalbert
Realtek win98 driver - http://www.majorgeeks.com/Realtek_RT...0XP_d5165.html - For use with ndiswrapper if native r818x, r8187 driver is buggy
Realtek win98 driver installation - http://ubuntuforums.org/showthread.p...highlight=8187 - Author Panurge
Realtek - Installation with Native Driver - http://ubuntuforums.org/showthread.php?t=567505
Realtek 8187B Native Patch for Realtek 818x USB Devices -- Relevant only to rtl8187B USB wireless devices - Toshiba Laptops - http://www.datanorth.net/~cuervo/rtl8187b/ - Author Cuervo

__________________________________________________ __________________________
Wireless Security
WPA with EAP-TLS - http://www.codealias.info/technotes/...x_client_setup

__________________________________________________ __________________________
Other Interesting Sites

Control Programs Kept in Swap vs Memory - http://ubuntuforums.org/showpost.php...&postcount=150
If your Wireless Freezes after Suspend/Resume - Check here - http://ubuntuforums.org/showpost.php...7&postcount=12 - Author Harty83
DNS related problems?? - Configuration for OpenDNS servers - http://ubuntuforums.org/showthread.php?t=543659 - Author noob12
Turn off/Disable IPv6 - http://ubuntuforums.org/showthread.php?t=282034 - Author handy
General Linux Page Discussing Network Setups - Default Gateways - http://linux-ip.net/html/basic-changing.html
Log Files -- Your Friend to Debug almost anything on your System - https://help.ubuntu.com/community/Li...f98267e009db55
Using OpenVPN to bridge networks - http://ubuntuforums.org/showthread.php?t=752127 - Author SpaceTeddy

Source: http://ubuntuforums.org/showthread.php?t=571188

More responses, troubleshooting, and ideas, go to the original source and continue the post.

El sistema X-Window

Orígenes de X


Vamos a dar un concepto sencillo de X Window y luego lo ampliaremos. El sistema X Window es un método grafico y distribuido para trabajar. Y ahora veremos por que. El X Window System es prácticamente el estándar de los entornos gráficos para usuarios de Unix, pero no es solo eso, es un completo sistema para redes que permite ejecutar aplicaciones X desde una computadora en la otra parte del globo de donde se encuentra el servidor, a través de Internet.

Primero lo primero. El consorcio de tecnología X requiere que se usen los siguientes nombres cuando se refiere al sistema X Window

* X
* X Window System
* X Version 11
* X Window System, Version 11
* X11

Por lo tanto cualquiera de estos nombres es sinónimo del mismo software. X Window SystemTM es una marca registrada de X Consortium, Inc.

El X11 se desarrolló gracias a la cooperación entre DEC (Digital Equipment Corporation, luego adquirida por Compaq) y el proyecto Athena del MIT (Massachussets Institute Of Technology). La primera versión, la X11R1, salió en septiembre de 1987. Desde la versión 6 (X11R6) la X Consortium Inc y desde 1996 The Open Group continuaron con el desarrollo del X Window System.

Existe una implementación libre del sistema X para sistemas Unix y se denomina XFree86. Este se sigue desarrollando por programadores en todo el mundo, que se unieron en 1992, formando el Xfree86-Team. De esta unión surgió en 1994 la empresa The XFree86 Proyect Inc cuyo objetivo es poner Xfree86 a la disposición de un amplio público y contribuir con el desarrollo e investigaciones del sistema X Window. Es de esta manera que el sistema operativo GNU/Linux adopta esta distribución libre del sistema X para brindar un entorno gráfico mas amigable.


Puntos básicos:

  • Curso de Introducción a GNU/Linux
  • El sistema X-Window
  • Requisitos de Hardware
  • X - Puntos básicos

Una sesión de X esta compuesta por lo general de varias ventanas donde cada una de ellas ejecutan un programa aislado. Al igual que los programas en cualquier otro sistema, los programas que se ejecutan en X varían en cuanto a su funcionalidad.

Algunos necesitan de la interacción con el usuario y otros solo despliegan datos en la pantalla. A la ventana de fondo se la conoce como ventana raíz (root window). Las ventanas de aplicación se despliegan encima de la ventana raíz. Al igual que los procesos en Un*x estas ventanas están agrupadas o relacionadas de acuerdo a una jerarquía. Así es que la ventana raíz es el padre de todas las demás ventanas. Ahora, para entender un poco mas este tipo de funcionamiento pasaremos a explicar en que consiste.

X esta formado de dos partes: un lado servidor y un lado cliente. La funcionalidad básica es familiar a la forma en que trabajan todos los modelos cliente-servidor, en el sentido de que el servidor X tiene determinados recursos que proporciona al cliente. Debido a que el servidor X esta integrado a las pilas TCP/IP las peticiones pueden venir de cualquier cliente y pueden ser solicitadas a cualquier servidor. Además, debido a que X, además de ser un programa específico, define además un protocolo, los clientes pueden comunicarse con servidores X en otro tipo de plataforma. El servidor actúa como una interfaz entre los programas clientes y el hardware físico.

Cuando se proporcionan datos, ya sea por medio del teclado o el mouse, el servidor acepta la entrada y es responsable de pasarla al cliente. Esta información se pasa al cliente como un evento. Una tecla apretada o el movimiento del mouse generan un evento ante el cual reaccionará el cliente.

Este evento genera una reacción en el cliente para que presente un cambio en la pantalla como podría ser el desplegado de un menú. Estos se realizan de la siguiente manera: El usuario realiza un clic de mouse en el cliente. Este solicita al servidor que muestre un menú desplegable. El servidor pasa la información al hardware, que muestra el menú desplegable en la pantalla. Como resultado de esta separación de funcionalidades, un cliente puede desplegar información en más de un servidor. Para iniciar cualquier cliente se deberá haber iniciado el servidor X en algún lugar de la red o, como es común, en la misma máquina que se están ejecutando los clientes.

Al contrario de lo que podría suponerse, ni el servidor ni los clientes son responsables de la apariencia de las ventanas en la pantalla tal como lo entendemos. Ester trabajo le corresponde a un "administrador de ventanas" (WM por window manager). La mayoría de las distribuciones actuales trae los varios WM diferentes, proporcionando interfaces que difieren entre sí y pueden configurarse y adaptarse a los gustos de los usuarios. También vienen los entornos de escritorio KDE o Gnome como estándar, los que proporcionan mayor grado de integración entre aplicaciones y trabajan de formas diferentes. El WM también es el encargado de controlar los íconos en la pantalla. A continuación se muestra el aspecto de algunos administradores de ventanas. Si se quiere una descripción más detallada acerca de los WM disponibles consultar http://xwinman.org (en inglés)


El modelo de cliente-servidor X y la transparencia de su red.


X se basa en un modelo de cliente-servidor. Un programa servidor X se ejecuta en un ordenador con una interfase gráfica y se comunica con varios programas clientes. El servidor acepta pedidos para salidas gráficas (ventanas o "windows") y envía señales de entrada del usuario (teclado, ratón).

En X Window, el servidor se ejecuta en el ordenador del usuario, mientras que los clientes pueden ejecutarse en ordenadores distintos. Esto es exactamente al revés que la configuración usual de los sistemas cliente-servidor, donde el cliente se ejecuta en el ordenador del usuario y el server se ejecuta en un ordenador remoto. Ésta inversión a menudo resulta confusa para nuevos usuarios de X. La terminología de X Window toma el punto de vista del programa, en lugar del punto de vista del usuario o el hardware: los programas remotos se conectan a la interfase gráfica del servidor X que se ejecuta en el ordenador local, y por lo tanto actúan como clientes; la interfase gráfica X local acepta el tráfico de ingreso, y por lo tanto trabaja como un servidor.

El protocolo de comunicación entre el server y el cliente se ejecuta en forma transparente con respecto a la red: el cliente y el server pueden ejecutarse en el mismo ordenador o en ordenadores diferentes, y hasta con distintas arquitecturas y sistemas operativos. Un cliente o un servidor se pueden comunicar en forma segura a través de Internet, utilizando tunneling la conexión se realiza en forma cifrada.


http://upload.wikimedia.org/wikipedia/commons/9/9e/X_client_server_example.png

Arquitectura Cliente / Servidor

En linux el proceso gráfico no es más que otro proceso que ejecuta el sistema operativo. Esto evita muchos problemas de estabilidad al kernel. Otra ventaja que tiene es la absoluta independencia del sistema operativo y el entorno gráfico. En contrapartida a todas estas ventajas, existe el inconveniente que el entorno gráfico reduce su velocidad en comparación a otros sistemas gráficos. Estos últimos incluyen los procesos referentes al subapartado gráfico en el propio núcleo. Aunque esta práctica tiene la ventaja de que el sistema gráfico es más veloz. Se hace un gasto innecesario de recursos, aun sin usar ninguna aplicación, y estar más propensos a fallos del sistema debidos a errores en el apartado gráfico.

Toda la filosofía de X Window se basa en la arquitectura cliente/servidor. Esta arquitectura es el modelo de sistema X mediante la cual los clientes, programas de aplicaciones, se comunican con los servidores que controlan parte del hardware.

El programa que habilita un entorno gráfico X-window en un ordenador es el servidor X (X server). Se le llama servidor ya que este programa sólo se dedica a escribir en pantalla lineas, cuadros y funciones gráficas básica. El servidor X ofrece funciones gráficas primarias a las aplicaciones (clientes) que las soliciten y este las muestra en pantalla. El servidor es el programa encargado de gestionar un display. Un display se debe entender como la unidad formada por la o las pantallas y por los dispositivos de entrada, bien sea un ratón, un teclado, un trackball etc. todo este conjunto es un display. Un servidor puede servir a varios clientes a la vez. La otra parte de la arquitectura cliente / servidor es el cliente, básicamente es una aplicación que se esta ejecutando en modo gráfico. El servidor es la unidad de visualización, que puede a su vez estar formada por varios monitores o pantallas físicas.

El servidor se encarga de captar las entradas del usuario y se las pasa a las aplicaciones o clientes X, dicha información proviene de los dispositivos de entrada del display, para que los clientes actúen en consecuencia. Los clientes tienen que captar esta información y operar. La respuesta del cliente es mandada al servidor ordenándole que dibuje dicha respuesta en la pantalla o las pantallas del display. Descodifican los mensajes de los clientes, como las peticiones de información o el movimiento de una ventana. Toda la comunicación entre el cliente y el servidor se realiza en lenguaje formal X window.

Figura 1 : Procesos gráficos en linux y arquitectura cliente sevidor en una máquina.

Todo esta arquitectura se debe a que el sistema X windows tiene una gran flexibilidad de uso en redes. La conexión del Servidor X a los clientes no esta limitada a la misma máquina. Sino que cualquier aplicación o cliente que se este ejecutando en una red se puede conectar a cualquier servidor.Ver figura 2 Cuando decimos conectarse se quiere decir que se puede visualizar en el ordenador que ejecuta un servidor X. Una forma de aprovechar esta flexibilidad es utilizar desde casa un ordenador personal conectado a una gran computadora para aprovechar la potencia de esa computadora desde casa. Esta práctica de compartir aplicaciones esta muy extendida, de hecho existen un tipo de ordenadores cuya única función es ejecutar un servidor X, se denominan "terminales X". Estos ordenadores en ocasiones no disponen de dispositivos de almacenamiento y no son muy potentes con lo que se consigue muchos puestos de trabajo a un precio muy reducido. Otro punto importante es que no existe ninguna razón por la que el sistema X window este restringido al sistema operativo Unix o Linux. De hecho existen servidores X para DOS, Windows Macintosh u OS/2..


Figura 2 : Procesos gráficos y arquitectura cliente / servidor en una red.

Hay que señalar que la filosofía del sistema X-Window puede parecer engañosa ya que invierte la posición tradicional del cliente y el servidor. Tradicionalmente un servidor ha sido por ejemplo: la gran computadora que tenía los archivos que eran servidos a los clientes, o un servidor de conexión a internet a los que se conecta el usuario. En estos casos el servidor es una computadora remota, con grandes capacidades de procesamiento y almacenamiento que tenía muchas tareas cargadas, y los clientes son los usuarios. El sistema X-Window funciona al revés. El servidor es el usuario con su terminal X y el cliente esta corriendo en una computadora remota, o no, que suele tener grandes capacidades de calculo y almacenamiento y que suele estar cargada de clientes.

Una de las partes más importantes de la arquitectura cliente servidor es la conexión física entre el cliente y el servidor. De ello dependerá en gran medida el rendimiento del sistema. Una conexion de red rápida entre cliente y servidor o que el servidor este en la misma computadora que el cliente hará que el entorno funcione de una manera rápida.

La comunicación entre el cliente y el servidor sistema X-Window se realizan mediante el denominado protocolo X (X protocol). Este protocolo X permite definir el número exacto de bytes necesarios para definir una ventana. El problema es que la programación con este lenguaje es extremadamente complicada y laboriosa.

Se puede comparar el protocolo X al lenguaje máquina. De la misma manera que el ensamblador proporciona potencia a la programación en lenguaje máquina, las funciones Xlib proporcionan la potencia del protocolo X con un coste menor.

Xlib es un biblioteca de unas 300 funciones escritas en C que generan protocolo X, que facilitan la programación básica, las funciones Xlib son el punto de partida para aprender a manejar X Window y aunque sea imprescindible dominarlas. Para programar a más alto nivel nos harán falta otras herramientas.

Existen también las llamadas X Toolkit Intrinsics más comúnmente conocido como Xt intrinsics, son herramientas de más alto nivel ya que nos ayudaran a crear bloques de pantalla llamados widgets, como por ejemplo menús, barras de desplazamiento ,botones etc. La ventaja de esta herramienta es que da a la aplicación una apariencia estándar fácil de ver y de entender, con lo que se gana en facilidad de uso que es lo que se pretende desde el principio al usar el sistema X window.

Arranque del sistema X-Window


El inicio del sistema X window, implica que se ha de cargar tanto el servidor X como algunos clientes para poder empezar a utilizar el entorno gráfico. Hay un par de maneras principalmente de iniciar el X-window. Quizá la más usada sea mediante el guión de inicio llamado starx .Que se ejecuta en cualquiera de las consolas en modo texto. Este programa no es más que un guión de comandos que ejecuta el Servidor X, inicializa algunos recursos para que serán utilizados por los clientes y también conecta al servidor algún cliente.

Otra manera de iniciar el servidor X es mediante el programa xdm ,o programa gestor de pantallas. Se trata de un programa muy potente que no sólo permite controlar la sesión X en el ordenador local, sino también en los terminales X y todos aquellos ordenadores que se conecten a través de la red. Esto ayuda a tener mayor seguridad en el acceso a la red. El servidor X tiene que interactuar con el hardware del sistema, con lo que tiene que tener privilegios de superusuario para poder funcionar. Esto es lo que ocurre al usar startx a causa de que por defecto se le otorgan unos permisos especiales. De este modo cualquiera puede ejecutar un servidor X, y como el servidor X puede tener bugs (errores), con los que un usuario con suficientes conocimientos podría "engañarle" para ejecutar programas con privilegios de root(administrador del sistema o superusuario).. Lo que hace el xdm concretamente es arrancar el servidor X y un rectángulo en el cual el usuario se ha de identificar ante la máquina y una vez el usuario se identifica mediante su nombre y contraseña se ejecutan los clientes que tenga personalizados el usuario en cuestión.

5.6 Gestores de ventanas.

El gestor de ventanas es uno de las aplicaciones X más importantes, ya que se trata del programa que da el aspecto a todo el entorno gráfico y que controla todas las operaciones relativas al dibujo de ventanas. En linux un gestor de ventanas es un cliente más que está conectado al servidor X. Esto implica que el sistema en si, no esta ligado a ningún gestor de ventanas en particular. Con lo que se consigue una gran personalización del entorno gráfico. Esto tiene el inconveniente de que cambia totalmente la manera de de interpretar las pulsaciones del ratón o del teclado.

5.6.1 Fvwm y sus derivados

Fvwm es una de las familias de gestores de ventanas más usadas dentro de entornos Linux. Fvwm(Fine Virtual Window Manager) y todos sus derivados. son a su vez derivados del twm(tab window manager), que es el gestor que se distribuye con las versiones oficiales de X-window y por tanto con XFree86.

Una de las cualidades de twm es que tiene grandes posibilidad de personalizarse al gusto del usuario. Todo esto unido al hecho de que es un programa de libre distribución ha hecho de twm el ancestro de toda la familia de gestores fvwm

Fvwm fue desarrollado en un principio con la finalidad de reducir el uso de memoria que necesitaba el twm aunque fuese a costa de reducir su capacidad de personalización, darle un aspecto tridimensional y principalmente los escritorios virtuales. Los escritorios virtuales permiten simular un escritorio más grande de lo que cabe en la pantalla con lo que podemos tener ventanas en otros escritorios fuera de la pantalla e intercambiar ventanas entre ellos.


5.6.2 Otros gestores de ventanas

Existen también derivados de fvwm como son el fvwm95, fvwm2, afterstep etc. El más usado entre la comunidad linux es el afterStep. En un principio estaba ideado para emular el sistema operativo NEXTSTEP aunque debido a su atractivo diseño y sus posibilidades se ha ganado gran parte de los usuarios de Linux.

Existe una gran oferta de gestores de ventanas para linux, desde más derivados del twm como son ctwm o vtwm hasta otros que se han diseñado desde cero. También existen gestores de ventanas muy espectaculares que convierten el ordenador en un espectáculo multimedia. El principal gestor de ventanas es el enlightenment que llena la pantalla de atractivos colores y formas.

5.7 Gestores de escritorio

Un gran inconveniente de los gestores de ventanas es que las aplicaciones no tienen forma de comunicarse entre ellas ni de controlar el comportamiento del gestor de ventanas. Esto se subsana al pasar del gestor de ventanas al gestor de escritorio (Desktop manager). Este ultimo tiene las siguientes ventajas con respecto al gestor de ventanas:

* Provee de un aspecto uniforme a todas las aplicaciones gráficas, dotándolas de un interfaz de uso común.
* Podemos marcar un objeto con el ratón y arrastrarlo hasta cualquier aplicación y ver su contenido allí.
* Permite el acceso transparente a cualquier recurso, ya este en el disco o en otro lugar de la red.
* Distingue entre aplicaciones abiertas y enlaces a recursos.
* Ofrece un interfaz gráfico para configurar y personalizar todos los aspectos del entorno gráfico.

Aunque estas características son muy deseables por la mayoría de usuarios en Linux aún falta camino por recorrer, hasta poseer un entorno con todas estas características. Afortunadamente hay mucha gente trabajando en ello, y ya nos estamos acercando a sistema mejor. Se trata de KDE (K Desktop Environment). KDE provee de un entorno completo, panel de menús, un gestor de tareas, un escritorio orientado a objetos(iconos), un gestor de escritorio que permite ver archivos locales y en unidades de red y un gran sistema de ayuda.Para más información podemos visitar su web en http://www.kde.org

Otro poyecto similar que se esta desarrollando más recientemente es el GNOME. Tiene una gran similitud con el KDE. Debido al apoyo de RedHat y otras compañías este gestor de escritorio hace que tenga un futuro prometedor. De hecho ya es el principal rival del KDE.Para más informacion podemos visitar la página de GNOME en http://www.gnome.org. Hay más gestores de escritorio como el CDE (common desktop envirenment) que debido a su condición de programas comerciales no tienen el apoyo de la mayoría de usuarios.


XFree86 es una implementación del sistema X Window System. Fue escrita originalmente para sistemas operativos UNIX funcionando en ordenadores compatibles IBM PC. En la actualidad está disponible para muchos otros sistemas y plataformas.

XFree86 es open source y software libre, publicado bajo la licencia XFree86 1.1.

El proyecto XFree86 es desarrollado por el XFree86 Project, Inc.; siendo su desarrollador líder David Dawes. La versión actual es la 4.7.0.

XFree86 provee una interfaz gráfica cliente/servidor entre el hardware (sistemas gráficos y dispositivos de entrada, como el mouse o el teclado) y un entorno de escritorio que provee un sistema de ventanas así como una interfaz estandarizada de aplicación (API por sus siglas en inglés).

XFree86 es independiente de la plataforma, extensible y puede utilizarse en red.

XFree86 funciona actualmente en una gran variedad de sistemas UNIX como BSD (FreeBSD, NetBSD, OpenBSD, Mac OS X (vía Darwin), etc), Solaris, SGI IRIX, y derivados, GNU/Linux (cualquier distribución), así como en OS/2 y Cygwin (para Windows).

Un cambio de licencia producido en Febrero de 2004 a partir de la versión 4.4.0 (anteriormente se distribuía bajo la licencia MIT) provocó la creación de la bifurcación X.Org Server, apoyada por empresas y desarrolladores descontentos con presuntas incompatibilidades con la popular licencia GPL. Esto ha provocado una caída en la popularidad de XFree86, siendo reemplazado por X.Org en prácticamente todas las distribuciones de GNU/Linux y en algunos sistemas BSD.

Aún así, XFree86 es utilizado y distribuido en muchos otros sistemas operativos, como por ejemplo NetBSD, Mac OS X (como entorno alternativo) y FreeBSD (como alternativa a X.Org).

Archivos de configuración del servidor X

El servidor X es un binario ejecutable (/usr/X11R6/bin/Xorg) que carga dinámicamente cualquier módulo de servidor X necesario en el momento de ejecución desde el directorio /usr/X11R6/lib/modules/. Algunos de estos módulos son cargados automáticamente por el servidor, mientras que otros son opcionales y deben ser especificados en el archivo de configuración del servidor X.

El servidor X y los archivos de configuración asociados son almacenados en el directorio /etc/X11/. El archivo de configuración para el servidor X es /etc/X11/xorg.conf. Cuando se instala Red Hat Enterprise Linux, los archivos de configuración para X son creados usando la información reunida sobre el hardware del sistema durante el proceso de instalación.

7.3.1. xorg.conf

Mientras que casi nunca se necesita editar manualmente el /etc/X11/xorg.conf, es muy útil conocer sobre las diferentes secciones y los parámetros opcionales disponibles, especialmente cuando se estén solucionando problemas.

7.3.1.1. La estructura de XFree86

El archivo /etc/X11/xorg.conf está formado de muchas secciones diferentes las cuales hacen referencia a aspectos específicos del hardware del sistema.

Cada sección comienza con una línea Section "" (donde es el título para la sección) y termina con una línea EndSection. Dentro de cada sección, hay líneas conteniendo nombres de opciones y al menos un valor de opción, ocasionalmente entre comillas (").

Las líneas que comienzan con un símbolo de almohadilla (#) no son leídas por el servidor X y son usadas como comentarios legibles.

Algunas opciones dentro del archivo /etc/X11/xorg.conf aceptan un interruptor boleano el cual activa o desactiva la característica. Los valores boleanos aceptados son:

* 1, on, true, o yes — Activa la opción.
* 0, off, false, o no — Desactiva la opción.

Lo siguiente son algunas de las secciones más importantes ordenadas como aparecen en un archivo /etc/X11/xorg.conf típico. Se puede encontrar más información detallada sobre el archivo de configuración del servidor X en la página man de xorg.conf.


7.3.1.2. ServerFlags

La sección opcional ServerFlags contiene varios parámetros globales del servidor X. Cualquier parámetro en esta sección puede ser sobreescrito por las opciones colocadas en la sección ServerLayout (refiérase a Sección 7.3.1.3 para más detalles).

Cada entrada dentro de la sección ServerFlags están en sus propias líneas y comienzan con el término Option seguido por una opción encerrada en dobles comillas ["].

A continuación un ejemplo de la sección ServerFlags:


Section "ServerFlags"
Option "DontZap" "true"
EndSection

La siguiente es una lista de las opciones más útiles:

* "DontZap" "" — Cuando el valor de está configurado a verdadero, esta configuración previene el uso de la combinación de teclas [Ctrl]-[Alt]-[Retroceso] para terminar inmediatamente el servidor X.

* "DontZoom" "" — Cuando el valor de está colocado a verdadero, esta configuración previene moverse a lo largo de las resoluciones de vídeo configuradas usando las combinaciones de teclas [Ctrl]-[Alt]-[Keypad-Plus] y [Ctrl]-[Alt]-[Keypad-Minus].

7.3.1.3. ServerLayout

La sección ServerLayout vincula los dispositivos de entrada y salida controlados por el servidor X. Como mínimo, esta sección debe especificar un dispositivo de salida y al menos dos dispositivos de entrada (un teclado y un ratón).

El ejemplo siguiente ilustra una sección ServerLayout típica:


Section  "ServerLayout"
Identifier "Default Layout"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection

Las entradas siguientes son usadas a menudo en la sección ServerLayout:

  • Identifier — Especifica un nombre único para esta sección ServerLayout.

  • Screen — Especifica el nombre de la sección Screen a ser usado con el servidor X. Pueden estar presentes más de una opción Screen.

    Lo siguiente es un ejemplo de una entrada Screen típica:

    Screen      0  "Screen0" 0 0

    El primer número en esta entrada de ejemplo Screen (0) indica que el primer conector del monitor o head en la tarjeta de vídeo usa la configuración especificada en la sección Screen con el identificador "Screen0".

    Si la tarjeta de vídeo tiene más de una cabeza, será necesaria otra entrada Screen con un número diferente y un identificador de sección Screen.

    Los números a la derecha de "Screen0" proporcionan las coordenadas absolutas X y Y para la esquina superior izquierda de la pantalla (0 0 por defecto).

  • InputDevice — Especifica el nombre de una sección InputDevice a ser usada con el servidor X.

    Al menos deben haber dos entradas InputDevice: una para el ratón por defecto y una para el teclado por defecto. Las opciones CorePointer y CoreKeyboard indican que estos son el ratón y el teclado principales.

  • Option "" — Una entrada opcional que especifica parámetros extra para esta sección. Cualquier sección listada aquí sobreescriben aquellas listadas en la sección ServerFlags.

    Reemplace con una opción válida listada para esta sección en la página man de xorg.conf.

Es posible crear más de una sección ServerLayout. Sin embargo, el servidor sólo leerá la primera sección que aparezca a menos que se especifique una sección ServerLayout alterna como un argumento de línea de comando.

7.3.1.4. Files

La sección Files configura las rutas para servicios vitales al servidor X, tal como la ruta de las fuentes tipográficas.

El siguiente ejemplo ilustra una sección Files:

Section "Files"
RgbPath "/usr/X11R6/lib/X11/rgb"
FontPath "unix/:7100"
EndSection

Las siguientes entradas son usadas comúnmente en la sección Files:

  • RgbPath — Especifica la ubicación de la base de datos de colores RGB. Esta base de datos define todos los esquemas de color en X y los junta para valores RGB especificos.

  • FontPath — Especifica dónde el servidor X debe ser conectado para obtener las fuentes tipográficas desde el servidor de fuentes xfs.

    Por defecto, la FontPath es unix/:7100. Esto le dice al servidor X que obtenga información de fuentes usando sockets de dominio UNIX para la comunicación entre procesos (IPC) en el puerto 7100.

    Vea la Sección 7.4 para más información sobre X y fuentes tipográficas.

  • ModulePath — Un parámetro opcional el cual especifica directorios alternativos que almacenan módulos de servidor X.

7.3.1.5. Module

La sección Module especifica cuales módulos del directorio /usr/X11R6/lib/modules/ cargará el servidor X. Los módulos añaden funcionalidad adicional al servidor X.

El ejemplo siguiente ilustra una sección Module típica:

Section "Module"
Load "dbe"
Load "extmod"
Load "fbdevhw"
Load "glx"
Load "record"
Load "freetype"
Load "type1"
Load "dri"
EndSection

7.3.1.6. InputDevice

Cada sección InputDevice configura un dispositivo de entrada para el servidor X. Los sistemas típicamente tienen al menos dos secciones InputDevice, un teclado y un ratón.

El ejemplo siguiente ilustra una sección InputDevice típica para un ratón:

Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "IMPS/2"
Option "Device" "/dev/input/mice"
Option "Emulate3Buttons" "no"
EndSection

Las entradas siguientes son comúnmente usadas en la sección InputDevice:

  • Identifier — Especifica un nombre único para esta sección InputDevice. Esto es una entrada requerida.

  • Driver — Especifica el nombre del controlador del dispositivo que X debe cargar para el dispositivo.

  • Option — Especifica las opciones necesarias pertinentes al dispositivo.

    Para un ratón, estas opciones incluyen:

    • Protocol — Indica el protocolo usado por el ratón, tal como IMPS/2.

    • Device — Indica la ubicación del dispositivo físico.

    • Emulate3Buttons — Especifica si se va a permitir a un ratón de dos botones a que se comporte como uno de tres cuando se presionen ambos botones simultáneamente.

    Consulte la página man de xorg.conf para una lista de las opciones válidas para esta sección.

Por defecto, la sección InputDevice tiene comentarios para permitir a los usuarios configurar opciones adicionales.

7.3.1.7. Monitor

Cada sección Monitor configura un tipo de monitor usado por el sistema. Mientras una sección Monitor es lo mínimo, pueden ocurrir varias instancias para cada tipo de monitor en uso con la máquina.

La mejor forma de configurar un monitor es configurando X durante la instalación o usando la Herramienta de configuración de X. Para más información sobre el uso de la Herramienta de configuración de X refiérase al capítulo llamado Configuración del Sistema X Window en el Manual de administración del sistema de Red Hat Enterprise Linux.

Este ejemplo muestra una sección de Monitor típica:


Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "DDC Probed Monitor - ViewSonic G773-2"
DisplaySize 320 240
HorizSync 30.0 - 70.0
VertRefresh 50.0 - 180.0
EndSection
Aviso Aviso

Tenga cuidado si está modificando manualmente los valores en la sección Monitor de /etc/X11/xorg.conf. Valores inapropiados pueden dañar o destruir su monitor. Consulte la documentación de su monitor para un listado de parámetros seguros.

A continuación se muestran entradas comunes usadas en la sección Monitor:

  • Identifier — Proporciona un nombre único para esta sección Monitor. Esta es una entrada requerida.

  • VendorName — Parámetro opcional que muestra el nombre del fabricante del monitor.

  • ModelName — Parámetro opcional que muestra el nombre del modelo del monitor.

  • DisplaySize — Un parámetro opcional que especifica, en milímetros, el tamaño físico del área de dibujo del monitor.

  • HorizSync — Especifica el rango de la frecuencia de sincronización horizontal compatible con el monitor, en kHz. Estos valores ayudan al servidor X a determinar la validez de las entradas Modeline especificadas o incorporadas para el monitor.

  • VertRefresh — Especifica los rangos de frecuencias de actualización verticales soportados por el monitor, en Hz. Estos valores ayudan a que el servidor X determine la validez de las entradas incorporadas o especificadas en Modeline para este monitor.

  • Modeline — Un parámetro opcional el cual especifica los modos de vídeo adicionales para el monitor en resoluciones particulares, con ciertas resoluciones de refrescamiento vertical y sincronización horizontal. Vea la página man de xorg.conf para una explicación más detallada de las entradas Modeline.

  • Option "" — Una entrada opcional que especifica parámetros extra para la sección. Reemplace con una opción válida listada para esta sección en la página man de xorg.conf.

7.3.1.8. Device

Cada sección Device configura una tarjeta de vídeo en el sistema. Aunque una sección Device es lo mínimo, también se pueden tener instancias adicionales para cada tarjeta de vídeo instalada en la máquina.

La mejor forma de configurar una tarjeta de vídeo es configurando X durante el proceso de instalación o usando la Herramienta de configuración de X. Para más detalles sobre el uso de la Herramienta de configuración de X consulte el capítulo llamado Configuración del Sistema X Window en el Manual de administración del sistema de Red Hat Enterprise Linux.

El siguiente ejemplo ilustra una sección Device típica para una tarjeta de vídeo:

Section "Device"
Identifier "Videocard0"
Driver "mga"
VendorName "Videocard vendor"
BoardName "Matrox Millennium G200"
VideoRam 8192
Option "dpms"
EndSection

Las siguientes entradas son usadas comúnmente en la sección Device:

  • Identifier — Especifica un nombre único para esta sección Device. Esta es una entrada requerida.

  • Driver — Especifica cuál controlador debe cargar el servidor X para poder utilizar la tarjeta de vídeo. Se puede encontrar una lista de los controladores en /usr/X11R6/lib/X11/Cards, el cual es instalado con el paquete hwdata.

  • VendorName — Un parámetro opcional el cual especifica el fabricante de la tarjeta de vídeo.

  • BoardName — Un parámetro opcional el cual especifica el nombre de la tarjeta de vídeo.

  • VideoRam — Un parámetro opcional el cual especifica la cantidad de RAM disponible en la tarjeta de vídeo en kilobytes. Este valor sólo es necesario para tarjetas de vídeo que el servidor X no puede probar para detectar la cantidad de RAM.

  • BusID — Una entrada opcional la cual especifica la ubicación del bus de la tarjeta de vídeo. Esta opción es necesaria solamente para sistemas con múltiples tarjetas.

  • Screen — Una entrada opcional la cual especifica que conector de monitor o cabezal en la tarjeta de vídeo configura la sección Device. Esta opción es útil solamente para tarjetas de vídeo con múltiples cabezales.

    Si múltiples monitores son conectados a diferentes cabezales en la misma tarjeta de vídeo, deben existir secciones Device separadas y cada una de estas secciones debe tener un valor Screen diferente.

    Los valores para la entrada Screen deben ser enteros. El primer cabezal en la tarjeta de vídeo tiene un valor de 0. El valor para cada cabezal adicional incrementa este valor en uno.

  • Option "" — Una entrada opcional que especifica parámetros extra para la sección. Reemplace con una opción válida listada para esta sección en la página man de xorg.conf.

    Una de las opciones más comunes es "dpms", la cual activa la configuración de conformidad de energía Service Star para el monitor.

7.3.1.9. Screen


Cada sección Screen vincula una tarjeta de vídeo (o cabezal) a un monitor referenciando la sección Device y la sección Monitor para cada uno. Mientras que una sección Screen es lo mínimo, pueden ocurrir instancias adicionales para cada combinación de tarjeta de vídeo y monitor presente en la máquina.

El ejemplo siguiente ilustra una sección Screen típica:

Section "Screen"
Identifier "Screen0"
Device "Videocard0"
Monitor "Monitor0"
DefaultDepth 16
SubSection "Display"
Depth 24
Modes "1280x1024" "1280x960" "1152x864" "1024x768"
"800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 16
Modes "1152x864" "1024x768" "800x600" "640x480"
EndSubSection
EndSection

Las siguientes entradas son usadas a menudo en la sección Screen:

  • Identifier — Especifica un nombre único para esta sección Screen. Esta es una entrada requerida.

  • Device — Especifica el nombre único de una sección Device. Esta es una entrada requerida.

  • Monitor — Especifica el nombre único de una sección Monitor. Esta es una entrada requerida.

  • DefaultDepth — Especifica la profundidad del color por defecto en bits. En el ejemplo anterior, el valor por defecto es 16, lo que proporciona miles de colores. Múltiples entradas de DefaultDepth son permitidas, pero al menos una debe estar presente.

  • SubSection "Display" — Especifica los modos de la pantalla disponibles en una profundidad de color particular. Una sección Screen puede tener múltiples subsecciones Display, pero debe haber al menos una para la profundidad de color especificada en la entrada DefaultDepth.

  • Option "" — Una entrada opcional que especifica parámetros extra para la sección. Reemplace con una opción válida listada para esta sección en la página man de xorg.conf.


7.3.1.10. DRI

La sección opcional DRI especifica parámetros para Direct Rendering Infrastructure (DRI). DRI es una interfaz que permite a las aplicaciones de software 3D sacar provecho de las capacidades de aceleración de hardware 3D incorporadas en la mayoría del hardware moderno de vídeo. Además, DRI puede mejorar el rendimiento de 2D a través de la aceleración de hardware, si es soportado por el controlador de la tarjeta.

Esta sección es ignorada a menos que DRI esté activada en la sección Module.

El ejemplo siguiente muestra una sección DRI típica:

Section "DRI"
Group 0
Mode 0666
EndSection

Puesto que tarjetas de vídeo diferentes utilizan DRI de formas diferentes, no modifique estos valores para esta sección sin primero referirse al http://dri.sourceforge.net/.


Configuración de las Xfree86 (1): xf86config

Primero hay que ejecutar el programa xf86config como root (Ojo: minúsculas)

En todo momento, si nos equivocamos en algo, pulsamos y volvemos a empezar.

Saldrá el siguiente mensaje, que puede variar dependiendo de la versión que tengamos:

Configuración de las Xfree86 y xf86config

Pulsamos , y si no es la primera vez que configuramos las ventanas sale el mensaje:

Configuración de las Xfree86 y xf86config

Pulsamos y empezamos la configuración:

Configuración de las Xfree86 y xf86config

Este diálogo nos pide el ratón que tenemos. Si es PS/2 ponemos “4”. En caso contrario, el 90% de las veces habrá que poner un “1”.

A continuación nos hace tres preguntas:

Configuración de las Xfree86 y xf86config

Contestamos “n”, “n” y “/dev/mouse”. La primera es para configurar el tercer botón, la segunda para emularlo y la tercera el puerto donde está conectado.

Las siguientes preguntas son para configurar el teclado, idioma, etc.

Configuración de las Xfree86 y xf86config

Pulsar para continuar.

Configuración de las Xfree86 y xf86config

Contestamos “y”. Aparece una lista:

Configuración de las Xfree86 y xf86config

Seleccionamos “10” y aparece otra lista.

Configuración de las Xfree86 y xf86config

En la que seleccionamos “1”.

Ahora nos pide el idioma:

Configuración de las Xfree86 y xf86config

Seleccionamos el “14”, y seguimos.

El diálogo que aparece ahora:

Configuración de las Xfree86 y xf86config

Es para seleccionar el tipo de monitor que tenemos. Lo mejor es seleccionar el “5” ó el “1” y seleccionar el monitor correctamente más adelante.

Ahora nos pide el refresco vertical del monitor. El refresco del monitor es el número de veces que se “dibuja” la pantalla por segundo. Si nuestro monitor soporta hasta 90 Hz, seleccionamos “2”. Si dudáis, seleccionar “1”, y a dormir bién esta noche.

Configuración de las Xfree86 y xf86config

Ahora nos pide la marca, modelo, etc del monitor. Estos campos no configuran nada, si se dejan en blanco no hay problema.

Configuración de las Xfree86 y xf86config

Ahora aparece:

Configuración de las Xfree86 y xf86config

Respondemos “y” para ver la lista de tarjetas gráficas soportadas. Están ordenadas alfabéticamente. Pulsar para pasar de página, y cuando encontremos la nuestra pulsamos su número y . Si no aparece ó tenemos dudas, seleccionar la “Unsupported VGA compatible”, Número 575:

Configuración de las Xfree86 y xf86config

La lista empieza como sigue:

Configuración de las Xfree86 y xf86config

Al introducirla nos aparecerá la configuración escogida:

Configuración de las Xfree86 y xf86config

El chipset se puede ver en el manual de la tarjeta gráfica, y el Server es el controlador que se utilizará. Si hemos seleccionado “Unsupported VGA”, será el XF86_VGA16, que no es más que el controlador de VGA genérico a 16 colores.

A continuación nos pide el servidor específico. Poner “5”, que es el seleccionado anteriormente. En este caso, el XF86_SVGA.

Configuración de las Xfree86 y xf86config

Ahora nos pregunta si queremos crear un acceso directo al controlador. Por supuesto, “y” a las dos preguntas. El mensaje anterior a las preguntas sólo saldrá si hay otra configuración anterior.

Configuración de las Xfree86 y xf86config

Ahora nos pide la cantidad de memoria que tiene la tarjeta gráfica. Si tenéis dudas mirad en el arranque, antes de cargarse la BIOS.

Configuración de las Xfree86 y xf86config

Ahora nos pide la marca, etc…Como con el monitor, lo dejamos en blanco si queremos.

Configuración de las Xfree86 y xf86config

Ahora nos pide las características del Clockchip de la tarjeta. Si no sabemos cuales son, que es más que probable, pulsar para configuración automática.

Configuración de las Xfree86 y xf86config

Ahora nos pregunta si queremos probar la configuración introducida. Respondemos “y”, y después .

Configuración de las Xfree86 y xf86config

Ahora hay que configurar los tamaños de escritorio para las diferentes configuraciones de color(8, 16, 24 y 32 bits por pixel.)

Configuración de las Xfree86 y xf86config

La configuración mostrada suele servir para la mayoría de los equipos. Si se quiere cambiar algo, se introduce el número de opción, y luego los números de cada resolución seguidos; Es decir, si se quiere configurar el escritorio de 256 colores (8bpp) a “640x480”, “800x600” y “1024x768” ponemos “1”, y luego los modos de pantalla seguidos: “234”. A las demás preguntas contestaremos “n”. Con esto se evita que el escritorio sea más grande que la pantalla y tengamos que movernos por él a base de scroll con el ratón. Cuando acabemos, pulsamos “5”.

Por fin nos pregunta si queremos grabar la configuración introducida. Si todo ha ido bién, respondemos “y”.

Ahora habrá que hacer la configuración avanzada con el XF86Setup, ya desde modo gráfico.



Fuentes:

http://www.ant.org.ar/cursos/curso_intro/c3185.html
http://www.netpecos.org/docs/linux/xwindow.html
http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/es/ref-guide/s1-x-server-configuration.html
http://html.rincondelvago.com/configuracion-de-las-xfree86-y-xf86config.html

Resetear contraseña de root con GRUB

Suele ocurrir. Ahorita me preparaba para hacer unas prácticas en una máquina virtual con Debian e intentar explotar unas vulnerabilidades en la versión del kernel instalada. Inicié VirtualBox, cargó todo corréctamente y tenía en frente mío el prompt de login, intenté loguearme como root pero me decía que los datos eran inválidos… no recordaba la contraseña. Me dispuse a resetearla.

La información que expongo a continuación no es el método de explotación de ninguna vulnerabilidad, ni tampoco ninguna técnica de hacking. Simplemente es la demostración de como haciendo uso de un parametro de GRUB podremos conseguir acceso como root a un determinado sistema para realizar las tareas que necesitemos (en este caso, resetear la contraseña del usuario root).

Después de intentarme loguear con 10mil contraseñas diferentes posibles y no tener éxito reinicié la máquina virtual, quedando frente a GRUB:

debian1r Resetear contraseña de root con GRUB

Si leemos todo, vemos que en la parte de abajo nos dice que para editar los comandos antes de bootear alguna entrada simplemente presionamos la tecla e. Lo hacemos y ahora vemos los parametros pasados para el booteo del sistema. Editemos los que contiene la línea kernel. La seleccionamos y de nuevo presionamos e. Al final de la línea agregamos:

init=/bin/bash

Nota: En algunos casos puede que no se encuentre disponible bash, simplemente reemplaza por la shell usada (por ejemplo: /bin/sh).

Presionamos ENTER y con esto quedará modificada la línea. Básicamente lo que hace el parametro init es indicarle a GRUB que archivo se debe ejecutar después de terminar de cargar el kernel, en este caso ejecutamos la shell (/bin/bash).

debian2 Resetear contraseña de root con GRUB

Presionamos la tecla b para que bootee el sistema. Recuerda que la modificación que hemos hecho aquí NO es permanente, si quieres hacer un cambio permanente debes modificar diréctamente el archivo /boot/grub/menu.lst. Después de terminar de cargar el kernel quedamos ante una shell con permisos de root:

debian3 Resetear contraseña de root con GRUB

Probablemente si intentamos modificar/crear algún archivo no podamos ya que no tenemos permisos de escritura. Debemos remontar la partición con permisos de lectura y escritura:

mount -n -o remount,rw /

Ahora tenemos dos opciones (en realidad muchas, pero con estas dos basta :) ):

  1. Cambiar la contraseña de root
  2. Eliminar la contraseña de root

1. Cambiar la contraseña de root

Para hacerlo, simplemente ejecutamos el comando passwd, escribimos la nueva contraseña y la verificamos:

debian5 Resetear contraseña de root con GRUB

2. Eliminar la contraseña de root

Bastaría con editar el archivo /etc/shadow y modificar la primera línea (root) eliminando el contenido de los primeros dos puntos y los segundos, por ejemplo:

debian6 Resetear contraseña de root con GRUB

La dejamos así:

debian7 Resetear contraseña de root con GRUB

Guardamos el archivo y reiniciamos (lo más probable es que toque reiniciar físicamente) el sistema. Ahora verifiquemos que todo haya quedado bien :P

debian8 Resetear contraseña de root con GRUB

¡Aleluya!

Al fin recuperamos el acceso a nuestra cuenta root :)

En un próximo artículo veremos como podemos protegernos de que este tipo de cosas sean realizadas sin nuestro consentimiento.

Fuente: http://www.dragonjar.org/resetear-contrasena-de-root-con-grub.xhtml