Spiga
Mostrando entradas con la etiqueta rootfs. Mostrar todas las entradas
Mostrando entradas con la etiqueta rootfs. Mostrar todas las entradas

Arrancando la Raspberry Pi desde un disco duro

¡Volvemos a la carga con un nuevo tutorial! Hoy os voy a enseñar a mover el sistema de ficheros de vuestra Raspberry Pi de la tarjeta SD a un disco duro, consiguiendo un mejor rendimiento general y un menor tiempo de arranque de la misma. He visto muchas entradas en el foro oficial de gente intentándolo sin éxito y la verdad es que es bastante sencillo siempre que sepas los pasos correctos.

Vamos a necesitar algunas herramientas extra, ya que no podemos realizarlo directamente desde la Raspberry. Así que los materiales que vamos a necesitar son:

  • Disco duro. No olvidéis alimentarlo de forma externa, ya que la Raspberry Pi no podrá con él. En mi caso he comprado una cajita para un disco de 3,5" que tenía abandonado en casa. La inversión ha sido de 12€.
  • Live CD de Ubuntu, por ejemplo, o cualquier Linux instalado en sistema con GParted.
  • Un ordenador al que poder conectar la SD y el disco duro. En él arrancaremos la Live CD.

Paso 1, hacer copia de seguridad de la SD:

Como no queremos llevarnos un disgusto en caso de equivocarnos, lo que haremos será crear una imagen de nuestra SD por si las moscas. Tenéis diferentes opciones desde Windows y Linux, siendo Win32DiskImager la más sencilla de todas en el primero y dd en caso de usar Linux. Si es vuestro caso es el último abrid una terminal y escribid:

dd if=/dev/sdX of=/ruta/de/imagen

Por ejemplo, en mi caso la SD es "sdb" y quiero crear la copia en mi carpeta de usuario, así que el comando me quedaría tal que:

dd if=/dev/sdb of=/home/darknsis/backup.dd

Al finalizar debe mostrarnos una pantalla similar a la siguiente:

dd tras finalizar el volcado de la SD a una imagen
 
Si os diese error al intentar ejecutar el comando, probad con sudo delante. Aunque por sencillez el primer método es mejor para los novatos, recomiendo ir acostumbrándose a las herramientas que nos brinda Linux.



Paso 2, copiar la partición:

Arrancaremos el ordenador con la Live CD, vuestra distribución Linux instalada o la opción que más os convenga. Si no tenemos instalado GParted en dicha máquina abriremos una terminal y escribiremos:

sudo apt-get install gparted

Conectamos nuestro disco duro, la SD y ya podremos ejecutar GParted. Tardará unos segundos en detectar las unidades y las particiones que hay hechas en las mismas, cuando finalice seleccionaremos el disco duro externo (ojo, no vayáis a cargaros vuestro disco de sistema!) y eliminaremos cualquier partición existente (botón derecho encima y "Eliminar"). Por ahora vamos a dejarlo completamente vacío, aunque también existe la posibilidad de tener varias particiones y dejar el espacio necesario para crear una nueva.

A continuación seleccionaremos la SD del desplegable superior derecho (en la foto veréis que tengo "/dev/sdb" que es mi SD) y marcaremos la partición de tipo "ext4", haremos clic con el botón derecho para mostrar el menú y seleccionaremos la opción "Copiar".


Captura de GParted, hay que copiar la partición ext4 de sistema
 
Volvemos ahora al disco duro en el que queremos instalar el sistema de ficheros, para ello recuerda seleccionarlo del listado desplegable superior derecho (donde aparecen identificados como "/dev/sdX"). Si está hecho todo correctamente deberéis verlo vacío y la barra de color gris. Para pegar la partición que hemos copiado hace unos segundos pincharemos en el espacio vacío, haremos clic con el botón derecho encima y de las opciones seleccionaremos "Pegar". Ahora hay que aplicar los cambios, así que iremos a "Editar" y dentro "Aplicar todas las operaciones" y esperaremos a que acabe el proceso.

Paso 3, cambiando ruta de acceso:

Prácticamente ya hemos acabado, así que vamos a dar los dos últimos pasos necesarios para que todo funcione correctamente. Lo primero es editar el fichero "cmdline.txt" que tenéis en la partición de tipo FAT en la SD (la partición que os deja ver desde Windows). Como siempre volveremos a hacer una copia de seguridad del fichero, copiándolo y renombrándolo a "cmdline.original" por ejemplo y dejando otro exactamente igual como "cmdline.txt". Una vez lo tengamos abrimos el fichero "cmdline.txt" en un editor de textos, ya sea GEdit si usamos una Live Ubuntu o con nano desde la terminal. Veréis que el contenido que tiene es el siguiente:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

Lo que vamos a hacer es sustituir la oarte que pone "/dev/mmcblk0p2" por la ruta de nuestro disco duro en la Raspberry. En mi caso, como es el único disco duro conectado con una única partición, le pertenece "sda1". Si habéis seguido mis pasos y no hay más unidades conectadas vosotros deberéis tener la misma, pero aseguraros antes. Por lo tanto el fichero nos queda así:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/sda1 rootfstype=ext4 elevator=deadline rootwait

Fijaros que no hemos tocado nada más del fichero que la ubicación del "root". Ahora guardarlo y vamos al último paso, que se trata de editar un fichero muy importante: fstab (File System Table). Os recomiendo encarecidamente la lectura del funcionamiento de fstab, ya que no es tan complicado como inicialmente parece.


Paso 4, modificando FSTAB:

Abrimos la partición ext4 que hay en la SD (la que no podemos ver con Windows, de ahí que estemos con un Linux haciendo todo :P) y, como no queremos llevarnos sorpresas, vamos a realizar también una copia de seguridad del fichero, procediendo de igual manera que hicimos con el "cmdline.txt". Yo he hecho una copia del mío llamándola "fstab.original". Para localizar el fichero debéis ir a "/etc/fstab". Una vez hecha la copia abrimos el fichero con un editor de textos y deberemos encontrar algo similar a lo siguiente:

Haz clic para ampliar vista de fstab original



Fíjarosen la tercera línea, hay una referencia a un sistema de ficheros ext4 en el dispositivo "mmc" que es la SD. ¿Qué haremos? Pues vamos a cambiar esa parte por la ruta de acceso de nuestro disco duro, pero ojo, no modifiquéis ninguna otra línea o de lo contrario no nos va a arrancar, ya que siempre necesitamos usar una SD para ello (y es lo que hace la línea superior) así que nos quedará de la siguiente manera:

fstab listo para cargar el sistema desde disco externo


No os preocupéis si no queda alineado todo, ya que no es importante para el buen funcionamiento del fichero. Guardamos cambios, cerramos, apagamos el sistema y sonreímos, puesto que ya hemos hecho toda la faena ;).

Ahora enchufa el disco duro a tu Raspberry Pi (recuerda que sin él no podrás arrancar a partir de ahora), introduce la SD, conecta la corriente y disfruta viendo como se enciende el LED de actividad de tu disco duro al arrancar.... contando que tenga, ¡claro! Como paso adicional puedes intentar crear una partición adicional en el disco o simplemente redimensionar la actual (que será del tamaño de tu SD). La segunda opción es tan sencilla que lo hará tu propia Pi, ¿cómo? Abrimos terminal y escribimos:

sudo raspi-config

Veremos la siguiente pantalla, que vimos la primera vez que iniciamos la Raspberry:

Pantalla de configuración de la Raspberry Pi

Y seleccionamos la opción "expand_rootfs". Dependiendo de la capacidad de tu disco será más rápido o lento el proceso, no desesperes. Personalmente prefiero hacer otra partición y guardar en ella mis ficheros, pero por facilidad para los novatos el método que os he explicado es el mejor. Tranquilos, ya tendremos tiempo de ir aprendiendo todo lo que podemos hacer y, como se suele decir, "Roma no se construyó en un día".

Espero que os sea de utilidad, ya que he priorizado el tutorial a los que tenía para Webmin. Si tenéis dudas, sugerencias o queréis enteraros de los tutoriales que voy preparando os recuerdo que mi Twitter está a vuestra disposición en @drkbcn.

