Páginas

miércoles, 21 de septiembre de 2022

Freebsd tar Excluir Directorios

Fuente:
https://www.gnu.org/software/tar/manual/html_node/exclude.html#exclude

Ciertas opciones para tar le permite especificar un nombre para su archivo. Otras opciones le permiten decidir qué archivos incluir o excluir del archivo, en función de cuándo o si se modificaron los archivos, si los nombres de los archivos coinciden o no con los patrones especificados, o si los archivos están en directorios especificados.

Realizar copias con tar excluyendo directorios listados dentro de un archivo, utilizando la opción --exclude-from

Importamos el zpool copias


# zpool import copias

# zpool status
  pool: copias
 state: ONLINE
config:

	NAME        STATE     READ WRITE CKSUM
	copias      ONLINE       0     0     0
	  da0p1     ONLINE       0     0     0

errors: No known data errors

  pool: zroot
 state: ONLINE
config:

	NAME        STATE     READ WRITE CKSUM
	zroot       ONLINE       0     0     0
	  nvd0p4    ONLINE       0     0     0

errors: No known data errors

Creamos el archivo excluir_dirs.txt donde incluiremos todos los directorios a excluir de la copia

carlos@foo:~ % pwd


/usr/home/carlos

carlos@foo:~ % touch excluir_dirs.txt

Tenga en cuenta que las líneas del archivo se leen palabra por palabra. Uno de los los errores frecuentes es dejar espacios en blanco adicionales después de un nombre de archivo, que es difícil de detectar usando editores de texto. Sin embargo, las líneas vacías están bien

carlos@foo:~ % cat excluir_dirs.txt


./.ssh
./.dbus
./.mozilla
./.cache
./Descargas
./DevOps_Bootcamp
./Musica

# tar cfCv - /usr/home/carlos/ --exclude-from excluir_dirs.txt . | \
tar xpfC - /copias/tar_home_fbsd

-c Crear un nuevo archivo que contenga los elementos especificados

-f Leer el archivo desde o escribir el archivo en el fichero especificado

-C directorio, --cd directorio. En el modo c y r, esto cambia el directorio antes de añadir los siguientes archivos.

-v Produce una salida detallada. En los modos de creación y extracción, tar enumerará cada nombre de archivo a medida que se lea o escriba en el archivo.

-x Extraer al disco desde el archivo. Si un archivo con el mismo nombre aparece más de una vez en el archivo, cada copia será extraído, y las copias posteriores sobrescribirán las anteriores copias.

-p --preserve-permissions (sólo en modo x) Preserva los permisos de los archivos. Intenta restaurar los permisos completos

Exportar el zpool copias


# zpool export copias

carlos@foo:~ % ls -Fa


...
.ssh/
.cache/
.dbus/
.mozilla
Avanzado/
bhyve/
Dell-7390/
Descargas/
DevOps_Bootcamp/
docs/
Documentos/
Ebooks/
Escritorio/
excluir_dirs.txt
Imagenes/
Musica/
Plantillas/
Publico/
scripts/
Videos/

FreeBSD es genial!.

sábado, 3 de septiembre de 2022

Virtual Machine Linux en FreeBSD 13.1 con bhyve UEFI

Instalar Debian en una máquina virtual en FreeBSD 13.1 bhyve

Levantar (up) el dispositivo de túnel tap por defecto, agregando la siguiente línea al archivo /etc/sysctl.conf


echo "net.link.tap.up_on_open=1" >> /etc/sysctl.conf
sysctl net.link.tap.up_on_open=1

Firewall reglas pf


# Reglas para vm bhyve
pass in quick on bridge0 all keep state
pass in quick on tap0 all keep state
pass out quick on bridge0 all keep state
pass out quick on tap0 all keep state

Reiniciar pf


service pf restart

Cargar el controlador como módulo en el momento del arranque


# /boot/loader.conf
echo 'vmm_load="YES"' >> /boot/loader.conf
echo 'nmdm_load="YES"' >> /boot/loader.conf
echo 'if_tap_load="YES"' >> /boot/loader.conf
echo 'if_bridge_load="YES"' >> /boot/loader.conf

Crear un bridge


ifconfig bridge create
bridge0

