Páginas

sábado, 22 de octubre de 2022

FreeBSD 13.1 Como Sistema Operativo de Escritorio

Fuente

https://www.daemonology.net/blog/2020-05-22-my-new-FreeBSD-laptop-Dell-7390.html


Dell Latitude 7390 Intel i5 8th Gen
CPU: Intel(R) Core(TM) i5-8350U CPU @ 1.70GHz (L3 cache 6M)
FreeBSD/SMP: Multiprocessor System Detected: 8 CPUs
Memoria 16 GB RAM
Disco 500 GB Pcie M.2 Nvme
Una pantalla 13.3" 1920x1080 (non-touch)
Intel(R) Wireless WiFi based driver for FreeBSD
iwm0: Intel(R) Dual Band Wireless AC 8265
Una Bateria 60 W-hour

Instalación

Enlace de descargas de FreeBSD

Elija la arquitectura correcta para su sistema, por lo regular, amd64

Descargar una imagen completa para grabar en una memoria USB

Grabar la imagen utilizando disk destroyer (dd)


$ xunz FreeBSD-13.1-RELEASE-amd64-memestick.img.xz
$ sudo dd if=./FreeBSD-13.1-RELEASE-amd64-memestick.img of=/dev/sdx status=progress
$ sudo pkg install eject
$ rehash
$ sudo eject /dev/sdx

Antes de instalar


- Deshabilitar arranque seguro desde la BIOS
- Habilitar el arranque USB
- Seleccione el dispositivo de arranque en el momento del inicio

Iniciar instalación

FreeBSD tiene un instalador controlado por menús que guía al usuario a través de varios pasos:


1. establecer mapa del teclado
2. establecer nombre de host
3. seleccionar conjuntos

Hay muchos conjuntos para elegir. Los nuevos usuarios probablemente quieran instalarlos todos. Por lo general, solo instalo el lib32 establecer y agregar el resto más tarde.

Particionado

bsdinstall facilita la partición de sus unidades. La opción Auto (ZFS) es probablemente lo que desea.

En el Auto (ZFS) menú, para una instalación de un solo disco duro. Seleccione su disco duro.

Si quiere el cifrado de disco completo, seleccione el Encrypt Disks opción.

También aumente el tamaño de intercambio swap. El tamaño del intercambio igual a la RAM física (16 GB en este caso).

Si seleccionó Encrypt Disks, también debe seleccionar Encrypt Swap

Cuando haya terminado, continúe con la instalación. Recibirá un mensaje de confirmación que le preguntará si desea destruir el disco que seleccionó. Esta es tu última oportunidad de volver atrás.

Si seleccionó Encrypt Disks se le presentará una solicitud de contraseña. Esta es la contraseña de cifrado del disco, no una contraseña de usuario.

Espere a que se instalen los conjuntos

Configurar usuario raíz

Después de instalar los conjuntos, establecerá una contraseña de root.

Configuración de red

Si su tarjeta inalámbrica es compatible, todas las partes difíciles ya están listas. Si su tarjeta inalámbrica no es compatible, conecte un cable ethernet para compilar los controladores en el kernel.

Seleccione su tarjeta (em0 ethernet, las tarjetas wifi llevan el nombre de sus controladores)

Si elige wifi, el instalador buscará redes y le dará un menú para seleccionar una. Si la red está encriptada, se le presentará una solicitud de contraseña.

Configuración de fecha y hora

Configuración de servicio

Se le presentará un menú que habilita/deshabilita servicios al iniciar el sistema. Seguramente no desea local_unbound.

Configuración de seguridad

El siguiente menú habilita/deshabilita las funciones de seguridad seleccione
disable_sendmail y clear_tmp

Agregar usuarios

Simplemente agregue su usuario y agregar lo al grupo wheel si planea usar sudo.

Configuré mi shell en tcsh, cambiaré a zsh más adelante.

Configuración final

Cuando haya terminado, aplique la configuración y salga.

Reiniciar


# reboot

