LPI 201
Componentes do kernel Compilando o kernel Aplicando patch no kernel Configurar, compilar, instalar um kernel personalizado Gerenciar, consultar o kernel e seus módulos.
Componentes do Kernel Kernel é núcleo do Sistema, a interface entre o hardware e o software. Kernel Monolítico e micro-kernel Possui apenas um nucleo. Monolitico Permite o uso de módulos. Imagens bzimage e zimage. Versão do kernel, ex: 2.6.32.1 Modelo antigo ( Versão instável e Estável ) Padrão Atual : 2 -> Versão Principal, 6 -> Revisão Principal, 32 -> Revisão Secundária, 1 Patch de correção Arquivos do Kernel : /usr/src/linux /usr/src/linux/documentation /usr/src/linux/makefile /usr/src/linux/.config bzimage
Compilando o Kernel Obtendo o kernel:
Compilando o kernel Resolver Dependências Colocar o kernel compactado em /usr/src Descompactar Criar link simbólico Copiar arquivo de configuração Configurar o kernel: make config make xconfig make menuconfig make gconfig make oldconfig make cloneconfig make --help
Compilando o kernel
Compilando o kernel
Compilando o kernel Fazer alterações necessárias make bzimage make modules make modules_install
Instalando o kernel copiar a imagem criada na compilação para o boot gerar imagem inicial ( initial RAM disk) Alterar o Gerenciador de Boot Exemplo: menu.lst title Kernel 2.6.32 image = /boot/vmlinuz-2.6.32 read-only root = /dev/sda1 initrd = /boot/initrd.img-2.6.32 Exemplo : lilo.conf label = Kernel 2.6.32 root (hd0,0) kernel /boot/vmlinuz-2.6.32 root=/dev/sda1 initrd = /boot/initrd.img-2.6.32 Exemplo de entrada do menuentry: menuentry Linux 3.0 { set root=(hd0,2) search no-floppy fs-uuid set 22290d2e-82c9-48d5-92c1-ce138634eedc linux /boot/vmlinuz-3.0.2 root=uuid=22290d2e-82c9-48d5-92c1-ce138634eedc ro quiet splash initrd /boot/initrd.img-3.0.2 }
Aplicando patch no kernel O que é um patch? Por que aplicar um patch? formato do conteúdo de um patch : a/arch/x86/include/asm/user.h Ex: utilizando um kernel 2.6.32 cd /usr/src/linux wget http://kernel.org/pub/linux/kernel/v2.6/patch- 2.6.32.1.bz2 bzcat patch-2.6.32.1.bz2 patch p1 Opções do patch: -p --dry-run -R -s
Aplicando patch no kernel Outras formas de aplicar o patch: cd /usr/src/linux bzip2 dc /usr/src/linux/patch-2.6.32.1.bz2 patch p1 cd /usr/src/linux gzip c /usr/src/linux/patch-2.6.32.1.gz patch p1 Diferenças para aplicar patch: 2.6.32.4 > 2.6.32.5 2.6.32 > 2.6.34 >2.6.35
Revertendo o patch Mesmo comando utilizando a opção R: Utilizando o bzcat: bzcat patch-2.6.32.1 patch p1 -R Utilizando o bzip2: bzip2 dc /usr/src/linux/patch-2.6.32.1.bz2 patch p1 R1 Utilizando o gzip: gzip c /usr/src/linux/patch-2.6.32.1.gz patch p1
Personalização do Kernel Code maturity level options General setup Enable loadable module support Processor type and features Power Management and ACPI options Bus options Executable file formats Networking Device Drivers Firmware Drivers File System Kernel Hacking Selinux Criptographic Virtualization
Personalização do Kernel Code maturity level options General setup Enable loadable module support Processor type and features Power Management and ACPI options Bus options Executable file formats Networking Device Drivers Firmware Drivers File System Kernel Hacking Security Criptographic Virtualization
Personalização do Kernel Versão do Kernel à ser compilado: cat /usr/src/linux/makefile VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 32 EXTRAVERSION =.2 Visualizando opções diretamente no.config: cat /usr/src/linux/.config grep i highmem CONFIG_HIGHMEM4G=y
Personalização do Kernel General setup Processor type and Features High Memory Support ( 4 GB) (X) 64 GB cat /usr/src/linux/.config grep i highmem CONFIG_HIGHMEM64G=y Diferenças: () aceita somente marcação X [] aceita * <> - aceita * ou M
Personalização do Kernel Outras formas de compilação: make rpm-pkg make binrpm-pkg make deb-pkg make tar-pkg make targz-pkg make tarbz2-pkg
Gerenciamento Módulos Consultando kernel instalado : uname /proc/sys/kernel/osrelease
Gerenciando o /proc /proc/sys/kernel/acct /proc/sys/kernel/domainname /proc/sys/kernel/ctrl-alt-del /proc/sys/kernel/panic /proc/sys/kernel/shmall /proc/sys/kernel/shmmax /proc/sys/kernel/hostname echo maquina1 >/proc/sys/kernel/hostname sysctl kernel.hostname sysctl -w kernel.hostname=maquina1 /etc/sysctl.conf
Módulos do Kernel /lib/modules/<versãodokernel> modules.dep kernel/fs/fat/vfat.ko: kernel/fs/fat/fat.ko kernel/fs/nls/nls_base.ko blacklist depmod a /etc/modules
Gerenciando Módulos lsmod modinfo insmod rmmod modprobe