Añadir como miembro del puente la interfaz em0


ifconfig bridge0 addm em0

Cambiar el nombre de la interfaz bridge0


ifconfig bridge0 name em0bridge
em0bridge

Activar la interfaz


ifconfig em0bridge up

Crear una nueva interfaz de tap de nombre tap0


ifconfig tap0 create

Agregar la interfaz a em0bridge0


ifconfig em0bridge0 addm tap0

Activar la interfaz tap0


ifconfig tap0 up

Habilitar los dispositivos de red para su arranque automático


# byhve /etc/rc.conf
cloned_interfaces = "bridge0 tap0"
ifconfig_bridge0_name = "em0bridge"
ifconfig_em0bridge = "addm em0 addm tap0 up"

Crear un volumen de 20 Gb zfs


zfs create -V20G -o volmode=dev zroot/debianvm

Descargar la imagen debian-11.4.0


cd /tmp/
wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-11.4.0-amd64-netinst.iso

Instalar paquetes necesarios y sus dependencias


pkg install grub2-bhyve bhyve-firmware

New packages to be INSTALLED:
	bhyve-firmware: 1.0_1
	edk2-bhyve: g202202_1
	grub2-bhyve: 0.40_8
	uefi-edk2-bhyve-csm: 0.2_3,1

Instalar la VM debian 11.4.0 bajo FreeBSD


bhyve -c 4 -m 1G -w -H \
-s 0,hostbridge \
-s 3,ahci-cd,/tmp/debian-11.4.0-amd64-netinst.iso \
-s 4,virtio-blk,/dev/zvol/zroot/debianvm \
-s 5,virtio-net,tap0 \
-s 29,fbuf,tcp=0.0.0.0:5900,w=800,h=600,wait \
-s 30,xhci,tablet \
-s 31,lpc -l com1,stdio \
-l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd debianvm

man bhyve

-m memsize[K|k|M|m|G|g|T|t] Establece el tamaño de la memoria física del huésped

-H: sistema de archivos host para exportar al cargador

-l: el cargador del sistema operativo que se utilizará - uefi

-s: configure una ranura PCI virtual y otras funciones, como disco duro, cdrom y otros dispositivos.

-c Número de CPUs virtuales invitadas y/o la topología de la CPU. El valor por defecto de para cada uno de numcpus, sockets, cores y hilos es 1

-W Forzar las emulaciones de dispositivos PCI de virtio para que usen las interrupciones MSI en lugar de las interrupciones MSI-X.

-l lpcdev,conf Permite configurar los dispositivos detrás del puente LPC PCI-ISA. Los únicos dispositivos soportados son los de clase TTY com1, com2, com3 y com4

-l help Imprimir una lista de dispositivos LPC soportados.


bhyve -l help
bootrom
com1
com2
com3
com4
pc-testdev

-s help Imprimir una lista de dispositivos PCI soportados.


bhyve -s help
ahci
ahci-hd
ahci-cd
e1000
dummy
hda
fbuf
amd_hostbridge
hostbridge
lpc
nvme
passthru
virtio-9p
virtio-blk
virtio-console
virtio-net
virtio-rnd
virtio-scsi
uart
xhci

Instalar un cliente vnc


pkg install tigerviewer

Script que inicia la vm debian


#!/bin/sh
#
bhyve -c 1 -m 1G -w -H \
-s 0,hostbridge \
-s 4,virtio-blk,/dev/zvol/zroot/debianvm \
-s 5,virtio-net,tap0 \
-s 29,fbuf,tcp=0.0.0.0:5900,w=1024,h=768 \
-s 30,xhci,tablet \
-s 31,lpc -l com1,stdio \
-l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd debianvm

Llegados a este punto accedemos al instalador de Debian 11 Linux, iniciando la máquina virtual y el cliente VNC TigerVnc viewer. Escriba la dirección del servidor y el puerto, en mi caso


192.168.88.51:5900

clic en Conectar para empezar con la instalación

Al finalizar la instalación haga clic en Retroceder y

ejecute un shell para instalar el cargador de arranque uefi

sino la vm no se iniciará y eso no es lo que quiere

Ejecutar un shell

Crear el directorio BOOT