Configuración manual

Antes de reiniciar el sistema y salir del instalador, se le brinda una última oportunidad para realizar cualquier configuración manual pero rara vez es necesario para el usuario de escritorio.

Inicie sesión como root y actualice el sistema:


# freebsd-update fetch
# freebsd-update install
# reboot

Apagar el pitido de la consola


# echo kern.vt.enable_bell=0 >> /etc/sysctl.conf

Instalar paquetes


# pkg bootstrap
# pkg update
# pkg install vim

# pkg install sudo
# visudo

En esta línea quitar la almohadilla (#) para permitir al grupo wheel realizar acciones como root.


# %wheel ALL=(ALL:ALL) ALL

Interfaz gráfica de usuario

Esto varía dependiendo de su GPU.


# pkg install drm-kmod

Después de instalar este paquete, verá un mensaje sobre cómo habilitar el controlador para su hardware específico:


For amdgpu: kld_list="amdgpu"
For Intel: kld_list="i915kms"
For radeonkms: kld_list="radeonkms"

Para habilitar uno de estos, deberá agregar una línea a su /etc/rc.conf. Cuanto antes coloque esta línea en el archivo, antes se cargarán los kmods.

Cargar el controlador de video Intel:


sysrc kld_list=i915kms

Para cargar el kmod ahora, ejecute


kldload i915kms

También deberá agregar su usuario no root al grupo video


# pw groupmod video -m carlos


Instalar Xorg


# pkg install xorg

Entorno de escritorio


# sysrc dbus_enable="YES" 
# service dbus start
# pkg install -y plasma5-plasma
# pkg install -y konsole
# pkg install -y xf86-video-intel
# pkg install -y sddm
# pw groupmod video -m carlos
# pkg install -y plasma5-sddm-kcm
# pkg install -y sddm-freebsd-black-theme
# printf 'proc\t/proc\tprocfs\trw\t0\t0\n' >> /etc/fstab
# printf 'fdesc\t/dev/fd\tfdescfs\trw\t0\t0\n' >> /etc/fstab
# sysrc sddm_enable="YES"

Xorg, que use dispositivos expuestos a través de libinput (es decir, el touchpad)


# cp /usr/local/share/X11/xorg.conf.d/40-libinput.conf \
    /usr/local/etc/X11/xorg.conf.d/

Sonido

Para que el sonido vaya a los altavoces de forma predeterminada, y cambie a la toma de auriculares y silenciar los altavoces automáticamente si conecto los auriculares.


# echo 'hint.hdaa.0.nid33.config="as=1 seq=15"' >> /boot/loader.conf

Un error en el códec HDMI genera advertencias molestas una solución alternativa que permite silenciar las advertencias:


# echo 'compat.linuxkpi.i915_disable_power_well="0"' >> /boot/loader.conf

Teclas control volumen


Fn+F1 silenciar, Fn+F2 bajar volumen, Fn+F3 subir volumen

Que el cargador de arranque sólo espere 2 segundos en caso de que quiera cambiar la forma en que arranque, y que el kernel de FreeBSD no espere a los dispositivos USB antes de montar el sistema de archivos raíz (sé que mi sistema de archivos raíz está en el disco Nvme):


 # echo 'autoboot_delay="2"' >> /boot/loader.conf
 # echo 'hw.usb.no_boot_wait="1"' >> /boot/loader.conf

# ntpdate y ntp /etc/rc.conf


ntpd_enable="YES"
ntpd_config="/etc/ntp.conf"
netwait_enable="YES"

Tomar el control del brillo de la pantalla con las teclas Fn+Up, Fn+Down


# pkg install intel-backlight
# echo 'acpi_video_load="YES"' >> /boot/loader.conf
# cp /usr/local/share/examples/intel-backlight/acpi-video-intel-backlight.conf \
    /usr/local/etc/devd/

Reiniciar


# reboot

Otros paquetes


# sudo pkg install coreutils emacs gcc gmake firefox libreoffice thunderbird \
chromium automake libtool vlc obs-studio htop

Si instala un entorno de escritorio grande, la mayoría de las aplicaciones también se incorporan. Si no, siempre puede usar xargs para obtener cientos de gigabytes de programas:

Listar los paquetes que coincidan con kde


$ sudo pkg search kde | cut -d ' ' -f 1

Instalar los paquetes que coincidan con kde


$ sudo pkg search kde | cut -d ' ' -f 1 | xargs sudo pkg install -y

A veces, los escritorios se comportan de forma inesperada en FreeBSD (es decir, los usuarios no pueden administrar la configuración de energía, reiniciar el sistema, etc.). Asegúrese de que su usuario de inicio de sesión esté en el grupo de wheel y la mayoría de los problemas se resolverán. Para los usuarios que no desea en el grupo de wheel, deberá escribir algunas reglas de polkit.

Además, los escritorios grandes generalmente se compilan sin los componentes gráficos para modificar las conexiones de red.

Shells

FreeBSD usa tcsh(1) como shell predeterminado e incluye sh(1) para compatibilidad similar a Bourne

Instalar zsh con Oh-my-zsh


$ sh -c "$(curl -fsSL \
https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"


Redes


# /etc/rc.conf
ifconfig_em0="ether e4:b9:7a:6b:96:cd"
wlans_iwm0="wlan0"
cloned_interfaces="lagg0"
ifconfig_lagg0="laggproto failover laggport em0 laggport wlan0 SYNCDHCP"
create_args_wlan0="country ES regdomain ETSI"
ifconfig_wlan0="WPA"
wpa_supplicant_program="/usr/sbin/wpa_supplicant"
defaultroute_delay="0"
background_dhclient="YES"

Las interfaces de red se configuran clásicamente usando ifconfig(8). Si desea que una interfaz de red persista durante los reinicios, agregue la información en /etc/rc.conf.

WiFi se gestiona con wpa_supplicant


$ dmesg|grep -i wireless
Intel(R) Wireless WiFi based driver for FreeBSD
iwm0: <Intel(R) Dual Band Wireless AC 8265> mem 0xef100000-0xef101fff at \
device 0.0 on pci2

Archivo /etc/wpa_supplicant FreeBSD

Encriptar password de la contraseña wifi


$ wpa_passphrase MikroTik-39F9C1 contraseñawifi
psk=c35edacaf6c649c6df522451c801f98e918bc376d335d0dedd686770dad7f6c0

Para utilizar la versión de puertos de WPA Supplicant en lugar de la base, agregue


wpa_supplicant_program="/usr/sbin/wpa_supplicant" a /etc/rc.conf

$ cat /etc/rc.conf|grep wpa_supplicant | grep wpa_supplicant
wpa_supplicant_program="/usr/sbin/wpa_supplicant"

Aspecto final del archivo wpa_supplicant


$ cat /etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant

network={
 ssid="MikroTik-39F9C1"
 scan_ssid=1
 psk=c35edacaf6c649c6df522451c801f98e918bc376d335d0dedd686770dad7f6c0
}

Gestión de paquetes

Hay dos formas principales de administrar software: paquetes binarios y puertos. No los mezcle si no sabe lo que está haciendo, puede causar problemas.

Para ser breve: los puertos son como Gentoo. Pasas mucho tiempo viendo la salida del compilador. Los siguientes programas ayudan: synth, portmaster, poudriere para ser detallado: Guía rápida sobre el uso del sistema de administración de paquetes binarios:


pkg update
pkg upgrade
pkg search foobar
pkg install foobar
pkg remove foobar
pkg autoremove

Proceso General de Actualización


pkg update 
pkg upgrade
freebsd-update upgrade -r 13.1-RELEASE
freebsd-update fetch
reboot
freebsd-update install
pkg update 
pkg upgrade
freebsd-update install
reboot

Sistema de archivos

La jerarquía de FreeBSD es ligeramente diferente a la de un sistema Linux. Consulte man hier(7) para obtener más información.
La mayor diferencia es que FreeBSD es un sistema organizado lógicamente. En FreeBSD, el sistema está más organizado. Por ejemplo:
/bin contiene todo lo necesario para iniciar el sistema y /sbin contiene todo lo necesario para la administración fundamental.

/usr/bin contiene casi todo lo demás

/usr/local contiene todo lo instalado por el sistema de administración de paquetes.

Los programas instalados por el usuario se configuran en /usr/local/etc. Puede ser confuso al principio, pero lo dominarás.

Esta separación lógica puede causar confusión al compilar software desde la fuente en FreeBSD, pero no es demasiado difícil de resolver si ya conoce las opciones del enlazador y la modificación del archivo MAKE.

Montar unidades fat32

Crear directorio de montaje


# mkdir /media/usbFAT32

Montar usb fat32 como usuario carlos


% mount -t msdosfs /dev/da0p2 /media/usbFAT32

Montar un dispositivo conectado via usb fs linux ext4

Instalar paquetes


# pkg install fusefs-ext2 fusefs-lkl

Verificar nombre del dispostivo


% gpart show da0
=>     2048  976771087  da0  GPT  (466G)
       2048  362371072    1  linux-data  (173G)
  362373120   40960000    2  ms-basic-data  (20G)
  403333120  573440015       - free -  (273G)

Montar el dispositivo sistema de ficheros ext4 /dev/da0p1


% lklfuse -o type=ext4,rw /dev/da0p1 /media/linuxEXT4/

Automount montar sistemas de ficheros automáticamente.

Cuando se llama sin opciones, el comando automount analiza el auto_master(5) archivo de configuración y cualquier mapa directo al que haga referencia, y monta o desmonta los sistemas de archivos autofs(5) para que coincidan. Estas opciones están disponible


      -D Definir una variable. Solo es útil con -L.

      -L No montar ni desmontar nada.

      -c Vaciar cachés, descartando información posiblemente obsoleta obtenida 
         de mapas y servicios de directorio.

      -f Forzar desmontar, para ser usado con -u.

      -o Especifique las opciones de montaje que se utilizarán junto con las 
         especificadas en los mapas. Solo es útil con -L.

      -u Intenta desmontar los sistemas de archivos montados por automountd.

      -At Para desmontar todos los montajes de autofs use unmount -At

      -v Aumentar la verbosidad.

Instalar automount


# pkg install automount
# cp /usr/local/etc/automount.conf.sample /usr/local/etc/automount.conf

Esta archivo contiene una linea que permite al usuario montar particiones que el sistema reconozca

El demonio de la cámara web ya está instalado (kde5 lo incorpora como una dependencia), para habilitado y que el usuario carlos pueda acceder a él:


# echo 'cuse_load="YES"' >> /boot/loader.conf
# sysrc webcamd_enable="YES"
# pw groupmod webcamd -m carlos

$ pkg info


FreeBSD es genial!.

viernes, 21 de octubre de 2022

ZFS Cifrar Conjunto de Datos Dataset FreeBSD

https://www.oracle.com/technical-resources/articles/solaris/how-to-manage-zfs-encryption.html

ZFS Datasets Encriptados

Resultado de shell que muestra la lista de conjuntos de datos

$ zfs list


NAME                                           USED  AVAIL     REFER  MOUNTPOINT
zroot                                         14.1G   420G       96K  /zroot
zroot/ROOT                                    12.1G   420G       96K  none
zroot/ROOT/13.1-RELEASE-p2_2022-10-19_233328     8K   420G     2.63G  /
zroot/ROOT/13.1-RELEASE_2022-10-19_232051        8K   420G     1.33G  /
zroot/ROOT/default                            12.1G   420G     11.4G  /
zroot/encrypt                                   96K  30.0G       96K  /zroot/encrypt
zroot/tmp                                      288K   420G      152K  /tmp
zroot/usr                                     1.97G   420G       96K  /usr
zroot/usr/home                                 350M   420G      308M  /usr/home
zroot/usr/ports                                912M   420G      912M  /usr/ports
zroot/usr/src                                  759M   420G      759M  /usr/src
zroot/var                                     1.16M   420G       96K  /var
zroot/var/audit                                 96K   420G       96K  /var/audit
zroot/var/crash                                 96K   420G       96K  /var/crash
zroot/var/log                                  592K   420G      384K  /var/log
zroot/var/mail                                 200K   420G      144K  /var/mail
zroot/var/tmp
104K   420G       96K  /var/tmp

Listar snapshots

$ zfs list -t snapshot


NAME                                                              USED  AVAIL     REFER  MOUNTPOINT
zroot@baseMateKdeInstall                                            0B      -       96K  -
zroot/ROOT@baseMateKdeInstall                                       0B      -       96K  -
zroot/ROOT/13.1-RELEASE-p2_2022-10-19_233328@baseMateKdeInstall     0B      -     2.63G  -
zroot/ROOT/13.1-RELEASE_2022-10-19_232051@baseMateKdeInstall        0B      -     1.33G  -
zroot/ROOT/default@2022-10-19-23:20:51-0                         77.8M      -     1.33G  -
zroot/ROOT/default@2022-10-19-23:33:28-0                         34.2M      -     2.63G  -
zroot/ROOT/default@baseMateKdeInstall                             533M      -     11.9G  -
zroot/tmp@baseMateKdeInstall                                      136K      -      168K  -
zroot/usr@baseMateKdeInstall                                        0B      -       96K  -
zroot/usr/home@baseMateKdeInstall                                41.3M      -      224M  -
zroot/usr/ports@baseMateKdeInstall                                  8K      -      912M  -
zroot/usr/src@baseMateKdeInstall                                    8K      -      759M  -
zroot/var@baseMateKdeInstall                                        0B      -       96K  -
zroot/var/audit@baseMateKdeInstall                                  0B      -       96K  -
zroot/var/crash@baseMateKdeInstall                                  0B      -       96K  -
zroot/var/log@baseMateKdeInstall                                  208K      -      336K  -
zroot/var/mail@baseMateKdeInstall                                  56K      -      144K  -
zroot/var/tmp@baseMateKdeInstall                                    8K      -       96K  -


Creación y uso de conjuntos de datos cifrados, ejemplo simple de habilitación del cifrado.

Administrar claves de cifrado localmente. Si no especifica ninguna política de administración de claves, ZFS solicitará interactivamente una frase de contraseña. Esto probablemente no es ideal en la mayoría de las implementaciones de centros de datos, por lo que en su lugar necesitamos obtener la clave a través de medios no interactivos desde otro lugar. La clave de ajuste puede ser una frase de contraseña o una clave AES sin procesar. El método no interactivo más simple es almacenar la clave de ajuste o frase de contraseña en un archivo y decirle a ZFS qué archivo buscar para esa clave. Si utiliza este método, se supone que el otro sistema de archivos es suficientemente seguro por otros medios, como estar en un disco extraíble. La clave de ajuste solo es necesaria en el momento en que el sistema de archivos ZFS se monta inicialmente después del arranque del sistema, por lo que los medios extraíbles se pueden quitar más tarde si es necesario.


 $ zfs create -o encryption=on -o keylocation=prompt -o \
 keyformat=passphrase zroot/encrypt
Enter new passphrase:
Re-enter new passphrase:

Zfs Listar el dataset zroot/encrypt


 $ zfs list zroot/encrypt 
NAME            USED  AVAIL     REFER  MOUNTPOINT
zroot/encrypt   200K   420G      200K  /zroot/encrypt

Crear un archivo dentro del dataset


 $ touch /zroot/encrypt/supersecret

Zfs creación del conjunto de datos con una cuota


 $ zfs set quota=30g zroot/encrypt

Zfs obtener encryption


 $ zfs get encryption zroot/encrypt 
NAME           PROPERTY    VALUE        SOURCE
zroot/encrypt  encryption  aes-256-gcm  -

Zfs desmontar dataset


 $ zfs unmount zroot/encrypt

Zfs descargar llave


 $ zfs unload-key -r zroot/encrypt 
1 / 1 key(s) successfully unloaded

No se monta directamente


 $ zfs mount zroot/encrypt 
cannot mount 'zroot/encrypt': encryption key not loaded

Zfs obtener estado actual de la llave


 $ zfs get keystatus zroot/encrypt 
NAME           PROPERTY   VALUE        SOURCE
zroot/encrypt  keystatus  unavailable  -

Zfs cargar llave


 $ zfs load-key -r zroot/encrypt 
Enter passphrase for 'zroot/encrypt':
1 / 1 key(s) successfully loaded

$ zfs mount -a

Zfs comprobar accesibilidad


 $ ls /zroot/encrypt 
supersecret

$ Zfs listar


 $ zfs list
NAME                                           USED  AVAIL     REFER  MOUNTPOINT
zroot                                         14.1G   420G      104K  /zroot
zroot/ROOT                                    12.1G   420G       96K  none
zroot/ROOT/13.1-RELEASE-p2_2022-10-19_233328     8K   420G     2.63G  /
zroot/ROOT/13.1-RELEASE_2022-10-19_232051        8K   420G     1.33G  /
zroot/ROOT/default                            12.1G   420G     11.4G  /
zroot/encrypt                                  200K  30.0G      200K  /zroot/encrypt
zroot/tmp                                      288K   420G      152K  /tmp
zroot/usr                                     1.98G   420G       96K  /usr
zroot/usr/home                                 359M   420G      315M  /usr/home
zroot/usr/ports                                912M   420G      912M  /usr/ports
zroot/usr/src                                  759M   420G      759M  /usr/src
zroot/var                                     1.16M   420G       96K  /var
zroot/var/audit                                 96K   420G       96K  /var/audit
zroot/var/crash                                 96K   420G       96K  /var/crash
zroot/var/log                                  592K   420G      384K  /var/log
zroot/var/mail                                 200K   420G      144K  /var/mail
zroot/var/tmp                                  104K   420G       96K  /var/tmp

Zfs desmontar, listar, keystatus, load-key, mount, unmount.


$ zfs unmount zroot/encrypt
 $ zfs unload-key -r zroot/encrypt 
1 / 1 key(s) successfully unloaded
$ ls /zroot/encrypt $ zfs get keystatus zroot/encrypt NAME PROPERTY VALUE SOURCE zroot/encrypt keystatus unavailable -
$ zfs load-key -r zroot/encrypt Enter passphrase for 'zroot/encrypt': 1 / 1 key(s) successfully loaded
$ zfs get keystatus zroot/encrypt NAME PROPERTY VALUE SOURCE zroot/encrypt keystatus available -
$ zfs mount -a $ ls /zroot/encrypt supersecret
$ zfs unmount zroot/encrypt $ zfs unload-key -r zroot/encrypt 1 / 1 key(s) successfully unloaded
$ ls /zroot/encrypt

 $ zfs allow -u carlos keychange zroot/encrypt

El ejemplo anterior permite al usuario carlos cambiar el valor de la clave de ajuste para el conjunto de datos y sus elementos secundarios, pero no cambiar la propiedad keysource. En este caso que el usuario carlos no puede montar el conjunto de datos ZFS después del arranque ni puede forzar la descarga del conjunto de datos y su clave. El usuario raíz (y el propio arranque del sistema) tiene todas las delegaciones de ZFS.

Si fuera un disco externo tendríamos que importar el zpool después de un reinicio. Por ejemplo, previamente hemos creado un zpool de nombre cifrado y un conjunto de datos llamado encrypt.


# zfs import -l cifrado/encrypt
Enter passphrase for 'cifrado/encrypt':
1 / 1 keys successfully loaded

 

FreeBSD es genial!.