Páginas

Mostrando entradas con la etiqueta boot. Mostrar todas las entradas
Mostrando entradas con la etiqueta boot. Mostrar todas las entradas

miércoles, 18 de marzo de 2026

FileBrowser con Tailscale HTTPS Habilitado en FreeBSD 14.3

Fuente:

https://tailscale.com/docs/reference/examples/serve
https://tailscale.com/docs/how-to/quickstart
https://tailscale.com/docs/features/access-control
https://filebrowser.org/cli/filebrowser-config-init.html
https://filebrowser.org/cli/filebrowser-users-add.html

Instalar FileBrowser

pkg install filebrowser
which filebrowser
filebrowser version
File Browser v2.52.0/c11c986b7382a5c1f18d83ee7e6093dc0544cff9

Crear esttructura de directorios


Directorio para archivos compartidos

mkdir -p /home/carlos/fileserver

Directorio para configuracion

mkdir -p /home/carlos/.config/filebrowser

Iniciarlizar la base de datos de FileBrowser

filebrowser config init -d /home/carlos/.config/filebrowser/filebrowser.db

Crear usuario administrador

filebrowser users add carlos tu_contraseña_segura \
  --perm.admin \
  --perm.create \
  --perm.delete \
  --perm.download \
  --perm.execute \
  --perm.modify \
  --perm.rename \
  --perm.share \
  -d /home/carlos/.config/filebrowser/filebrowser.db

Explicación de permisos:

--perm.admin → Acceso administrativo completo
--perm.create → Crear archivos y carpetas
--perm.delete → Eliminar archivos
--perm.download → Descargar archivos
--perm.execute → Ejecutar comandos
--perm.modify → Modificar archivos
--perm.rename → Renombrar archivos/carpetas
--perm.share → Compartir enlaces públicos

Crear usuario adicional con permisos limitados


Detener completamente filebrowser

sudo service FileBrowser stop  
sudo pkill -9 filebrowser
filebrowser users add invitado password123 \
  --perm.download \
  --scope /home/carlos/fileserver/publico \
  -d /home/carlos/.config/filebrowser/filebrowser.db
 

Comprobar configuracion

 filebrowser config cat -d /home/carlos/.config/filebrowser/filebrowser.db
 

Ver usuarios

  
  filebrowser users ls -d /home/carlos/.config/filebrowser/filebrowser.db
  

Crear archivo /home/carlos/.config/filebrowser/config.json

  {
  "port": 8080,
  "baseURL": "",
  "address": "0.0.0.0",
  "log": "/home/carlos/.config/filebrowser/filebrowser.log",
  "database": "/home/carlos/.config/filebrowser/filebrowser.db",
  "root": "/home/carlos/fileserver"
}

Crear script de servicio rc.d sudo vim /usr/local/etc/rc.d/filebrowser

#!/bin/sh
# PROVIDE: filebrowser
# REQUIRE: NETWORKING DAEMON tailscaled
# KEYWORD: shutdown

. /etc/rc.subr

name="filebrowser"
desc="Web File Browser"
rcvar="${name}_enable"

load_rc_config $name

: ${filebrowser_enable:="NO"}
: ${filebrowser_runas:="carlos"}
: ${filebrowser_config:="/home/carlos/.config/filebrowser/config.json"}

procname="/usr/local/bin/${name}"
command="/usr/sbin/daemon"

command_args="-c -u ${filebrowser_runas} -t \"${desc}\" \
    ${procname} -c ${filebrowser_config}"

start_precmd="filebrowser_prestart"

filebrowser_prestart()
{
    log_file="/home/carlos/.config/filebrowser/filebrowser.log"
    if [ ! -f "${log_file}" ]; then
        touch "${log_file}"
        chown ${filebrowser_runas} "${log_file}"
        chmod 640 "${log_file}"
    fi
}

run_rc_command "$1"

Permisos correctos

sudo chmod 555 /usr/local/etc/rc.d/filebrowser

Habilitar FileBrowser en rc.conf

sudo sysrc filebrowser_enable="YES"

Comprobar

sudo service filebrowser status
filebrowser is running as pid 1918.
ls -ld /var/run/filebrowser
drwxr-xr-x  2 carlos wheel 3 Apr  3 09:21 /var/run/filebrowser
sudo cat /var/run/filebrowser/filebrowser.pid
1918
tail -10 /home/carlos/.config/filebrowser/filebrowser.log 
2026/04/02 23:57:05 Listening on [::]:8080
2026/04/03 08:40:10 Got signal: terminated
2026/04/03 08:40:10 Stopped serving new connections.
2026/04/03 08:40:10 Graceful shutdown complete.
2026/04/03 08:41:06 Listening on [::]:8080
2026/04/03 08:46:48 Got signal: terminated
2026/04/03 08:46:48 Stopped serving new connections.
2026/04/03 08:46:48 Graceful shutdown complete.
2026/04/03 08:47:40 Listening on [::]:8080
2026/04/03 09:21:27 Listening on [::]:8080

Verificar Tailscale

tailscale status
100.69.99.114  tornado  nombreusuario@  freebsd  - 

Si no está corriendo

sudo service tailscaled start
tailscale up

Recomendación de mantenimiento


Nunca vuelva a ejecutar tailscale up sin --hostname o sin haber hecho tailscale logout antes. Uso correcto:

tailscale logout
tailscale up --hostname=tornado

Actualizar reglas de PF

# ========================================
# Configuración PF para tornado.local.com
# ========================================

# MACROS (Variables)
ext_if = "wlan0"                      # Interfaz de red
tailscale_if = "tailscale0"
local_net = "192.168.88.0/24"         # Red local permitida
ssh_port = "22"                       # Puerto SSH
filebrowser_port = "8080"
filebrowser_https_port = "8443"
http_port = "80"
https_port = "443"

# --- OPCIONES ---
set skip on lo0                       # No filtrar loopback
set block-policy drop                 # Descartar paquetes bloqueados silenciosamente
set loginterface $ext_if              # Interfaz para estadísticas

# --- SCRUB (Normalización de paquetes) ---
scrub in all                          # Normalizar todo el tráfico entrante

# --- POLÍTICA PREDETERMINADA ---
block all                             # Bloquear todo por defecto

# --- REGLAS ANTISPOOF ---
antispoof quick for $ext_if           # Protección contra IP spoofing

# --- PERMITIR LOOPBACK ---
pass quick on lo0 all                 # Permitir todo en loopback

# --- PERMITIR TRÁFICO EN TAILSCALE ---
pass quick on $tailscale_if all keep state

# --- Solo permite TAILSCALE ---
pass in quick on $tailscale_if all keep state

# --- PERMITIR ICMP (ping) desde red local ---
pass in quick on $ext_if inet proto icmp from $local_net to any icmp-type { echoreq } keep state

# --- PERMITIR SSH SOLO DESDE RED LOCAL ---
pass in quick on $ext_if proto tcp from $local_net to ($ext_if) port $ssh_port keep state

# --- PERMITIR FILEBROWSER HTTP DESDE RED LOCAL ---
pass in quick on $ext_if proto tcp from $local_net to ($ext_if) port $filebrowser_port keep state

# --- PERMITIR FILEBROWSER HTTP DESDE TAILSCALE ---
pass in quick on $tailscale_if proto tcp to any port $filebrowser_port keep state

# --- PERMITIR FILEBROWSER HTTPS DESDE RED LOCAL ---
pass in quick on $ext_if proto tcp from $local_net to ($ext_if) port $filebrowser_https_port keep state

