RescueCD - Personalize o LiveCD e compile um novo kernel

De Area31 Hackerspace
Edit-cd.png
Edit.png
Responsável: 
* Raphael Bastos (coffnix)

Apesar de o RescueCD vir com kernel recente com suporte a 32bits e 64bits e suporte nativo a ZFS, pode ser que você queira compilar seu próprio kernel, seja porque você precisa de outro driver, ou você quer versões mais recentes, ou apenas diferentes opções de compilação.

Este tutorial explica como você pode compilar seu próprio kernel, sem nenhuma necessidade de um Linux instalado no disco para tal operação. Após compilar o novo kernel basta gerar um novo arquivo ISO personalizado utilizando a ferramenta oficial do Área31 Hackerspace.


Requisitos

  • Para a operação de personalização do kernel do RescueCD, é necessário utilizar a ferramenta /usr/sbin/sysresccd-area31
  • É extremamente recomendável utilizar uma máquina virtual para este procedimento, inclusive por questões de segurança

Criando o ambiente personalizado

Utilize o utilitário criado pelo Área31 para personalização da ISO original, bastando digitar o comando sysresccd-area31

sysresccd-area31


Menu-sysresccd-area31.png

Criando o ambiente CHROOT

1- Após entrar no menu principal, selecione a opção PARTICIONADOR para criar um sistema de arquivos Linux, e preferencialmente também uma partição do tipo SWAP.

2- Após particionar, monte a partição utilizando a opção ADD-TARGET. Caso tenha criado uma partição SWAP, basta selecionar a opção ADD-SWAP.

3- Com a partição montada, basta selecionar a opção EXTRACT para extrair o conteúdo do rescueCD.

4- Após extrair os arquivos da imagem sysrcd.dat, basta acessar a opção CHROOT para personalizar o rescueCD.


Compilando o novo kernel 32bits

Após acessar o ambiente CHROOT via sysresccd-area31 sugerimos o uso do ebuild sys-kernel/aufs-sources para atualização da versão do kernel.

1- Atualize a portage tree:

eix-sync


2- Desmascare o ebuild, e instale a última versão do source do kernel 'sys-kernel/aufs-sources:

echo 'sys-kernel/aufs-sources' >> /etc/portage/package.unmask/monolithic
emerge sys-kernel/aufs-sources

3- Após instalar o ebuild, configure o kernel 32bits:

zcat /proc/config.gz > /usr/src/linux/.config
cd /usr/src/linux && make oldconfig


OBS: Garanta que seu kernel está configurado com as seguintes opções:

CONFIG_SQUASHFS=y
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
CONFIG_AUFS_FS=y
CONFIG_AUFS_BRANCH_MAX_127=y
CONFIG_AUFS_EXPORT=y
CONFIG_AUFS_BR_FUSE=y
CONFIG_AUFS_POLL=y
CONFIG_AUFS_BDEV_LOOP=y


4- Compile o kernel 32bits utilizando o próprio rescueCD, via CHROOT:

cd /usr/src/linux && make && make install && make modules_install


5- Compile o suporte a ZFS;

emerge sys-kernel/spl sys-fs/zfs-kmod


Compilando o novo kernel 64bits

Para compilar um kernel 64bits é um mais complexo, exigindo compilação cruzada, ou no caso mais fácil e descrito abaixo, utilizando um pc com kernel 64bits.

Caso utilize Funtoo/Gentoo, utilize essas opções de compilação no seu /etc/make.conf:

###### Ativar somente para criação de livecd 64 (kernel e firmwares) #####
CFLAGS="-mtune=generic -O2 -pipe"
CXXFLAGS="-mtune=generic -O2 -pipe"
PAX_MARKINGS="none"
##############################################################

OBS: Lembre-se de comentar as opções anteriores de CFLAGS ou PAX_MARKINGS no seu make.conf durante o processo de geração do kernel 64bits para o rescueCD.

1- Atualize a portage tree:

eix-sync


2- Desmascare o ebuild, e instale a última versão do source do kernel 'sys-kernel/aufs-sources:

echo 'sys-kernel/aufs-sources' >> /etc/portage/package.unmask/monolithic
emerge sys-kernel/aufs-sources

3- Após instalar o ebuild, configure o kernel 64bits utilizando a config contida no diretório /boot/64bits do rescuecd:

scp root@192.168.100.106:/boot/64bits/config-*-aufs64 /usr/src/linux/.config
cd /usr/src/linux && make oldconfig


OBS: Garanta que seu kernel está configurado com as seguintes opções:

CONFIG_SQUASHFS=y
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
CONFIG_AUFS_FS=y
CONFIG_AUFS_BRANCH_MAX_127=y
CONFIG_AUFS_EXPORT=y
CONFIG_AUFS_BR_FUSE=y
CONFIG_AUFS_POLL=y
CONFIG_AUFS_BDEV_LOOP=y


4- Compile o kernel 64bits:

cd /usr/src/linux && make && make install && make modules_install


5- Compile o suporte a ZFS;

emerge sys-kernel/spl sys-fs/zfs-kmod


6- Envie os arquivos para o rescueCD via SCP:

scp /boot/*aufs64 root@192.168.100.106:/mnt/custom/customcd/files/boot/64bits
scp -r /lib/modules/*-aufs64/ root@192.168.100.106:/mnt/custom/customcd/files/lib/modules


Gerando a nova imagem ISO

OBS: Para os passos seguintes, saia do ambiente CHROOT

Extraia o initramfs atual

mkdir -p /usr/src/initramfs
cd /usr/src/initramfs
cat /livemnt/boot/isolinux/initram.igz | xz -d | cpio -id


Copie os novos módulos do kernel para o initramfs

cp -rp /mnt/custom/customcd/files/lib/modules/* lib/modules


Recrie o initramfs

rm -f /usr/src/initram.igz
cd /usr/src/initramfs
find . | cpio -H newc -o | xz --check=crc32 --x86 --lzma2 > /usr/src/initram.igz


Copie o novo initramfs para o boot do rescueCD

cp /usr/src/initram.igz /mnt/custom/customcd/isoroot/isolinux/initram.igz


Copie o novo kernel para o boot do RescueCD

cp /mnt/custom/customcd/files/usr/src/linux/arch/x86/boot/bzImage /mnt/custom/customcd/isoroot/isolinux/rescue32

ou

cp /mnt/custom/customcd/files/boot/32bits/vmlinuz-*-aufs /mnt/custom/customcd/isoroot/isolinux/rescue32
cp /mnt/custom/customcd/files/boot/64bits/vmlinuz-*-aufs64 /mnt/custom/customcd/isoroot/isolinux/rescue64 


Gere uma nova imagem ISO personalizada

Personalização do grub

Para personalizar o menu grub, basta editar o arquivo:

vi /mnt/custom/customcd/isoroot/isolinux/isolinux.cfg


Gere um novo arquivo ISO

Para gerar uma nova ISO basta digitar o comando sysresccd-area31 e selecionar a opção GEN-ISO.


Códigos fonte

Segue os códigos fonte dos scripts para geração e personalização do RescueCD:

https://github.com/area31/area31-ebuilds/tree/master/local/sys-apps/


fonte:

http://www.system-rescue-cd.org/Sysresccd-manual-en_Build_a_SystemRescueCd_with_your_own_kernel