mkdir /target/boot/efi/EFI/BOOT/

Copiar grubx64.efi a /targe/boot/efi/EFI/BOOT/bootx64.efi


cp /target/boot/efi/EFI/debian/grubx64.efi /target/boot/efi/EFI/BOOT/bootx64.efi
exit

Terminar la instalación

Continuar

Iniciar la vm debian

Usando un script para iniciar la VM


#!/bin/sh
bhyve -c 4 -m 1G -w -H \
-s 0,hostbridge \
-s 3,ahci-cd,/tmp/debian-11.4.0-amd64-netinst.iso \
-s 4,virtio-blk,/dev/zvol/zroot/debianvm \
-s 5,virtio-net,tap0 \
-s 29,fbuf,tcp=0.0.0.0:5900,w=800,h=600,wait \
-s 30,xhci,tablet \
-s 31,lpc -l com1,stdio \
-l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd \
debianvm

chmod +x /usr/home/carlos/scripts/startdebian.sh
cd /usr/home/carlos/scripts
./startdebian.sh

Permitir acceso ssh a la vm debian

Archivo de configuracion de ssh /etc/ssh/sshd_conf


PermitRootLogin no
AllowUsers carlos@192.168.88.*
Reiniciar servicio
systemctl restart sshd

Acceder via ssh a la vm debian


% ssh carlos@192.168.88.101
The authenticity of host '192.168.88.101 (192.168.88.101)' can't be established.
ED25519 key fingerprint is SHA256:/vYJensJh11xpGCdbwe2pLNGTPtRlkw1y0bsABU3XtE.
No matching host key fingerprint found in DNS.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

FreeBSD es genial!.

jueves, 1 de septiembre de 2022

ZFS Freebsd no Arranca Reparar Sistema

Propiedad canmount zroot/ROOT/default


 zfs get -r -s local -o name,property,value all zroot|grep canmount
 zroot/ROOT/be_28082022      canmount              noauto
 zroot/ROOT/default          canmount              noauto
 zroot/usr                   canmount              off
 zroot/var                   canmount              off

Cuando se establece el valor noauto, un conjunto de datos sólo puede ser montado y desmontado explícitamente. El conjunto de datos no se monta automáticamente cuando se crea o se importa, ni se monta mediante el comando "zfs mount -a" ni se desmonta con el comando "zfs umount -a".

Esta propiedad no se hereda.


Iniciar con el cd de instalacion de FreeBSD 13

Cuando vea en pantalla Install Shell Livecd

Entrar en el shell

Ir a /tmp

cd /tmp

Crear un directorio


 mkdir /tmp/montado

Importar zroot


 zpool import -f -R /tmp/montado zroot

Enumerar la información de las propiedades de los conjuntos de datos en forma de tabla


 zfs list

Montar el conjunto de datos zroot/ROOT/default


 zfs mount zroot/ROOT/default

 mount -a

Entrar en /tmp/montado.


 cd /tmp/montado

Restaurar Cargador de Arranque


Llegados a este punto, el sistema es accesible. Si realizó una instalación utilizando el asistente de FreeBSD


Montar boot para restablecer boot loader


 mount -t msdosfs /dev/gpt/efiboot0 /tmp/montado/boot/efi
 cp /boot/loader.efi /tmp/montado/boot/efi/efi/boot/bootx64.efi

Si ha realizado un particionado manual añadiendo particiones con etiquetas (-l label) para acceder a ellas por su nombre:


Montar boot explícitamente, particionado manual


 mount -t msdosfs /dev/gpt/efi0 /tmp/montado/boot/efi0
 cp /boot/loader.efi /tmp/montado/boot/efi0/efi/boot/bootx64.efi

Ahora tiene acceso a todo el sistema


Por ejemplo puede editar el archivo rc.conf utilizando ruta absoluta


 vi /tmp/montado/etc/rc.conf

O utilizando ruta relativa


 pwd
/tmp/montado
 ee boot/loader.conf

 cd
 umount /tmp/montado
 zfs umount zroot/ROOT/default
 zpool export zroot
  o
 zpool export -f zroot
zfs list no datasets available

Reiciniar el sistema


 reboot

FreeBSD es genial!.