¡Un saludo y hasta entonces!

Instalando Webmin (control remoto por web)

¡Ya estamos de vuelta! Hoy os traigo un tutorial que va a hacer las delicias de todos: la instalación de Webmin. En el análisis al modelo de 512 MB de la Raspberry Pi ya lo usé para enseñaros el uso de memoria y comenté que os enseñaría a instalarlo y, posteriormente, a utilizarlo.

Webmin es un configurador de sistemas Unix, a través de web, que facilita enormemente el trabajo de administración de una máquina. Entre sus ventajas destacan el poder gestionar la máquina, sin necesidad de grandes conocimientos de comandos de administración de la shell o de los ficheros implicados en determinadas configuraciones, a través de HTTPS. Lógicamente si podemos administrar y configurar a través de web, podremos hacerlo de forma remota sin necesidad de tener pantalla, estar en casa o delante de la máquina.



Entre las funciones más destacables que podremos utilizar están:
  • Conexiones SSH desde el propio Webmin
  • Subidas y bajadas remotas de ficheros
  • Tareas programadas (cronjobs)
  • Edición sencilla de fstab para automontar unidades
  • Usuarios y grupos
  • Gestor de ficheros
  • Envio de comandos a consola
  • Gestión y visualización de "logs" del sistema
  • Configuración y monitorización de red
  • Configuración de cortafuegos (iptables)
  • Configuración de servidor de correo (en mi caso de POSTFIX)
  • Etcétera
Son tantísimas las opciones de las que dispone que es difícil resumirlas en las más importantes, ya que todas lo son en su medida.

El tutorial que vamos a ver es totalmente válido para cualquier distribución basada en Debian (en mi caso voy a hacerlo en Debian Wheezy en mi Raspberry Pi) y puede realizarse de dos formas distintas: manual o automática. Personalmente me gusta más hacerlo de forma "automática", porque vamos a incluir el repositorio del programa en nuestro fichero de orígenes de software (sources.list). De otra manera deberíamos preocuparnos nosotros de buscar nuevas versiones e instalarlas, pudiendo ser vulnerables a exploits descubiertos en el programa hasta que no actualizásemos.

1.- Añadiendo orígenes:

Lo primero que vamos a hacer es añadir la clave GPG con la que está firmado el repositorio. Para ello abriremos una terminal y escribiremos lo siguiente desde nuestro directorio de usuario:

wget http://www.webmin.com/jcameron-key.asc
sudo apt-key add jcameron-key.asc
rm jcameron-key.asc

Y ahora añadiremos el repositorio a nuestro fichero de orígenes de software. Para ello, y otra vez en la terminal, escribiremos lo siguiente:

sudo nano /etc/apt/sources.list

Y al final agregamos la siguiente línea:

deb http://download.webmin.com/download/repository sarge contrib

Debería estar para Wheezy, pero únicamente tienen para Sarge (aunque funciona igual de bien :P). Ahora ya podemos actualizar e instalar los paquetes necesarios con:

sudo apt-get update
sudo apt-get install webmin

Ya tenemos Webmin instalado y corriendo en nuestra máquina. Enhorabuena.

2.- Configuración básica

Ahora que ya tenemos instalado Webmin, vamos a hacer un par de modificaciones en su configuración para que se adapte mejor a nuestras necesidades. Básicamente cambiaremos el idioma a Español y lo dejaremos preparado para los próximos tutoriales que voy a ir poniendo, que entre ellos ya estoy preparando alguno que otro muy interesante. ;)

Para entrar en Webmin de forma local (es decir, desde nuestra propia red) bastará con abrir el navegador  en otro ordenador e introducir lo siguiente:

https://ipRasperry:10000

Por ejemplo, mi Raspberry está configurada con IP 192.168.1.123, por lo tanto sería:

https://192.168.1.123:10000

Es importante usar https, ya que vamos a realizar una conexión segura en vez del protocolo plano de HTTP. Recordad que si no sabéis la IP de vuestra Raspberry podéis verla ejecutando lo siguiente en una terminal:

ifconfig

En el caso que conectáramos a través de un adaptador inalámbrico sería:

iwconfig

Por si algún despistado aún va con IP dinámica, os recuerdo que hay un fabuloso tutorial para novatos en el blog que os servirá, entre otras cosas, para fijar una IP estática a vuestra Raspberry Pi. Una vez dentro nos pedirá un nombre de usuario y contraseña. Son los mismos credenciales que usas para entrar en tu Raspberry, por lo tanto (y por defecto) son pi y raspberry si estás usando Raspbian Wheezy.

ATENCIÓN: Es muy importante que a éstas alturas tu contraseña de usuario no sea la de por defecto, de lo contrario te arriesgas a que tu Raspberry pase a ser de "dominio público". Si aún no has cambiado tu contraseña házlo de forma inmediata.

Una vez dentro veremos la siguiente pantalla:

Pantalla de inicio de Webmin


Si existe alguna actualización te recomiendo que la realices. Es tan fácil como pinchar en el mensaje que aparece justo debajo (en mi caso me dice que todos los paquetes están al día). Para hacer las cosas más fáciles vamos a poner Webmin en Español, para ello nos vamos a la columna de la izquierda y en la sección "Webmin" vamos a "Change Language and Theme". Supongo que es de lógica que para ponerlo en Español hay que seleccionarlo de la lista, pero por si acaso hay que ir a "Webmin UI language" y en "Personal choice" marcar el idioma que queráis. También existe posibilidad de cambiar el tema a través de "Webmin UI theme", pero personalmente me gusta el que lleva. Una vez que lo tengamos listo pulsaremos en "Make changes" y nos esperaremos a que todo se reinicie.

Como Webmin tiene tantísimas opciones, menús, submenús y configuraciones, lo que haré en las próximas semanas será ir viendo, a través de implementar mejoras en nuestra Raspberry, cada una de éstas opciones. La ventaja que tendremos será que no necesitaremos ser usuarios "expertos" en Linux para poder ajustar opciones como el automontado de discos en el sistema, parado y control de servicios, particionado de unidades, configuración de dispositivos, compartición por red y prácticamente todo lo que puede realizar tu Raspberry con una distribución Linux.

Por el momento os recomiendo ir mirando un poco aquellas opciones que conozcáis mejor, sin meteros demasiado a fondo o sin aplicar cambios si no sabéis qué es lo que estáis haciendo. En todo caso nunca está de más hacer una copia de seguridad de vuestra SD por si acaso. ;)

Por el momento os estoy preparando un tutorial que os va a encantar y que realizaremos con la ayuda de Webmin: montaje de disco externo automático y con permiso de escritura para usuarios y reindexado automático del contenido del mismo en el servidor DLNA que montamos hace poco, gracias a las tareas programadas. Este tutorial nos va a permitir conocer un poquito más un fichero muy importante en el arranque de nuestro sistema (fstab) y la automatización de tareas (cronjobs). No os lo perdáis, porque va a estar muy, pero que muy interesante.

Por si os ha sabido a poco os haré otro avance del segundo tutorial que haremos con Webmin: mover el sistema de ficheros (rootfs o /) a un disco duro externo consiguiendo un rendimiento muy superior al de la SD y un desgaste mínimo de la vida de ésta. Os dejo una captura de mi sistema de archivos para que veáis como he movido la raíz a un disco externo:

Root Filesystem cargado en disco externo (partición de 4 GB clonada de SD)

Recordaros antes de acabar que podéis seguirme en Twitter en @drkbcn. También os recomiendo a @TelecoBosco con los que podréis aprender más sobre Linux / Raspberry Pi y estar al día de las novedades de la misma (felicito profesores y alumnos por la iniciativa) no sin olvidarme de @Farnell_ES que me han apoyado desde el primer momento con los tutoriales y que, llevan unos días dándonos buenas noticias desde la #elec12, como la exclusividad de PiFace.

¡Gracias una vez más a todos y nos leemos de nuevo en apenas unos días!