# --- PERMITIR FILEBROWSER HTTPS DESDE TAILSCALE ---
pass in quick on $tailscale_if proto tcp to any port $filebrowser_https_port keep state

# --- PERMITIR TRÁFICO SALIENTE ---
pass out quick on $ext_if all keep state

# --- LOGGING (opcional) ---
# pass in log on $ext_if proto tcp from $local_net to ($ext_if) port $ssh_port keep state

Recargar reglas

sudo pfctl -f /etc/pf.conf
sudo service pf reload

Iniciar filebrowser

sudo service filebrowser start

Estado de filebrowser

sudo service filebrowser status
Password:
filebrowser is running as pid 4721

Puerto de escucha

sudo sockstat -4l | grep 8080
carlos   filebrowse  1322 5   tcp46  *:8080

Acceder a FileBrowser


Desde la red local:

http://192.168.88.183:8080

Desde Tailscale HTTPS (desde cualquier lugar):

https://100.69.99.114:443
https://tornado.tail0788a4.ts.net

Credenciales

Usuario carlos
Contraseña tu_contraseña_segura

Ver logs de diagnóstico

tail -f /home/carlos/.config/filebrowser/filebrowser.log

Proceso filebrowser

 
ps aux | grep filebrowser    
carlos     5542   0.0  0.4 1270900 30200  -  I    23:57 \
0:05.52 /usr/local/bin/filebrowser -c /home/carlos/.config/filebrowser/config.json

Reglas PF activas

sudo pfctl -sr 
Password:
scrub in all fragment reassemble
block drop all
block drop in quick on ! wlan0 inet from 192.168.88.0/24 to any
block drop in quick inet from 192.168.88.183 to any
pass in quick on wlan0 inet proto tcp from 192.168.88.0/24 to \
(wlan0) port = ssh flags S/SA keep state
pass in quick on wlan0 inet proto tcp from 192.168.88.0/24 to \
(wlan0) port = http-alt flags S/SA keep state
pass in quick on wlan0 inet proto tcp from 192.168.88.0/24 to \
(wlan0) port = 8443 flags S/SA keep state
pass in quick on wlan0 inet proto icmp from 192.168.88.0/24 to \
any icmp-type echoreq keep state
pass out quick on wlan0 all flags S/SA keep state
pass quick on lo0 all flags S/SA keep state
pass quick on tailscale0 all flags S/SA keep state

IMPORTANTE: Detener FileBrowser antes de modificar la base de datos

sudo service filebrowser stop
sudo pkill -9 filebrowser

Cambiar contraseña de usuario

filebrowser users update carlos \
  --password nueva_contraseña \
  -d /home/carlos/.config/filebrowser/filebrowser.db

Habilitar branding personalizado

filebrowser config set \
  --branding.name "Servidor de Carlos" \
  --branding.disableExternal \
  -d /home/carlos/.config/filebrowser/filebrowser.db
  

Cambiar a tema oscuro por defecto

filebrowser config set \
  --theme dark \
  -d /home/carlos/.config/filebrowser/filebrowser.db
  

Reiniciar FileBrowser

sudo service filebrowser start  

Seguridad adicional


Deshabilitar registro público

filebrowser config set --signup false -d /home/carlos/.config/filebrowser/filebrowser.db
 

Configurar límite de sesión

filebrowser config set --auth.recaptcha.secret "" -d /home/carlos/.config/filebrowser/filebrowser.db

Copia de seguridad de configuración


Copia de seguridad de base de datos

cp /home/carlos/.config/filebrowser/filebrowser.db /home/carlos/.config/filebrowser/filebrowser.db.backup

Copia de seguridad de archivos

tar -czf /home/carlos/fileserver-backup-$(date +%Y%m%d).tar.gz /home/carlos/fileserver/

Resumen de comandos de gestión


Reiniciar servicio

sudo service filebrowser restart

Detener FileBrowser completamente

sudo service filebrowser stop
sudo pkill -9 filebrowser

Limpiar el pidfile

rm -f /var/run/filebrowser/filebrowser.pid

Iniciar FileBrowser limpiamente

sudo service filebrowser start 

Verificar que solo hay un proceso

sudo ps aux | grep "filebrowser"
carlos   1322  0.0  0.4 1279096 29736 v0- I   Sun23  1:11.45 \
/usr/local/bin/filebrowser -c /home/carlos/.config/filebrowser/config.json

Ver logs en tiempo real

tail -f /home/carlos/.config/filebrowser/filebrowser.log

Listar usuarios. Hay que detener FileBrowser antes

sudo service filebrowser stop
sudo pkill -9  filebrowser
filebrowser users ls -d /home/carlos/.config/filebrowser/filebrowser.db

Ver configuración completa

filebrowser config cat -d /home/carlos/.config/filebrowser/filebrowser.db

Navegador local

http://localhost:8080

Red local

http://192.168.88.183:8080

Acceso remoto desde Internet (con Tailscale conectado) Sin Tailscale no funcionará (esto es correcto por seguridad).

http://100.69.99.114:8080
https://https://tornado.tail0788a4.ts.net

Configuración completada exitosamente: FileBrowser instalado y configurando Autenticación habilitada (usuario: carlos) Acceso desde red local (192.168.88.0/24) Acceso remoto seguro vía Tailscale Firewall PF configurado correctamente Autoarranque habilitado (rc.conf)

Tailscale HTTPS (certificados automáticos de Tailscale)

Tailscale puede proporcionar certificados HTTPS válidos de forma automática para un nodo.

Esto generará certificados en /var/lib/tailscale/certs/ o /usr/local/tailscale/certs/. Si no existe el directorio, Tailscale los colocará en el directorio actual.

Obtener el nombre MagicDNS de su nodo

tailscale status

Desde cualquier dispositivo con Tailscale conectado

https://tornado.tail0788a4.ts.net

¡El certificado será válido y reconocido por todos los navegadores!

Usar Tailscale Serve (proxy HTTPS automático)

sudo tailscale serve --bg http://127.0.0.1:8080

Exponer FileBrowser con HTTPS automático en

https://tornado.tail0788a4.ts.net

No es necesario configurar nada más, Tailscale maneja todo el HTTPS

Comprobar

tailscale serve status
https://tornado.tail0788a4.ts.net (tailnet only)
|-- / proxy http://127.0.0.1:8080

Obtener su URL completa

tailscale status --json | grep tornado    
    "DNSName": "tornado.tail0788a4.ts.net.",
    "tornado.tail0788a4.ts.net"

Hacer permanente la configuración

Para que Tailscale Serve se mantenga después de reiniciar:

Crear un servicio rc.d

sudo vim /usr/local/etc/rc.d/tailscale_serve

#!/bin/sh
# PROVIDE: tailscale_serve
# REQUIRE: tailscaled filebrowser
# KEYWORD: shutdown

. /etc/rc.subr

name="tailscale_serve"
rcvar="tailscale_serve_enable"

load_rc_config $name

: ${tailscale_serve_enable:="NO"}

start_cmd="${name}_start"
stop_cmd="${name}_stop"

tailscale_serve_start()
{
    echo "Starting Tailscale Serve..."
    /usr/local/bin/tailscale serve --bg http://127.0.0.1:8080
}

tailscale_serve_stop()
{
    echo "Stopping Tailscale Serve..."
    /usr/local/bin/tailscale serve reset
}

run_rc_command "$1"

Otorgar permisos

sudo chmod +x /usr/local/etc/rc.d/tailscale_serve

Habilitar tailscale_serve

