viernes, 23 de agosto de 2013

Instalar con éxito varias distribuciones Linux en un solo ordenador

Finalmente me atreví y he finalizado con relativo éxito la instalación de tres distribuciones GNU/Linux en un mismo PC en el que ya tenía Windows 7 previamente instalado. Es algo que hace tiempo perseguía y que, según lo visto por la red, no era tan sencillo como a priori parecía. Tengo que decir que no me ha resultado difícil, tan solo he respetado algunas reglas básicas que he visto recomendadas en distintos sitios.

Eso sí, advierto que la instalación que he llevado a cabo no es perfecta, y está sujeta a mejoras que los conocimientos de cada uno puedan implementar. Por adelantar algo, finalmente no dispongo de un solo directorio /home para todas las distribuciones como era mi propósito inicial, aunque supongo que eso se puede modificar con posterioridad cambiando las preferencias de usuario (aunque no he tenido tiempo de probarlo).

Valga lo que a continuación viene como orientación, repito, simple orientación, para quien quiera embarcarse en el proyecto de trabajar con varias distros Linux en un solo ordenador. Con Windows de regalo.

Empezaré contándoles que dispongo de dos discos duros, uno de 250 Gb con Windows 7 y otro de 640 Gb, que es donde pretendía instalar las distribuciones Linux. Mi idea, y así venía funcionando, era mantener completamente al margen el Windows del otro disco. La mejor y más eficaz manera de hacerlo es desenchufar físicamente el disco de 250 con Windows antes de empezar a instalar los Linux. Bien, me olvidé de este punto. Todo me funciona correctamente pero ahora Windows me aparece como una de las opciones del menú de arranque GRUB por olvidar desconectar su maldito disco duro. En fin, cuanto tenga un rato veré como muevo el menú de arranque de un disco a otro, si es posible hacerlo, para volver a aislar Windows.

Recapitulamos: disco 1 de 250 Gb con Windows 7; disco 2 de 640 Gb listo para recibir los Linux, peeeero antes hay que particionarlo. Les cuento como lo hice.

Debemos disponer de un LiveCD o USBLive que disponga de un programa tipo Partition Magic de Windows o GParted en GNU/Linux. En mi caso tenía un viejo LiveCD de Ubuntu 11.4 y el GParted que traía consigo me funcionó a la perfección. Arranqué el ordenador con él en el lector y rápidamente me puse a particionar mi disco de 640 Gb (que he dado en denominar disco 2). Así es como lo dejé: cree tres particiones primarias, una para el primer Linux, otra para el directorio /home y otra para el disco de intercambio SWAP, y una partición extendida para albergar el resto de distribuciones. Esta última la dividí en particiones lógicas, cada una de las cuales iba a contener una distribución diferente.

Esquemáticamente, así es como me quedó (recuerden, disco de 640 Gb):

1ª partición primaria: --> sdb1 -- 100 Gb -- openSUSE 12

2ª partición primaria: --> sdb2 -- 190 Gb -- /home

3ª partición primaria: --> sdb3 -- 4 Gb -- SWAP

1ª partición extendida: --> sdb4
                                         |
                                         1ª partición lógica: --> sdb5 -- 100 Gb -- Debian Wheezy 7.1

                                         2ª partición lógica: --> sdb6 -- 100 Gb -- (sin uso)

                                         3ª partición lógica: --> sdb7 -- 110 Gb -- Fedora 18

Luego la cosa no terminó así, pero básicamente estoy contento del resultado final.

No he sido original y para primera partición lógica elegí openSUSE 12. En varios lugares de la red recomiendan que en una instalación múltiple de este tipo se instale siempre esta distro en primer lugar por eventuales problemas de arranque que suceden después. Les hice caso y ahí la tengo, en mi menú del GRUB y funcionando sin problemas.

Después le tocó el turno a Fedora 18, que es la distro que más díscola se mostró en su proceso de instalación. Como partición SWAP también elegí la unidad sdb3 para no generar otra partición extendida más. Crea su propio menú utilizando el gestor de arranque GRUB 2.

Finalmente instalé Debian Wheezy en su versión 7.1, que es la distro con la que habitualmente funciono. Siguiendo este orden el instalador de Debian crea su propio menú de arranque que ya engloba todos los sistemas instalados, Windows incluido si lo encuentra.

