Ubuntu em um stick USB - inicialize nos modos BIOS e UEFI

4

Eu gostaria de ter o Ubuntu instalado em um pen drive, que eu pudesse conectar (quase) qualquer computador e inicializar a partir dele, e que eu pudesse usar (quase) normalmente, como se estivesse instalado naquele computador. Eu também gostaria de ter uma partição de dados que poderia ser usada por (quase) qualquer computador, principalmente para armazenar alguns aplicativos portáteis, apenas no caso.

Foi-me dito que, se eu instalasse o Ubuntu no modo BIOS, não conseguiria arrancar a partir de um computador no modo UEFI e vice-versa.

Como gostaria de poder inicializar em qualquer computador, é um grande problema.

O que posso fazer para inicializar em computadores nos modos BIOS ou UEFI no meu caso?

Eu tenho procurado por soluções, mas a maioria delas é para necessidades específicas que são diferentes das minhas, por isso é difícil extrair os requisitos mínimos dessas soluções para aplicá-las ao meu problema.

Existe uma solução simples, "limpa" e bastante genérica para este problema?

Gostaria de receber algumas explicações sobre os motivos pelos quais uma solução específica é boa ou uma etapa específica é necessária.

Minha configuração atual:

  • pen drive: SanDisk Ultra Fit (32 GB)
  • SO: Xubuntu 16.04 i386
  • instalação: instalação completa (a partir de um Live USB construído com o Rufus)
  • drivers: nenhum proprietário
  • sistemas de arquivos:
    • tabela de partições: GPT
      • 2: ESP , /boot/efi , 128 Mio, FAT32,
      • 3: ABP , 128 milhões, HFS +
      • 4: BBP , 2 milhões, [bios_grub]
      • 5: trocar, 512 milhões
      • 6: raiz , / , 24 Gio, ext4, defaults,errors=remount-ro,lazytime,commit=60
      • 1: dados , /media/data , ~ 3,6 Gio, FAT32, defaults,lazytime,check=strict
    • RAM:
      • /tmp , tmpfs, defaults,nosuid,nodev,noexec,mode=1777
  • swap:
    • vm.swappiness=5
    • partição swap: 512 Mio, para emergência
    • zRAM
    • troca de arquivos:
      • /var/swap/hib.swp : mesmo tamanho da RAM, para hibernação, gerada por um script na inicialização
      • /var/swap/opt.swp : se necessário, gerado por um script
  • superprovisionamento: ~ 5,6%
    • integrado: ~ 1.2 Gio (aparentemente)
    • adicionado: 512 milhões
  • agendador: deadline
por CidTori 17.01.2017 / 18:03

1 resposta

4

NB: Aqui apresento a maneira manual de proceder. É um pouco mais complicado (não pensamento impossível), mas você pode controlar exatamente o que você quer / precisa. Se você não entende nada, talvez usar um software como o MultiSystem seria uma solução melhor para você.

Existem duas maneiras de criar essa chave usb. Você pode usar uma tabela de partição mdos / MBR ou uma tabela de partição GPT. Ambos têm vantagens e desvantagens, vou tentar descrever a versão do mdose primeiro, e posso vir para a versão do GPT mais tarde, quando tiver mais tempo.

tabela de partição mdos / MBR

Primeiro, certifique-se de ter todos os seus dados de backup. Essa operação pode ser perigosa se você não souber o que faz e pode apagar seu disco rígido se fizer manipulações incorretas, portanto, certifique-se de saber o que está fazendo antes de digitar um comando.

Etapa 1: encontre seu dispositivo usb

Use o comando

lsblk

para encontrar o nome do seu dispositivo USB. Você pode, por exemplo, executar lsblk , conectar sua chave e executar mais uma vez lsblk para ver o que mudou. O dispositivo que aparece é sua chave e será anotado em /dev/sdX .

Etapa 2: crie as partições

