vidpi
Posts: 46
Joined: Thu Jun 05, 2014 12:40 pm

Seleccionar Particion en arranque sin usar teclado

Tue Oct 28, 2014 3:30 pm

Buenas. Quiero hacer algo que no se si es posible. Quiero arrancar la Raspi y que me arranque desde una particion u otra segun una orden remota. Sin usar teclado.

Una opcion que habia pensado es hacer algo como hace noobs, que ejecuta automaticamente, pasados unos segundos, la ultima particion ejecutada. Supongo que de forma remota puede cambiarse el archivo donde se guarda esa informacion.

Lo ideal para mi seria hacer esto sin usar noobs.

Alguna idea?

User avatar
lmarmisa
Posts: 1227
Joined: Thu Feb 14, 2013 2:22 am
Location: Jávea, Spain

Re: Seleccionar Particion en arranque sin usar teclado

Tue Oct 28, 2014 6:31 pm

Lo que quieres hacer sí se puede y es sencillo. Simplemente edita el fichero

Code: Select all

sudo nano /boot/cmdline.txt
Su contenido será algo de este estilo:

Code: Select all

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
Lo único que hay que hacer para arrancar desde otra partición es cambiar el campo root por la partición alternativa desde la que se desee arrancar (por ejemplo /dev/mmcblk0p3 o /dev/sda1). Incluso podrías tener varios ficheros (por ejemplo, cmdline.root1.txt y cmdline.root2.txt) con el texto adecuado para cada uno de los arranques y copiar en el fichero cmdline.txt el que desees que se utilice a partir de un momento dado:

Code: Select all

sudo cp /boot/cmdline.root2.txt /boot/cmdline.txt
Este comando lo podrías ejecutar remotamente mediante ssh.

No obstante, este método tiene algunos inconvenientes. En las instalaciones de la RPi, un sistema instalado contiene al menos una partición de boot que es del tipo fat32 y una partición de root que es del tipo ext4. El problema es que la partición de boot no sólo contiene el cargador sino también el kernel.

En tu caso deseas tener una sola partición boot (con un sólo kernel) y varias particiones root. Lo que tienes que tener en cuenta es que los dos o más sistemas que quieres arrancar tienen que compartir obligatoriamente el mismo kernel. Eso puede no dar problemas salvo cuando desees actualizar la versión del kernel de tus sistemas.

NOOBS sí permite definir sistemas completamente independientes. Usando NOOBS, podrías tener tantos sistemas independientes como desearas, pero cada uno de ellos tendría sus propias particiones de boot y root de modo que entre sistemas no se comparte absolutamente nada. De este modo puedes actualizar el kernel de una instalación sin cambiar el kernel de las restantes. Como ves, con NOOBS no hay limitaciones.

Al igual que en el caso anterior, hay un fichero de texto en una partición de settings de NOOBS que indica qué sistema debe arrancarse automáticamente. Si deseas más detalles de este segundo método, te los puedo indicar.

Una cosa buena de NOOBS es que si tienes ciertos conocimientos de Linux, puedes construirte tu propio sistema muy potente sin usar el procedimiento de instalación de NOOBS. Puedes incluso hacer cosas que no te permite hacer el instalador de NOOBS, como sería tener más un de sistema Raspbian en una tarjeta.

vidpi
Posts: 46
Joined: Thu Jun 05, 2014 12:40 pm

Re: Seleccionar Particion en arranque sin usar teclado

Wed Oct 29, 2014 7:44 pm

Genial. buena respuesta ;)


Quizás me explique mal. Lo que quiero es reproducir lo que hace noobs, pero al igual es por una mala interpretacion mia. He pensado desde el principio que noobs solo servia para instalar comodamente las versiones mas extendidas y compatibles con la raspberry, sin pararme a pensar que igual es posible que noobs inicie otras distros.

Es posible modificar noobs en este caso?

unpeatonenlared
Posts: 306
Joined: Sun Aug 17, 2014 8:18 am
Contact: Website

Re: Seleccionar Particion en arranque sin usar teclado

Thu Oct 30, 2014 4:16 am

Creo que en noobs no se pueden añadir mas distribuciones que las que trae por defecto, pero en BerryBoot si se puede, además se pueden realizar instalaciones remotas.

http://www.babuleando.com/berryboot-vs-noobs/

Saludos.
Mi blog sobre seguridad informática y Raspberry Pi:
http://www.peatonet.com