sudo sysrc tailscale_serve_enable="YES"
sudo service tailscale_serve start

Habilitar HTTPS y Serve en Tailscale


Ir a esta URL desde el navegador:

https://login.tailscale.com/admin/machines

Encontrar su máquina (por ejemplo, "tornado")

Hacer clic en los 3 puntos -> "Enable HTTPS"

En la página que se abre: Marcar "HTTPS certificates" (requerido) NO marque "Funnel" (a menos que quiera acceso público desde Internet)

Nota: Serve = Acceso solo desde tu Tailnet (privado) - Esto es lo que quiere

Hacer clic en "Enable HTTPS and Serve" o "Enable"

Volver a configurar Serve

sudo tailscale serve --bg http://127.0.0.1:8080

Debería funcionar sin errores

Verificar serve

tailscale serve status 
https://tornado.tail0788a4.ts.net (tailnet only)
|-- / proxy http://127.0.0.1:8080

Desde cualquier dispositivo con Tailscale

https://tornado.tail0788a4.ts.net

Cuando habilita HTTPS en Tailscale, el nombre de su dispositivo (tornado.tail0788a4.ts.net) se escribirá en un Certificate Transparency Log público. Esto es un requisito de Let's Encrypt y no se puede evitar. Esto NO expone:

Su IP
Sus archivos
El contenido de tu servidor

Solo registra:

El nombre del dispositivo (tornado.tail0788a4.ts.net)

Comprobar que MagicDNS está habilitado

sudo tailscale status --json | grep -i magic
    "InMagicSock": false,
  "MagicDNSSuffix": "tail0788a4.ts.net",
    "MagicDNSSuffix": "tail0788a4.ts.net",
    "MagicDNSEnabled": true
      "InMagicSock": true,
      "InMagicSock": true,
      "InMagicSock": true,
      "InMagicSock": true,

FileBrowser no arranca


Limpiar procesos

sudo pkill -9 filebrowser
rm -f /var/run/filebrowser/filebrowser.pid

Ver error exacto

filebrowser -c /home/carlos/.config/filebrowser/config.json
2026/03/27 09:17:02 Using config file: /home/carlos/.config/filebrowser/config.json
2026/03/27 09:17:02 Using database: /home/carlos/.config/filebrowser/filebrowser.db

Ver logs

  tail -50 /home/carlos/.config/filebrowser/filebrowser.log

Iniciar filebrowser manualmente

filebrowser -c /home/carlos/.config/filebrowser/config.json &

Configuración final completada

Elemento		  Valor
URL de acceso		  https://tornado.tail0788a4.ts.net
Certificado SSL 	  Let's Encrypt (válido, sin advertencias)
FileBrowser		  HTTP en localhost:8080
Tailscale Serve		  HTTPS proxy en puerto 443
Acceso			  Solo desde su Tailnet (privado)
Usuario			  carlos
Usuario no privilegiado	  invitado
https://gnulinuxcodigo.blogspot.com/2026/04/crear-rotacion-de-logs-filebrowser.html

FreeBSD es genial!.

jueves, 19 de febrero de 2026

Migración de SSD a disco de mayor capacidad en FreeBSD 14.3 send receive vía USB

Estado actual del sistema

zpool status
zpool list 
zpool list -t all

Identificar discos

geom disk list
camcomtrol devlist

Anotar el disco actual (ada0) y el nuevo disco USB (da0)


Limpiar el disco nuevo completamente

gpart destroy -F da0
dd -if=/dev/zero of=/dev/da0 bs=1M count=100

Crear tabla de particiones GPT

gpart create -s gpt da0

Partición de arranque EFI (si el sistema usa UEFI)

gpart add -t efi -s 260M -l efiboot-new da0

Partición de arranque BIOS/GPT (para compatibilidad legacy)

gpart add -t freebsd-boot -s 512k -l gptboot-new da0

Partición swap

gpart add -t freebsd-swap -s 8G -a 1M -l swap0 da0

Particion ZFS (el resto del disco)

gpart add -t freebsd-zfs -a 1M -l zroot-new da0

Para sistemas UEFI


Montar partición EFI del disco nuevo

newfs_msdos -F 32 -c 1 /dev/da0p1
mount -t msdosfs /dev/da0p1 /mnt

Copiar EFI loader desde el actual disco

mkdir -p /mnt/EFI/BOOT
cp -r /boot/efi/EFI/BOOT /mnt/EFI/

umount /mnt

Crear pool temporal en el nuevo disco

Crear pool temporal con nombre diferente para evitar conflictos
zpool create -o altroot=/mnt \
             -o ashift=12 \
             -O compression=lz4 \
             -O atime=off \
             -O xattr=sa \
             -O acltype=posix \
             -m none \
             zroot-new /dev/da0p3

Verificar

zpool status zroot-new

Listar todos los datasets a migrar

zfs list -H -o name -t filesystem,volume

Tomar snapshot recursivo de todo el pool (Shell zsh)

sudo zfs snapshot -r zroot@migracion

Verificar snapshot creado

zfs list -t snapshot -o name | grep "$migracion" 
zroot@migracion
zroot/ROOT@migracion
zroot/ROOT/14.3-RELEASE-filebrowser-tailscale-serve-certs-https@migracion
zroot/ROOT/14.3-RELEASE_2026-02-14_193200@migracion
zroot/ROOT/default@2026-02-14-19:32:00-0
zroot/ROOT/default@2026-02-17-17:48:09-0
zroot/ROOT/default@migracion
zroot/home@migracion
zroot/home/carlos@migracion
zroot/tmp@migracion
zroot/usr@migracion
zroot/usr/ports@migracion
zroot/usr/src@migracion
zroot/var@migracion
zroot/var/audit@migracion
zroot/var/crash@migracion
zroot/var/log@migracion
zroot/var/mail@migracion
zroot/var/tmp@migracion

Enviar snapshot raíz primero

zfs send -Lec zroot@migration-$(date +%Y%m%d) | \
    zfs receive -Fuv zroot-new

Enviar recursivamente todos los datasets hijos

zfs send -RLec zroot@migration-$(date +%Y%m%d) | \
    zfs receive -Fuv zroot-new

Banderas (flags)

-R Recursivo (todos los datasets hijos)
-L Incluye large blocks
-e Embed data (bloques pequeños inline)
-c Comprime el stream
-F En receive: fuerza rollback si es necesario
-u No monta los datasets al recibirlos
-v Verbose

Comprobar la replicación


Comparar conjuntos de datos entre pools

zfs list -r zroot
zfs list -r zroot-new

Verificar propiedades

zfs get all zroot
zfs get all zroot-new

Cantidad de instantáneas

zfs list -t snapshot -r zroot | wc -l
zfs list -t snapshot -r zroot-new | wc -l

Configurar bootfs en el nuevo pool

zpool set bootfs=zroot-new/ROOT/default zroot-new

Verificar

zpool get bootfs zroot-new

Ajustar cachefile y otros parámetros del pool

zpool set cachefile=/boot/zfs/zpool.cache zroot-new

Ver propiedades del pool original para replicarlas

zpool get all zroot

Montar el dataset raíz del nuevo disco

zfs set mountpoint=/mnt zroot-new/ROOT/default
zfs mount zroot-new/ROOT/default

Verificar /boot/loader.conf

cat /mnt/boot/loader.conf

Debe contener algo como:

zfs_load="YES"
vfs.root.mountfrom="zfs:zroot/ROOT/default"

Si el nombre del pool cambió, actualizar:

sed -i '' 's/zroot-new/zroot/g' /mnt/boot/loader.conf

