Opciones de configuración del kernel de Freebsd 11. Materiales adicionales sobre Freebsd. Personalización personalizada del kernel

3 de junio de 2015 12:15 2,161 vistas | Sin comentarios

Sistema operativo FreeBSD 10.1 utiliza el kernel GENERIC por defecto. Este configuración estándar utilizado para soporte gran cantidad hardware fuera de la caja. La compilación de un kernel personalizado, a su vez, mejora la seguridad, la funcionalidad y el rendimiento del servidor.

Para ello, FreeBSD utiliza dos ramas de código: estable y actual. Una rama estable es la última versión de código lista para producción. La rama actual es la última versión de código del equipo de desarrollo, que proporciona funciones avanzadas, pero también es más vulnerable a errores e inestabilidades del sistema. EN este manual Se utiliza la rama de código estable.

Este tutorial le mostrará cómo compilar de forma personalizada el kernel de FreeBSD.

Requisitos

1: Descargar el código fuente del kernel

Primero necesitas descargar el código fuente del sistema operativo.

FreeBSD, como muchas otras distribuciones UNIX, hace que su código esté disponible públicamente para su descarga y modificación. Para recompilar el kernel, primero debe descargar el código fuente del sistema de control de versiones de FreeBSD.

El equipo de FreeBSD utiliza el repositorio de Subversion para almacenar código, por lo que primero debe instalar el puerto binario de Subversion.

sudo pkg instalar subversión

De forma predeterminada, el sistema FreeBSD utiliza el shell tcsh, que utiliza una tabla hash de comando interna en $PATH. Después Instalaciones de subversión debe ejecutar el comando rehash, gracias al cual el sistema vuelve a leer los archivos de configuración.

Ahora busque una copia de la última rama estable en el directorio /usr/src.

sudo svn co https://svn0.us-east.FreeBSD.org/base/stable/10 /usr/src

Es posible que el sistema le solicite que acepte el certificado del servidor. Para aceptarlo, ingrese p, asegurándose de que suma de control expediente (o huella dactilar) coincide con el importe indicado al final de esta página.

2: personalización personalizada del kernel

Ahora puede comenzar a configurar el kernel del sistema.

De acuerdo con la convención de nomenclatura del archivo de configuración del kernel, el nombre del kernel debe escribirse en mayúsculas. En esta guía, este archivo se llamará EJEMPLO. La configuración del kernel se almacena en el directorio /usr/src/sys/architecture/conf; Digamos que se utiliza la arquitectura AMD64.

Abra el directorio de configuración:

CD /usr/src/sys/amd64/conf

Cree un archivo de EJEMPLO y ábralo para editarlo en cualquier editor de texto(en este caso se utiliza):

El kernel GENERIC admite una gran variedad de hardware diferente; El núcleo EXAMPLE solo admite el hardware necesario para ejecutar el servidor; se eliminan todos los dispositivos estándar e innecesarios. EXAMPLE también admite firewall de filtrado de paquetes (pf), modelado de tráfico (altq), cifrado del sistema de archivos (geom_eli) y seguridad IP (IPsec).

Nota Nota: Puede leer más sobre las opciones en la documentación de FreeBSD. Intente escribir el código del kernel usted mismo.

3: construir e instalar el kernel

habiendo creado configuraciones personalizadas kernel, necesita compilarlo y recompilarlo.

Regrese al directorio /usr/src y ejecute make buildkernel usando el nuevo archivo de configuración:

CD /usr/src
sudo make buildkernel KERNCONF=EJEMPLO

Esto puede llevar algún tiempo dependiendo de la cantidad de recursos del servidor (en promedio, un servidor de 1 GB tarda 90 minutos en compilarse).

Una vez que se complete la recompilación, instale el nuevo kernel:

sudo make installkernel KERNCONF=EJEMPLO

Luego reinicie el sistema.

sudo apagado -r ahora

Después de esto, el servidor deshabilitará los servicios actuales, sincronizará los discos y actualizará el kernel.

Después de que el servidor se reinicie, inicie sesión. Utilice el siguiente comando para verificar que el sistema esté utilizando el archivo de configuración del kernel.

sysctl kern.conftxt | identificación grep

El siguiente resultado debería aparecer en la pantalla:

La configuración y recompilación del kernel se completaron exitosamente.

Etiquetas: ,

La distribución Fryukhi a menudo se considera la más adecuada para resolver problemas de red aplicados en una red local. Hoy resolveremos uno de los problemas de la red: configurar una puerta de enlace en Freebsd 10 para acceder a Internet desde un área local. Se trata de una funcionalidad de servidor sencilla, popular y solicitada que se puede ampliar con funciones adicionales.

usaremos próxima versión sistemas para resolver nuestro problema de configurar una puerta de enlace:

# uname -v FreeBSD 10.2-RELEASE-p8 #0 r292756M: sábado 26 de diciembre 22:49:34 MSK 2015 root@freebsd:/usr/obj/usr/src/sys/GENERIC

El servidor tiene 2 tarjetas de red instaladas:

  • hn0— interfaz externa, recibe Internet del proveedor, configuración a través de dhcp
  • hn1red local, dirección 10.20.30.1, configurada manualmente

Nuestra tarea de configurar un enrutador freebsd de software incluirá configurar el enrutamiento en el servidor, instalar y configurar ipfw, habilitar nat y configurar un servidor dhcp y dns local.

Preparando el servidor para configurar la puerta de enlace

La información sobre los arrendamientos dhcp emitidos del servidor dnsmasq se puede ver en el archivo /var/db/dnsmasq.leases.

