Instalando Slackware Linux 14.1 no Hyper-V 6.4 rodando em Windows 10

Ao fazer a instalação do Windows 10 verifiquei que o VirtualBox não funciona, assim foi necessário a instalação do Hyper-V. Porém finalizando a instalação do Slackware linux 14.1 no hyper-v e o sistema realizar o primeiro boot a tela trava na seguinte mensagem de “Kernel panic – not syncing: VFS: Unable to mout root fs on unkown-block”, que pode ser observada na imagem 01:

egoncalves-slackware-hyperv-001
Imagem 01: Slackware 14.1 Kernel panic no Hyper-V 6.4 Windows 10

Isso acontece, porque os módulos do hyper-v não são habilitados por padrão no kernel do Slackware. Para resolver isso podemos criar um initrd (initial ramdisk) com os módulos necessários e iniciar o sistema por ele. Abaixo descrevo como realizei o procedimento, caso tenha alguma dúvida ou sugestão deixe um comentário.

Caso necessite, siga os passos de instalação descrito no artigo “O Guia do Slackware”. Para instalação do sistema apenas em modo texto, no momento da seleção do pacote, observado na imagem 02, marque as seguintes categorias de pacotes: “A,AP,D,E,F,K,L,N”:

  Windows 10: Desativar Barra de Pesquisa economizando espaço na barra de tarefas
egoncalves-slackware-hyperv-002
Imagem 02: Instalação do Slackware, tela de seleção de categoria de pacotes

Após finalizar a instalação, NÃO reinicie o sistema ainda. Digitando no terminal “fdisk -l”, listaremos as partições que acabamos de criar durante a instalação, no meu caso instalei o sistema em /dev/sda1, o qual está montado em /mnt. Vamos carregar o sistema recém instalado em /dev/sda1 utilizando o comando “chroot /mnt”, veja a imagem 03.

egoncalves-slackware-hyperv-003
Imagem 03: Listando as partições e carregando o sistema recém instalado

Vamos executar o assistente para gerar a linha de comando para criação do initrd utilizando o script disponível em “/usr/share/mkinitrd/mkinitrd_command_generator.sh”, veja na imagem 04:

egoncalves-slackware-hyperv-004
Imagem 04: Executando o mkinitrd_command_generator.sh para gerar o initrd.gz (initial ramdisk)

O comando retornará a linha de comando com os módulos necessários para sua configuração de hardware, onde os módulos “hv_vmbus” e “hv_storvsc” são os necessários para utilização no Hyper-V. Para a minha instalação, o comando retornado foi: “mkinitrd -c -k 3.10.17 -f ext4 -r /dev/sda1 -m hv_vmbus:hv_storvsc:mbcache:jbd2:ext4 -u -o /boot/initrd.gz”, imagem 05:

egoncalves-slackware-hyperv-005
Imagem 05: Resultado do comando mkinitrd_command_generator.sh

Após digitar o comando gerado e pressionar ‘ENTER’, o mkinitrd irá gerar o arquivo initrd.gz na pasta /boot, o próximo passo é editar o arquivo de configuração do lilo para utilizar o arquivo initrd.gz, imagem 06:

  Configurar o SELinux para permitir o PHP conectar em banco de dados remoto
egoncalves-slackware-hyperv-006
Imagem 06: Executando o comando mkinitrd e gerando o arquivo /boot/initrd.gz

Localize a linha “image = /boot/vmlinuz”, observe a imagem 07:

Imagem 07: Editando o lilo.conf para utilizar o initrd.gz (initial ramdisk) criado

E altere para “image = /boot/vmlinuz-generic-3.10.17”, vá para a próxima linha e digite “initrd = /boot/initrd.gz”, veja na imagem 08:

Imagem 08: Editando o lilo.conf para utilizar o initrd.gz (initial ramdisk) criado

Salve e feche o arquivo. Sempre que editar o arquivo lilo.conf, execute o comando “lilo” para aplicar as alterações, veja a imagem 09:

Imagem 09: Aplicando as alterações no LILO (LInux LOader)

Agora basta reiniciar a máquina, e o Slackware irá carregar, como pode ser visto na imagem 10:

egoncalves-slackware-hyperv-010
Imagem 10: Inicialização da máquina após realizar a configuração do initrd (initial ramdisk)

Como pode ser observado na imagem, o sistema irá acusar algumas mensagens de “libpixman-1.so.0: cannot open shared object file: No such file or directory” ou “errir while loading shared libraries: libXft.so.2: cannot open shared object file: No such file or directory”, isso é normal e acontece porque instalamos a categoria de pacotes “L”, porém não instalamos todas as dependências do KDE, X. Assim para remover essas mensagens temos 2 opções, sendo instalar os pacotes de dependências ou remover os pacotes que não são necessários, como no meu caso vou utilizar apenas o modo texto vou remover os pacotes “pango” e o “gdk-pixbuf2”, que estão causando as mensagens de erro utilizando o comando “slackpkg remove pango gdk-pixbuf2”, imagem 11:

  [SOLVED] Ejabberd offline messages with wrong timestamp
egoncalves-slackware-hyperv-011
Imagem 11: ‘Corrigindo’ erros de dependência na inicialização do Slackware 14.1

O slackpkg apresenta uma tela com os pacotes indicados para remoção, onde basta pressionar enter para confirmar a remoção dos pacotes, veja na imagem 12:

egoncalves-slackware-hyperv-012
Imagem 12: Removendo pacotes no Slackware com o comando “slackpgk remove”

Após o slackpkg finalizar a remoção dos pacotes, basta reiniciar o sistema, imagem 123

egoncalves-slackware-hyperv-013
Imagem 13: Reiniciando o sistema após a remoção dos pacotes

Na imagem 14 podemos observar o sistema reiniciando sem as mensagens de erro:

Imagem 14: Slackware iniciando sem as mensagens de erro após as configurações
Imagem 14: Slackware iniciando sem as mensagens de erro após as configurações