También verificar /etc/fstab (en ZFS puro suele estar sin referencias a ada0)

cat /mnt/etc/fstab

Cambiar el disco y primer arranque


Apagar el sistema

shutdown -p now

Desconectar el disco viejo Conectar el nuevo disco en el slot interno (ya no como USB) Comprobar en BIOS/UEFI que el nuevo disco sea el primero en el orden de arranque Arrancar

Verificación después del arranque


Comprobar salud del pool

zpool status
zpool list

Verificar que todos los datasets montaron

zfs list -t filesystem

Verificar espacio disponible (debe reflejar el disco nuevo mayor)

df -h

Verificar que el sistema arrancó desde el disco correcto

geom disk list
camcontrol devlist

Limpiar snapshots de migración

zfs destroy -r zroot@migracion

Problemas y posibles soluciones después del primer arranque


Renombrar zpool zroot-new a zroot

zpool import -f zroot-new zroot

Error

zpool export zroot-new Cannot unmount /

Es el error clásico: el dataset raíz (/) está montado desde zroot-new, así que ZFS no puede desmontarlo en caliente

Solución Desde loader prompt o LiveCD


Desde el LiveCD

zpool import -f zroot-new zroot
zpool set bootfs=zroot/ROOT/default zroot
zpool export zroot

zpool import -f zroot-new zroot
   zpool set bootfs=zroot/ROOT/default zroot
   zpool export zroot hecho.

Reiniciar

shutdown -r now

FreeBSD al arrancar y no encontrar zroot buscará pools disponibles. Si el disco nuevo ya está interno, lo encontrará como zroot-new y podrás importarlo con el nombre correcto.

Después de reiniciar sin el LiveCD el sistema arranca desde el nuevo disco duro.

Estos dos errores son normales y esperables en este proceso.

1. swapon: /dev/da0p3: No such file or directory, 
2. Import of zpool cache /etc/zfs/zpool.cache failed

El archivo /etc/fstab del sistema nuevo todavía referencia el dispositivo del disco USB (da0) que ya no existe. Ahora el disco está interno, probablemente como ada0 o nvme0ns1.

Montar el sistema de ficheros rw

mount -u -o rw /

Averiguar cómo se llama el disco ahora geom disk list o camcontrol devlist.

geom disk list                                    
Geom name: ada0
Providers:
1. Name: ada0
   Mediasize: 250059350016 (233G)
   Sectorsize: 512
   Mode: r3w3e7
   descr: WDC WDS250G2B0A-00SM50
   lunid: 5001b448b8a2a91f
   ident: 192686806761
   rotationrate: 0
   fwsectors: 63
   fwheads: 16

Cambiar la línea de swap, por ejemplo

/dev/da0p3  none   swap  sw   0   0
 por
/dev/ada0p3  none   swap  sw   0   0

Mejor aún, usar la etiqueta (label) GPT que es independiente del nombre del dispositivo

gpart show -l ada0
=>       40  488397088  ada0  GPT  (233G)
         40     532480     1  efiboot0  (260M)
     532520       1024     2  gptboot0  (512K)
     533544        984        - free -  (492K)
     534528   16777216     3  swap0  (8.0G)
   17311744  471085056     4  zroot-new  (225G)
  488396800        328        - free -  (164K)
ls /dev/gpt/
efiboot0 gptboot0 swap0

En el archivo /etc/fstab usar la etiqueta en lugar del dispositivo

...
/dev/gpt/swap0	  none	  swap	  sw	 0	0
...

Error 2

Import of zpool cache /etc/zfs/zpool.cache failed

El zpool.cache fue generado cuando el pool se llamaba zroot-new y estaba en da0. Ahora el pool se llama zroot y el dispositivo cambió. El caché está obsoleto.

Sencillamente borrarlo, ZFS lo regenera automáticamente

rm /etc/zfs/zpool.cache

Antes de reiniciar para verificar el nombre correcto del dispositivo

swapinfo -h
Device              Size     Used    Avail Capacity
/dev/gpt/swap0      8.0G       0B     8.0G     0%

Si el sistema arrancó pero con errores no críticos Ambos errores no impiden el funcionamiento del sistema. El swap simplemente no está activo hasta que corrijas el fstab, y el zpool.cache se regenera solo. Si llegaste al prompt de login, la migración fue exitosa.

Reiniciar

shutdown -r now

Error 3.

Can't open /dev/gpt/efiboot0

Ese error indica que el bootloader está buscando la partición EFI por su label GPT (efiboot0) pero no la encuentra, probablemente porque el label en el disco nuevo es diferente o no se asignó correctamente

ls /dev/gpt
efiboot0 gptboot0 swap0

Montar el sistema de ficheros rw

mount -u -o rw /

Solución. Renombrar el label al esperado

...
/dev/gpt/efiboot0    /boot/efi	  msdosfs    rw	   2	2
...

Corregir el label

gpart modify -i 1 -l efiboot0 ada0

Si la partición EFI estaba vacía, reinstalar loader

newfs_msdos -F 32 -c 1 /dev/ada0p1
mount -t msdosfs /dev/ada0p1 /mnt
mkdir -p /mnt/EFI/BOOT
cp /boot/loader.efi /mnt/EFI/BOOT/BOOTX64.EFI

umount /mnt

 

FreeBSD es genial!.

lunes, 19 de diciembre de 2022

Tamaño de la fuente en el framebuffer de arranque FreeBSD

En partátiles con pantalla de 13 y 14 pulgadas se hace difícil leer los mensajes en el framebuffer de arranque en FreeBSD por la configuración predeterminada del tamaño de la fuente en FreeBSD.

Pero es posible cambiar a una fuente más pequeña modificando el parámetro screen.font en archivo /boot/loader.conf. Es cuestión de probar diferentes configuraciones para saber cual resulta más comoda. En mi caso he optado por 8x16.

$ cat /boot/loader.conf | grep screen.font


FreeBSD es genial!.

domingo, 18 de diciembre de 2022

Beadm ZFS Boot Environments FreeBSD

Desarrollador: vermaden

https://vermaden.wordpress.com/2022/03/14/zfs-boot-environments-revolutions/comment-page-1/

Instalar beadm


pkg install -y beadm

Listar entornos de arranque


beadm list
BE                     Active Mountpoint  Space Created
default                -      -            2.0M 2022-12-15 12:19
pkg_update_171222      -      -            7.0G 2022-12-17 21:49

# beadm create pkg_upgrade_1712222335

Activar el be


# beadm activate pkg_upgrade_1712222335
Activated successfully

Listar boot environments


BE                     Active Mountpoint  Space Created
default                N      -            2.0M 2022-12-15 12:19
pkg_update_171222      -      -            7.0G 2022-12-17 21:49
pkg_upgrade_1712222335 R     /           34.2G 2022-12-17 23:35

N = activo ahora
R = estara activo el proximo reinicio

Reiniciar


# reboot

beadm list
BE                     Active Mountpoint  Space Created
default                -      -            2.0M 2022-12-15 12:19
pkg_update_171222      -      -            7.0G 2022-12-17 21:49
pkg_upgrade_1712222335 NR     /           34.2G 2022-12-17 23:35

mount
zroot/ROOT/pkg_upgrade_1712222335 on / (zfs, local, noatime, nfsv4acls)

Ya puede instalar los ultimos parches de FreeBSD sin estropear su sistema predeterminado.


pkg update
pkg upgrade
freebsd-update fetch
freebsd-update install

