8.6. En caso de que algo no funcione

Existen cinco tipos de problemas que se pueden presentar al momento de estar personalizando/compilando un kernel. Estas son:

Que la orden config de como resultado un error:

Si config da como resultado un error al momento de de su ejecución, puede ser que simplemente haya cometido un error de tipografía en su fichero de configuración (al que llamamos “MYKERNEL”). Afortunadamente config le dará información sobre el error, como es el numero de línea que contiene el error, de tal forma que puede dirijirse directamente a dicha línea con vi y corregir el error. Por ejemplo si visualiza:

config: line 17: syntax error

Puede ir directamente al problema en vi, al teclear 17G en el modo de órdenes. Asegúrese de que la palabra clave se ha escrito correctamente al compararla con la que corresponde al fichero GENERIC o alguna otra referencia.

Cuando make falla:

Cuando make da como resultado un error, generalmente es indicio de que el fichero de configuración tiene un error, pero que este error no es tan grave como para que config lo detecte. Revise nuevamente su fichero y si aun así no puede detectar el error, envíe un correo a lista de correo para preguntas generales sobre FreeBSD adjuntando el fichero personalizado de su kernel, y debiese ser diagnosticado rápidamente.

Al instalar el nuevo kernel se presenta una falla

Si el kernel termino de compilarse correctamente, pero presenta un error al instalarlo (cuando make install o make installkernel da como resultado un Error), lo primero que es necesario revisar, es si su sistema esta ejecutandose en securelevel 1 o mayor (vea init(8)). Aqui lo que sucede es que la instalación del kernel intenta remover la “marca” (flag) de inmutable del kernel actual y colocar dicha marca al nuevo kernel. Y en virtud de que securelevel 1 o mayor evita que dicha marca sea removida de cualquier fichero del sistema, la instalación del nuevo kernel debe ser realizada en securelevel 0 o menor.

El nuevo kernel no arranca:

Si su nuevo kernel no se ejecuta correctamente al arrancar el sistema, o bien falla en reconocer sus dispositivos, no entre en pánico! Afortunadamente BSD cuenta con un excelente mecanismo para recuperarse de un kernel recien instalado que presenta este tipo de errores. Simplemente seleccione el kernel que desea arrancar, al momento que se esta incializado en su sistema FreeBSD, el cargador de arranque (boot loader). Puede accesar a este cuando su sistema se encuentra en cuenta regresiva desde 10. Pulse cualquier tecla excepto la tecla enter, posteriormente teclee unload y posteriormente teclee boot kernel.old, o bien el nombre de fichero de cualquier otro kernel que usted sabe que arranacará correctamente. Cuand personalice un kernel, siempre es buena idea contar con un kernel que sabemos que su funcionamiento es correcto, a la mano.

Nota: Recuerde que si tiene problemas para personalizar su kernel, es recomendable asegurarse de contar con un kernel de tipo GENERIC, o algún otro que tenga la seguridad de su funcionamiento y que tenga un nombre que no será borrado en la siguiente compilación de kernel. No puede confiar en el kernel.old, ya que en cada instalación de un nuevo kernel, este se sustituye con el último kernel instalado, que pudiese se un kernel no funcional. También recuerde que, en cuanto le sea posible, debe mover el kernel funcional a la ubicación correcta del kernel, o bien, órdenes como ps(1) no trabajarán correctamente. La orden para “desbloquear” el fichero del kernel que instala la orden make (para efecto de usar permanentemente otro kernel) es:

# chflags noschg /kernel

Si no puede ejecutar esto, probablemente su sistema se este ejecutando en un valor mayor a cero de securelevel(8). Edite la línea kern_securelevel del fichero /etc/rc.conf y establezca este valor como -1, y reinicie su sistema. Posteriormente puede regresar este al valor original, cuando este contento con su nuevo kernel.

Y si usted desea “bloquear” su nuevo kernel en su ubicación, o cualquier otro fichero, de tal forma que no pueda ser movido o modificado, puede hacerlo con la orden:

# chflags schg /kernel
El kernel funciona, pero ps ha dejado de funcionar!:

Si usted ha instalado un kernel que pertenece a una versión diferente a la del sistema en cuestión, por ejemplo, un kernel 4.X sobre un sistema 3.X, gran variedad de órdenes de sistema, como ps(1) y vmstat(8) ya no van a funcionar. Deberá recompilar la biblioteca libkvm, así como sus utilidades. Es por esta razón, que no es una buena idea utilizar un kernel de una versión diferente al resto del sistema operativo.

Éste y otros documentos pueden obtenerse en ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para preguntas acerca de FreeBSD, leer la documentación antes de contactar con la lista <questions@FreeBSD.org>.
Para preguntas acerca de esta documentación, e-mail a <doc@FreeBSD.org>.