miércoles, 26 de junio de 2019

Montar partición LVM2 de disco virtual vmdk

Montar partición LVM2 de disco virtual vmdk Si queremos montar una partición vmdk y nos da el siguiente error LVM2_member entonces es que la máquina virtual está particionada utilizando LVM. Lo que nos lleva a realizar el siguiente procedimiento para poder montar la misma.
Utilizando las siguientes herramientas:
  • vmware-mount
  • vmware-vdiskmanager
  • losetup
  • fdisk
Lo primero que tenemos que hacer es listar las particiones existentes en la imagen de nuestra máquina virtual.

# vmware-mount -p <maquina_virtual>.vmdk
# vmware-mount -p <virt_machine>.vmdk
Nr      Start       Size Type Id Sytem
-- ---------- ---------- ---- -- ------------------------
 1         63     401562 BIOS 83 Linux
 2     401625   10072755 BIOS 8E Unknown

En el listado podemos observar que la partición que estamos buscando es la número 2, ya que es la que tiene marcada el Id 8E (8E stands for Linux LVM) . El siguiente paso será montar la imagen vmware, para ello ejecutaremos el siguiente comando:

# vmware-mount -f <maquina_virtual>.vmdk <mountpoint>
# ls <mountpoint>
flat
Se nos generará en el punto de montaje un archivo llamado flat.Que utilizaremos para poder montar las particiones LVM.

Nota: Si nos diera error de que el archivo está dañado o corructo, con un error por ejemplo 16006. Debemos reparar la imagen ejecutando la siguiente línea de comando:
 
# vmware-vdiskmanager -R <maquina_virtual>.vmdk

Sobre el archivo flat ejecutaremos fdisk para inspeccionar su contenido.

# fdisk -lu <mountpoint>/flat
You must set cylinders.
You can do this from the extra functions menu.

Disk <mountpoint>/flat: 0 MB, 0 bytes
255 heads, 63 sectors/track, 0 cylinders, total 0 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x0006a266

         Device Boot      Start         End      Blocks   Id  System
<mountpoint>/flat1   *          63      401624      200781   83  Linux
<mountpoint>/flat2          401625    10474379     5036377+  8e  Linux LVM
Ahora que tenemos la direcciópn de inicio y final, podemos calcular el offset para montar la partición LVM. Para ello tomamos nota de la dirección de incio y aplicamos la siguiente ecuación:

echo $(( 401625 * 512 ))
205632000
Conocido el offset podemos montar en un dispostivo del tipo loop para poder mapear las unidades vinculadas al mismo.

losetup -o 205632000 /dev/loop0 <mountpoint>/flat
Para ver los dispositivos asociados con el volumen físico ejecutamos el siguiente comando:

# pvdisplay /dev/loop0
  --- Physical volume ---
  PV Name               /dev/loop0
  VG Name               VolGroup00
  PV Size               4,80 GB / not usable 22,34 MB
  Allocatable           yes
  PE Size (KByte)       32768
  Total PE              153
  Free PE               1
  Allocated PE          152
  PV UUID               MUKx5v-ukpq-fJis-GjpB-Z7dE-nIsI-Xr4bYd

# lvscan
  ACTIVE            '/dev/vg1/isos' [111,79 GB] inherit
  ACTIVE            '/dev/vg0/root' [10,00 GB] inherit
  ACTIVE            '/dev/vg0/swap' [8,00 GB] inherit
  ACTIVE            '/dev/vg0/home' [50,00 GB] inherit
  ACTIVE            '/dev/vg0/data' [164,41 GB] inherit
  inactive          '/dev/VolGroup00/LogVol00' [4,00 GB] inherit
  inactive          '/dev/VolGroup00/LogVol01' [768,00 MB] inherit
El siguiente paso es activar el volumen lógico para poder montarlo:

lvchange -ay /dev/VolGroup00/LogVol00
Ahora ya podemos montar los volumenes para analizarlos:

mount /dev/VolGroup00/LogVol00 <mountpoint>
Para desmontar la unidad seguiremos los siguientes pasos:

umount <mountpoint> # Desmontamos la unidad
lvchange -an /dev/VolGroup00/LogVol00 # Desactivamos el volumen lógico
losetup -d /dev/loop0 # Desmontamos el loop
vmware-mount -d <mountpoint> # Desmontamos la imagen de Disco de vmdk

jueves, 17 de enero de 2019

Configurar un repositorio local Apt

Repositorio_Apt

Configurar un repositorio local

APT es un gestor de paquetes debian (.deb). El repositorio es un indice para buscar, instalar y actualizar paquetes en Linux. La idea de guia es configurar un repositorio "local".
Se puede crear un repositorio complejo o simple. En está guía se creará un repositorio Simple.
La ruta utilizada a modo de ejemplo sera: /usr/local_repo
El proceso se compone de tres paso:
  • Descargar y almacenar los paquetes.
  • Escaneo del directorio local, para crear el archivo de indice.
  • Agregar la ruta del Archivo indice a /etc/apt/source.list.

Descarga de paquetes Debian

Para la descarga de paquetas podemos seleccionar cualquiera de los mirrors de https://www.debian.org/mirror/list. Los mirrors principales suelen tener la estructura ftp.<country>.debian.org y los secundarios que pueden ser de cualquier otro organismo, pero estos pueden tener restricciones en la descarga o acceso.
Los paquetes de instalación se encuentran en el directorio /pool/que contiene tres subdirectorios:
  • main: Contien el gran mayoría de los paquetes de debian que cumplen con los requisitos de ser libres y con los 10 principios de Debian.
  • contrib: Cumple los requisitos debian pero usa paquetes no libres para su compilación o ejecución.
  • non-free: Son los paquetes privativos como de Intel,atmel etc. Sobretodo podemos encontrar el firmware de aquellos dispositivos privativos.

Escanear el directorio con "dpkg-scanpackages"

dpkg-scanpackages busca los paquetes binarios de Debian en un árbol de directorios, creando un fichero "Packages".
El comando espera el directorio (path) y el archivo de anulación. Para un repo simple no es necesario, por tanto mandamos la salida a /dev/null.
A la hora de crear el repositorio tenemos que canalizar la salida STDOUT al archivo Packages.gz con gzip, que funcionara como indice del repositorio.
paperclip
$ sudo dpkg-scanpackages <directorio-del-repositorio> /dev/null |gzip - c9 > <directorio-del-repositorio>/Packages.gz

Añadir fichero Release y firma

Para evitar los mensajes de seguridad de apt debemos crear el archivo Release y Release.gpg. Para crear el archivo Release utilizaremos el comando apt-ftparchive con la siguiente línea de comando:
paperclip
$ sudo apt-ftparchive release <directorio-del-repositorio> > <directorio-del-repositorio>/Release
Para firmar el archivo debemos utilizar la herramienta gpg con el siguiente comando:
paperclip
$ sudo gpg --sign -ba -o <directorio-del-repositorio>/Release.gpg <directorio-del-repositorio>/Release
  • Nota: Si no tenemos configurada una firma, la podemos crear mediante: $ sudo gpg --gen-key. Finalmente añadiremos la public key mediante:
paperclip
$ sudo --export --armor > Public.key # Exportamos la Clave Publica al fichero $ sudo apt-key add Public.key # Añadimos la clave a apt

Actualizar source.list

Para añadir el directorio como fuente, es necesario modificar el archivo source.list que se encuentra en /etc/apt/source.list.
Le añadiremos la siguiente linea:
paperclip
deb file:<ruta_directorio_local> ./ # Directorio Local
y ejecutamos $ sudo apt update.