¿Pegas? Bien, lo confieso, he tenido que repetir alguna de las instalaciones porque me liaba con las particiones, sobre todo con Fedora, que me dividía la unidad sdb7 en tres particiones lógicas. También se niega a cargar el entorno gráfico GNOME 3 por lo que tengo que teclear ALT + F2 para entrar en modo texto, introducir root como usuario, luego la contraseña establecida durante la instalación y, finalmente, el comando startx para que el escritorio y los iconos aparezcan en pantalla. Con más tiempo seguro que podré resolver este problemilla.

La instalación de openSUSE fue como la seda y no me dio ningún problema y con Debian solo tuve que reformatear la unidad sdb5 para que acogiera la nueva instalación sin protestar. Ahora cada distro tiene su propia partición /home, amén de su propia unidad raíz /. Pero está todo ordenado y localizado y podría hacerlo para que cada distro trabaje en un solo /home. Pero lo que manejo sobre todo es Debian y el resto de distribuciones las tengo para hacer probaturas nada más. Es mi primera vez y de equivocarse surgen posteriores aciertos.

Me quedó la unidad sdb6 sin darle uso. En principio estaba destinada a recibir una copia de ArchLinux pero creo que ya es bastante con lo que tengo. Todas las distribuciones corren sin problema y Windows también.

Hemos visto lo importante que es definir las particiones antes de instalar nuestras distribuciones y... a quien intento engañar. Hace varias entradas que no se me ocurre como engarzar el post con un clip musical así que lo haré de la manera que se me ocurra por absurda que resulte. Y como hablamos de particiones... pues un vídeo de los británicos Bloc Party llamado "Helicopter".


jueves, 22 de agosto de 2013

No funciona sudo en Debian 7.1 con el editor gedit

Estaba yo instalando unas aplicaciones en mi nuevo y flamante Debian Wheezy 7.1 con entorno de escritorio KDE cuando intenté editar un fichero de texto con el editor de textos en modo gráfico gedit. El propietario del archivo era root por lo que debía teclear el comando sudo antes de hacer la llamada a gedit. Este fue el resultado:

paco@paco-pc:~$ sudo gedit mifichero.txt
[sudo]   password for paco:
No protocol specified
No se puede abrir el visor:
Ejecute "gedit --help" para ver una lista completa de las acciones  disponibles de los comandos de línea.

paco@paco-pc:~$

¿Qué es esto? Nunca antes me había fallado el sudo. El caso es que si tecleo gedit mifichero.txt y pulso enter sí se abre gedit pero no se me permite realizar cambios en el archivo ya que lo abre en modo lectura. Y si pongo la terminal en modo superusuario con el comando su, tecleando a continuación la contraseña de root, obtengo el mismo resultado que al principio cuando lo intento editar.

Siempre lo digo: Internet es una joya y, casi con toda probabilidad, nada de lo que me ocurra será la primera vez que sucede, así que en un minuto tenía la solución. Hay que utilizar el comando gksu en lugar de sudo, tal que así:

paco@paco-pc:~$ gksu gedit mifichero.txt

De esta forma el archivo se abre en modo escritura que es lo que desde un principio quería. Podría haber utilizado otro editor de textos como nano pero me interesaba el modo gráfico de gedit para copiar y pegar fragmentos de texto de un sitio a otro del archivo.

Hay que decir que gksu es una herramienta que permite trabajar con aplicaciones gráficas como otro usuario, incluido el superusuario o usuario root. Aquí lo explican más al detalle para los usuarios de Ubuntu.

jueves, 15 de agosto de 2013

Terminología básica para empezar a manejarse en redes

Ya que abrí el fuego de las redes en la anterior entrada, voy a dedicar este post a listar unos cuantos términos relacionados con las redes y los servidores que conviene conocer si queremos adentrarnos en este proceloso y complejo mundillo. Son definiciones escuetas, por lo que recomiendo a quien esté interesado que las complete con la abundante documentación que podemos encontrar en la red.

Protocolo de red
Conjunto de reglas que se usan para que un elemento de red pueda acceder a diversos medios de comunicación con el fin de realizar una transmisión de datos. Estos medios pueden ser un cable de red, un switch, un router...

LAN (Local Area Network)
Son las redes de área local, por ejemplo, dos ordenadores de un mismo centro de trabajo.