Analizando la actividad de la red en freebsd usando iftop

A veces desea ver qué está sucediendo en el enrutador y quién está usando Internet en en este momento. De forma predeterminada, el sistema no tiene una herramienta preparada para obtener esta información. Un simple programa iftop vendrá en nuestra ayuda, que le permite ver la actividad en la interfaz de red en tiempo real.

Instalar si arriba a la puerta de enlace Freebsd configurada:

# paquete instalar iftop

Lanzamos iftop indicando la interfaz y mostrando los puertos utilizados:

# iftop -i hn1 -P

Vemos una imagen interesante: quién sube a dónde, a través de qué puerto y a qué velocidad.

Como ejemplo, inicié un generador de tráfico de Internet en una de las computadoras. Ocupó casi todo el canal y se hizo claramente visible en el enrutador usando iftop. Por supuesto, esta sencilla utilidad no resuelve todos los problemas relacionados con el seguimiento de la actividad de la red, pero es adecuada para presentar la imagen actual si no necesita nada más.

Conclusión

Resumamos lo que hicimos. Para poco tiempo Configuramos una puerta de enlace completa (esencialmente un enrutador de software) basada en Freebsd 10 para proporcionar acceso a Internet a los clientes detrás del servidor. Al mismo tiempo, se garantizó la recepción automática de los ajustes. Incluso en un servidor virtual modesto, una puerta de enlace de este tipo es capaz de procesar una gran cantidad de tráfico.

La configuración completa lleva literalmente entre 10 y 15 minutos. La mayor parte del tiempo se dedica a ensamblar el núcleo. cuanto más alto versión gratuita, más tiempo se tarda en montarlo, a pesar de que la velocidad del hierro aumenta significativamente.

Repasemos los puntos y descubramos qué hicimos exactamente:

  1. Preparamos el servidor para configurar la puerta de enlace.
  2. Reconstruimos el kernel con los parámetros necesarios.
  3. Configuramos ipfw y nat y habilitamos el enrutamiento.
  4. dnsmasq instalado y configurado para distribución. configuración de red A través del servidor dhcp y dns.
  5. Instalamos iftop para un análisis simple de la actividad de la red en la interfaz externa.

Esto es suficiente para que la puerta de enlace funcione completamente en Freebsd 10. Si es necesario contar el tráfico de usuarios o restringir el acceso a ciertos recursos, puede usarlo.

El artículo describe cómo compilar. Núcleo FreeBSD. Con la configuración correcta, el tamaño del kernel se puede reducir considerablemente.

Para compilar su kernel, necesita instalar las fuentes del kernel (src-Fuente para todo menos cifrado). Si ya están instalados, vaya al directorio /usr/src/sys (kernel de FreeBSD). Si no tiene las fuentes del kernel instaladas, puede instalarlas mediante sysinstall. Suponemos que ha instalado las fuentes del kernel.

Bajo usuario raíz vaya a la carpeta /usr/src/sys/i386/conf.

# CD /usr/src/sys/i386/conf

Copie el archivo GENERIC, por ejemplo a mykernel. Editaremos el archivo resultante.

Si tiene una máquina Pentium4, le aconsejo que comente inmediatamente las líneas:

Cita
procesador I386_CPU
procesador I486_CPU
procesador I586_CPU

dejemos que nuestra máquina esté configurada para un procesador específico y no sea rociada con todo tipo de basura;)

Puede desactivar los dispositivos no utilizados, lo que reducirá el tamaño del kernel y, en consecuencia, la carga en el procesador. Puede ver qué dispositivos tiene usando el comando dmesg después de iniciar la computadora.

También puede agregar dispositivos que no son compatibles de forma predeterminada con el kernel. Los dispositivos se describen con más detalle en el archivo LINT para la rama 4.x de FreeBSD y en el archivo NOTAS para la rama 5.x de FreeBSD.

Una vez que hayamos editado nuestro archivo, podemos comenzar a compilarlo.

Necesitaremos ejecutar los siguientes comandos:

Si todo ha ido bien, sólo nos queda reiniciar.

PD Antes de experimentar, le aconsejo que guarde un kernel normal, por ejemplo con el nombre kernel.good, y luego, si nuestro nuevo kernel no se carga, especificaremos boot kernel.good en lugar de kernel.old. Propongo hacer esto porque cuando volvamos a compilar el kernel, nuestro kernel.old se sobrescribirá, por ejemplo, con un kernel que no funciona y no podremos arrancar en absoluto.

PPS Mantener un kernel que funcione bien:

Para FreeBSD 4.x: comando cp /kernel /kernel.good

Para FreeBSD 5.x: comando cp -R /boot/kernel /boot/kernel.good

Segunda forma de actualizar el kernel:

Vaya al directorio /usr/src.

Montar el núcleo.

# hacer buildkernel KERNCONF=MYKERNEL

Instale un nuevo núcleo.

# hacer installkernel KERNCONF=MYKERNEL

Nota: este método de compilación requiere la presencia de todos los archivos fuente del sistema. Si acaba de instalar los archivos fuente del kernel, utilice el método tradicional como se describe anteriormente.

MYKERNEL es su archivo de configuración del kernel, que para i386 se encuentra en la carpeta /usr/src/sys/i386/conf. Si no especifica el parámetro KERNCONF, se construirá el kernel GENERIC.

