Actualizando FreeBSD

From SoloBSD Wiki

Jump to: navigation, search

Contents

Introducción

En este texto trataré de explicar la manera en la que llegué a tener mi sistema FreeBSD estable, partiendo de las RELEASE de la versión 8.1, así que la gran parte de lo que aquí describa, se supone que debe funcionar en esta versión y siguientes.

CSup

Primeramente descargaremos el código fuente para poder llevar a cabo la actualización del sistema, se asume que tenemos un sistema FreeBSD acabado de instalar.

En caso de que las fuentes no estén instaladas aún en /usr/src, usaremos:

# sysinstall

para instalarlas. Elegimos Configure| Distributions|src y proseguimos con su instalación.

FreeBSD ya contiene en la base del sistema, la utilería csup para ayudarnos a jalar las fuentes actualizadas del sistema. Así que primeramente. Creamos:

# mkdir -p /usr/local/etc/csup/sup

y dentro de el hacemos el archivo supfile que contendrá lo siguiente:

*default host=cvsup.FreeBSD.org
*default base=/usr/local/etc/csup
*default prefix=/usr
*default release=cvs tag=RELENG_8
*default delete use-rel-suffix
*default compress
src-all

Nota: en la primera línea debes cambiar el mirror por el que esté mas cercano a tí.

Ahora el archivo /usr/local/bin/cvsrun:

#!/bin/sh
echo Subject: `hostname` weekly csup run output
/usr/bin/csup -g -L 2 /usr/local/etc/csup/sup/supfile

Hacemos los scripts ejecutables para root solamente, obviamente esto lo hacemos como root:

# chown root:wheel /usr/local/bin/cvsrun
# chmod u+x /usr/local/bin/cvsrun

Después podemos ponerlo en el crontab, lo cual queda a gusto de cada uno de ustedes, en lo personal prefiero ejecutarlo cuando lo crea necesario.

Finalmente, ya tenemos todo listo para actualizar las fuentes de nuestro sistema y también la raíz de los ports, para ello solo nos falta ejecutar, como root:

# /usr/local/bin/cvsrun

Make World

En esta sección nos ocuparemos de compilar las fuentes que hemos descargado y el kernel, actualizaremos e instalaremos y al final tendremos nuestro sistema personalizado.

Primeramente editaremos el archivo /etc/make.conf y añadimos lo siguiente:

CFLAGS= -O -pipe
COPTFLAGS= -O -pipe
NOPROFILE= true
USA_RESIDENT= NO

Respaldamos /etc:

# cp -Rp /etc /etc.old

Ejecutamos mergemaster en modo pre-buildworld para actualizar los archivos esenciales para el éxito de buildworld e installworld:

# /usr/sbin/mergemaster -p -v

Borramos el antiguo /usr/obj:

# cd /usr/obj
# chflags -R noschg *
# rm -rf *

Compilamos desde el código fuente:

# cd /usr/src
# make buildworld

A continuación nos vamos con el Kernel para configurarlo a la medida y compilarlo.

Haciendo un Kernel a la medida

Para hacer esto menos tedioso, se recomienda hacer una copia del archivo de configuración del kernel GENERIC:

# cd /usr/src/sys/i386/conf
# cp GENERIC MIKERNEL

De preferencia, ponemos al kernel, el nombre del equipo en el que está corriendo y en mayúsculas.

Para echar a andar el sonido en tu máquina simplemente se añade lo siguiente en el archivo de configuración del kernel :

device sound

Ya tenemos listo nuestro kernel con soporte para audio y ahora solo nos queda compilar:

# cd /usr/src/
# make kernel KERNCONF=MIKERNEL

Nos vamos a modo single:

# shutdown now

# fsck -p
# mount -u /
# mount -a -t ufs
# swapon -a
# adjkerntz -i

Instalamos los nuevos binarios del sistema:

# cd /usr/src
# make installworld

Actualizamos los archivos de configuración del sistema:

# /usr/sbin/mergemaster -v

Actualizamos /dev/, generalmente mergemaster ofrecerá actualizar por nosotros, si lo quieres hacer manualmente pudes hacer:

# cd /dev
# /bin/sh MAKEDEV all

Actualizamos /stand

# cd /usr/src/release/sysinstall
# make clean
# make all install

Finalmente reiniciamos!!!

# reboot

Hasta aquí contaremos con nuestro sistema actualizado en la rama -STABLE en el caso de FreeBSD 4.8 o con los últimos parches de seguridad para FreeBSD 5.1. Además tendremos nuestro kernel personalizado y con soporte para audio. A continuación nos ocuparemos de los ports y los actualizaremos.

Actualizando los Ports

Comenzamos actualizando nuestro árbol de ports:

# portsnap fetch update

Para trabajar a gusto con los ports, instalaremos Portupgrade de la siguiente manera:

# pkg_add -r portupgrade

O mediante los ports:

# cd /usr/ports/ports-mgmt/portupgrade 
# make all install clean

Ya tenemos Portupgrade instalado y ahora podemos actualizar con mayor comodidad nuestro árbol de ports. En pasos anteriores descargamos los ports junto con las fuentes, ahora el siguiente paso es sincronizar la raíz de los ports con el siguiente comando y así actualizar la base de datos:

# portsdb -uU

A continuación nos vamos por un cafesito o un cigarro (los que fumen) y ejecutamos:

# portupgrade -va

Este comando nos actualizará la totalidad de los ports que tengamos instalados en el sistema, el tiempo de este proceso dependerá del número de ports que tenga nuestro sistema, en mi caso tengo KDE, GNOME y Fluxbox lo cual causó que la actualización tardara bastante tiempo.

En caso de que surja algún problema durante la actualización, por ejemplo, un error que no te permita instalar el port en cuestión puedes hacer:

# cd /usr/ports/ruta/delport
# make deinstall
# make reinstall

Esto te solucionará muchos problemas cuando alguno de los ports se niegue a instalarse correctamente. También de vez en cuando tendrás que hacer uso de:

# pkgdb -F

para arreglar los problemas que te surjan con las dependencias. Finalmente, ya que la actualización haya termiando satisfactoriamente, te recomiendo usar el comando:

# portsclean -CD

el cuál te eliminará todos los directorios de trabajo de compilación de los ports y así recuperarás el espacio que ocuparon todos estos archivos en tu disco duro.

Conclusiones

Este documento muestra la manera en la que un servidor realizó el proceso de actualización, la documentación existente al respecto es bastante extensa, no olvides leer el Handbook en el encontrarás información más detallada.

Agradecimientos

Primero que nada un agradecimiento a Lili, mi prometida, por todo su apoyo y por la paciencia que me tuvo al planear y realizar este documento. Muchas Gracias!!!

A todos los integrantes de la lista de ElDemonio.org por sus contribuciones y por contestar a mis dudas, las cuales tuvieron mucho que ver con la tarea de estabilizar mi sistema y realizar este documento, además de enseñarme bastante sobre FreeBSD.

Así como a la gente del IRC en irc.freenode.net en los canales de #freebsd, #bsd.ve y #freebsdhelp por hacerme leer más de medio Handbook.

A todos, Muchas Gracias!!! y a contribuir y seguir aprendiendo!

Cualquier duda, comentario o mejora, dirijirse con el autor.