WAN (Wide Area Network)
Son las redes de área amplia, como un ordenador casero en relación al del puesto de trabajo.

Protocolo TCP (Transmision Control Protocol)
Es el protocolo que define las reglas de comunicación entre dos o más ordenadores. Las conexiones mediante este protocolo se producen a través de puertos para transportar la información, fragmentándola en origen en trozos más pequeños llamados paquetes. Ya en su destino estos paquetes se reensamblan y vuelven a adoptar la forma de la información original.

Procotolo IP (Internet Protocol)
Protocolo que proporciona un direccionamiento a cada dispositivo de red, que puede ser un ordenador, un router, una impresora... para que todos ellos puedan comunicarse entre sí mediante direcciones IP, utilizándo técnicas de enrutamiento, para que los paquetes viajen de manera bidireccional entre emisor y receptor. También es capaz de homogeneizar e intercomunicar redes físicamente distintas. La versión más extendida de este protocolo es la IPv4 aunque ya existe una nueva versión mejorada, la IPv6.

Puerto
Es el identificador numérico que un dispositivo utiliza para transmitir mensajes TCP o UDP de manera que una aplicación pueda interpretarlos. Utilizando un nombre (www.google.com, por ejemplo) o una dirección IP se puede localizar un ordenador concreto dentro de Internet, pero además de eso se necesita un mecanismo que permita conectar a un servicio concreto (correo electrónico, páginas web, FTP, etc) dentro de ese ordenador. La conexión a un servicio o proceso concreto ejecutado en un ordenador se realiza especificando un nº de puerto. De tal modo, los programas de correo electrónico "escuchan" en el puerto 25 y los servidores web en el 80.

Enrutamiento
Es la función de buscar un camino entre todos los posibles en una red de paquetes.

Dirección IP
Viene a ser el DNI de cada host en una red, es una etiqueta numérica que identifica al interfaz (elemento de comunicación/conexión) de dispositivo (normalmente un ordenador) dentro de una red con protocolo IP. Está formada por cuatro bloques (octetos) de 8 bits (32 bits, 4 bytes). Un ordenador puede poseer varias direcciones IP si dispone de varios interfaces de red (conectores), caso de un router, asignando una IP a cada interfaz.

Host
Es todo equipo informático que posee una dirección IP y que se halla conectado a uno o más equipos. También es descrito comúnmente como el sitio donde reside un sitio web. Un host o anfitrión tiene una dirección IP única y un solo nombre de dominio, y puede ser un ordenador conectado a una red o una impresora.

Dominio
Es un conjunto de ordenadores conectados en una red que confían a uno de esos equipos la administración de sus usuarios y sus privilegios. También es la parte principal de una dirección en la Web que indica la organización o compañía que administra esa página.

IP estática
Es una dirección IP que no sufre variación, siempre es la misma tanto para enviar información como para recibirla.

IP dinámica
Es una dirección IP que se modifica periódicamente. Normalmente cambia con cada reinicio del router.

Máscara de red (o subred)
Es una combinación de bits que sirve para delimitar el ámbito de una red de ordenadores. Indica a cada dispositivo qué parte d la dirección IP es el nº de la red, incluyendo la subred, y qué parte le corresponde al host. Si el router tiene la dirección IP 192.168.1.1 y la máscara de red 255.255.255.0 entiende que todo lo que se envía a una dirección IP que empieza por 192.168.1 va a parar a la red local, mientras que lo que va a otras direcciones IP, para afuera de esa red local (a otra red más grande o a Internet).

Puerta de enlace o Gateway
Es un dispositivo que permite interconectar redes con protocolos y arquitecturas diferentes a todos los niveles de comunicación. Traduce la información del protocolo de la red de origen para que sea entendida en la red de destino. En entornos domésticos son los routers los que actúan como gateways, conectando la red doméstica con Internet.

Broadcast
Difusión en español, es una forma de transmisión de información donde un nodo emisor envía información a una multitud de nodos receptores al mismo tiempo, sin necesidad de repetir la transmisión nodo a nodo.

Protocolo UDP (User Datagram Protocol)
Es una alternativa al protocolo TCP que trata los datos en forma de datagramas (técnica para encaminar paquetes en una red en la que cada uno de ellos es tratado de manera independiente) que luego son enviados. Es un protocolo basado en el trabajo sin conexión, por lo que ejerce una menor carga en la red aunque resulta menos fiable.

