PREPARAÇÃO DO AMBIENTE
Notebook:
- Chip gráfico switchable Radeon 6770M
- Disco /dev/sda com Windows 7 de fábrica
Computador desktop:
- Chip gráfico NVIDIA GTX980
- Disco /dev/sda com Windows 8.1
Iniciei a instalação pelo notebook, então foi plugado um HD externo de 320 GB utilizando um case na USB 3.0 (fica lento na USB 2.0! Mas nem tanto!!!).
Inicie o boot na imagem de instalação do Slackware Current.
O objetivo do artigo não é ensinar como instalar o Slackware, então deverás procurar como fazê-lo caso sinta alguma dificuldade (se é que tem dificuldade no Slackware).
O disco externo foi localizado como /dev/sdb, então eu particionei em 3, um swap, uma raiz e uma home, sendo assim realiza-se a instalação completa (full instalation).
Ao final da instalação, faça a instalação manual do LILO, gravando o boot exclusivamente na MBR do disco externo (no meu caso/dev/sdb), assim já teremos o /etc/lilo.conf ajustado.
Instalação concluída, mas se você iniciar o sistema por meio do HD externo (não esqueça de configurar o boot na inicialização do PC!!!), terás um KERNEL PANIC!!!
Então o que fazer???
AMBIENTE CHROOT
Como exitem zilhões de posts sobre o que é chroot vamos resumir…
chroot é a possibilidade de “enjaular” uma raiz de arquivos (pasta ou afins), quem está dentro do chroot não pode acessar o conteúdo do sistema de arquivos fora do nível especificado, sendo possível mesmo rodar outro sistema dentro do mesmo (sem virtualização).
Voltando…
Como o sistema não vai inicializar, então utilizamos o sistema em modo chroot.
Dar-se boot na mídia de instalação do Slackware, criamos uma pasta para montar o sistema…
Para identificar em qual dispositivo está seu sistema utilizamos o fdisk para localizar:
# fdisk -l
No meu caso tenho:
Dispositivo Inicializar Início Fim Setores Tamanho Id Tipo /dev/sdb1 2048 16779263 16777216 8G 82 Linux swap /dev/sdb2 * 16779264 268437503 251658240 120G 83 Linux /dev/sdb3 268437504 625142447 356704944 170,1G 83 Linux
Então monto o /dev/sdb2 como raiz:
# mkdir /hd
# mount /dev/sdb2 /hd
# chroot /hd
# mount -t proc proc proc
# mount -t sysfs sys sys
# mount /home
IDENTIFICANDO OS DISCOS VIA UUID
Durante o boot, seu disco pode ser alocado em um nome de dispositivo diferente do qual ele foi instalado, então se utilizamos por exemplo o /dev/sdb2 como raiz, ele pode não ser localizado, e aí temos um problema.
Para isto temos o UUID que significa: Universally Unique IDentifier, que é um identificador único gerado de acordo com o hardware.
Neste caso então o disco poderá ser identificado independente de onde estiver.
Para tal, criamos um arquivo de textos onde conterá os UUIDs de todas as partições do HD USB para servir como referência nas configurações seguintes.
Neste momento meu HD externo é /dev/sdb e este deverá ser adaptado de acordo com o seu hardware!
# blkid /dev/sdb1 >> /root/discos.txt (swap)
# blkid /dev/sdb2 >> /root/discos.txt (/)
# blkid /dev/sdb3 >> /root/discos.txt (/home)
Dentro do /root/discos.txt teremos as UUID para copiar e colar nas configs a seguir…
CONFIGURANDO FSTAB, INITRD E LILO
Utilizando os UUIDs do arquivo criado anteriormente /root/discos.txt:
Podemos copiar e colar utilizando seu editor de textos do coração para facilitar a operação. Exemplo do meu /etc/fstab:
UUID=0c7a5785-e705-4e94-8aa0-4a8c85e9793b swap swap defaults 0 0
UUID=dc15e38c-b7c6-4016-bc36-52dab65daa09 / ext4 defaults 1 1
UUID=3ee5e7e4-5602-42d1-a8dd-cb41e5da3594 /home ext4 defaults 1 2
#/dev/cdrom /mnt/cdrom auto noauto,owner,ro,comment=x-gvfs-show 0 0
/dev/fd0 /mnt/floppy auto noauto,owner 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
proc /proc proc defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
CRIAR O INITRD
O initrd é o cara que vai carregar os módulos que precisamos para dar boot no kernel via USB, para criar o mesmo, utilizamos:
# mkinitrd -c /k 3.18.11 -f ext4 -r UUID=dc15e38-b7c6-4016-bc36-52dab65daa09 -m usb_storage:xhci-hcd:mbcache:uas:xhci_pci:ehci_hcd:ehci_pci:loop:ext4:jbd2 -u -o /boot/initrd.gz
Não se esqueça que o parâmetro “/k 3.18.11” acima deve bater com seu kernel, o que pode ser verificado usando:
# uname -r
Bastando alterar se necessário.
FINALIZANDO COM O LILO
E por fim, necessitamos realizar alterações no LILO para que o boot possa funcionar. Altere o final do /etc/lilo.conf arquivo para:
initrd = /boot/initrd.gz
append = “root=UUID=dc15e38c-b7c6-4016-bc36-52dab65daa09 rootdelay=10”
label = Linux
read-only
Salve o arquivo. Grave o LILO no disco externo:
# lilo -C /etc/lilo.conf -b /dev/sdb
Saia do chroot:
# exit
Remova a mídia de instalação e reinicie o PC…
# reboot
Pronto, Slackware 14.1 Current bootando via USB e em qualquer PC…
Possivelmente se você utilizar esse boot em máquinas (no meu caso o note e o PC de mesa) com chips gráficos diferentes (Radeon Switchable e NVIDIA), antes de iniciar o X deverá configurar o driver de vídeo.
Para o Radeon Switchable, utilizo o driver VESA (que funciona muito bem com GLX, DRI e afins). No PC para NVIDIA, basta instalar o driver NVIDIA (baixado do site), e quando voltar para o notebook executar o instalador do driver com a opção “–uninstall”, ele faz um rollback nas configs e fica show de bola!
O único inconveniente que encontrei foi esse de ficar alternando os drivers de vídeo, porém funciona legal.