Sobre o zRAM:
Instalação no Debian Wheezy:
No Arch
Linux:
E no Sabayon:
No
Slackware, o módulo
zRAM não está habilitado por padrão, pelo menos no Slackware Current 64 bits. Portanto, tive de habilitá-lo diretamente na configuração do kernel.
Antes de começar, cheque se o suporte ao zRAM não está habilitado, com o comando:
# modprobe zram
Ou:
# modinfo zram
Se retornar uma mensagem dizendo:
Module zram not found
...significa que o suporte não está ativo.
Mas se o módulo já estiver habilitado, sorte sua! Pule para o passo
Configurando o zRAM .
Habilitando o módulo
Pois bem, se o seu kernel não oferece suporte ao zRAM, você deve recompilá-lo habilitando o módulo. Para isso, execute os passos:
Instale o pacote kernel-source:
# slackpkg install kernel-source
Obs.: este pacote oferece o source original do kernel Linux, sem alterações. Optei por utilizá-lo para manter a mesma configuração do kernel "oficial" do Slackware. Desse modo, evita-se imprevistos com alterações entre as versões.
OK. Ao instalar este pacote, ele irá instalar os sources do kernel Linux na pasta
/usr/src/linux. Vamos até lá:
# cd /usr/src/linux
Comece "limpando" os sources:
# make mrproper
Agora, copie a configuração do kernel atualmente em uso:
Para quem usa o kernel huge:
# cp /boot/config-huge-3.14.5 .config
Para quem usa o kernel generic:
# cp /boot/config-generic-3.14.5 .config
Obs.: modifique o número
3.14.5 para a versão do seu kernel.
Atualize a configuração:
# make oldconfig
Se aparecerem perguntas, você pode optar por aceitar a opção padrão, teclando
Enter em todas elas.
Agora, execute o assistente de configuração para habilitarmos o módulo:
# make menuconfig
A primeira tela será:
Nela, selecione a opção
Processor type and features e tecle
Enter.
Na próxima tela, habilite o campo
Memory allocator for compressed pages, teclando
Y:
Volte à tela principal, teclando
Esc duas vezes. Agora, escolha a opção
Device Drivers:
Depois, entre na seção
Block devices:
E habilite a opção
Compressed RAM block device support, teclando
M:
Estas configurações irão habilitar o zRAM como um módulo no kernel.
Agora, uma configuração extra que recomendo: alterar o nome da release do seu kernel. Como estamos compilando um kernel da mesma versão que o kernel em uso e não queremos substituí-lo, devemos alterar o nome para que não ocorram conflitos entre os diretórios dos módulos.
Por exemplo, o kernel que utilizo (3.14.5), possui os módulos em
/lib/modules/3.14.5. Se eu compilar um novo kernel desta mesma versão, ele irá sobrescrever o diretório
/lib/modules/3.14.5 com os novos módulos. Ou seja, o kernel antigo pode não funcionar, se você precisar dele mais tarde.
Para minimizar isso, vamos acrescentar algum nome à release do kernel que estamos compilando. Na tela inicial do assistente de configuração, selecione a opção
General setup:
E depois:
Local version - append to kernel release:
Escolha algum nome para acrescentar ao seu kernel e tecle
Enter:
Como escolhi acrescentar o
-zram, a release deste kernel ficará nomeada assim:
3.14.5-zram.
Para finalizar a configuração, selecione a opção
Save e saia do assistente, selecionando
Exit.
Por fim, compile o novo kernel:
# make -j5 bzImage modules
Obs.: a opção
-j, determina o número de processos em paralelo que a compilação do kernel será dividida. É útil para tornar a compilação mais rápida em processadores com mais de um núcleo. Eu recomendo defini-la com o valor de: quantidade de núcleos + 1.
Para saber a quantidade de núcleos do seu processador, execute o comando:
lscpu
Na linha "CPU(s)", está especificada a quantidade de núcleos do seu processador. Um exemplo em um processador Core i5 M450 (que possui dois núcleos físicos mais dois "simulados"):
lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 37
Stepping: 5
CPU MHz: 2400.000
BogoMIPS: 4787.53
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 3072K
Após o término da compilação (que pode demorar dependendo do seu processador e da configuração do kernel - huge x generic), instale os módulos, com o comando:
# make modules_install
E copie a imagem gerada para o diretório
/boot:
# cp arch/x86/boot/bzImage /boot/vmlinuz-3.14.5-zram
# cp System.map /boot/System.map-3.14.5-zram
# cp .config /boot/config-3.14.5-zram
Obs.: certifique-se de que a release está correta. Você pode conferir com o comando:
# make kernelrelease
Se você utilizou a configuração do kernel generic, não se esqueça de gerar o
initrd.gz deste kernel. Utilize o script
mkinitrd_command_generator.sh:
# /usr/share/mkinitrd/mkinitrd_command_generator.sh -k 3.14.5-zram # Não se esqueça de especificar a release correta
Ele irá retornar o comando adequado para a geração do
initrd. Exemplo:
# /usr/share/mkinitrd/mkinitrd_command_generator.sh -k 3.14.5-zram
#
# mkinitrd_command_generator.sh revision 1.45
#
# This script will now make a recommendation about the command to use
# in case you require an initrd image to boot a kernel that does not
# have support for your storage or root filesystem built in
# (such as the Slackware 'generic' kernels').
# A suitable 'mkinitrd' command will be:
mkinitrd -c -k 3.14.5-zram -f ext4 -r /dev/sda2 -m mbcache:jbd2:ext4 -u -o /boot/initrd.gz
Agora, basta copiá-lo e executá-lo:
# mkinitrd -c -k 3.14.5-zram -f ext4 -r /dev/sda2 -m mbcache:jbd2:ext4 -u -o /boot/initrd.gz-3.14.5-zram
Obs.: altere o nome do
initrd.gz para que ele não sobrescreva o initrd do kernel generic.
Para finalizar, insira as entradas no arquivo
/etc/lilo.conf:
Para o
kernel huge:
image = /boot/vmlinuz-3.14.5-zram
root = /dev/sda2 # Altere de acordo com a partição de instalação
label = Slackware-zram
read-only
Para o
kernel generic:
image = /boot/vmlinuz-3.14.5-zram
initrd = /boot/initrd.gz-3.14.5-zram # Acrescenta-se o initrd
root = /dev/sda2 # Altere de acordo com a partição de instalação
label = Slackware-zram
read-only
Atualize o LILO e reinicie:
# lilo
# reboot
Após dar boot pelo novo kernel, verifique se o módulo foi habilitado corretamente:
# modprobe zram
Ou:
# modinfo zram
Se não aparecerem mensagens de erro, sucesso!