Apartamento En Familia

Apartamento En Familia
Apartamento de playa para vacaciones. http://www.apartamentoenfamilia.es. Número registro HUTT-005768

miércoles, 12 de marzo de 2014

Arreglando el arranque mediante grub rescue



GNU GRUB (GNU GRand Unified Bootloader) es un gestor de arranque múltiple, desarrollado por el proyecto GNU que se usa comúnmente para iniciar uno, dos o más sistemas operativos instalados en un mismo equipo.
Se usa principalmente en sistemas operativos GNU/Linux. El sistema operativo Solaris ha usado GRUB como gestor de arranque en sistemas x86 desde la revisión 10 1/06.
(Fuente Wikipedia)

En alguna ocasión, casi siempre relacionado con instalaciones algo fuera de lo común (RAIDs, multiboot, etc) al acabar de instalar nuestro Ubuntu, reinicias la máquina y ZAS! nos sale la pantalla de grub rescue. Después de unos minutos de reflexión en el que nos preguntamos que habremos hecho mal, nos decidimos a arreglar el desaguisado. Para ello, tendremos que usar la shell de grub, buscar nuestro boot y decirle que arranque de ahí. 

Las indicaciones que os haré se han de adaptar muy bien a vuestra configuración particular (numero de discos duros, particiones, etc) ya que sino no os funcionará (no estropeareis en principio nada, simplemente no funcionará).

En mi ejemplo tendré: 1 disco duro con 4 particiones: dos particiones con NTFS, en otra Linux-swap y en otra ext4. 

Lo primero que haremos es inspeccionar un poco que tenemos. Eso lo haremos con el comando ls :

ls
(hd0) (hd0,msdos5) (hd0,msdos4) (hd0,msdos2) (hd0,msdos1)

Bien, ahora nuestra misión es saber en que partición está nuestro /boot . Para ello va bien entender que nos ha devuelto el comando ls. En el ejemplo, vemos que sale reflejado hd0. Bien, eso en el "mundo grub" sería equivalente a decir en lo que estamos acostumbrados (Identificación SCSI address-wise) /dev/sda. Para que nos hagamos la idea:

hd0 -> sda 
hd1 -> sdb
hd2 -> sdc

Luego tenemos las particiones. Esas vienen descritas por un numero al lado de la etiqueta msdos. Pero podemos dirigirnos a ellas sin la etiqueta. (hd0,msdos4) equivaldria en Identificación SCSI address-wise a /dev/sda4

Así que si traducimos la salida del ls anterior a Identificación SCSI address-wise tendremos que : 

/dev/sda
/dev/sda5
/dev/sda4
/dev/sda2
/dev/sda1

Como comenté más arriba, veo que tengo un disco y 4 particiones. 

Otra tabla de equivalencias que nos puede ser útil es esta (obviar el msdos):

(hd0,msdos1) ->  (hd0,1)
(hd0,msdos2) ->  (hd0,2)
(hd0,msdos4) ->  (hd0,4)
(hd0,msdos5) ->  (hd0,4)
 
Ahora bien... ¿en donde tengo ext4 con mi /boot? . Hemos de buscarlo. Para ello seguiremos usando el comando ls buscando en cada particion. Al final la encontraremos:



Como vemos en la imagen, al poner ls (hd0, msdos4)/ vemos la estructura de directorias típicas de Linux. ¡Eureka! . Ahora ya nos podemos poner a reestablecer nuestro grub:

set root=(hd0,4)
set prefix=/usr/lib/grub/i386-pc/
insmod linux
linux /boot/vmlinuz-3.2.0-23-generic root=/dev/sda4
initrd /boot/initrd.img-3.2.0-23-generic

y finalmente:

boot

Si todo ha ido bien, nuestro Linux arrancará. Digamos que lo que hemos hecho hasta ahora no ha sido arreglarlo, sino lo que hemos hecho es hacer a mano la faena del grub.

Una vez arrancado nuestro Linux, deberemos ir a la linea de comandos y como root escribir:

grub-install /dev/sda

Con esto se nos reparará nuestro grub.

viernes, 7 de marzo de 2014

Redimensionar un sistema btrfs+LVM