reroot reroot Utiliza la función 'reroot' del comando reboot(8) -r.

reroot sólo está presente en beadm, le dira a freebsd que vuelva a rootear su nucleo en ejecucion en el be especificado. Ahorra mucho tiempo en un un servidor o máquina física.


beadm reroot pkg_upgrade_1712202335

Genial

beadm


sage:
beadm activate <
  beadm create 
  beadm create 
  beadm destroy 
  beadm export 
  beadm import
  beadm list 
  beadm rename 
  beadm mount 
  beadm 
  beadm chroot 
  beadm 
  beadm version
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!.

lunes, 3 de enero de 2022

FreeBSD intercambio cifrado con GELI en un gmirror y un grupo root cifrado con GELI.

https://wiki.freebsd.org/MasonLoringBliss/ZFSandGELIbyHAND

Paso a paso - Particionar e instalar FreeBSD 13.0

Duplicación

Duplicación es la técnica de escribir los mismos datos en mas de una unidad de disco. Cada unidad de un mirror (espejo) contiene una copia idéntica de los datos. Cuando falla una unidad individual, el mirror continua funcionando y el administrador tiene tiempo para reemplazar la unidad defectuosa sin interrupción.

Mirror

Las dos unidades en un espejo pueden ser idénticas en modelo y capacidad, pero gmirror(8) no lo requiere. Los espejos creados con diferentes discos tendrán una capacidad igual a la del disco mas pequeño del mirror. Este ejemplo asume FreeBSD 13, un par de discos y el deseo de reflejar todo.  Se adapta tanto a UEFI como a instalaciones heredadas, y tiene un esquema de partición predeterminado que puede tener ambas instalaciones a la vez. FreeBSD no automatiza la actualización del código de arranque y este es el enfoque adoptado por la versión actual de esta guía. Este conjunto de instrucciones configura un par de particiones freebsd-boot, un par de particiones ESP, intercambio cifrado con GELI en un gmirror y un grupo raíz cifrado con GELI.

Fuerza la destrucción de la tabla de particiones

# gpart destroy -F ada0
# gpart destroy -F ada1

Nueva tabla de particiones GPT


# gpart create -s gpt ada0
# gpart create -s gpt ada1

Particiones de arranque, primero legacy y luego UEFI/ESP

# gpart add -t freebsd-boot -s 512k -l boot0 ada0
# gpart add -t freebsd-boot -s 512k -l boot1 ada1
# gpart add -t efi -s 1m -l efi0 ada0
# gpart add -t efi -s 1m -l efi1 ada1

ESP debe ser vfat/fat32:


# newfs_msdos /dev/gpt/efi0
# newfs_msdos /dev/gpt/efi1

Swap - estos entrarán en un geom_mirror


# gpart add -t freebsd-swap -l swap0 -a 1m -s 4096m ada0
# gpart add -t freebsd-swap -l swap1 -a 1m -s 4096m ada1

Si tienes discos que no coinciden, deberás hacer que estos tengan un tamaño coincidente:


# gpart add -t freebsd-zfs -l tank0 -a 1m ada0
# gpart add -t freebsd-zfs -l tank1 -a 1m ada1
# gmirror label -v swap gpt/swap0 gpt/swap1

Establecer GELI - Configurar claves en lugar de frases de paso para GELI


# geli init -s 4096 -b -g gpt/tank0
# geli init -s 4096 -b -g gpt/tank1
# geli attach gpt/tank0
# geli attach gpt/tank1

Crear el pool root.

# zpool create -R /mnt -o cachefile=/tmp/zpool.cache -O mountpoint=/ \
    -O atime=off -O canmount=off -O compression=on \
    tank mirror gpt/tank0.eli gpt/tank1.eli
    
# zfs create -o canmount=off -o mountpoint=none tank/ROOT
# zfs create -o mountpoint=/ tank/ROOT/default
# zpool set bootfs=tank/ROOT/default tank
# zfs create tank/home
# zfs create -o canmount=off tank/usr
# zfs create tank/usr/local
# zfs create tank/usr/obj
# zfs create tank/usr/src
# zfs create tank/usr/ports
# zfs create tank/usr/ports/distfiles
# zfs create -o canmount=off tank/var
# zfs create tank/var/jail
# zfs create tank/var/log
# zfs create tank/var/tmp
# zfs create tank/tmp

# zfs set setuid=off tank/tmp
# zfs set setuid=off tank/var
# zfs set exec=off tank/var

Copiar el caché de zpool para tenerlo en el sistema en funcionamiento


# mkdir -p /mnt/boot/zfs
# cp /tmp/zpool.cache /mnt/boot/zfs

No olvide elegir la opción Shell para terminar la configuración.


# exit

cat >> /boot/loader.conf <<EOF
zfs_load="YES"

geom_eli_load="YES"
geom_mirror_load="YES"

zpool_cache_load="YES"
zpool_cache_name="/boot/zfs/zpool.cache"
zpool_cache_type="/boot/zfs/zpool.cache"

vfs.root.mountfrom="zfs:tank/ROOT/default"
EOF

cat >> /etc/rc.conf <<EOF
zfs_enable="YES"
zfsd_enable="YES"
EOF

cat >> /etc/fstab <<EOF
/dev/gpt/efi0 /boot/efi0 msdosfs rw,late 0 0
/dev/gpt/efi1 /boot/efi1 msdosfs rw,late 0 0
/dev/mirror/swap.eli none swap sw 0 0
EOF
# exit

Reiniciar


 reboot

Consoles: EFI console
GELI Passphrase for disk0p4:


# geli status
Name  Status  Components
     ada0p4.eli  ACTIVE  ada0p4
     ada1p4.eli  ACTIVE  ada1p4
mirror/swap.eli  ACTIVE  mirror/swap

# zpool status

  pool: tank
 state: ONLINE
config:

	NAME            STATE     READ WRITE CKSUM
	tank            ONLINE       0     0     0
	  mirror-0      ONLINE       0     0     0
	    ada0p4.eli  ONLINE       0     0     0
	    ada1p4.eli  ONLINE       0     0     0

errors: No known data errors

FreeBSD es genial!
.

lunes, 8 de noviembre de 2021

ZFS FreeBSD en modo monousuario

Proceso de arranque

En el proceso de arranque, FreeBSD ofrece un menú de arranque beastie-start con algunas opciones simples de carga. Para iniciar el modo monousuario se pulsa el numero 2 (Boot single user).

Para que todos sus conjuntos de datos ZFS estén disponibles se utiliza zfs mount. También pueden montarse conjuntos de datos individuales por nombre.


 Enter root password, or ˆD to go multi-user
 Password: Enter full pathname of shell or RETURN for /bin/sh:

 zfs mount -a
 mount zroot/ROOT/default on / (zfs, local, noatime, read-ly, nfs4acls)

Montar conjunto de datos en modo rw

ZFS realizará sus comprobaciones de integridad habituales antes de montar los conjunto de datos.La mayoría de los conjuntos de datos serán exactamente tan accesibles como en el modo multiusuario, pero el conjunto de datos montado como raíz seguirá siendo de solo lectura. Montar el conjunto de datos raíz en modo lectura-escritura (rw)) en una instalación predeterminada de FreeBSD.


  zfs set readonly=off zroot/ROOT/default
 

Para tener conectividad de red en modo de usuario único, se ejecuta el shell script


 /etc/netstart.

Ejecutar scripts