Hoy aprenderemos cómo ensamblar el kernel y el mundo de FreeBSD (principales archivos ejecutables, bibliotecas, etc.) a partir de códigos similares. Anteriormente en la publicación PostgreSQL: compilando desde el código fuente y configurando para Linux, descubrimos por qué es necesario poder compilar algo desde el código fuente. Los escenarios principales son la optimización para hardware específico y la obtención de las últimas novedades directamente desde la rama maestra. Además, puede personalizar el kernel para que se adapte a sus necesidades específicas: seleccione un programador, deshabilite IPv6, elimine la compatibilidad con hardware innecesario, etc. Finalmente, si de repente planea convertirse en un confirmador del kernel de FreeBSD, el conocimiento de cómo se ensambla este kernel no será superfluo.

Descargo de responsabilidad: Es posible que gran parte de lo que se escribe a continuación ya no sea relevante cuando lea esto. Antes de seguir las instrucciones dadas, sería una buena idea consultar primero su manual. Tenga en cuenta también que a continuación estamos hablando de exclusivamente sobre ensamblar el núcleo y el mundo de la fuente y el procedimiento binario Las actualizaciones del sistema se describen en la nota Memo para actualizar el kernel y el mundo FreeBSD.

Preparando el medio ambiente

Al escribir esta nota, utilicé el siguiente disco de instalación:

FreeBSD-10.2-RELEASE-amd64-disc1.iso

No tenía ningún hardware adicional a mano, por lo que todos los experimentos se realizaron en VirtualBox. Se eligió VirtualBox en lugar de Vagrant porque necesitaríamos acceso al monitor del sistema. En VirtualBox, se crearon dos adaptadores en la configuración de red: uno NAT y otro solo host. El primero es necesario para que el sistema de invitados acceda a Internet. El segundo le permitirá acceder al sistema invitado desde el sistema host a través de SSH.

Después de instalar el sistema, instale los paquetes git-lite, vim-lite, tree, bash, sudo, edite /usr/local/etc/sudoers y luego cambie el shell de usuario:

sudo chsh -s /usr/local/bin/bash eax

En ~/.gitconfig agregamos:


buscapersonas = menos -S

Personalmente, también me gusta mucho tener el htop habitual en el sistema:

cd/usr/publicaciones
sudo portsnap buscar extracto
cd sysutils/htop
sudo make -DBATCH instalar limpio

Detalles sobre configuración inicial Los sistemas y la administración de paquetes en FreeBSD se pueden encontrar en las notas Uso de FreeBSD en el escritorio, versión 2.0 y Administración de paquetes en FreeBSD usando la utilidad pkg, respectivamente.

Ensamblando el núcleo

La forma en que se construye el kernel de FreeBSD está controlada por varios archivos de configuración.

Algunas de las configuraciones están en /etc/make.conf. Este archivo afecta la compilación de puertos, el mundo, el kernel de FreeBSD y, en general, cualquier programa escrito en C. Aquí puede especificar la CPU para la que se realiza la compilación, los indicadores de optimización, etc. Lista de todos opciones disponibles puedes buscar en /usr/share/examples/etc/make.conf y man make.conf. Ejemplo /etc/make.conf:

# usar Clang 3.7 en lugar del 3.4 predeterminado
CC=/usr/local/bin/clang37
CXX=/usr/local/bin/clang++37
CPP=/usr/local/bin/clang-cpp37

# optimizar el código para la CPU utilizada en la máquina
¿TIPO DE CPU?=nativo

# indicadores al compilar código en C y C++
CFLAGS+=-O2 -tubo
CXXFLAGS+=-O2 -tubo

También está /etc/src.conf, que tiene configuraciones ligeramente diferentes y afecta sólo al kernel y al mundo. Consulte man src.conf para obtener más detalles. Ejemplo /etc/src.conf:

¿TIPO DE CPU?=nativo
CFLAGS+=-O2 -tubo
COPTFLAGS+=-O2 -tubo

Finalmente, también hay un archivo de configuración para el propio kernel. Se discutirá más adelante.

si en instalando FreeBSD Si marcó la casilla de verificación "instalar todas las fuentes", las fuentes del kernel y del mundo se ubicarán en el directorio /usr/src. Puede encontrar información sobre qué subdirectorio se encuentra en el Manual del desarrollador y en el archivo README.

# en lugar de encabezado, indica la rama o etiqueta que te interesa
cd / usr/ src && sudo svn co http:// svn.freebsd.org/ base/ head/ ./

La configuración con la que se construye el kernel se encuentra en el archivo:

/usr/src/sys/(arquitectura)/conf/(config)

El nombre de la arquitectura depende de su CPU. Como regla general, es i386 o amd64. La configuración del kernel predeterminada en el sistema se llama GENERIC. Puedes copiarlo y nombrarlo, por ejemplo, MYKERNEL.

sistema cd/amd64/conf
sudo cp MYKERNEL GENÉRICO

La configuración está bien documentada. Por ejemplo, puede desactivar la compatibilidad con IPv6 e IPSec comentando dos líneas:

#opciones INET6
#opcionesIPSEC

¡Importante! CURRENT incluye de forma predeterminada el mecanismo de testigo, diseñado para buscar puntos muertos. Tenga en cuenta que puede generar rastros de pila aterradores en la consola, algunos de los cuales son errores y deben informarse a la lista de correo freebsd-current@, y algunos de los cuales son bastante inofensivos. También se informa que este mecanismo es bastante lento y, por lo tanto, es posible que desees desactivarlo.

Construimos el kernel con nuestra configuración:

cd ../ ../ ..
sudo make -j4 buildkernel KERNCONF =MYKERNEL

Antes de instalar el kernel, haga una copia de seguridad del actual:

sudo cp -r /boot/kernel/ /boot/kernel.good

Al instalar un nuevo kernel, se crea automáticamente una copia de seguridad, pero esta copia se sobrescribirá cuando próximo instalación. Tras crear una copia de seguridad manual, siempre tendremos a mano un GENERIC 100% funcional, desde el que podremos arrancar si surgen problemas.

Instalación de un nuevo kernel:

sudo make installkernel KERNCONF =MYKERNEL

Después de la instalación, el kernel estará en el directorio /boot/kernel y una copia de seguridad del kernel actual estará en /boot/kernel.old.

En lugar de un par de pasos buildkernel e installkernel, también puedes usar los comandos:

sudo make -j4 kernel KERNCONF =MYKERNEL INSSKERNNAME =kernel.test
sudo nextboot -k kernel.test

Esto nos indicaría que coloquemos el kernel en /boot/kernel.test y lo usemos la próxima vez que arranque. Si todo va bien, después de reiniciar /boot/kernel.test se puede cambiar el nombre a /boot/kernel. Esta opción puede resultar más conveniente si no hay acceso físico a la máquina.

Reiniciar:

reiniciar sudo

Después de cargar el sistema, verifique la versión del kernel:

uname -a

Debería ver algo como

FreeBSD vbox 11.0-ACTUAL FreeBSD 11.0-ACTUAL #0 6a8922d(master): martes
28 de febrero 13:40:05 MSK 2016 root@vbox:/usr/obj/usr/src/sys/MYKERNEL amd64

Si algo sale mal, al iniciar el sistema, puede seleccionar iniciar desde kernel.old en el menú (presionando el número 5). También puede seleccionar "Escapar a un indicador del cargador" (presionando el número 3) y seleccionar cualquier kernel, por ejemplo:

kernel de arranque.bueno

De esta manera, incluso si de repente atascamos el núcleo, queda un paracaídas de reserva.

Uniendo el mundo

Es casi seguro que el mundo de FreeBSD 10 no será de la mejor manera posible trabajar con el kernel FreeBSD 11. Por lo tanto, tiene sentido actualizar inmediatamente el mundo junto con la reconstrucción del kernel del sistema.

¡Importante! Compilar el mundo puede llevar tantos tiempo, especialmente si en VirtualBox le dio a la máquina virtual solo un núcleo. Si está utilizando una máquina real, necesitará acceso físico le. También necesitarás fusionar manualmente muchas configuraciones, confirmar la eliminación de muchos archivos y luego (!) reinstalar todos los paquetes instalados y reconstruir todo. puertos instalados. Quizás, en lugar de montar un mundo nuevo, le resulte más fácil desmantelar temporalmente la máquina, ponerla nuevo sistema y configura todo lo que necesites encima. O utilizar el mecanismo ya mencionado. binario actualizaciones. Me parece que reconstruir el mundo es un procedimiento más para los desarrolladores de FreeBSD que para los administradores de servidores de combate.

Entonces, vayamos al directorio con las fuentes:

cd/usr/src

Limpiamos archivos temporales que puedan haber quedado de la build anterior:

sudo rm -rf /usr/obj

Uniendo el mundo:

sudo make -j4 buildworld

Para minimizar los riesgos asociados con la actualización de aplicaciones que ya se están ejecutando y en ejecución, se recomienda cambiar el sistema operativo al modo de usuario único:

# en una ventana de VirtualBox o al lado del servidor
sudo se apaga ahora

Ahora montamos el sistema de archivos (tengo ZFS):

zfs establece solo lectura = apagado zroot
montaje zfs -a

Si estás usando UFS entonces.

Hay toneladas de artículos en Internet, lo que quieras, recopila el kernel, escribiré lo que uso y por qué, quien no esté de acuerdo, escribe a continuación :)

1. Copiamos nuestro kernel bueno, ¿y si... (sí, sé que durante la instalación el anterior se moverá a kernel.old)

# cp -R kernel/ kernel.bueno/

2. Recopilación de información: ¿qué tipo de controladores tenemos en nuestra madre y qué tipo de hardware?

# cat /var/run/dmesg.boot Ver qué controladores nos son útiles # pciconf -lv

3. Comprobamos si está en su sitio códigos fuente

# ls /sys

3.0 Si no están, los sacamos del disco o de Internet:
3.0a Desde el disco

Montar /cdrom cd /cdrom ls ; Debería ver las carpetas en el disco cd src/ ./install.sh todos los cd /usr/src/ umount /cdrom

3.0b Si por casualidad tenemos Internet, pero no disco, entonces (en mi caso Frya 8.3):

Cd /usr/ports/devel/subversion make config-recursive svn checkout http://svn.freebsd.org/base/releng/8.3/ /usr/src grep -A 2 "TYPE="" /usr/src/sys /conf/newvers.sh Debería mostrar algo como esto TYPE="FreeBSD" REVISION="8.3" BRANCH="RELEASE-p4"

Si alguna vez queremos actualizar los códigos fuente, entonces:

Actualización de Svn /usr/src/

También necesitamos una VPN, un servidor pppoe con compresión y cifrado MPPE, luego
3.1 extraer http://mavhome.dp.ua/MPPC/mppc-1.0.tgz

Obtener http://mavhome.dp.ua/MPPC/mppc-1.0.tgz

3.2 Desempaquetar en /usr/src/sys/net

Cd /usr/src/sys/net tar -xvf /usr/home/nombre de usuario/mppc-1.0.tgz

