Tags: FreeBSD, Installation
ANTES DE EMPEZAR: Esta guía asume que instalás desde un live de Arch Linux o cualquier Linux con acceso a
gdisk,zfs-utilsywget. Si venís de mi guía de Arch, el flujo va a ser familiar.
loadkeys es
timedatectl set-ntp true
Instalá las herramientas necesarias:
sudo pacman -S gptfdisk dosfstools zfs-utils
sudo modprobe zfs
Nota sobre UFS vs ZFS: Desde un live de Arch, formatear con UFS es difícil porque
ufsutilsno está en los repos oficiales. ZFS en cambio sí está disponible conzfs-utils. Esta guía usa ZFS, que además es la opción recomendada en FreeBSD de todas formas.
iwctl
device list
station wlan0 scan
station wlan0 connect NOMBRE_RED
station wlan0 show
exit
Probá conexión:
ping -c 3 freebsd.org
¡ATENCIÓN! Esto destruye todos los datos de /dev/sdX. Verificá con lsblk antes.
lsblk
gdisk /dev/sdX
Dentro de gdisk:
o # nueva tabla GPT
y # confirmar
n # partición EFI
1
[Enter]
+512M
ef00
n # swap (ajustá según tu RAM)
2
[Enter]
+8G
8200
n # raíz FreeBSD (ZFS)
3
[Enter]
[Enter]
a504 # tipo FreeBSD ZFS
w
y
Por qué GPT y no MBR: igual que en Arch, UEFI moderno requiere GPT. Los firmwares Intel hace años que deprecaron CSM/MBR. Más info: https://hardzone.es/reportajes/que-es/csm-bios-uefi-placa-base-hdd-ssd/
mkfs.vfat -F 32 /dev/sdX1
mkswap /dev/sdX2
swapon /dev/sdX2
zpool create -f \
-o altroot=/mnt/freebsd \
-O mountpoint=/ \
-O atime=off \
-O compression=lz4 \
zroot /dev/sdX3
zfs create zroot/ROOT
zfs create -o mountpoint=/ zroot/ROOT/default
zpool set bootfs=zroot/ROOT/default zroot
Datasets opcionales (equivalente a particiones separadas en Arch):
zfs create -o mountpoint=/home zroot/home
zfs create -o mountpoint=/var zroot/var
zfs create -o mountpoint=/tmp zroot/tmp
cd /tmp
BASE="https://download.freebsd.org/releases/amd64/14.2-RELEASE"
wget $BASE/base.txz
wget $BASE/kernel.txz
wget $BASE/lib32.txz # opcional: compat 32-bit
# Verificá integridad:
wget $BASE/CHECKSUM.SHA512
sha512sum -c CHECKSUM.SHA512 --ignore-missing
Cambiá
14.2-RELEASEpor la versión actual. Verificá en https://download.freebsd.org/releases/amd64/
mkdir -p /mnt/freebsd
zfs set mountpoint=/mnt/freebsd zroot/ROOT/default
cd /mnt/freebsd
tar xvJf /tmp/base.txz
tar xvJf /tmp/kernel.txz
tar xvJf /tmp/lib32.txz # si lo descargaste
FreeBSD usa su propio loader.efi, no GRUB:
mkdir -p /mnt/freebsd/boot/efi
mount /dev/sdX1 /mnt/freebsd/boot/efi
mkdir -p /mnt/freebsd/boot/efi/EFI/BOOT
cp /mnt/freebsd/boot/loader.efi /mnt/freebsd/boot/efi/EFI/BOOT/BOOTX64.efi
OJO con UEFI problemático: igual que en Arch con el flag
--removablede GRUB, algunos firmwares borran las entradas EFI. Copiando aEFI/BOOT/BOOTX64.efiusás la ruta fallback estándar, que la mayoría de los firmwares respeta. FreeBSD no usaefibootmgr.
mount --bind /dev /mnt/freebsd/dev
mount --bind /proc /mnt/freebsd/proc
mount --bind /sys /mnt/freebsd/sys
cp /etc/resolv.conf /mnt/freebsd/etc/
chroot /mnt/freebsd /bin/sh
A diferencia de
arch-chroot, acá es chroot manual. No hay equivalente dearch-chrooten FreeBSD porque el sistema de archivos virtual se monta diferente.
echo 'zfs_load="YES"' >> /boot/loader.conf
echo 'vfs.root.mountfrom="zfs:zroot/ROOT/default"' >> /boot/loader.conf
cat >> /etc/rc.conf << 'EOF'
zfs_enable="YES"
hostname="freebsd"
ifconfig_DEFAULT="DHCP"
sshd_enable="YES"
dumpdev="NO"
EOF
ifconfig_DEFAULT="DHCP"funciona para la mayoría de las interfaces. Si no levanta la red, verificá el nombre real conifconfig(FreeBSD nombraem0,re0,igb0, etc.) y ajustá aifconfig_em0="DHCP".
cat >> /etc/fstab << 'EOF'
# swap
/dev/ada0p2 none swap sw 0 0
EOF
Ajustá
ada0p2según tu hardware. En VMs suele servtbd0p2. Uságpart showpara verificar.
tzsetup
# Seleccioná America → Argentina → Buenos Aires
echo 'keymap="es.kbd"' >> /etc/rc.conf
echo 'LANG=en_US.UTF-8' >> /etc/login.conf
cat >> /etc/hosts << 'EOF'
127.0.0.1 localhost
::1 localhost
127.0.0.1 freebsd.localdomain freebsd
EOF
passwd
adduser
# Cuando pregunte grupos extra, agregá: wheel
pkg install sudo
visudo
# Descomentá: %wheel ALL=(ALL:ALL) ALL
La primera vez que ejecutás
pkgpuede tardar porque bootstrapea el sistema de paquetes. Si falla, ejecutápkg bootstrap -f.
exit # salir del chroot
umount /mnt/freebsd/dev
umount /mnt/freebsd/proc
umount /mnt/freebsd/sys
umount /mnt/freebsd/boot/efi
zpool export zroot
swapoff /dev/sdX2
reboot
Sacá el medio de instalación. El sistema debería bootear al loader de FreeBSD.
freebsd-update fetch
freebsd-update install
pkg install xorg-minimal sway foot wmenu waybar
FreeBSD tiene OSS nativo. Para compatibilidad con apps que usan PulseAudio:
pkg install pulseaudio
pkg update
pkg search nombre_paquete
pkg install nombre_paquete
pkg upgrade
pkg autoremove # equivalente a pacman -Rns $(pacman -Qdtq)
pkg info # equivalente a pacman -Qe
| Arch Linux | FreeBSD |
|---|---|
pacstrap |
tar xvJf base.txz |
genfstab |
Editás /etc/fstab manualmente |
grub-install |
Copiás loader.efi a la EFI |
arch-chroot |
chroot /mnt /bin/sh (manual) |
systemctl enable servicio |
echo 'servicio_enable="YES"' >> /etc/rc.conf |
pacman -S |
pkg install |
mkinitcpio |
No existe — el kernel incluye los módulos necesarios |
ext4 |
UFS o ZFS (ZFS nativo y recomendado) |
/etc/hostname |
hostname= en /etc/rc.conf |
locale-gen |
/etc/login.conf (diferente sistema de locales) |
| Problema | Solución |
|---|---|
| No bootea, UEFI no encuentra el loader | Verificá que BOOTX64.efi esté en /EFI/BOOT/. Algunos firmwares también buscan en /EFI/freebsd/. |
En el boot aparece OK y se cuelga |
Estás en el loader prompt. Ejecutá: set vfs.root.mountfrom="zfs:zroot/ROOT/default" y luego boot |
| No hay red después de bootear | Ejecutá ifconfig para ver el nombre real de la interfaz. Ajustá /etc/rc.conf con ifconfig_em0="DHCP" (o el nombre que corresponda). |
pkg no encuentra repos |
Ejecutá pkg bootstrap -f o revisá /etc/pkg/FreeBSD.conf |
| ZFS pool no importa al boot | Desde el loader prompt: zpool import -f zroot luego boot |
| Querés compilar desde ports | Descargá src.txz, extraelo en /usr/src, y usá make buildworld buildkernel installkernel installworld |