Este script llama a los scripts apropiados para iniciar la red, proporciona direcciones IP a las interfaces y habilita el filtrado de paquetes y el enrutamiento. Si determina que hay un error tipográfico en /etc/fstab que confunde al sistema y lo hace no arrancable, puede editar /etc/fstab para resolver el problema. Si hay un programa que hace que el sistema entre en pánico al arrancar y hay que detener ese programa para que no se inicie de nuevo, puede editar


  vim /etc/rc.conf
 

Para configurar los permisos en el script de inicio y no se ejecute.


 chmod a-x /usr/local/etc/rc.d/nombredelprogram.sh

Reiniciar


 reboot
FreeBSD es genial!.

jueves, 28 de octubre de 2021

Crear particiones e instalar FreeBSD 13.0 zfs UEFI

A diferencia del valor predeterminado de bsdinstall para ZFS, no establece puntos de montaje explícitos para conjuntos de datos, sino que se basa en la herencia.

Este conjunto de instrucciones configura partición freebsd-boot, una particion ESP para la instalacion UEFI, intercambio cifrado con GELI y un grupo raíz.  

Iniciar el instalador de FreeBSD


Elegir shell para el particionado manual

Limpiar disco - Esta es una operación destructiva


# gpart destroy -F ada0
ada0 destroyed

Configurar nueva tabla de partición GPT.

Antes de poder crear particiones de disco, se debe marcar el disco con el tipo de esquema de partición que utilizará, gpart create con la marca -s y el esquema, como gpt o mbr. Aquí, el disco usa el esquema GPT


# gpart create -s gpt ada0
ada0 created

Añadir particiones con etiquetas (label -l) para acceder a ellas por su nombre.

Crear partición boot para arranque Legacy (aunque no será utilizada). No puede ser mayor de 545k.

 # gpart add -t freebsd-boot -s 512k -l boot0 ada0
ada0p1 added

UEFI ESP arranque UEFI.


# gpart add -t efi -s 200M -l efi0 ada0 
ada0p2 added

ESP debe ser vfat/fat32:


# newfs_msdos -F 32 -c 1 /dev/ada0p2
/dev/gpt/efi0: 2003 sectors in 2003 FAT12 clusters (512 bytes/cluster)
BytesPerSec=512 SecPerClust=1 ResSectors=1 FATs=2 RootDirEnts=512 Sectors=2048 \
Media=0xf0 FATsecs=6 SecPerTrack=63 Heads=255 HiddenSecs=0

Partición swap

# gpart add -t freebsd-swap -l swap0 -a 1m -s 2048m ada0

Resto del disco

# gpart add -t freebsd-zfs -l zroot0 -a 1m ada0

Crear el root pool

.
# zpool create -R /mnt -o cachefile=/tmp/zpool.cache -O mountpoint=/ \
    -O atime=off -O canmount=off -O compression=on \
    zroot gpt/zroot0
# zfs create -o canmount=off -o mountpoint=none zroot/ROOT
# zfs create -o mountpoint=/ zroot/ROOT/default

Definir el conjunto de datos de arranque predeterminado para este zpool

# zpool set bootfs=zroot/ROOT/default zroot

Crear el resto de los sistemas de archivos


# zfs create -o canmount=off zroot/usr
# zfs create zroot/usr/home
# zfs create zroot/usr/local
# zfs create zroot/usr/obj
# zfs create zroot/usr/src
# zfs create zroot/usr/ports
# zfs create -o canmount=off zroot/var
# zfs create zroot/var/jail
# zfs create zroot/var/log
# zfs create zroot/var/tmp
# zfs create zroot/tmp
# zfs set setuid=off zroot/tmp
# zfs set setuid=off zroot/var
# zfs set exec=off zroot/var
# zfs set setuid=off zroot/usr/src 
# zfs set exec=off zroot/usr/src
# zfs set setuid=off zroot/usr/ports
# zfs set exec=on zroot/var/tmp

Copiar el caché de zpool


# mkdir -p /mnt/boot/zfs
# cp /tmp/zpool.cache /mnt/boot/zfs

No olvide elegir la opción shell para terminar la configuración al final de la instalación.


# exit

Elegir

 Install  

Keymap Selection

Set Hostname

Distribution Select 

Partitioning

En este punto elegir la opción:

open a shell and partition by hand

# exit

Fetching Distribution

Comprobing checksum

Archive Extraction 

New Password

Retype New Password

Network Configuration

Would you like to configure
IPv6..? No

Resolver Configuration

Select local or UTC (Greenwich Mean Time) clock

System Configuration 

System Hardening

Add User Accounts (Yes)

Final Configuration 

Exit (Apply configuration and exit installer) OK

Manual Configuration Yes

Elegir Yes para seguir con la configuración


# cat >> /boot/loader.conf<<EOF
zfs_load="YES"

zpool_cache_load="YES"
zpool_cache_name="/boot/zfs/zpool.cache"
zpool_cache_type="/boot/zfs/zpool.cache"

vfs.root.mountfrom="zfs:zroot/ROOT/default"
EOF

# cat >> /etc/rc.conf<<EOF
zfs_enable="YES"
zfsd_enable="YES"
EOF

# cat >> /etc/fstab<<EOF
/dev/gpt/efi0 /boot/efi0 msdosfs rw,late 0 0
/dev/swap.eli none swap sw 0 0
EOF

# mount -t devfs devfs /dev
# rm /dev/null

Crear punto de montaje y montar ESP


# mkdir /boot/efi0 
# mount -t msdosfs /dev/gpt/efi0 /boot/efi0 

UEFI con nomenclatura de reserva:


mkdir -p /boot/efi0/efi/boot
cp /boot/loader.efi /boot/efi0/efi/boot/bootx64.efi

Llegados a este punto debería estar listo.


# exit

# Reboot


# zfs create zroot/usr/home/carlos

Enlace simbólico y permisos.


# ln -s /usr/home /home
# chmod 1777 /var/tmp
# chmod 1777 /tmp

Usar git para obtener el código fuente de FreeBSD 13.0

(Si necesita construir módulos del kernel)


# pkg install git
# git clone -b releng/13.0 https://git.freebsd.org/src.git /usr/src

Clonar colección de puertos con git


# git clone https://git.freebsd.org/ports.git /usr/ports

Crear Directorios de usuario


# pkg install xdg-user-dirs
$ xdg-user-dirs-update

# cat /etc/fstab
/dev/gpt/efi0 /boot/efi0 msdosfs rw,late 2 2
/dev/swap.eli none swap sw 0 0

# cat /boot/loader.conf
security.bsd.allow_destructive_dtrace=0
cryptodev_load="YES"
zfs_load="YES"
zpool_cache_load="YES"
zpool_cache_name="/boot/zfs/zpool.cache"
zpool_cache_type="/boot/zfs/zpool.cache"

vfs.root.mountfrom="zfs:zroot/ROOT/default"
# cat /etc/rc.conf
clear_tmp_enable="YES"
syslogd_flags="-ss"
sendmail_enable="NONE"
hostname="bsdzfs"
ifconfig_ue0="DHCP"
sshd_enable="YES"
ntpd_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="NO"
zfs_enable="YES"
zfsd_enable="YES"
# gpart show
=>       40  976773088  ada0  GPT  (466G)
         40       1088     1  freebsd-boot  (544K)
       1128       2048     2  efi  (1.0M)
       3176        920        - free -  (460K)
       4096    4194304     3  freebsd-swap  (2.0G)
    4198400  972574720     4  freebsd-zfs  (464G)
  976773120          8        - free -  (4.0K)