4. Copie la configuración genérica (la reescribiremos y tendremos nuestro propio kernel)
Un pedazo de teoría
Los archivos de configuración se pueden encontrar en el directorio /sys/»arch»/conf. El directorio contiene varios archivos, de los cuales los más importantes son:
DEFAULTS Esta es una lista de configuraciones y dispositivos que están habilitados de forma predeterminada para esta arquitectura.
GENERIC Este archivo contiene la configuración del kernel estándar.
GENERIC.hints Este es un archivo de sugerencias que posteriormente se instala como /boot/device.hints. EN este archivo Contiene información de configuración necesaria para configurar dispositivos de hardware heredados.
MAC Este archivo de configuración del kernel proporciona soporte para Mandatory Access Controls, un sistema de control de acceso multinivel utilizado en entornos altamente seguros. Este archivo de configuración solo es necesario si se utiliza MAC.
NOTAS Esta es una configuración integral del kernel para una arquitectura de hardware determinada, que incluye todas las funciones específicas de la plataforma. Las funciones independientes de la plataforma se pueden encontrar en /usr/src/sys/conf/NOTES.

# cd /usr/src/sys/i386/conf # mkdir /root/kernels # cp GENERIC /root/kernels/MYKERNEL # ln -s /root/kernels/MYKERNEL

5. Veamos en qué consiste nuestro núcleo y editemos el genérico a lo largo del camino.
Parámetros del núcleo:
UPC Esta etiqueta indica qué tipos de procesadores son compatibles con el kernel. La configuración del kernel para la plataforma de hardware amd64/EM64T incluye una única entrada que indica el tipo de procesador.
identificador contiene el nombre del kernel, una cadena arbitraria
opciones de maquillaje Esta línea contiene instrucciones para software, que construye el kernel. La opción más común es DEBUG=-g, que le indica al compilador que incluya información de depuración en el kernel.
opciones Las entradas de este tipo describen funciones del kernel que no están directamente relacionadas con el hardware. Esto incluye sistemas de archivos, protocolos de red y depuradores integrados en el kernel.
dispositivos Las entradas de este tipo describen dispositivos o controladores de dispositivos; contienen instrucciones que describen cómo debe interactuar el kernel con ciertos dispositivos.

No necesitamos el núcleo que soportará el primer cáñamo, así que lo dejamos:

Cpu I686_CPU ident MYKERNEL # opciones de depuración del kernel (probablemente no sea útil en la vida real, pero si detecta un problema técnico # y desea informarlo a los desarrolladores, será útil) makeoptions DEBUG=-g #4Crypt_and_compress opciones NETGRAPH_MPPC_ENCRYPTION opciones NETGRAPH_MPPC_COMPRESSION # 4PF: dispositivo pf dispositivo pflog dispositivo pfsync opciones ALTQ opciones ALTQ_CBQ opciones ALTQ_RED opciones ALTQ_RIO opciones ALTQ_HFSC opciones ALTQ_CDNR opciones ALTQ_PRIQ opciones ALTQ_NOPCC opciones ALTQ_DEBUG #4MPD opciones NETGRAPH_ETHER opciones NETGRAPH_SOCKET opciones NETGRAPH_TEE opciones NETGRAPH_BPF opciones Opciones de PH_IFACE Opciones de NETGRAPH_KSO CKET Opciones de NETGRAPH_PPP Opciones de NETGRAPH_PPTPGRE Opciones de NETGRAPH_TCPMSS NETGRAPH_VJC #sondeo ¡¡NO hagas esto, ahora 2012!! #options DEVICE_POLLING #options HZ=1000 # o 2000 o 4000 que más temas el tráfico fluye más rápido #Múltiples opciones de tablas de enrutamiento ROUTETABLES=3 # # Define el número de descriptores en el sistema # (0 - significa define el “piloto automático” :))) maxusers 0 # Opciones del programador ULE (distribuye flujos) SCHED_ULE # La posibilidad de La preferencia aumenta la eficiencia de FreeBSD # en multitarea. opciones PREEMPTION # InterNETworking Opciones IPv4 INET # Protocolos de comunicaciones IPv6 Opciones IPv6 INET6 # sin esto IPv6 no funciona opciones SCTP # sistema de archivos Opciones de FreeBSD FFS # Esta opción habilita la tecnología Soft Updates en el kernel, lo que aumenta # la velocidad de escritura en los discos. Aunque esta tecnología está # habilitada en el kernel, debe habilitarse por unidad. opciones SOFTUPDATES # le permiten definir opciones detalladas de permisos de archivos UFS_ACL # proporciona soporte para la indexación de directorios, lo que mejora la velocidad # de trabajar con directorios que contienen miles de archivos. opciones UFS_DIRHASH # habilita las opciones de registro en diario UFS basado en gjournal UFS_GJOURNAL # podemos hacer las opciones de disco raíz/memoria MD_ROOT # Este parámetro (y todos los demás parámetros que terminan en _R00T) # le permite usarlo como dispositivo de disco Para partición raíz# otros sistemas de archivos distintos de FFS. El instalador utiliza un dispositivo de memoria (MD) como # sistema de archivos raíz. Si está utilizando # sistemas sin disco, necesitará soporte NFS como # partición raíz. Si está instalando FreeBSD en computadora estándar- # con disco duro y teclado, entonces no necesitarás todos estos parámetros. #opciones NFSCLIENT #Cliente de sistema de archivos de red #opciones NFSSERVER #Servidor de sistema de archivos de red #Estas dos opciones brindan soporte para el sistema de archivos de red (NFS). # El parámetro NFSCLIENT le permitirá montar particiones # atendidas por otra computadora en la red, y el parámetro NFSSERVER le permitirá proporcionar acceso # a sus particiones para otras computadoras. # Network Lock Manager #opciones NFSLOCKD # NFS utilizable como /, requiere NFSCLIENT #opciones NFS_ROOT # MSDOS Soporte del sistema de archivos para opciones de particiones gruesas MSDOSFS # ISO 9660 Soporte del sistema de archivos para opciones de particiones de CD CD9660 # Procesar sistema de archivos (requiere PSEUDOFS) procesar opciones del sistema de archivos PROCFS # Opciones de marco de pseudosistema de archivos PSEUDOFS # Tablas de particiones GUID. opciones GEOM_PART_GPT # Proporciona opciones de etiquetado GEOM_LABEL #compatible con versiones anteriores # BSD 4.3 TTY compat (sgtty) opciones COMPAT_43TTY opciones COMPAT_FREEBSD4 opciones COMPAT_FREEBSD5 opciones COMPAT_FREEBSD6 opciones COMPAT_FREEBSD7 # Retraso (en ms) antes de sondear SCSI # Retraso al cargar para que el controlador SCSI administrado # para detectar todos los dispositivos conectados a él. #options SCSI_DELAY=5000 #options KTRACE # ktrace(1) opciones de soporte STACK # stack(9) support # Estas opciones brindan soporte para memoria compartida y comunicación entre procesos estilo System V # Muchos programas de administración de bases de datos se basan en esta característica. #Esta opción proporciona soporte para la memoria compartida del Sistema V. #El uso más común de esto es la extensión XSHM en X, que #muchas aplicaciones con uso intensivo de gráficos #utilizarán automáticamente para mejorar la velocidad. Si está utilizando X, esta opción #será necesaria. opciones SYSVSHM # Memoria compartida estilo SYSV # Soporte Mensajes del sistema V. Esta opción sólo añade unos pocos cientos de bytes al kernel #. opciones SYSVMSG # Colas de mensajes estilo SYSV # Compatibilidad con semáforos System V No es una característica # utilizada muy comúnmente, pero solo agrega unos pocos cientos de bytes al kernel. opciones SYSVSEM # Semáforos estilo SYSV opciones P1003_1B_SEMAPHORES # Semáforos estilo POSIX # Extensiones en tiempo real agregadas en 1993 POSIX®. # Ciertas aplicaciones de la colección los utilizan, como StarOffice™. opciones _KPOSIX_PRIORITY_SCHEDULING # Opciones de extensiones en tiempo real POSIX P1003_1B PRINTF_BUFR_SIZE=128 # Evita que la salida de printf se intercale. #options KBD_INSTALL_CDEV # Instalar una entrada CDEV en /dev para opciones de teclados USB HWPMC_HOOKS # Hooks de kernel necesarios para las opciones de hwpmc(4) AUDIT # Opciones de auditoría de eventos de seguridad MAC # Opciones de marco MAC de TrustedBSD FLOWTABLE # caché de enrutamiento por CPU #options KDTRACE_HOOKS # Kernel Opciones de ganchos de DTrace INCLUDE_CONFIG_FILE # Incluir este archivo en el kernel # Opciones para depurar opciones KDB # Opciones de código relacionado con el depurador del kernel KDB_TRACE # Imprimir un seguimiento de la pila en caso de pánico # Para crear un kernel SMP, se necesitan las dos líneas siguientes opciones SMP # Kernel multiprocesador simétrico dispositivo apic # E/S APIC (solo i386) # habilitar simétrico # Multiprocesamiento (SMP) en kernels diseñados para ejecutarse en la arquitectura i386: # El parámetro SMP indica al kernel que programe procesos # en múltiples CPU, y la opción apic proporciona I /O soporte para # núcleos SMP. FreeBSD se distribuye con soporte SMP, habilitado de forma predeterminada. # El dispositivo apic permite el uso del conjunto APIC de E/S para distribuir interrupciones. Se puede utilizar tanto con núcleos de un solo procesador como con núcleos multiprocesador (para este último, se requiere apic). # Dispositivo de control de frecuencia de CPU cpufreq # Soporte de bus. dispositivo acpi dispositivo eisa dispositivo pci # Deben eliminarse si el sistema realmente no tiene dichos buses. # Hay una gran cantidad de sistemas heredados # en los que el bus ISA está oculto en algún lugar del interior. # Unidades de disquete #dispositivo fdc # Dispositivos ATA y ATAPI dispositivo ata dispositivo atapist # Unidades de disco ATA dispositivo ataraid # Unidades ATA RAID dispositivo atapicd # Unidades de CDROM ATAPI #dispositivo atapifd # Unidades de disquete ATAPI #dispositivo atapist # Opciones de unidades de cinta ATAPI ATA_STATIC_ID # Dispositivo estático numeración # En modo estático, el controlador se trata como una pieza de hardware, respectivamente # tenemos 2 canales de 2 dispositivos 0-1 y 2-3, respectivamente PrMaster PrSlave # y SecMaster SecSlave para los alevines ad0 ad1 ad2 ad3. y si mueve el tornillo de # PriMaster a SecMaster, los volúmenes de ad0 se convertirán en ad2. # Si desactiva ATA_STATIC_ID, obtenemos numeración dinámica no por # canales y dispositivos, sino por dispositivos, es decir, tornillos. Es más fácil decirlo de esta manera: # si teníamos un tornillo PriMaster y desactivamos esta opción, luego de # iniciar un nuevo kernel, el número de particiones no cambiará. Ahora, si # cambias usando un cable o puentes, el tornillo en lugar de cualquier otro, por ejemplo SecSlave, # ¡seguirá siendo ad0! Es el único en el automóvil;) # En consecuencia, al agregar un segundo tornillo, el sistema determinará su prioridad # según el orden de conexión # Por ejemplo, activaremos 2 tornillos en PriSlave y SecMaster # Obtendremos PriSlave - ad0 y SecMaster - ad1. # Controladores SCSI (comentó toda la sección) #dispositivo ahb # Familia EISA AHA1742 #dispositivo ahc # AHA2940 y dispositivos AIC7xxx integrados #opciones AHC_REG_PRETTY_PRINT # Imprimir campos de bits de registro en la salida # de depuración. Agrega ~128k al controlador. #dispositivo ahd # AHA39320/29320 y dispositivos AIC79xx integrados #opciones AHD_REG_PRETTY_PRINT # Imprimir campos de bits de registro en la salida de depuración #. Agrega ~215k al controlador. #Líneas como *_REG_PRETTY_PRINT habilitan el modo de depuración para los controladores correspondientes. # Periféricos SCSI dejados porque son necesarios para USB) dispositivo scbus # Bus SCSI (requerido para SCSI) dispositivo ch # Cambiadores de medios SCSI dispositivo da # Dispositivo de acceso directo (discos) sa # Dispositivo de acceso secuencial (cintas, etc.) cd # Dispositivo de CD pass # Passthrough dispositivo (acceso SCSI directo) dispositivo ses # Servicios ambientales SCSI (y SAF-TE) # atkbdc0 controla tanto el teclado como el mouse PS/2 dispositivo atkbdc # dispositivo controlador de teclado AT atkbd # dispositivo de teclado AT psm # dispositivo de mouse PS/2 kbdmux # dispositivo multiplexor de teclado vga # presentación del dispositivo del controlador de la tarjeta de video VGA # compatibilidad con pantalla de presentación y protector de pantalla # syscons es el controlador de consola predeterminado, parecido a una consola SCO # consola del sistema- sin este elemento todo funciona, pero no muestra nada en # el monitor local :)) dispositivo sc dispositivo agp # admite varios conjuntos de chips AGP # Gestión de energía soporte (consulte NOTAS para obtener más opciones) #device apm # Agregue soporte para suspender/reanudar para el i8254. dispositivo pmtimer # Compatibilidad con PCCARD (PCMCIA) # Compatibilidad con PCMCIA y puente cardbus por si acaso # dispositivo cbb # puente cardbus (yenta) # dispositivo pccard # bus de tarjeta PC (16 bits) # dispositivo cardbus # bus CardBus (32 bits) # Puertos serie (COM) dispositivo uart # Controlador UART genérico # Dispositivo de puerto paralelo ppc # Interfaz de puerto paralelo en ISA. dispositivo ppbus # Bus de puerto paralelo (requerido) dispositivo lpt # Impresora #dispositivo plip # TCP/IP sobre paralelo #dispositivo ppi # entrada/salida propósito general(""puerto geek"") + entrada/salida IEEE1284. #dispositivo vpo # controlador de unidad Iomega Zip. Requiere scbus y da. # NIC PCI Ethernet. Dejé solo uno :) dispositivo em # Intel PRO/1000 GigabitEthernet Familia # Pseudodispositivos. # Esta es una interfaz loopback que permite que el sistema se comunique consigo mismo # a través de sockets de red utilizando protocolos de red. bucle de dispositivo # Loopback de red # Este dispositivo proporciona pseudo números aleatorios, necesario en # operaciones de cifrado y similares programas importantes como juegos. FreeBSD # proporciona soporte para una variedad de fuentes de números aleatorios, todas las cuales # se combinan en dispositivos de números pseudoaleatorios # /dev/random /dev/urandom. dispositivo aleatorio # tiene muchas características específicas del dispositivo, por lo que FreeBSD # lo representa como un dispositivo. ¡Deja esta línea! dispositivo ether # soporte Ethernet dispositivo vlan # soporte VLAN 802.1Q # túnel lógico de paquetes. Utilizado por varios # programas para intercambiar paquetes con el kernel. Se necesita un pseudodispositivo de este tipo # para soportar PPP usando medios fuera del núcleo (PPP en el país de usuario) - # conexiones de acceso telefónico regulares. dispositivo tun # Túnel de paquetes. # este es un pseudo terminal. Cuando se conecta al sistema a través de protocolos telnet o # SSH, FreeBSD debe poder monitorear sesiones de terminal, # imprimir caracteres en la pantalla y leer la entrada del teclado. El sistema sirve # conexión remota como un monitor físico y un teclado normales. # Un pseudoterminal es un pseudodispositivo similar a un terminal # asociado con una conexión. dispositivo pty # compatibilidad con estilo BSD pseudo ttys # le permite almacenar archivos en la memoria. Esto es muy útil para organizar almacenes de datos temporales muy rápidos. Para la mayoría (pero no para todos) los servidores de Internet, los discos de memoria son simplemente un desperdicio improductivo. RAM. Además, los discos en memoria se pueden # utilizar para montar y acceder a imágenes de disco. dispositivo md # Discos de memoria dispositivo gif # Dispositivo de túnel IPv6 e IPv4 Faith # Firmware del dispositivo de retransmisión (traducción) de IPv6 a IPv4 # Módulo de asistencia de firmware # El dispositivo `bpf" habilita el filtro de paquetes Berkeley. # Esté atento a los requisitos administrativos consecuencias de habilitar esto # Tenga en cuenta que se requiere "bpf" para el dispositivo DHCP bpf # Filtro de paquetes Berkeley # Soporte USB todas las opciones que necesitaba USB_DEBUG # habilitar mensajes de depuración dispositivo uhci # UHCI PCI->Dispositivo de interfaz USB ohci # OHCI PCI- > Dispositivo de interfaz USB ehci # EHCI PCI->Interfaz USB (USB 2.0) dispositivo usb # Bus USB (requerido) #dispositivo udbp # Dispositivos USB de doble tubería dispositivo uhid # Dispositivo "Dispositivos de interfaz humana" ukbd # Dispositivo de teclado ulpt # Dispositivo de impresora umass # Discos/almacenamiento masivo: requiere scbus y dispositivo da ums # Ratón #dispositivo urio # Reproductor de MP3 Diamond Rio 500 # Dispositivos serie USB dispositivo u3g # Módems 3G basados ​​en USB (opcional, Huawei, Sierra)