Protocolo ICMP (Interner Control Message Protocol)
Este es un protocolo empleado para enviar mensajes de error o mensajes con información de control. Tiene un comando muy habitual como es ping, que básicamente nos dice si un equipo responde a una llamada de comunicación.

Protocolo DHCP (Dynamic Host Configuration Protocol)
Es el protocolo empleado por los hosts para obtener información de forma dinámica a través de un servidor que tenga implementado este protocolo. Se podrán obtener datos como la dirección IP, la máscara de red, la dirección de broadcast, datos de configuración DNS,...

DNS (Domain Name System)
Es un sistema de nomenclatura jerárquica para ordenadores o sistemas conectados a Internet o a una red privada. Un servidor DNS es una máquina capaz de convertir un nombre de dominio (por ejemplo, www.google.com) en la dirección real de la máquina donde se aloja, esto es, su dirección IP. Cuando entramos en www.google.com el navegador conecta con el servidor DNS del sistema operativo para que le comunique cual es la dirección real de Google (en caso de no encontrarla se conecta con otros servidores DNS). El servidor DNS comprobará su dirección IP y se la transmite al navegador, que devolverá en pantalla la página web de Google.

Protocolo NFS (Network File System)
Es un protocolo que permite el acceso a nuestro ordenador de cualquier otro equipo que esté compartiendo información bajo este protocolo, a la cual se puede acceder como si se entrara en los directorios de nuestro disco duro. En este sistema existen dos partes: el servidor, que es el que comparte información, y el cliente, que es el que desea acceder a dicha información de forma remota.

Protocolo SFTP (SSH File Transfer Protocol)
Protocolo que permite la transferencia y manipulación de archivos entre ordenadores a través de las direcciones IP. Funciona mediante el software SSH (Secure SHell) que facilita el acceso a máquinas remotas desde una red.

FTP (File Transfer Protocol)
Protocolo de red para la transferencia de archivos entre sistemas conectados a una red TCP. Permite que un equipo cliente se pueda conectar a un servidor y descargar archivos desde él o enviárselos, al margen de los sistemas operativos presentes en ambos.

Protocolo Telnet
Protocolo basado en el TCP que dispone de su propio interfaz de usuario y sirve para conectarse a un equipo remoto y comunicarse con él, también al margen de los sistemas operativos.

domingo, 11 de agosto de 2013

Montar una red entre un PC y un portátil con el protocolo SFTP

Me gusta utilizar este blog para glosar los progresos que voy haciendo en GNU/Linux al margen del orden que estoy dando al proceso de aprendizaje. En este caso vamos con una sencilla manera de compartir contenido entre dos ordenadores con Linux, en mi caso un PC con Debian 6 y un portátil con Linux Mint Mate, pero también podrían ser dos PC's o dos portátiles. Mi verdadero objetivo es conseguir compartir la impresora para ambos, pero de momento me conformo con los discos duros. Lo haremos usando el protocolo SFTP, que permite conectar dos equipos que tengan instalado openssh.

Vamos a referirnos al PC como servidor y al portátil como cliente, por aquello de introducirnos en la terminología propia de las redes.

Lo primero que hay que hacer es instalar dos paquetes openssh, tanto en el servidor como en el cliente. De este modo podremos explorar desde uno en el otro y viceversa. Se haría de la siguiente forma:

sudo apt-get install openssh-server

sudo apt-get install sshfs openssh-client

Si solo queremos comunicar las máquinas en una sola dirección instalaremos únicamente el paquete server en el servidor y el paquete client en el cliente. Así solo tendremos acceso desde el cliente al servidor.

Ahora necesitamos utilizar el comando ifconfig para averiguar la dirección IP de cada una de las dos máquinas.

En el servidor:

paco@paco-pc:~$ ifconfig
eth0      Link encap:Ethernet  HWaddr 22:45:22:gi:h7:21
             inet addr:142.128.0.234  Bcast:142.128.0.245  Mask:265.265.265.0
(...)

No hace falta transcribir el resultado completo del comando, ni que los datos sean reales, que no lo son ya que me los acabo de inventar para no divulgar información privada. En negrita está resaltado lo que nos interesa, la dirección IP.