# zfs list
NAME                        USED  AVAIL     REFER  MOUNTPOINT
zroot                      1.83G   444G       96K  /
zroot/ROOT                 1011M   444G       96K  none
zroot/ROOT/default         1011M   444G     1011M  /
zroot/tmp                   104K   444G      104K  /tmp
zroot/usr                   863M   444G       96K  /usr
zroot/usr/home               96K   444G       96K  /usr/home
zroot/usr/local             191M   444G      191M  /usr/local
zroot/usr/obj                96K   444G       96K  /usr/obj
zroot/usr/ports             192K   444G       96K  /usr/ports
zroot/usr/ports/distfiles    96K   444G       96K  /usr/ports/distfiles
zroot/usr/src               672M   444G      672M  /usr/src
zroot/var                   432K   444G       96K  /var
zroot/var/jail               96K   444G       96K  /var/jail
zroot/var/log               144K   444G      144K  /var/log
zroot/var/tmp                96K   444G       96K  /var/tmp

https://wiki.freebsd.org/MasonLoringBliss/ZFSandGELIbyHAND

FreeBSD es genial!.

domingo, 24 de octubre de 2021

Actualizar zpool en FreeBSD 13.0 UEFI partition

Después de actualizar el pool el código de inicio del disco duro también se debe actualizar, de manera que se pueda iniciar el sistema sin problemas.

El instalador de FreeBSD 13.0 con zfs elige una partición de arranque BIOS tradicional freebsd-boot y una partición UEFI efi .

gpart show
=>        40  1953525088  ada0  GPT  (932G)
          40      532480    1   efi  (260M)
      532520        1024    2   freebsd-boot  (512K)
      533544         984        - free -  (492K)
      534528     4194304    3   freebsd-swap  (2.0G)
     4728832  1948794880    4   freebsd-zfs  (929G)
  1953523712        1416        - free -  (708K)
# zpool upgrade -a
This system supports ZFS pool feature flags.

Enabled the following features on 'zroot':
  allocation_classes

If you boot from pool 'zroot', don't forget to update boot code.
Assuming you use GPT partitioning and da0 is your boot disk
the following command will do it:

        gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 2 da0

Si el arranque de su sistema es UEFI al ejecutar el código anterior y hacer un reboot el sistema no se iniciará.
    
Para actualizar una partición EFI:
# mount -t msdosfs /dev/ada0p1 /mnt
# mv /mnt/boot/efi0/efi/boot/bootx64.efi /mnt/efi/boot/bootx64.efi-old
# cp /boot/loader.efi /mnt/boot/efi0/efi/boot/bootx64.efi
# umount /mnt
# reboot

FreeBSD es genial!.

lunes, 10 de junio de 2019

Instalar Arch Linux UEFI

Instalar Arch Linux 2019 modo UEFI (Unified Extensible Firmware Interface) y tabla de particiones GPT necesaria para arrancar en modo UEFI desde la BIOS.



Descargar Arch Linux y grabar la instantánea de Arch Linux en una unidad USB (unidad flash). Arrancar el sistema desde el dispositivo USB cambiando el orden de arranque desde la BIOS o utilizando la tecla F12 o F9 (dependiendo de su sistema).

Al finalizar el proceso de arranque lo primero es comprobar la conexión a Internet:
root@archiso ~ # ping -c3 www.freebsd.org

Si en lugar de conexión por cable nos conectarnos mediante wifi Arch Linux pone a su disposición la herramienta wifi-menu.
root@archiso ~ # wifi-menu

Comprobamos con fdisk -l los discos del sistema disponible y las particiones creadas.

El particionado del disco /dev/sda (SSD) puede realizarse con diferentes herramientas en este caso se utiliza cfdisk.

root@archiso ~ # cfdisk /dev/sda
En el cuadro de diálogo (Select label type) se selecciona el tipo gpt.
Luego se crea una nueva partición de 512M (Partition size) partición 1 del tipo EFI system.
A continuación una segunda partición de 30G del tipo ext4
Por último una cuarta partición con el resto del espacio libre del disco tipo ext4. Se desplaza hasta Write y sale con Quit. Tendremos este esquema de particionado:

root@archiso ~ # fdisk -l
Disposit.  Comienzo     Final Sectores Tamaño Tipo
/dev/sda1      2048   1050623  1048576   512M Sistema EFI
/dev/sda2   1050624  63965183 62914560    30G Sistema de ficheros de Linux
/dev/sda3  63965184 117231374 53266191  25,4G Sistema de ficheros de Linux

Crear los sistemas de ficheros
root@archiso ~ # mkfs.fat -F32 /dev/sda1
root@archiso ~ # mkfs.ext4 /dev/sda2
root@archiso ~ # mkfs.ext4 /dev/sda3

Montar las particiones

root@archiso ~ # mount /dev/sda2 /mnt
root@archiso ~ # mkdir /mnt/home
root@archiso ~ # mount /dev/sda3 /mnt/home
root@archiso ~ # lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0 55,9G  0 disk
├─sda1   8:1    0  512M  0 part
├─sda2   8:2    0   30G  0 part /
└─sda3   8:3    0 25,4G  0 part /home

Elegir lista de mirror

# pacman -Sy
# pacman -S reflector
# reflector --verbose -l 5 --sort rate --save /etc/pacman.d/mirrorlist

sda1 es nuestra partición UEFI, se usará más tarde. El comando pacstrap con la opción -i (ver la información) instala los paquetes base base-devel dentro de /mnt

root@archiso ~ # pacstrap -i /mnt base base-devel

El comando genfstab con las opciónes U (use UUIDs) y p (Excluye pseudofs montados)

root@archiso ~ # genfstab -U -p /mnt >> /mnt/etc/fstab

Se necesita chroot a mnt para entrar en el nuevo sistema instalado

root@archiso ~ # arch-chroot /mnt /bin/bash

Establecer la locale

root@archiso ~ # nano /etc/locale.gen descomentar la siguiente línea.
es_ES.UTF-8 UTF-8

Generar la locale
root@archiso ~ # locale-gen

Enlace a hora locale dentro de su zone

root@archiso ~ # ln -sf /usr/share/zoneinfo/Europe/Madrid /etc/localtime

Enlace a hora locale dentro de su time zone
root@archiso ~ # hwclock --systohc --utc

root@archiso ~ # echo archlinux > /etc/hostname

root@archiso ~ # nano /etc/hosts
127.0.0.1 localhost.localdomain archlinux.unix.bcn archlinux

Instalar networkmanager
root@archiso ~ # pacman -S networkmanager

Activar la conexión a Internet cableada
(wired) durante el arranque del sistema.
root@archiso ~ # systemctl enable NetworkManager

Establecer la contraseña de root
root@archiso ~ # passwd

Archivo /etc/pacman.conf descomentar:

 [multilib]
Include = /etc/pacman.d/mirrorlist

El siguiente paso donde se instala el group bootloader
es el más relevante  en el proceso de instalaciónn de UEFI:

1.- Instalar los paquetes necesarios

root@archiso ~ # pacman -S grub efibootmgr

2.- Crear el directorio efi y montar la partición efi sda1 a este directorio

root@archiso ~ # mkdir /boot/efi
root@archiso ~ # mount /dev/sda1 /boot/efi

Comprobar el punto de montaje con lsblk
root@archiso ~ # lsblk

3.- Iniciar la instalación de grub-install

root@archiso ~ # grub-install --target=x86_64-efi --bootloader-id=GRUB --efi-directory=/boot/efi

4.- Se necesita generar el archivo de configuración para el grub bootloader instalado.
root@archiso ~ # grub-mkconfig -o /boot/grub/grub.cfg