6. Pasemos a los tipos.

#cd/usr/src

7. Montaje del núcleo

# hacer buildkernel KERNCONF=MYKERNEL

8. Instale el núcleo

# hacer installkernel KERNCONF=MYKERNEL

10. Si lo recopiló de forma remota, espere o realice una descarga única del nuevo kernel.

Aplicación0. Suplemento de hierro
Si tiene un dispositivo de hardware que no es compatible con el kernel GENERIC, verifique el archivo NOTAS. Algunas de las funciones enumeradas en este archivo tienen propósitos poco claros, pero si tiene un dispositivo de Inclusiones, Exclusiones y Extensiones de Kernel específico, debería poder determinar qué entrada le corresponde.
El mecanismo de configuración del kernel de FreeBSD tiene dos características interesantes que pueden facilitar el mantenimiento del kernel: sin palabras clave e incluye palabras clave. La conectividad le permite agregar un archivo separado a la configuración del kernel. Por ejemplo, si tiene una configuración de kernel que se describe como "GENÉRICA con un par configuraciones adicionales", podría incluirle una configuración GENERIC usando la instrucción include: include GENERIC. Entonces, por ejemplo, si quisiera crear un kernel que tenga funcionalidad GENERIC, pero que también admita el microprocesador Soekris, podría crear una configuración compuesta por siguientes líneas:
identificador MYKERNEL
incluir GENÉRICO
opciones CPU_SOEKRIS
también se puede utilizar
nodispositivo
no opción