Y en el cliente, que se conecta por wi-fi:

otro@otrolinux:~$ ifconfig
wlan0      Link encap:Ethernet  HWaddr 22:45:22:gi:h7:21
               inet addr:142.128.0.234  Bcast:142.128.0.245  Mask:265.265.265.0
(...)

Ahora nos vamos a, por ejemplo, el servidor, abrimos Nautilus y nos posicionamos en la barra de navegación. Para activarla en Debian nos vamos al Editor de configuración, lo abrimos, nos vamos a Apps > Nautilus > Preferences y activamos always_use_location_entry.

Si no estuviera instalado tecleamos en la terminal sudo apt-get install gconf-editor y tardaremos segundos en tenerlo. En Linux Mint aparece por defecto en su Nautilus.

Cuando podamos escribir en la dichosa barra de navegación tecleamos lo siguiente:

sftp://nuestra_dirección_ip/carpeta_remota

Si uso la IP ficticia de más arriba y mi carpeta HOME como carpeta de conexión así es como quedaría:

sftp://142.128.0.234/home/paco

Lógicamente, si estoy en el servidor escribiré la IP que haya obtenido en el cliente a través de ifconfig y viceversa.

Al pulsar enter quizá nos aparezca una advertencia de sitio poco seguro y tal... No hacemos ni caso y pinchamos en continuar, tras lo cual veremos una pantalla preguntando por el nombre del usuario del equipo al que pretendemos acceder, su contraseña y tres opciones para recordar ésta última. Si todo ha ido como debe a continuación se nos abrirá una ventana con el contenido de la carpeta del otro ordenador a la que nos acabamos de conectar.

miércoles, 7 de agosto de 2013

Solucionar problema de montaje con disco duro externo NTFS

A veces los que manejamos ordenadores tenemos la maldita manía de apagar o desenchufar los dispositivos antes de que el flujo de datos de haya detenido, lo que puede dar lugar a pérdida de datos o a malfuncionamiento de aquellos. Es lo que me ha pasado a mí. Desconecté del puerto USB un disco duro externo antes de que la luz indicadora de transmisión de datos se apagara. El resultado fue este bonito mensaje cada vez que pretendía conectarlo de nuevo:
Error mounting: mount exited with exit code 13: $MFTMirr does not match $MFT (record 0).Failed to mount '/dev/sdg1': Input/output errorNTFS is either inconsistent, or there is a hardware fault, or it's aSoftRAID/FakeRAID hardware. In the first case run chkdsk /f on Windows then reboot into Windows twice. The usage of the /f parameter is very important! If the device is a SoftRAID/FakeRAID then first activate it and mount a different device under the /dev/mapper/ directory, (e.g. /dev/mapper/nvidia_eahaabcc1). Please see the 'dmraid' documentation for more details.
Este mensaje pide que se aplique un comando Windows, pero en Windows el disco duro funciona sin problemas, síntoma de que al menos está sano. Lo que pasa es que cortar el suministro de energía mientras se estaban escribiendo datos en la partición NTFS del disco duro externo dejó trastocada dicha partición, siendo imposible montarla de nuevo. Si no queremos acudir al sistema del tito Bill tenemos opciones dentro de GNU/Linux. Se trata del paquete ntfs, el cual instalaremos de la siguiente forma:

sudo apt-get install ntfsprogs

Una vez instalado lo ejecutamos aludiendo a la unidad del disco duro externo, en mi caso la /dev/sdg1:

sudo ntfs /dev/sdg1

Tras unos segundos procesando el problema se soluciona. Esto es lo que se iba viendo en la terminal según el proceso avanzaba:
Mounting volume... FAILED
Attempting to correct errors...
Processing $MFT and $MFTMirr...
Reading $MFT... OK
Reading $MFTMirr... OK
Comparing $MFTMirr to $MFT... FAILED
Correcting differences in $MFTMirr record 0...OK
Processing of $MFT and $MFTMirr completed successfully.
Setting required flags on partition... OK
Going to empty the journal ($LogFile)... OK
NTFS volume version is 3.1.
NTFS partition /dev/sdg1 was processed successfully.
Esta solución la he leído aquí, donde advierten que sería conveniente pasarte por Windows para terminar de refinar la cuestión.