5.- Configuraión adicional.

root@archiso ~ # mkdir -p /boot/efi/EFI/BOOT
root@archiso ~ # cp /boot/efi/EFI/GRUB/grubx64.efi /boot/efi/EFI/BOOT/BOOTX64.EFI

BOOTX64.EFI es el bootloader reconocido por efi en caso de fallo durante el arranque del sistema.

6.- Crear script de inicio para efi /boot/efi/startup.nsh

root@archiso ~ # nano /boot/efi/startup.nsh
bcf boot add 1 fs0:\EFI\GRUB\grubx64.efi "Grub bootloader"
exit

Identificar los gráficos del sistema# lspci | grep VGA

Entorno gráfico
# pacman -S xorg-server xorg-xinit
# pacman -S xf86-video-intel
# pacman -S mesa mesa-demos

Para una computadora portátil o netbook necesita los controladores para el soporte de entrada del panel táctil
# pacman -S xf86-input-synaptics

Crear usuario
# useradd -m -g users -G audio,storage,optical,video,wheel -s /bin/bash carles

Montar las USB, Micro SD
# pacman -S gvfs

Montar iphone
# pacman -S gvfs-afc

Montar dispositivo android
# pacman -S gvfs-mtp

Crea las carpetas por defecto del usuario automáticamente
# pacman -S xdg-user-dirs

Instalar deepin
# pacman -S deepin-extra

Editar el archivo /etc/lightdm/lightdm.conf
# nano /etc/lightdm/lightdm.conf

Buscar la siguiente linea (Ctrl + W)
#greeter-session=example-gtk-gnome

Descomente y cambie como se muestra abajo
greeter-session=lightdm-deepin-greeter

Luego habilite el administrador de inicio de sesión de lightdm para que se inicie en el arranque.
# systemctl enable lightdm.service -f

El archivo .xinitrc se crea en el directorio del usuario sin privilegios
$ nano /home/carles/.xinitrc
exec startdde

Cambiar los permisos del archivo
# chown carles:users /home/carles/.xinitrc

Salir del entorno chroot
# exit

# exit

Desmontar las particiones
# umount /mnt/home
# umount /mnt/boot/efi
# umount /mnt

Reiniciar el sistema
#reboot

Instalar ifplugd. Un demonio que activa - desactiva las interfaces de red al insertar - quitar el cable.
# pacman -S ifplugd

Si hay algún problema como parpadeo o pantalla en blanco después de instalar Deepin, instalar lightdm-deepin-greeter usando el siguiente comando

# pacman -S lightdm-deepin-greeter

Y reinstalar deepin:

# pacman -Syu deepin

# reboot


Se prescinde de la partición Swap
Un portátil con 8 GB de memoria RAM y un diso duro SSD Intel de 60 GB. Los datos se guardan en el servidor de archivos de la LAN por lo que no se necesita mayor capacidad de almacenamiento.



OpenBSD es genial!.

domingo, 21 de febrero de 2010

Eliminar particion boot portatil Packard Bell

Eliminar particion 100 MB primaria NTFS marcada como boot 

Maquina: - Packard Bell EasyNote TJ70, procesador i5 Intel, grafica Ati HD 5470, HD 320 GB.

La particion de 100 MB creada en la instalacion por Windows 7, no es una particion oculta. Es una particion visible, primaria y activa. Contiene archivos necesarios para el arranque del sistema, aunque perfectamente podemos prescindir de esta particion despues de:

hacerla inactive
hacer activa la particion donde esta instalado el sistema operativo
copiar los archivos de esa particion (100MB) a C:. Como se llama esta particion? "SYSTEM RESERVED". Luego esta la particion de recuperacion de unos 12 GB y por ultimo la Particion del sistema la famosa C:. ¿Son necesarias todas?, La particion de rescate es donde estan los archivos originales de su sistema operativo, que podra recuperar pulsando una tecla al iniciar o desde los discos de recuperacion (discos, que no siempre es posible crear con exito), o desde una imagen realizada con herramientas al estilo de fsarchiver de systemrescue cd o el exelente bootcd Clonezilla.

 Archivos y directorios contenidos por la particion de 100 MB:

directorios
$ RECYCLE.BIN
Inicio
Sistema de Información del volumen

archivos
bootmgr
BOOTSECT.BAK

Iniciar el pc con Windows 7 y loguearse como Administrador.
Abrir una consola tecleando cmd y luego intro.

Dentro de la consola teclee diskpart
C:\Users\Administrador>

Liste los discos con el comando list disk
diskpart> list disk

Si tiene un solo disco aparecera como disk 0.
Seleccionelo con el comando select
diskpart> select disk 0

Liste las particiones:
diskpart> list partition
partition 1 primary 12 GB
partition 2 primary 100 MB 1024 kb *
partition 3 primary 140 GB
partition 0 extended 150 GB

Seleccionamos la particion de 100 MB. En mi caso es la partition 2 (es posible que sea la partition 1 en otros casos). Fijese que sea de 100 MB y activa (*).
diskpart> select part 2


Mire las particiones:
diskpart> list partition
partition 1 primary 12 GB
partition 2 primary 100 MB 1024 kb *
partition 3 primary 140 GB
partition 0 extended 150 GB

diskpart> detail partition
Partition 2
Tipo: 07
Oculta: No
Active: Yes
* volume 2 SYSTEM RESERVED NTFS primary 100 MB Healthy System

Ahora la desactivaremos
diskpart> inactive
Partition is now inactive

Seleccionar la particion en la que esta instalado el sistema operativo. En mi caso la particion 3.
diskpart> select partition 3
La partición 3 es ahora la partición seleccionada.

Informacion de la particion. Fijese que esta inactiva.
diskpart> detail partition

Partition 3
Active: No
Oculta: No
volume 3 Packard Bell 140 GB NTFS primary

Activar la particion
diskpart> active

Detalles de la particion
diskpart> detail partition
volume 3 Packard Bell 140 GB NTFS primary
Active: Yes

Salir de diskpart
diskpart> exit

Llegado a este punto, con la utilidad del propio sistema operativo BCDBOOT copiar los archivos a C:
C:\Users\Administrador> bcdboot c:\windows /s c:
boot files sucessfully created.

Reiniciar
C:\Users\Administrador> shutdown /r /t 0

Despues de reiniciar el sistema cmd intro.
C:\Users\Administrador> diskpart
diskpart> select disk 0
diskpart> list partition

Liste las particiones:
diskpart> list partition
partition 1 primary 12 GB
partition 2 primary 100 MB 1024 kb *
partition 3 primary 140 GB
partition 0 extended 150 GB

diskpart> delete partition 2
diskpart> exit

Reiniciar
C:\Users\Administrador> shutdown /r /t 0

Muy bien, ¿y para que me sirve eliminar la particion primaria de 100 MB?, en mi caso, Gentoo Linux en el portatil que acabo de comprar a mi esposa. Los 100 Mb se convertiran en la particion boot de Gentoo Linux. ¿Porque ambos sistemas?, mi amada acaba de iniciarse en Gentoo linux y la migración será progresiva.

Puede usted comprobar la flexibilidad de los sistemas derivados de GNU-Linux, entre otras cosas es posible instalarlos en particiones logicas (dentro de la extendida). En un disco duro solo es posible crear 4 particiones, pueden ser 3 primarias y una extendida y dentro de la particion extendida tantas logicas como quiera.

Sientase libre de hacer cualquier comentario que complemente, aclare o corrija el texto anterior.