How-To :: aplicação do intel-microcode no Slackware


Todos sabemos que em outras distribuições as coisas são mais automáticas, já no Slackware são bem manuais, isso é ruim? acho que depende do ponto de vista! eu acho bem salutar saber o que ocorre em meu sistema, quais serviços são iniciados e a forma como o mesmo se comporta estando eu (acho) que no controle…

Atualizado em: 2020/11/19.

Passada toda a parte filosófica (alguns acharão fisiológica, a.k.a de m3rd4) rsrs, veremos aqui como aplicar os firmwares do intel-microcode nos bugados processadores Intel, pois é… quase 20 anos usando processadores da AMD, vou e compro um Intel logo quando surgem os poderosos Ryzens! bola-pra-frente então…

Se você usa Slackware e tem um desses processadores Intel mais recentes (não sei se os bugs spectre-meltdown afetam processadores antigos), aqui verá como instalar os pacotes iucode_tool e intel-microcode para que sejam sanadas essas brechas de segurança nesses processadores.

Assim sendo, descubra se o seu sistema está vulnerável assim:

$ su
<senha-de-root>
# git clone --depth=1 https://github.com/speed47/spectre-meltdown-checker.git
# cd spectre-meltdown-checker/
# ./spectre-meltdown-checker.sh --explain

A parte gritante nas imagens estarão em vermelho e indicarão VULNERABLE, a seguir veremos como sanar o problema.

Instalação.

Demonstrarei aqui a instalação manual, assim você não terá que correr atrás de dependências ou mesmo utilizar quaisquer gerenciadores de SlackBuilds como o sbopkg, slpkg, sbotool, vamos lá?

Começando pela dependência iucode_tool e em seguida pelo intel-microcode:

# wget -nv https://slackbuilds.org/slackbuilds/14.2/system/iucode_tool.tar.gz https://slackbuilds.org/slackbuilds/14.2/system/intel-microcode.tar.gz
# tar xf iucode_tool.tar.gz 
# tar xf intel-microcode.tar.gz 
# cd iucode_tool/
# chmod +x iucode_tool.SlackBuild 
# source iucode_tool.info 
# wget -nv $DOWNLOAD
# ./iucode_tool.SlackBuild 
# TAG=ponce sh iucode_tool.SlackBuild 
# upgradepkg --install-new --reinstall /tmp/iucode_tool-2.3.1-x86_64-1ponce.tgz
# cd ../intel-microcode/
# chmod +x intel-microcode.SlackBuild 
# source intel-microcode.info
# wget -nv $DOWNLOAD
# TAG=ponce sh intel-microcode.SlackBuild 
# upgradepkg --install-new --reinstall /tmp/intel-microcode-20200616-noarch-1ponce.tgz

No comando de execução do SlackBuid, ignore o campo TAG=ponce caso utilize o Slackware 14.2, nesse caso começará por sh *.SlackBuild. Assim executei pois uso o Slackware Current e que usa o repositório -git do SlackBuilds, cuja TAG é ponce e não a SBo da release estável (14.2).

Estando instalados os pacotes, um arquivo chamado intel-ucode.cpio será criado em /boot e mais a frente esse será concatenado para a criação de um novo arquivo initrd, o que veremos a seguir…

# cd ..
# pwd # apenas para indicar o caminho da pasta spectre-meltdown

Para a criação da initrd, você deve executar o comando abaixo:


# /usr/share/mkinitrd/mkinitrd_command_generator.sh 

Que lhe passará o comando completo a ser executado, aqui eu acrescentei a SWAP no comando ( -h /dev/sda5 ), o que pode ser visto na imagem.

# cd /boot/
# mkinitrd -c -k 5.4.77 -f btrfs -r /dev/sda6 -h /dev/sda5 -m xhci-pci:ohci-pci:ehci-pci:xhci-hcd:uhci-hcd:ehci-hcd:hid:usbhid:i2c-hid:hid_generic:hid-asus:hid-cherry:hid-logitech:hid-logitech-dj:hid-logitech-hidpp:hid-lenovo:hid-microsoft:hid_multitouch:zstd_decompress:zstd_compress:btrfs -u -M -w 5 -o /boot/initrd-5.4.77.gz

Tendo criado o arquivo initrd-5.4.77.gz, iremos renomeá-lo para que haja a concatenação com o arquivo anteriormente citado (intel-ucode.cpio) …