En entradas anteriores os comentaba como instalar y crear volúmenes LVM2 y cómo instalarnos un sistema de archivos btrfs. Pues bien, lo que os explicaré hoy es como dotar de más espacio a nuestro sistema de archivos de una manera prácticamente transparente. Por ejemplo, seria el caso de comprar un nuevo disco duro y querer que ese nuevo espacio sirva para ampliar el sistema de archivos ya instalado, y no simplemente crear un nuevo punto de montaje. Es decir, tomar nuestro sistema de almacenamiento como algo escalable.

Entradas anteriores:

Si tenemos un disco duro nuevo, lo primero que tenemos que hacer es agregarlo a nuestro grupo de discos LVM.Imaginemos que tenemos un grupo LVM llamado TA en el cual lo forman dos discos de 1TB:

# vgdisplay
  --- Volume group ---
  VG Name               TA
  System ID            
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               1,95 TiB
  PE Size               4,00 MiB
  Total PE              511486
  Alloc PE / Size       511486 / 1,95 TiB
  Free  PE / Size       0 / 0  
  VG UUID               C47LeR-oJJ6-DxBa-1J5d-h05t-bxKF-RXKrxE


Por otro lado tenemos el nuevo disco duro que queremos añadir al grupo de volumenes TA:

Disk /dev/sdh: 1072.7 GB, 1072668082176 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sdh1               1  2095054847  1047527423+  ee  GPT



Lo primero que tenemos que hacer es inicializar el disco para su uso con LVM:

pvcreate /dev/sdh1
  Physical volume "/dev/sdh1" successfully created


El siguiente paso es añadir el nuevo disco al grupo LVM (VG Name):

vgextend TA /dev/sdh1
  Volume group "TA" successfully extended

Ya lo tenemos añadido. Lo podemos comprobar con pvscan:

 pvscan
  PV /dev/sdf1   VG TA   lvm2 [999,00 GiB / 0    free]
  PV /dev/sdg1   VG TA   lvm2 [999,00 GiB / 0    free]
  PV /dev/sdh1   VG TA   lvm2 [999,00 GiB / 999,00 GiB free]


Ahora nos disponemos a extender el volumen LVM con el espacio nuevo disponible. Eso lo haremos con el comando lvextend. Para ello necesitaremos asegurarnos de cual es el nombre del volumen LVM que queremos ampliar del grupo de discos, y para ello nos ayudaremos del comando lvdisplay:

lvdisplay
  --- Logical volume ---
  LV Name                /dev/TA/TA-Disc
  VG Name                TA
  LV UUID                8WBuQc-xsfW-9eeN-XsWh-jGDl-b90u-4RrCZB
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                1,95 TiB
  Current LE             511486
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:2


Vemos que, en nuestro ejemplo, el nombre del volumen (LV Name) es /dev/TA/TA-Disc . Pues bien, ya podemos agrandar nuestro volumen:

lvextend /dev/TA/TA-Disc /dev/sdh1
  Extending logical volume TA-Disc to 2,93 TiB
  Logical volume TA-Disc successfully resized


Ahora nos queda un último paso, ya que pese a que el volumen LVM ya lo hemos ampliado con el nuevo disco, el sistema de archivos no se ha enterado y por tanto, al hacer df veremos que tenemos el mismo espacio de antes.

df -h
/dev/mapper/TA-TA--Disc    2,0T  1,7T  258G  88% /mnt/TA

Bien, como lo que estamos usando en nuestro ejemplo es el sistema de archivos btrfs, lo haremos de la siguiente manera (además en caliente):


btrfs filesystem resize max /mnt/TA
Resize '/mnt/TA' of 'max'


Y ahora si hacemos df:

df -h
/dev/mapper/TA-TA--Disc    3,0T  1,7T  1,3T  59% /mnt/TA

Ya tenemos nuestro nuevo espacio disponible.

Resumen


pvcreate /dev/sdh1

vgextend TA /dev/sdh1
lvextend /dev/TA/TA-Disc /dev/sdh1
btrfs filesystem resize max /mnt/TA 

(TA Grupo de Volumenes, TA-Disc Volumen Lógico y /dev/sdh1 el nuevo disco)




That u don't know what you've got 'til it's gone