Você pode usar qualquer programa que desejar: gparted , fdisk , cfdisk (uma ferramenta de linha de comando para fdisk ) ... Em seguida, faça as seguintes operações

  • Primeiro inicie o programa ( sudo gparted ou sudo fdisk /dev/sdX dependendo do programa escolhido)
  • Em seguida, redefina seu dispositivo para ter uma tabela de partições msdos (em gparted está em "Dispositivo / Criar uma nova tabela de partições", com fdisk type o .
  • Em seguida, crie três partições. O primeiro é em FAT32, será a partição de dados (pode ser também NTFS, ext ou qualquer outro sistema de arquivos), o segundo é uma partição EFI (baseada em FAT) e deve ser inicializável e em torno de 150M, o a última é a partição com o iso e deve ser inicializável e em FAT32 (se você usar o ext2, se inicializará, mas não poderá usar a persistência). Aqui está o que você gostaria de ter no final do processo (por favor, observe as bandeiras (drapeau na foto), elas são importantes):

Se você quiser criá-los com fdisk , você deve ter algo assim:

$ sudo fdisk -l /dev/sdc
Disque /dev/sdc : 14,3 GiB, 15376000000 octets, 30031250 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x2d844503

Périphérique Amorçage    Début      Fin Secteurs Taille Id Type
/dev/sdc1                 2048 14682111 14680064     7G  b W95 FAT32
/dev/sdc2    *        14682112 14989311   307200   150M ef EFI (FAT-12/16/32)
/dev/sdc3    *        14989312 30031249 15041938   7,2G  b W95 FAT32

Para isso, siga estas etapas:

sudo fdisk /dev/sdX
o

n
p
1
<Enter>
+7G     # Or any size you want, just be sure to let arount 2G at the end of the device
t
b

n
p
2
<Enter>
+150M
t
ef

n
p
3
<Enter>
<Enter>
t
b

w

sudo mkfs.fat -F32 /dev/sdX1
sudo mkfs.vfat /dev/sdX2
sudo mkfs.fat -F32 /dev/sdX3

Etapa 3: monte as partições

Agora, monte-os para escrever neles

mkdir /tmp/usb{2,3}
sudo mount /dev/sdX2 /tmp/usb2/
sudo mount /dev/sdX3 /tmp/usb3/

Passo 4: Instale o grub nas duas partições (EFI e não-EFI)

Então, você precisa instalar o grub nas duas partições. Certifique-se de ter o grub instalado e, em seguida, execute:

sudo grub-install -v --no-floppy --boot-directory=/tmp/usb3 --target=i386-pc /dev/sdX
sudo grub-install -v --no-floppy --boot-directory=/tmp/usb2 --efi-directory=/tmp/usb2 --removable --target=x86_64-efi /dev/sdX

Passo 5: Copie o arquivo iso e configure o grub

Copie o arquivo iso na seguinte pasta:

sudo cp <your iso file> /tmp/usb3/linux-iso

e coloque a configuração do grub nas duas configurações do grub /tmp/usb2/grub/grub.cfg e /tmp/usb3/grub/grub.cfg (NB: pode ser grub2 / grub.cfg dependendo da sua versão do grub)

insmod loopback
insmod iso9660

menuentry 'XUbuntu 16.04 "Xenial Xerus" - amd64' {
          set isofile="/linux-iso/xubuntu-16.04.1-desktop-amd64.iso"
          search --no-floppy --set -f $isofile
          loopback loop $isofile
          linux  (loop)/casper/vmlinuz.efi locale=fr_FR bootkbd=fr console-setup/layoutcode=fr iso-scan/filename=$isofile boot=casper file=/cdrom/preseed/ubuntu.seed noprompt ro quiet splash noeject --
          initrd (loop)/casper/initrd.lz
} 

NB: você deve editar este arquivo para combinar com o bom arquivo iso, aqui nós supomos que nós colocamos o arquivo em /tmp/usb3/linux-iso/xubuntu-16.04.1-desktop-amd64.iso .

Reinicialize e experimente nos modos UEFI e não-UEFI: ele deve funcionar, mas você não deve ter persistência ainda!

Etapa 6: adicione persistência única

Adicionar persistência é muito fácil. A idéia é criar na terceira partição (na verdade, qualquer partição FAT32 seria aceita) um arquivo vazio casper-rw que conterá algum sistema de arquivos ext2. Ele será posicionado acima do arquivo iso, de forma que, se o sistema for modificado, o arquivo casper-rw registrará essas modificações. Se você deseja gravar somente a home, faça exatamente as mesmas etapas, mas com o nome de arquivo home-rw em vez de casper-rw (pode ser útil se você se importar apenas com os dados do documento e se preferir evitar os problemas com persistência completa explicada depois). Finalmente, observe que, em vez de um arquivo, você pode criar uma partição no ext2 cujo rótulo é casper-rw ou home-rw e fornecerá exatamente o mesmo resultado, exceto que você poderá ter mais de 4 Gb de modificações ( tamanho máximo no sistema FAT32).

Para criar o arquivo, basta executar:

sudo dd if=/dev/zero of=/mnt/usb3/casper-rw bs=1M count=512

(aqui é 512M, mas você pode alterar o tamanho dos dados até 4G)

e adicione persistent na linha linux ... nos arquivos /mnt/usb{2,3}/grub/grub.cfg (modifique os dois arquivos). Deve ser assim:

insmod loopback
insmod iso9660

menuentry 'XUbuntu persistent 16.04 "Xenial Xerus" - amd64' {
          set isofile="/linux-iso/xubuntu-16.04.1-desktop-amd64.iso"
          search --no-floppy --set -f $isofile
          loopback loop $isofile
          linux  (loop)/casper/vmlinuz.efi locale=fr_FR bootkbd=fr console-setup/layoutcode=fr iso-scan/filename=$isofile boot=casper persistent file=/cdrom/preseed/ubuntu.seed noprompt ro quiet splash noeject --
          initrd (loop)/casper/initrd.lz
}

Agora reinicie: você deve ter persistência! Você pode até mesclar arquivos persistentes e não persistentes como este:

insmod loopback
insmod iso9660

menuentry 'XUbuntu 16.04 "Xenial Xerus" - amd64' {
          set isofile="/linux-iso/xubuntu-16.04.1-desktop-amd64.iso"
          search --no-floppy --set -f $isofile
          loopback loop $isofile
          linux  (loop)/casper/vmlinuz.efi locale=fr_FR bootkbd=fr console-setup/layoutcode=fr iso-scan/filename=$isofile boot=casper file=/cdrom/preseed/ubuntu.seed noprompt ro quiet splash noeject --
          initrd (loop)/casper/initrd.lz
}
menuentry 'XUbuntu persistent 16.04 "Xenial Xerus" - amd64' {
          set isofile="/linux-iso/xubuntu-16.04.1-desktop-amd64.iso"
          search --no-floppy --set -f $isofile
          loopback loop $isofile
          linux  (loop)/casper/vmlinuz.efi locale=fr_FR bootkbd=fr console-setup/layoutcode=fr iso-scan/filename=$isofile boot=casper persistent file=/cdrom/preseed/ubuntu.seed noprompt ro quiet splash noeject --
          initrd (loop)/casper/initrd.lz
}

Múltipla persistência

No momento, todo o sistema operacional na chave tem o mesmo arquivo de persistência. E se é um casper-rw que é compartilhado, se pode quebrar tudo (os dados em um sistema operacional não tem nada a ver com os dados no outro sistema operacional). Para ter um arquivo persistente para cada sistema, é muito fácil, coloque o arquivo em uma determinada pasta, por exemplo persist/xubuntu :

mkdir /mnt/usb3/persist/xubuntu/
sudo dd if=/dev/zero of=/mnt/usb3/persist/xubuntu/casper-rw bs=1M count=512

e adicione persistent persistent-path=/persist/xubuntu nos arquivos grub.cfg :

insmod loopback
insmod iso9660

menuentry 'XUbuntu persistent 16.04 "Xenial Xerus" - amd64' {
          set isofile="/linux-iso/xubuntu-16.04.1-desktop-amd64.iso"
          search --no-floppy --set -f $isofile
          loopback loop $isofile
          linux  (loop)/casper/vmlinuz.efi locale=fr_FR bootkbd=fr console-setup/layoutcode=fr iso-scan/filename=$isofile boot=casper persistent persistent-path=/persist/xubuntu file=/cdrom/preseed/ubuntu.seed noprompt ro quiet splash noeject --
          initrd (loop)/casper/initrd.lz
}

Você também pode notar que não encontrei uma maneira de ter uma partição casper-rw para cada sistema operacional, portanto, não vejo como ter persistência múltipla e persistência de mais de 4 GB para todo o sistema operacional.Se alguém tiver uma ideia, ficarei feliz em saber disso. Talvez a montagem da partição possa resolver temporariamente esse problema?

Desvantagem da persistência

Quando você usa persistência, deve estar ciente de que a atualização pode ser perigosa. Ele poderia realmente quebrar seu sistema se as modificações tocassem o kernel, então evite fazer muito dele. Além disso, às vezes não se encaixa bem quando você muda o computador, algumas pessoas explicam que perderam a internet quando o cartão da internet mudou. Se você quiser atualizar seu sistema, você deve instalá-lo diretamente na chave usb (como se a chave usb fosse um disco), mas este método pode falhar se você tentar a chave em um computador que precisa de software proprietário que não é incluído no sistema operacional instalado. Se alguém tiver uma solução que contorne essas desvantagens, ficarei feliz em saber disso.

Fontes

Para configurar o grub para combinar com outros sistemas ou se você quiser usar o GPT em vez do MBR, você pode se interessar pelos seguintes links:

Aproveite e não hesite em perguntar se você tem dúvidas.

    
por tobiasBora 18.01.2017 / 19:23