# mv -v initrd-5.4.77.gz initrd-5.4.77.old.gz
# cat /boot/intel-ucode.cpio /boot/initrd-5.4.77.old.gz > /boot/initrd-5.4.77.gz

Daí se desejar, vejam os tamanhos dos arquivos initrd com:

# du -sh initrd-5.4.77.old.gz 
# du -sh initrd-5.4.77.gz 

Para finalizar, remova o initrd antigo e o initrd.gz (se existente) e crie um novo arquivo initrd.gz

# rm -fv initrd-5.4.77.old.gz initrd.gz
# ln -sv initrd-5.4.77.gz initrd.gz

E para concluir e reiniciar o PC, atualize o seu bootloader, aqui uso o GRUB e será ele o exemplo:

# grub-mkconfig -o /boot/grub/grub.cfg

Resta reiniciar o PC.

Testando…

Após o reinício, logue-se como root (ou use sudo) e acesse o diretório do spectre-meltdown:

# cd spectre-meltdown-checker/
# ./spectre-meltdown-checker.sh --explain
# ./spectre-meltdown-checker.sh --explain | grep "NOT VULNERABLE"

Possíveis meios para checar vulnerabilidades:

$ cat /sys/devices/system/cpu/vulnerabilities/l1tf
$ cat /sys/devices/system/cpu/vulnerabilities/meltdown
$ cat /sys/devices/system/cpu/vulnerabilities/spec_store_bypass
$ cat /sys/devices/system/cpu/vulnerabilities/spectre_v1
$ cat /sys/devices/system/cpu/vulnerabilities/spectre_v2
$ cat /sys/devices/system/cpu/vulnerabilities/mds
checagem no novo kernel atualizado, o 5.4.78…

Atualização de kernel.

E para quando houver uma atualização de kernel… deixo-vos uma colinha para ser executada de uma tacada só:

# cd /boot/; mkinitrd -c -k 5.4.78 -f btrfs -r /dev/sda6 -h /dev/sda5 -m xhci-pci:ohci-pci:ehci-pci:xhci-hcd:uhci-hcd:ehci-hcd:hid:usbhid:i2c-hid:hid_generic:hid-asus:hid-cherry:hid-logitech:hid-logitech-dj:hid-logitech-hidpp:hid-lenovo:hid-microsoft:hid_multitouch:zstd_decompress:zstd_compress:btrfs -u -M -w 5 -o /boot/initrd-5.4.78.gz; mv -v initrd-5.4.78.gz initrd-5.4.78.old.gz; cat /boot/intel-ucode.cpio /boot/initrd-5.4.78.old.gz > /boot/initrd-5.4.78.gz; rm -fv initrd-5.4.78.old.gz initrd-5.4.77.gz initrd.gz; ln -sv initrd-5.4.78.gz initrd.gz; grub-mkconfig -o /boot/grub/grub.cfg

Ou desmembrando como o nosso amigo Jack the Ripper…

# cd /boot/
# mkinitrd -c -k 5.4.78 -f btrfs -r /dev/sda6 -h /dev/sda5 -m xhci-pci:ohci-pci:ehci-pci:xhci-hcd:uhci-hcd:ehci-hcd:hid:usbhid:i2c-hid:hid_generic:hid-asus:hid-cherry:hid-logitech:hid-logitech-dj:hid-logitech-hidpp:hid-lenovo:hid-microsoft:hid_multitouch:zstd_decompress:zstd_compress:btrfs -u -M -w 5 -o /boot/initrd-5.4.78.gz
# mv -v initrd-5.4.78.gz initrd-5.4.78.old.gz
# cat /boot/intel-ucode.cpio /boot/initrd-5.4.78.old.gz > /boot/initrd-5.4.78.gz
# rm -fv initrd-5.4.78.old.gz initrd-5.4.77.gz initrd.gz
# ln -sv initrd-5.4.78.gz initrd.gz
# grub-mkconfig -o /boot/grub/grub.cfg

E é isso pessoal, sempre que der postarei alguma coisa aqui no blog e no Viva O Linux, não é obrigação, nem tampouco essencial em minha vida, mas apenas uma forma de lazer e de compartilhamento de conhecimento (isso é se possuo algum) 😉

Nesses tempos de CoViD, fiquem seguros, usem máscara, e mantenham os seus sistemas atualizados!

IntÈ!

How-To :: aplicação do intel-microcode no Slackware

Deixe um comentário