Aplicación1. Descarga única de un nuevo kernel:
1. Copie el kernel ensamblado a la carpeta de prueba del kernel bueno a la carpeta del kernel;

# mv /boot/kernel /boot/kernel.test # mkdir /boot/kernel # cp /boot/kernel.good/* /boot/kernel/

2. La próxima vez que lo inicies, el de prueba se cargará una vez; si te gusta, conviértelo en el principal.

Nextboot -k kernel.test

3. Si todo salió bien

# mv /boot/kernel /boot/kernel.previous # mv /boot/kernel.test /boot/kernel

Si no, pídele al personal de mantenimiento que lo apague y encienda :)

Aplicación2. PROBLEMAS:
Cuando el sistema arroja una terrible maldición: "orden de bloqueo invertido"(solicitud de bloqueo revocada). Las principales fuentes de problemas son ACPI, PAE (no deshabilitado), SMP y solicitud de bloqueo revocada.
http://ipv4.sources.zabbadoz.net/freebsd/lor.html

pista. apico. 0. deshabilitado = 1. deshabilitar en un kernel ya ensamblado
núcleo. smp. disabled=1 deshabilitar en un kernel ya construido
pista. acpi. 0.disabled=1 deshabilitar en un kernel ya construido

Aplicación3. DEPURAR cuando entra en pánico
1.El núcleo debe estar con
opciones de maquillaje DEBUG=-g
opciones KDB
opciones KDB_TRACE
opciones DDB # deshabilitar el reinicio automático
2.Recibir rastreo
cd /boot/kernel.panicked/
# kgdb kernel.symbols /var/crash/vmcore.0
trazar hacia atrás
3.Pánico repetido en el modo para un jugador.
montar -ar
# /etc/rc.d/dumpon inicio

Aplicación4. CARGADOR
Si cometimos un error en algo y el servidor no se inicia, entonces usando el cargador podemos cargar el kernel antiguo.
lsdev: lista de dispositivos disponibles para descargar
show - el valor de las variables de carga del archivo conf
set - cambiar el parámetro de arranque
lsmod: módulos y kernel cargados en la memoria
descargar: descarga completamente el kernel y los módulos de la memoria
arrancar – continuar arrancando
Descargando un kernel alternativo
descargar
cargar /boot/kernel.good/kernel
cargar /boot/kernel.good/acpi.ko todo lo demás es opcional
bota

Aplicación5. Módulos del núcleo
kldstat lista de módulos cargados

Kldload wlan_wep o kldload /boot/kernel/wlan_wep.ko

klddescargar módulo de descarga

Klddescargar wlan_wep.ko

registrándose en /boot/kernel/loader.conf módulo requerido, se cargará automáticamente cuando se inicie el sistema

Procfs_load="SÍ"

Aplicación6. Reensamblaje selectivo del módulo
De forma predeterminada, al compilar un kernel, también se reconstruirán todos los módulos del kernel. Si desea actualizar el kernel más rápido o compilar solo ciertos módulos, debe editar el archivo /etc/make.conf antes de iniciar el proceso de compilación del kernel:

MODULES_OVERRIDE = linux acpi sonido/sonido sonido/controlador/ds1 ntfs
Esta variable establece la lista de módulos para construir en lugar de construir todos los módulos.

SIN_MODULES = linux acpi sonido ntfs
Esta variable enumera los módulos principales que deben excluirse del proceso de compilación. Para otras variables que pueden resultarle útiles durante el proceso de compilación del kernel, consulte la página del manual make.conf(5).





Arriba