====== Construyendo el kernel de Linux usando git ======
// Nota del autor: Estoy escribiendo esto de la manera más imparcial que puedo, porque creo que el usuario debería decidir qué es lo mejor para él.//
==== Dónde construir ====
Hay dos lugares comunes para construir el núcleo. Es importante que dondequiera que compile el kernel, sea una ubicación que no cambie ni corra el riesgo de eliminación o corrupción. Por ejemplo, ** NO ** compile en '' /tmp ''.
1. Puede construir el kernel en '' /usr/src '' tendrá que ser root para construir el kernel. Esto tiene la ventaja de que funciona bien para sistemas multiusuario.
mkdir -p /usr/src
cd /usr/src
su
2. Puede compilar el kernel en su directorio de inicio en un directorio que no vaya a eliminar. Por ejemplo, puede usar ''~/.local/src'' o algo similar. Puede construir el kernel como un usuario regular. La desventaja es que otros usuarios en un sistema multiusuario no tendrán acceso a la fuente.
mkdir -p ~/.local/src
cd ~/.local/src
==== Dónde obtener la fuente del kernel ====
Hay dos formas de obtener la fuente del kernel. Asumiremos que la versión es la siguiente.
version=3.10.24
base=3.10
1. Puede usar git para obtener la fuente del kernel. Esto tiene la ventaja de que evitará problemas si [[http://www.linuxfoundation.org/news-media/blogs/browse/2011/08/cracking-kernelorg|linux.org está roto]]. Una desventaja es que el directorio de origen puede aumentar de tamaño a medida que se extraen nuevas versiones.
git clone --depth 1 git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git # Esto solo debe ejecutarse una vez al principio
cd linux-stable
git pull # ejecute esto cada vez para actualizar la fuente
git checkout v$version # DEBE verificar una versión del kernel o obtendrá la versión base, es decir, 3.10
git log # simplemente verifique para asegurarse de que la parte superior del registro indique la versión que desea
git tag -v v$version # esto no es necesario, pero valida la fuente usando una clave pública de gpg, que necesita importar
Para importar fácilmente una clave gpg, necesita la ''ID de clave RSA 0000000E''. Ejecute gpg --search 0000000E
y elija la clave que desea importar, o si eso no funciona, ejecute gpg --keyserver wwwkeys.pgp.net --recv-keys 0000000E
La clave aquí es solo un ejemplo.
2. Puede descargar el código fuente de [http://kernel.org/]]. La mejor manera de mantenerse al día es descargar el archivo comprimido de la versión base y luego descargar el parche de versión individual que desee, y aplicarlo antes de compilar.
kernelsite="ftp://www.kernel.org/pub/linux/kernel/v3.x"
lftp -c "open $kernelsite; get linux-$base.tar.xz linux-$base.tar.sign"
unxz -k "linux-$base.tar.xz"
gpg --verify "linux-$base.tar.sign"
# Lo siguiente se hace con cada nueva actualización del kernel
tar -xf "linux-$base.tar.xz"
mv "linux-$base" "linux-$version"
cd "linux-$version"
lftp -c "open $kernelsite; get patch-$version.xz patch-$version.sign"
unxz "patch-$version.xz"
gpg --verify "patch-$version.sign"
patch -p1 < "patch-$version"
La aplicación de parches a un kernel puede ser confusa, porque los parches son relativos a la versión básica del kernel. Digamos que actualmente tiene la fuente del kernel para 3.10.24, y desea actualizar a 3.10.25. Puede revertir el parche 3.10.24 (regresándolo a 3.10), o puede descargar la versión 3.10 del kernel y aplicar el parche 3.10.25. Si intenta aplicar el parche 3.10.25 sobre 3.10.24, fallará. Por lo tanto, se recomienda mantener el código fuente para la versión base en el directorio de compilación del kernel, especialmente si planea actualizar regularmente su kernel para obtener soluciones de seguridad.
Aquí hay un script que descarga el último parche para el kernel en ejecución actual. Se supone que ya tiene un tarball comprimido xz en el directorio de compilación del kernel.
#!/bin/sh
error () # error
{
echo "$1"
exit 1
}
kerneldir="$HOME/.local/src"
kernelsite="ftp://www.kernel.org/pub/linux/kernel/v3.x"
currentver="$(uname -r)"
basever="$(uname -r | rev | cut -d. -f1 --complement | rev)"
newver="$(lftp -c "open $kernelsite; ls" | awk '{ print $9 }' | grep "patch-$basever.*\.xz" | sort -V | tail -n1 | sed 's/patch-//' | sed 's/\.xz//')"
if test "$currentver" = "$newver"
then
echo 'Kernel is up to date.'
else
echo "Updating kernel to $newver"
cd "$kerneldir"
tar -xf "linux-$basever.tar.xz" || exit 1
mv "linux-$basever" "linux-$newver" || exit 1
cd "linux-$newver"
lftp -c "open $kernelsite; get patch-$newver.xz patch-$newver.sign" || exit 1
unxz "patch-$newver.xz"
gpg --verify "patch-$newver.sign" || exit 1
patch -p1 < "patch-$newver" || exit 1
make mrproper
zcat /proc/config.gz > .config
make oldconfig
echo "cd $PWD"
fi
exit 0
==== Cómo construir ====
Primero ejecute lo siguiente para asegurarse de que todo esté configurado correctamente para una compilación.
make clean
make mrproper # tenga en cuenta que esto elimina cualquier archivo .config en el directorio actual
Tiene muchas opciones cuando se trata de cómo construir el Kernel. Es mejor leer el archivo ''README'' en el directorio de la fuente del kernel para obtener todas las opciones actuales, así como también ''Documentation /kbuild/kconfig.txt'' para obtener detalles sobre todas las opciones.
- Alternative configuration commands are:
"make config" Plain text interface.
"make menuconfig" Text based color menus, radiolists & dialogs.
"make nconfig" Enhanced text based color menus.
"make xconfig" X windows (Qt) based configuration tool.
"make gconfig" X windows (Gtk) based configuration tool.
"make oldconfig" Default all questions based on the contents of
your existing ./.config file and asking about
new config symbols.
"make silentoldconfig"
Like above, but avoids cluttering the screen
with questions already answered.
Additionally updates the dependencies.
"make olddefconfig"
Like above, but sets new symbols to their default
values without prompting.
"make defconfig" Create a ./.config file by using the default
symbol values from either arch/$ARCH/defconfig
or arch/$ARCH/configs/${PLATFORM}_defconfig,
depending on the architecture.
"make ${PLATFORM}_defconfig"
Create a ./.config file by using the default
symbol values from
arch/$ARCH/configs/${PLATFORM}_defconfig.
Use "make help" to get a list of all available
platforms of your architecture.
"make allyesconfig"
Create a ./.config file by setting symbol
values to 'y' as much as possible.
"make allmodconfig"
Create a ./.config file by setting symbol
values to 'm' as much as possible.
"make allnoconfig" Create a ./.config file by setting symbol
values to 'n' as much as possible.
"make randconfig" Create a ./.config file by setting symbol
values to random values.
"make localmodconfig" Create a config based on current config and
loaded modules (lsmod). Disables any module
option that is not needed for the loaded modules.
To create a localmodconfig for another machine,
store the lsmod of that machine into a file
and pass it in as a LSMOD parameter.
target$ lsmod > /tmp/mylsmod
target$ scp /tmp/mylsmod host:/tmp
host$ make LSMOD=/tmp/mylsmod localmodconfig
The above also works when cross compiling.
"make localyesconfig" Similar to localmodconfig, except it will convert
all module options to built in (=y) options.
You can find more information on using the Linux kernel config tools
in Documentation/kbuild/kconfig.txt.
Otra opción más es comenzar con una de las configuraciones de kernel de slackware que se encuentran en el directorio ''source /k'' de sus medios de instalación de slackware. Simplemente copie el archivo de configuración, cámbiele el nombre a ''.config'' y ejecute uno de los comandos de configuración, normalmente ''make oldconfig'' si está compilando una versión del kernel más nueva que el archivo de configuración en el que se copió.
También puede usar la configuración de kernel de su kernel actualmente en ejecución ubicado en ''/proc/config.gz'' ejecutandozcat /proc/config.gz > .config
Sin embargo, tenga en cuenta que ''/proc/config.gz'' puede no existir si el kernel no está configurado para exponerlo.
Si elige compilar en ''/usr/src'' y usa ''xconfig'' o ''gconfig'', lea [[es:howtos: slackware_admin: kernelbuilding # x_and_su | howtos: slackware_admin: kernelbuilding # x_and_su]]
==== Qué configurar ====
Primero, asegúrese de entender la diferencia entre el **módulo integrado**(Built-in) y el **módulo**. **Integrado** significa que el controlador o la característica se incluye en el kernel y el cargador de arranque lo carga en la RAM. **Módulo** significa que el controlador está construido como un módulo y es cargado por el núcleo una vez que monta el sistema de archivos. Esto es muy importante, ya que para cargar un módulo desde el sistema de archivos, el kernel necesita controladores para manejar el controlador IDE o SATA, así como el sistema de archivos en el HDD o SDD. **Debe** integrar los módulos de controlador IDE/SATA (PATA/SATA/AHCI) necesarios para acceder a su HDD/SDD, así como el controlador de sistema de archivos necesario para montar el sistema de archivos en el que se encuentran los módulos **o** puede [[es:howtos:slackware_admin:kernelbuilding#creating_an_initrd | crear un initrd]]. Si no lo hace, se producirá el error "'Kernel Panic-not syncing: VFS: unable to mount root fs on unknown block(8,2)'" (no se puede montar fs raíz en un bloque desconocido).
Por lo tanto, si construye algo como un módulo, ¿por qué no hacer que todo sea Built-in? Ciertamente, esta es una opción, y esto es lo que se hace para el enorme kernel slackware, porque no tiene acceso a los módulos. Sin embargo, en una máquina antigua notará una diferencia entre el arranque del gran kernel (lento) y el arranque del kernel genérico (rápido). Esto se debe a que cargar un kernel grande en RAM lleva más tiempo que uno más pequeño. Hay otro problema con la construcción de todo en el kernel, ya que algunos controladores pueden entrar en conflicto entre sí y no podrá descargar los módulos porque están integrados. Por lo general, puede evitar que los controladores incorporados funcionen en el arranque utilizando la línea de comando del kernel que puede configurar en la configuración de su cargador de arranque, por ejemplo, '' /etc/lilo.conf ''.
=== Aspectos destacados del kernel config ===
// Lo que sigue es una documentación de algunas de las características más importantes o interesantes del kernel. Esto no será completo, porque hay toneladas y toneladas de opciones para configurar. Solo se destacarán las opciones consideradas más interesantes o importantes que el resto. Lea la Ayuda en cada opción para más información. Se presentan en el mismo orden en que están en la configuración del kernel junto con dónde encontrarlos.//
> **General setup**
>> Local version - append to kernel release
Esta opción le permite agregar una cadena al final de la versión del kernel, en caso de que quiera instalar más de un kernel de la misma versión.
>> Kernel compression mode
Esto le permite seleccionar el modo de compresión del kernel. LZMA es la buena opción por defecto. La compresión más alta (LZMA / XZ) requiere más RAM y el uso del procesador, pero es más rápido de cargar desde el disco a la RAM. La compresión más baja (Gzip / LZO) requiere menos uso de RAM y procesador, pero es más lento de cargar desde el disco a la RAM.
>> Kernel .config support
>>> Enable access to .config through /proc/config.gz
Asegúrese de habilitar esto para que pueda acceder fácilmente a la configuración actual de su kernel en /proc/config.gz
>> Automatic process group scheduling
Esta opción puede mejorar en gran medida el rendimiento de la capacidad de respuesta de las máquinas multihilo. Por lo tanto, puede ejecutar '' make -j4 '' sin hacer que otros programas tartamudeen.
>> Initial RAM filesystem and RAM disk (initramfs/initrd) support
Asegúrese de habilitar esto si va a hacer un initrd.
>> Disable heap randomization
Esta opción debería estar deshabilitada en máquinas fabricadas después del año 2000 por razones de seguridad.
>> Optimize very unlikely/likely branches
Puede aumentar el rendimiento del núcleo.
> **Enable the block layer**
>> Partition Types --->
>>> EFI GUID Partition support
Habilite esto si planea usar el nuevo esquema de partición GPT y desea iniciar desde UEFI.
>> IO Schedulers --->
>>> Deadline I/O scheduler
Causas mejora de rendimiento si utiliza el sistema de archivos JFS.
>>> CFQ I/O scheduler
>>>> CFQ Group Scheduling support
Esta opción permite a CFQ reconocer grupos de tareas y controlar la asignación de ancho de banda del disco, y puede mejorar el rendimiento.
Puede habilitar ambos y probar cada uno ejecutando
cat /sys/block/sd?/queue/scheduler
echo deadline > /sys/block/sd?/queue/scheduler
echo cfq > /sys/block/sd?/queue/scheduler
> **Processor type and features**
>> Symmetric multi-processing support
Esto debería estar habilitado para máquinas multi-core y multi-procesador.
>> Intel Low Power Subsystem Support
Habilítelo si tiene un sistema más nuevo con Intel Lynxpoint PCH. Compruebe la salida de '' lspci '' para '' Lynx Point ''.
>> Processor family
Para obtener el máximo rendimiento, debe elegir la familia de procesadores adecuada.
Para identificar un procesador desconocido, primero ejecute
cat /proc/cpuinfo
Si aún no puede saber qué familia de procesadores elegir, busque la "familia de cpu" y el "modelo" en línea o en la [[https://wiki.gentoo.org/wiki/Safe_Cflags|gentoo wiki]].
>> Maximum number of CPUs
Establece el número de CPU que tiene.
>> SMT (Hyperthreading) scheduler support
Esto es para máquinas Hyperthreading, es decir, núcleos virtuales.
>> Multi-core scheduler support
Esto es para máquinas multi-core, es decir, núcleos reales.
Puede habilitar ambos para estar seguro, en caso de que no sepa.
>> Preemption Model
Su selección depende de cómo use su computadora y hará una diferencia en cuanto al rendimiento.
>>> No Forced Preemption (Server)
Alta latencia, rendimiento máximo. Bueno para servidores de datos.
>>> Voluntary Kernel Preemption (Desktop)
Latencia media, rendimiento medio. Las aplicaciones seguirán funcionando sin problemas cuando el sistema esté bajo carga.
>>> Preemptible Kernel (Low-Latency Desktop)
Baja latencia, bajo rendimiento. Bueno para servidores de medios, o sistemas embebidos de baja latencia.
>> Reroute for broken boot IRQs
Habilitar si tiene problemas con interrupciones espurias.
>> Machine Check / overheating reporting
Asegúrese de habilitar esto junto con Intel o AMD. Esto permite que el kernel responda al sobrecalentamiento del sistema.
>> Low address space to protect from user allocation
65536 para la mayoría de las arquitecturas, 32768 para ARM. Esto puede ayudar con errores de deferencia de puntero NULL.
>> Transparent Hugepage Support
Esto puede aumentar el rendimiento de las aplicaciones que requieren mucha memoria RAM a la vez, como p7zip, LZMA, LZMA2 (xz).
>>> Transparent Hugepage Support sysfs defaults
Seleccionar siempre permitirá que funcionen las páginas de mensajes sin necesidad de montarlas o configurar la aplicación para usarlas, a diferencia de madvise.
>> Enable cleancache driver
Puede aumentar el rendimiento al reducir la E/S del disco. Sin embargo, no sé qué tan estable es.
>> MTRR cleanup support
Puede mejorar el rendimiento.
>>> MTRR cleanup enable value (0-1)
1 para habilitarlo
>>> MTRR cleanup spare reg num
Este es el número de registros MTRR inhabilitados/no utilizados/de repuesto.
Como ejemplo, ejecute '' dmesg '' y busque
MTRR variable ranges enabled:
0 base 000000000 mask F80000000 write-back
1 base 07EF00000 mask FFFF00000 uncachable
2 base 07F000000 mask FFF000000 uncachable
3 disabled
4 disabled
5 disabled
6 disabled
Aquí, los registros 3,4,5,6 están deshabilitados/no utilizados /de repuesto, por lo que la limpieza de MTRR no registra el número total de 4 registros no utilizados.
>> EFI runtime service support
Habilítelo si desea arrancar desde UEFI.
>>> EFI stub support
Habilítelo si desea arrancar desde UEFI.
>> Enable -fstack-protector buffer overflow detection
Puede evitar los desbordamientos de búfer en sistemas con gcc versión 4.2 y superiores.
>> Timer frequency
Siempre elija 1000Hz para los sistemas que necesitan ejecutar multimedia. Este número es proporcional a la capacidad de respuesta interactiva. Desea frecuencias más bajas en los servidores y frecuencias más altas en los escritorios. Sin embargo, si tiene Tickless System habilitado, las interrupciones del temporizador solo se activarán según sea necesario, por lo que puede ser mejor redondear.
> **Power management and ACPI options**
>> ACPI
Habilitar siempre: Botón, Ventilador, Procesador, Zona térmica. Sin estos, su computadora (especialmente las computadoras portátiles) puede sobrecalentarse porque ACPI no puede acceder a la monitorización térmica ni a los ventiladores.
>> CPU Frequency scaling
>>> CPU Frequency scaling
Habilítelo si tiene habilitado el escalado de frecuencia en UEFI / BIOS (Speedstep o similar).
>>>> 'performance' governor
Esto ajusta la frecuencia de la CPU al máximo disponible.
>>>> 'powersave' governor
Esto establece la frecuencia de la CPU al mínimo disponible.
>>>> 'userspace' governor for userspace frequency scaling
Esto permite que los programas del espacio de usuario establezcan la frecuencia de la CPU.
>>>> 'ondemand' cpufreq policy governor
Este regulador es recomendado para escritorios.
>>>> 'conservative' cpufreq governor
Este regulador es recomendado para laptops / netbooks. Aunque es similar al gobernador 'ondemand', la frecuencia aumenta y disminuye gradualmente en lugar de saltar al 100% cuando se requiere velocidad.
>>>> x86 CPU frequency scaling drivers
>>>>> Intel P state control
Este driver se excluye mutuamente con el controlador ACPI Processor P-States. Es un driver más nuevo para los procesadores Sandy Bridge y [[https://www.linuxquestions.org/questions/slackware-14/slackware-64bit-14-1-rc-kernel-3-10-16-and-virtualbox- 4175481316 / | puede causar problemas]].
>>>>> Processor Clocking Control interface driver
Esto solo es necesario para los servidores HP ProLiant, que utilizan esta interfaz. De lo contrario, desactívelo.
>>>>> ACPI Processor P-States driver
Este es el driver recomendado para las CPU más nuevas Intel (mejorado) Speedstep habilitado y AMD K10 y más reciente.
>>>>> AMD Opteron/Athlon64 PowerNow!
Esto es para los procesadores K8/early Opteron/Athlon 64.
>>>>> Intel Enhanced SpeedStep (deprecated)
Esta es una opción en desuso que ha sido reemplazada por el controlador ACPI Processor P-States, así que deje esta opción deshabilitada.
>>>>> Intel Pentium 4 clock modulation
Este es un truco para Pentium 4s que puede causar graves ralentizaciones y una latencia notable, así que desactívelo.
> **Bus options**
>> Message Signaled Interrupts (MSI and MSI-X)
Esto puede descargar interrupciones IRQ utilizando MSI en su lugar. Sin embargo, si su BIOS tiene errores, es posible que deba desactivarse.
> **Executable file formats / Emulations**
>> Kernel support for scripts starting with #!
Usted ** DEBE ** decir sí aquí o no podrá ejecutar el script que comienza con '' #! '' Y luego el intérprete.
>> IA32 Emulation
Permite la emulación de 32 bits a través de multi-lib en sistemas de 64 bits.
> **Device Drivers**
>> Block devices
>>> Normal floppy disk support
Debe ser un módulo o la unidad de disquete puede funcionar mal.
>>> Loopback device support
Requerido por algunos métodos de cifrado de disco.
>> SCSI device support
>>> Asynchronous SCSI scanning
Se acelerará el arranque, pero todos los controladores SCSI ** deben ** estar integrados para que funcione correctamente.
>> Serial ATA and Parallel ATA drivers
>>> AHCI SATA support
Si habilita AHCI en el BIOS, este ** debe ** estar integrado o ser parte de initrd. Si no usa AHCI, haga lo mismo pero para su controlador SATA o PATA.
>> Multiple devices driver support (RAID and LVM)
>>> Device mapper support
>>> Crypt target support
Requerido por cryptsetup.
>> Input device support --->
>>> Keyboards --->
>>>> AT keyboard
Habilítelo si tiene un teclado estándar AT o PS / 2.
>>> Mice --->
>>>> PS/2 mouse
Habilítelo si tiene un ratón PS / 2.
>> Multimedia support --->
>>> Media USB Adapters --->
>>>> USB Video Class (UVC)
>>>>> UVC input events device support
Si tiene una cámara web nueva, debe habilitarla o no funcionará.
>> Graphics support
>>> /dev/agpgart (AGP Support)
>>>> Intel 440LX/BX/GX, I8xx and E7x05 chipset support
Habilítelo si tiene una tarjeta Intel integrada.
>>> Direct Rendering Manager
Esto casi siempre debería estar habilitado.
>>> Nouveau (nVidia) cards
Si usa Nouveau, solo necesita este controlador, ya que tiene soporte para framebuffer.
>>> Support for frame buffer devices
>>>> VESA VGA graphics support
Esto casi siempre debería estar habilitado.
>>>> EFI-based Framebuffer Support
Debe habilitar esto si desea arrancar desde UEFI.
>>>> nVidia Framebuffer Support
De nuevo, esto no es ** NO ** necesario para el nouveau.
>> Sound card support
>>> Advanced Linux Sound Architecture
>>>> PCI sound devices
>>>>> Intel HD Audio
>>>>>> Pre-allocated buffer size for HD-audio driver
Se prefiere un búfer más grande (por ejemplo, 2048) para los sistemas que usan PulseAudio.
>> USB support
>>> xHCI HCD (USB 3.0) support
Debe habilitar esto para los sistemas más nuevos.
>>> EHCI HCD (USB 2.0) support
>>> Improved Transaction Translator scheduling
Puede mejorar en gran medida las velocidades de transferencia a través de USB 2.0 en algunos casos.
>> Real Time Clock
>>> PC-style 'CMOS'
Habilite esto o no podrá configurar el reloj desde Linux. A menudo se omite accidentalmente.
>> Staging drivers --->
Evite los controladores en esta sección si valora la estabilidad del sistema.
>> Generic Dynamic Voltage and Frequency Scaling (DVFS) support
Esto proporciona soporte de escala de frecuencia para dispositivos. También tiene gobernadores similares a los de escalado de frecuencia de CPU. No estoy seguro de qué dispositivos requieren esto.
> **Firmware Drivers**
>> EFI (Extensible Firmware Interface) Support --->
>>> EFI Variable Support via sysfs
Esta opción está en desuso a favor del sistema de archivos Variable EFI. Puede [[https://lkml.org/lkml/2013/4/16/473|causar problemas de inconsistencia de datos]]
> **File systems**
Usted ** DEBE ** bien incorporar el controlador para el sistema de archivos en el que se encuentran los módulos del kernel ** O ** bien crear un initrd, o el kernel ** NO ** se iniciará. También debe incorporar el controlador para el sistema de archivos en el que reside el núcleo en caso de que resida en un tipo de sistema de archivos diferente al de los módulos, por ejemplo. Partición EFI VFAT.
>> DOS/FAT/NT Filesystems
>>> MSDOS fs support
>>> VFAT (Windows-95) fs support
Necesita estos incorporados si usa EFI. El núcleo arrancará si son módulos, pero las situaciones de tipo catch22 pueden resultar fácilmente.
>>> NTFS file system support
>>> NTFS write support
Necesita esto si desea escribir en sistemas de archivos NTFS.
>> CD-ROM/DVD Filesystems
>>> UDF file system support
Necesitará esto si planea leer o escribir discos con el sistema de archivos UDF.
>>> Miscellaneous filesystems --->
>>>> EFI Variable filesystem
Debe habilitar esto si desea arrancar desde UEFI.
> **Kernel hacking**
>> Magic SysRq key
Habilítelo si desea usar SysRq REISUB (p.cogx en dvorak) para apagar de forma segura un sistema bloqueado.
>> Allow gcc to uninline functions marked 'inline'
Habilitar para gcc 4.x pero no para gcc 3.x
> **Security Options**
>> Restrict unprivileged access to the kernel syslog
Desactive esto si desea que los usuarios puedan usar el comando 'dmesg'.
> **Cryptographic API**
Asegúrese de incorporar todos los algoritmos que planea usar para la criptografía usando cryptsetup, especialmente si planea el cifrado completo del disco, de lo contrario no podrá descifrar su disco y, por lo tanto, no podrá iniciar. Tenga en cuenta que hay versiones optimizadas y de 64 bits para elegir.
>> Parallel crypto engine
Convierte un algoritmo criptográfico arbitrario en un algoritmo paralelo que se ejecuta en subprocesos del núcleo. Permite múltiples subprocesos de cualquier algoritmo criptográfico.
> **Library routines**
>> JEDEC DDR data
Probablemente debería habilitar esto para que los datos JEDEC de su RAM estén disponibles para los controladores que lo necesitan.
Si se está preguntando qué drivers necesita, asegúrese de echar un vistazo a la salida de estos comandos.
lsmod
/sbin/lspci -k
lsusb
dmesg
Es posible que desee considerar la desactivación de los drivers por etapas y los drivers EXPERIMENTALES y OBSOLETO si desea un núcleo estable y moderno. Algunos se pueden dejar por una buena razón.
==== Compilando ====
Para acelerar la compilacion, puede usar la opción '' -j '' de make. El máximo al que se puede establecer es el número de núcleos o procesadores más uno. Sin embargo, si desea hacer algo mientras el kernel se está construyendo, como navegar por la web, puede usar solo la cantidad de núcleos o procesadores.
cores=4
make -j$cores
==== Instalando ====
Antes de instalar el kernel, es posible que desee desinstalar los paquetes de Slackware que contienen los kernels, los módulos y la fuente predeterminados. También puede optar por dejar estos paquetes instalados si planea usar estos Kernels predeterminados. Haga lo que haga, **no** desinstale los encabezados del Kernel anterior. Consulte [[es: howtos: slackware_admin: kernelbuilding # El-paquete-Slackware-kernel-headers | guía de Alien Bob]] para obtener más información sobre estos temas.
Primero, debe asegurarse de eliminar cualquier módulo de kernel previamente instalado en ''/lib/modules/$version''.
su
rm -r /lib/modules/$version # Asegúrese de saber lo que se está eliminando
Ahora, puede instalar los nuevos módulos.
make modules_install
A continuación debería instalar el propio kernel. Esta secuencia de comandos instalará el kernel y se asegurará de que esté instalado correctamente.
#!/bin/sh
# installs kernel only, this should be run only from the kernel source directory
error() # error
{
echo "ERROR: $1"
exit 1
}
# make sure we are root
if test ~ != '/root'
then
error 'This script must be run as root'
fi
# remove the old
rm -f /boot/config.old
rm -f /boot/System.map.old
rm -f /boot/vmlinuz.old
# rename the present
mv /boot/config /boot/config.old
mv /boot/System.map /boot/System.map.old
mv /boot/vmlinuz /boot/vmlinuz.old
# copy in the new
cp arch/x86/boot/bzImage /boot/vmlinuz
cp System.map /boot
cp .config /boot/config
# for elilo
bootdir="/boot/efi/EFI/Slackware"
if test -d "$bootdir"
then
cp arch/x86/boot/bzImage "$bootdir"/vmlinuz
fi
# change permissions of vmlinuz
chmod a-rwx,u+r /boot/vmlinuz
# check install
echo
if cmp arch/x86/boot/bzImage /boot/vmlinuz
then
echo 'Kernel installed correctly'
else
error 'Kernel install failed'
fi
if cmp System.map /boot/System.map
then
echo 'System.map installed correctly'
else
error 'System.map install failed'
fi
if cmp .config /boot/config
then
echo 'Kernel config installed correctly'
else
error 'Kernel config install failed'
fi
if test -d "$bootdir"
then
if cmp arch/x86/boot/bzImage "$bootdir"/vmlinuz
then
echo 'kernel installed to EFI correctly'
else
error 'kernel install to EFI failed'
fi
fi
echo
echo 'Kernel install completed successfully'
echo 'Remember to run lilo if you use it'
echo
exit 0
==== lilo ====
Si elige no incorporar los módulos de controlador IDE/SATA (PATA/SATA/AHCI) necesarios para acceder a su HDD/SDD, así como el controlador del sistema de archivos necesario para montar el sistema de archivos en el que se encuentran los módulos, usted **DEBE** [[howtos: slackware_admin: kernelbuilding # creating_an_initrd | crear un initrd]].
Si usa lilo, que es el gestor de arranque predeterminado en Slackware, debe editar ''/etc/lilo.conf'' y luego ejecutar
lilo
Aquí hay un ejemplo de lilo.conf
# append options here if you need any kernel parameters on boot
append=" vt.default_utf8=0"
# this should point to the device you want to boot
boot = /dev/sda
# not necessary, but lilo complains if it is not here
lba32
# the compact option speeds up boot time significantly, but may not work on all systems
compact
# This is needed if you want lilo to prompt you for what to boot
prompt
# This is given in tenths of a second, so 600 for every minute. You can comment this out if you single-boot.
timeout = 1200
# Override dangerous defaults that rewrite the partition table:
change-rules
reset
# Normal VGA console, the safest choice.
# You can choose others if you want a framebuffer console, but you must have framebuffer support or the screen will go black.
vga = normal
# End LILO global section
# Linux bootable partition config begins
# the path to the Linux kernel boot image
image = /boot/vmlinuz
# the partition where the Linux kernel is located
root = /dev/sda1
# how this entry is shown on the boot screen
label = Linux
read-only
# Linux bootable partition config ends
====== Fuentes ======
* El howto fue escrito por [[wiki:user:htexmexh|H_TeXMeX_H]]
* README es un extracto del README incluido con la fuente del núcleo.
* El script installkernel.sh fue escrito por[[wiki:user:htexmexh|H_TeXMeX_H]]
* El extracto de lilo.conf es del lilo.conf predeterminado que viene con Slackware más algunas opciones.
* Gracias a [[wiki: user: alienbob | Alien Bob]] por su [[howtos: slackware_admin: kernelbuilding | kernel building howto]]. Me inspiró a escribir una guía de construcción de kernel reestructurada y actualizada.
* Actualizado por [[wiki:user:metaschima]]
* Traducido por: [[wiki:user: slackwarespanol | Victor]] 2019/02/04 21:07 (UTC)
{{tag>howtos author_htexmexh kernel software}}