User avatar
lmarmisa
Posts: 1227
Joined: Thu Feb 14, 2013 2:22 am
Location: Jávea, Spain

Re: Seleccionar Particion en arranque sin usar teclado

Thu Oct 30, 2014 10:09 am

No conozco BerryBoot, pero puedo decir que con la estructura que proporciona NOOBS se pueden generar instalaciones con varios sistemas operativos de cualquier clase. La estructura de NOOBS permite hacer muchas más cosas que las opciones que proporciona su instalador inicial, que es algo limitado.

En este post intentaré explicar cómo organiza NOOBS la tarjeta SD.

Lo haré con un sistema que tengo con tres raspbians independientes en una tarjeta de 32 GB. ¿Por qué tres Raspbians?. Imaginemos que tengo una RPi en una caja hermética empotrada en un lugar de difícil acceso y accedo a ella por ssh. En esos casos, resulta muy pesado cambiar la tarjeta SD por cualquier motivo.

En esas condiciones pretendo tener 3 sistemas:

1) PRODUCCIÓN. Versión de mi sistema estable.

2) DESARROLLO. Versión de mi sistema en donde estoy desarrollando nuevas mejoras o corrigiendo bugs con respecto a PRODUCCIÓN.

3) BACKUP. Sistema para hacer uno o más backups de los sistemas 1) y 2).

Los 3 sistemas anteriores son Raspbian completamente independientes, cada uno con su kernel y con sus paquetes instalados y actualizados que podrían o no coincidir entre sí.

Veamos cómo organiza NOOBS las particiones de la tarjeta para este caso:

Code: Select all

[email protected] ~ $ sudo fdisk -l

Disk /dev/mmcblk0: 32.1 GB, 32090619904 bytes
4 heads, 16 sectors/track, 979328 cylinders, total 62676992 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000221e2

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            2048      104447       51200    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          104448    62574591    31235072    5  Extended
/dev/mmcblk0p3        62574592    62676991       51200   83  Linux
/dev/mmcblk0p5          108544      518143      204800    c  W95 FAT32 (LBA)
/dev/mmcblk0p6          520192    21000191    10240000   83  Linux
/dev/mmcblk0p7        21002240    21411839      204800    c  W95 FAT32 (LBA)
/dev/mmcblk0p8        21413888    41893887    10240000   83  Linux
/dev/mmcblk0p9        41895936    42305535      204800    c  W95 FAT32 (LBA)
/dev/mmcblk0p10       42307584    62574591    10133504   83  Linux

[email protected] ~ $ blkid
/dev/mmcblk0p1: SEC_TYPE="msdos" LABEL="RECOVERY" UUID="2E14-7FA2" TYPE="vfat"
/dev/mmcblk0p3: LABEL="SETTINGS" UUID="bbd17bd8-b310-4345-b672-eea51cad91fb" TYPE="ext4"
/dev/mmcblk0p5: LABEL="KERNELP" UUID="421A-96E7" TYPE="vfat"
/dev/mmcblk0p6: LABEL="PRODUCCION" UUID="90c100cb-5bf0-4fbf-80ec-c998a607315e" TYPE="ext4"
/dev/mmcblk0p7: LABEL="KERNELD" UUID="431B-23C0" TYPE="vfat"
/dev/mmcblk0p8: LABEL="DESARROLLO" UUID="8ae6558f-c8ad-4372-976f-eb0863b2e4a9" TYPE="ext4"
/dev/mmcblk0p9: LABEL="KERNELB" UUID="4429-7E6F" TYPE="vfat"
/dev/mmcblk0p10: LABEL="BACKUP" UUID="cad32d67-3692-4bd1-ae1b-10bdca2ad021" TYPE="ext4"

[email protected] ~ $
En esta estructura el boot de NOOBS se reserva 2 particiones:

1) La partición física fat32 /dev/mmcblk0p1 con label RECOVERY.

2) La partición física ext4 /dev/mmcblk0p3 con label SETTINGS.

Las instalaciones independientes se definen como particiones lógicas dentro de la partición extendida /dev/mmcblk0p2.

Cada instalación independiente tiene al menos dos particiones: la boot que integra su kernel y la root. No obstante podrían definirse más particiones para datos si se precisara.

En el ejemplo que incluyo vemos las tres parejas de particiones de cada instalación:

1) Boot fat32 /dev/mmcblk0p5 (KERNELP) y root ext4 /dev/mmcblk0p6 (PRODUCCION)

2) Boot fat32 /dev/mmcblk0p7 (KERNELD) y root ext4 /dev/mmcblk0p8 (DESARROLLO)

3) Boot fat32 /dev/mmcblk0p9 (KERNELB) y root ext4 /dev/mmcblk0p6 (BACKUP)

Por lo que sé, con la estructura de NOOBS podrían definirse particiones root en discos externos pero todas las particiones del tipo boot deberán residir en la tarjeta.

Dentro de cada partición de boot existirá un fichero cmdline.txt que deberá apuntar a su correspondiente partición root. Por ejemplo, en el caso de KERNELP sería:

Code: Select all

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p6 rootfstype=ext4 elevator=deadline rootwait
El contenido de cada partición de root deberá ser consistente con la partición que ocupa. Eso no suele ser un problema y sólo influirá en el fichero /etc/fstab.

Code: Select all

[email protected] ~ $ cat /etc/fstab
proc            /proc           proc    defaults          0       0
/dev/mmcblk0p5  /boot           vfat    defaults          0       2
/dev/mmcblk0p6  /               ext4    defaults,noatime  0       1
/dev/mmcblk0p3  /media/SETTINGS ext4    defaults          0       2
# a swapfile is not a swap partition, so no using swapon|off from here on, use  dphys-swapfile swap[on|off]  for that
[email protected] ~ $

En una primera aproximación el contenido de la partición RECOVERY no requiere ningún retoque.

El dato más importante de NOOBS se encuentra en la partición SETTINGS, concretamente en su fichero noobs.conf:

Code: Select all

[General]
default_partition_to_boot=5
display_mode=0
keyboard_layout=es
language=us
Se trata del parámetro default_partition_to_boot que indica el número de la partición de la tarjeta SD donde reside el boot que debe arrancar. En este caso es el 5, o sea, KERNELP que posteriormente iniciará root de PRODUCCION.

Si editamos ese fichero y cambiamos a 7 o a 9 el parámetro arrancaríamos los otros dos sistemas instalados.

Podría explicar más detalles, pero creo que es suficiente para una primera aproximación.

unpeatonenlared
Posts: 306
Joined: Sun Aug 17, 2014 8:18 am
Contact: Website

Re: Seleccionar Particion en arranque sin usar teclado

Thu Oct 30, 2014 1:46 pm

Buenas tardes, me parece muy útil y completo el mini manual de NOOBS que has elaborado, pero creo entender que vidipi se refiere a añadir otros sistemas operativos que NOOBS no trae por defecto, es decir, sistemas operativos que no aparecen en esta lista:

Image

Quizás me equivoco, porque en el primer mensaje enviado por vidipi parecía que lo que buscaba era otra cosa, pero en su último post, he entendido que esto es lo que busca.

De todos modos gracias por la guía, al menos a mí me será útil si alguna vez necesito probar NOOBS para cualquier fin.
Mi blog sobre seguridad informática y Raspberry Pi:
http://www.peatonet.com

vidpi
Posts: 46
Joined: Thu Jun 05, 2014 12:40 pm

Re: Seleccionar Particion en arranque sin usar teclado

Thu Oct 30, 2014 2:11 pm

La guia completisima y perfecta. Ahora tengo que dedicarle algun tiempo a ver como la aplico :D

Es cierto que yo me refiero a instalar sistemas que no vienen en noobs. Por eso descarte desde el principio usarlo. Pero si se puede configurar a tal nivel, creo que seria posible configurarlo para otros sistemas.

El tema completo del noobs me parece interesante. Se le puede sacar mucho mas partido del que en principio parece tener. El ejemplo que ha puesto lmarmisa es mi caso. La Raspberri no es accesible facilmente para cambiarle la targeta, ademas, tal i como yo veo el conector SD cambiar mucho la targeta puede, a la larga, ser malo. Lo ideal es usar una tarjeta de arranque y tener las diferentes distribuciones en un soporte mas robusto y rapido como puede ser un USB.

Como dice unpeatonenlared lo que me gustaria es instalar una distro diferente a las que trae noobs, e igualmente ejecutarla por aqui.

Gracias

Por cierto, esta guia tendria que estar en algun sitio accesible, que me parece muy util.

Return to “Español”