domingo, 17 de julho de 2016

Receita de bolo para fazer seu pen-drive multiboot

Com muito trabalho e muita pesquisa.


Lembre-se de remarcar a opção boot depois de formatar. Por que a anta aqui esqueceu.
Assista em 480p pelo menos pra ter uma boa leitura do que eu estou fazendo.


Levei muito tempo para conseguir só chegar perto de fazer um pendrive bootável. Mas consegui algo muito melhor: um pendrive multiboot que também carrega isos direto do hd.

Ingredientes:

  • 1 pendrive a gosto
  • 1 computador com ou sem sistema operacional desde que tenha um drive de cd-rom
  • 1 live-cd de qualquer distribuição linux com grub2
  • internet a gosto



Modo de preparo:


  • Baixe a iso, preferencialmente versão desktop;
  • Formate o pendrive
  • No mesmo terminal, abra o gparted digitando sudo gparted /dev/sdx e torne o pendrive bootável. Lembre-se de desmontar, mas não ejetar o dispositivo. O gparted só trabalha com dispositivos desmontados.
  • Rode o live-cd, ou o seu sistema linux que tenha o grub2
  • Com o pendrive montado, descubra a partição dele abrindo o terminal e digitando mount (enter). 
  • Instale o grub2 digitando "sudo grub-install --force  --root-directory=/media/pendrive /dev/sdx" (enter). (dica) sdx é a partição do pendrive. E /media/pendrive é o local onde ele foi montado.
    • Instalar na partição /dev/sdx1 também funciona;
  • Agora digite grub-mkconfig -o /dev/sdx1/grub/grub.cfg 
    • /dev/sdx1 é a partição onde você instalou o grub2
  • Agora, abra o diretório do pendrive na pasta boot/grub/, crie um arquivo de texto chamado grub.cfg (não txt, cfg).
  • Abra o arquivo e copie o seguinte código em vermelho para lá:


#!/bin/sh 
exec tail -n +3 $0 
set timeout=30 
set default=0 

menuentry "0 - HD" {
 set root=(hd1)
 chainloader +1
}

menuentry "1 - Restart" {
 reboot
}

menuentry "3 - Linux Mint 15 Mate ISO no pendrive que estamos usando" { 
set gfxpayload=keep
 loopback loop (hd0,msdos1)/linuxmint-15-cinnamon-dvd-32bit.iso 
 linux (loop)/casper/vmlinuz file=/cdrom/preseed/mint.seed boot=casper iso-scan/filename=/linuxmint-15-cinnamon-dvd-32bit.iso noeject noprompt quiet splash -- 
 initrd (loop)/casper/initrd.lz 
}

menuentry "4 - Linux Mint 15 Mate ISO no hd" { 
set gfxpayload=keep
         #Caso esteja numa pasta próxima da pasta raiz do sistema (mas no hd)
         loopback loop (hd1,msdos3)/Downloads/linuxmint-15-cinnamon-dvd-32bit.iso 
 linux (loop)/casper/vmlinuz file=/cdrom/preseed/mint.seed boot=casper initrd/casper/initrd.lz iso-scan/filename=/Users/Marinaldo/Desktop/iso/linuxmint-15-cinnamon-dvd-32bit.iso noeject noprompt quiet splash -- 
 initrd (loop)/casper/initrd.lz 
}

menuentry '5 - Ubuntu ubuntu-10.04.3-desktop-i386 no hd' {
         insmod part_msdos
         insmod ext2
set gfxpayload=keep
         echo   'Loading Loopback Image...'
         #Caso esteja numa "Downloads" próxima da pasta raiz do sistema (mas no hd)
         loopback loop (hd1,msdos3)/Downloads/ubuntu-10.04.3-desktop-i386.iso
         echo   'Loading Kernel Image...'
         linux   (loop)/casper/vmlinuz file=/cdrom/ubuntu.seed boot=casper initrd/casper/initrd.lz iso-scan/filename=/Users/Marinaldo/Desktop/iso/ubuntu-10.04.3-desktop-i386.iso noeject noprompt quiet splash --
         echo   'Loading Initrd Image...'
         initrd   (loop)/casper/initrd.lz



menuentry '5 - lUbuntu lubuntu-13.10-desktop-i386 no hd' {
         insmod part_msdos
         insmod ext2
set gfxpayload=keep
         echo   'Loading Loopback Image...'
         #Caso esteja numa pasta próxima da pasta raiz do sistema (mas no hd)
         loopback loop (hd1,msdos3)/Downloads/lubuntu-13.10-desktop-i386.iso
         echo   'Loading Kernel Image...'
         linux   (loop)/casper/vmlinuz file=/cdrom/lubuntu.seed boot=casper initrd/casper/initrd.lz iso-scan/filename=/Users/Marinaldo/Desktop/iso/lubuntu-13.10-desktop-i386.iso noeject noprompt quiet splash --
         echo   'Loading Initrd Image...'
         initrd   (loop)/casper/initrd.lz
}

  • Faça as devidas correções. Salve e... Está feito o seu pendrive bootável.

--------------------------------------------------------------------------------------
Segredinhos da receita

1 - > Você vai precisar configurar seu computador para iniciar pelo pendrive. Basta apertar a tecla de acesso a configuração de boot do sistema (no meu computador (acer) foi f2), prioridade de boot e por o pendrive em primeiro.

2 - > (hd1, msdos3) tem a ver com hd, partição. Nas pesquisas que fiz hd0 é o primeiro hd, ou seja, o pendrive em uso. Já a partição começa no 1 e segue, ou seja msdos3 é a 3ª partição do 1º hd.

3 - > A internet é só pra pesquisar e, caso necessidade, baixar os isos. O tamanho do pendrive é só para o caso de você querer muito espaço para as isos. No caso, a depender das isos que você deseja carregar, vai ser muito necessário.

4 - > Se você carregar as isos do hd é bem mais rápido do que do live-pendrive ou do live-cd. E caso o faça, poderá desmontar o pendrive e usar o computador como se houvesse instalado o sistema do pendrive. Ou seja, todas as portas usbs livres.

5 - > se for colocar um caminho extenso para a iso evite espaços. O erro gerado será "out of range" => fora de alcance. Prefira caminhos curtos como os que pus (/Users/Marinaldo/Desktop/iso/lubuntu-13.10-desktop-i386.iso). Evite o caracter espaço (" "). Evite os espaços. Organização é bom, sim. Mas evite os espaços.

6 -> Os isos serão sempre carregados na língua original: inglês. Não sei como mudar isso.

Boa sorte e que deus lhe ajude nessa empreitada e... Mãos a obra!!!

/*-/*-/*-/*-/*-/*-/*-/*-/*-/*-/*-/*-/*-/*-/*-/*-/*-/*-/*-/*-/*-/*-/*-

Algumas explicações a mais:

menuentry "3 - Linux Mint 15 Mate ISO no pendrive" {
Ítem do menu "nome do ítem"
 set gfxpayload=keep
 loopback loop (hd0,msdos1)/linuxmint-15-cinnamon-dvd-32bit.iso
A linha acima é uma variável que carrega o arquivo pra memória. Mude esse caminho pra acessar a sua iso.
 linux (loop)/casper/vmlinuz file=/cdrom/preseed/mint.seed boot=casper iso-scan/filename=/linuxmint-15-cinnamon-dvd-32bit.iso noeject noprompt quiet splash --
Esta linha inteira carrega o sistema incluindo o kernel
 initrd (loop)/casper/initrd.lz
Aqui é o faz o sistema trabalhar
}

Bibliografia: