1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.
  2. COVID-19 Mantenham-se seguros: Pratiquem distanciamento físico de 2 metros. Lavem as mãos. Fiquem em casa.
    Informação sobre COVID-19. Ajuda a combater o COVID-19 com o [email protected] e com o [email protected].
    Remover anúncio

Instalar Linux sem bootloader, forçar arranque via menu BIOS

Discussão em 'Dúvidas e Suporte Técnico - GNU/Linux & *nix' iniciada por Morais, 24 de Fevereiro de 2020. (Respostas: 2; Visualizações: 425)

  1. Morais

    Morais Power Member

    Isto é algo que, não sei como, consegui por a dar num Lenovo Thinkpad X250 de um colega meu, estávamos a tentar instalar o Ubuntu mas o Ubuntu insistia em não estava a reconhecer a partição do Windows 10 e, não sei quantas voltas depois consegui por o Thinkad a reconhecer o Windows 10 e Ubuntu como unidades separadas de arranque no menu de arranque da BIOS.

    Isto é, ao ligar o portatil ele vai logo para o Windows 10 (de uma forma bastante rápida, até, vai logo do logo Lenovo para o Windows 10 e só se acede ao Ubuntu ao escolher a opção para arrancar de outro disco via o POST / BIOS do Thinkpad, ora era algo isso mesmo que eu queria para o meu, ter o portátil nativamente a arrancar em Windows 10 e o arranque em Ubuntu ser algo a ser feito via BIOS / POST, e quando digo portátil também digo o de mesa.

    Porque não usar o GRUB / Bootloader e está feito? Não aguento escolher uma opção ou por o Windows 10 como opção base do GRUB e cortas-lhe uns segundos para teres mesmo que estar com atenção para arrancar em Windows 10, à semelhança do que já é o caso? Porque não instalei o Linux para ter tudo simples :D

    Já sabia / suspeitava que era possível ter vários SO num só sistema e poder escolher manualmente um a um sem ter que usar um bootloader, cada um ter a sua própria partição de arranque e ter a BIOS / UEFI (sei que já não se chama BIOS mas assim é mais fácil compreender) mas sempre que procuro informação em como fazer isto só encontro no seguimento de "Isto deu asneira, quero o meu Bootloader de volta".

    Alguêm já experimentou algo do gênero?
    Grato por qualquer dica que possam dar.

    Suspeito que tenha que configurar o portati a arrancar apenas por UEFI e forçar o mesmo a reconhecer o Windows 10 e o Ubuntu como unidades de arranque próprias, aqui a questão é como conseguir fazer isso. Possivelmente tenha que "reparar" o bootloader do Windows 10 de forma a tornar-se distinto do Ubuntu...
     
  2. luckypt

    luckypt Power Member

    Última edição pelo moderador: 24 de Fevereiro de 2020
  3. Noeljunior

    Noeljunior I fold therefore I AM

    Na verdade qualquer método de boot UEFI que escolhes vais ter o que queres: escolher que SO bootar através do menu de boot da motherboard e não de um bootloader. Como?

    tl;dr: instala um bootloader qualquer (p.ex. grub) e configura-o para fazer boot directo para o linux que queres; usa o menu da motherboard para escolher que boot queres e escolhe o do windows como default.

    --

    Nas bios, a bios procurava por todas as unidades possíveis de fazer boot e lia a informação de boot num sítio muito específico (MBR, no caso dos discos). Se tinhas vários SO capazes de boot no mesmo disco, tinhas de usar um bootloader que te desse opções (grub, por exemplo). A única forma que tinhas de fazeres o que queres era teres o vários SO em discos diferente (e não partições).

    Nas UEFIs isso mudou bastante. O UEFI já não reconhece/procura por discos/partições com boots. No UEFI tens de registar que boots existem na tua máquina e estes podem estar em qualquer sítio acessível quando ligas o PC. Só tens de dizer onde está 1 ficheiro que é o teu bootloader. Aliás, até podes meter esse ficheiro num disco e iniciar um SO noutro disco. Na verdade, até podes ter todos os teus ficheiros de boot numa única partição e os vários SO pelas várias partições/discos à tua escolha.

    (válido para o UEFI o seguinte)
    Quando instalas o windows ele cria-te uma partição pequena (menos de 1GB? não faço ideia) FAT32 com esses ficheiros de boot - mais especificamente, o bootmgfw.efi é a imagem de arranque propriamente dita. Ou se já existir uma partição FAT32 com umas flags mágicas, ele usa-a. E quando instalas o ubuntu (usando grub ou não)... sinceramente, não faço ideia se cria uma partição equivalente ou não mas pouco importa. O que importa é que se o grub for instalado e configurado ele vai também criar ficheiros de arranque semelhantes. Além dos ficheiros, tanto o windows como o grub vão registar-se na tua uefi como possíveis coisas de arranque e se fores ver a lista de opções devias lá ter os 2. Cada uma destas entradas apontam para os ficheiros nesta(s) partição(ões) FAT32.

    Como o ubuntu+grub é inteligente e egoísta vai detectar o windows (com mais ou menos esforço do utilizador) e vai adicioná-lo à lista de opções do grub - a coisa que não queres. Aliás, por esta altura a tua uefi deve ter as duas entradas: windows e grub/ubuntu. Devias conseguir fazer o que queres já a partir daqui.

    Solução 1 - fácil:
    Configurar o grub para fazer boot do ubuntu sem esperar pela tua escolha:
    - editar o cheiro '/etc/default/grub'
    - definir 'GRUB_DEFAULT=0' para o id do boot que queres (suponho que seja 0)
    - definir 'GRUB_TIMEOUT=0' para ele esperar 0s.
    - correr como root ou sudo: grub-mkconfig -o /boot/grub/grub.cfg

    Em princípio deve estar tudo como queres agora.

    Solução 2 - +complicada mas com um boot mais rápido (pelo menos uns 2 ou 3 segundos, dependendo de outras coisas):
    Como pareces querer ganhar uns segundos de boot, sugiro esta opção.
    O próprio kernel do linux suporta ser um objecto de boot perante uma uefi. Isto é, o kernel não precisa de um bootloader para arrancar, ele pode arrancar-se a ele próprio. Para isto o kernel tem de ter sido compilado com CONFIG_EFI_STUB=y e suponho que o ubuntu faz isso (há forma de confirmar, seja como for).
    Esta opção permite que a uefi comece o boot do linux imediatamente sem precisar de um bootloader - e sem gastar 2 ou 3 segundos a carregar um grub que vai carregar um kernel.
    Para isto "só" tens de:
    - correr isto dentro do ubuntu no root ou com sudo: efibootmgr --disk /dev/sdX --part Y --create --label "Ubuntu XPTO" --loader /vmlinuz --unicode 'root=PARTUUID=[UUID] rw initrd=\initrd.img'
    com as devidas adaptações:
    - saber onde está o teu vmlinuz (o kernel)
    - saber onde está o teu initrd.img (ramdisk)
    - saber que parâmetros são usados para arranca o kernel
    - saber em que disco e partição tens o kernel.
    - saber o UUID da partição root

    Na verdade consegues isto tudo lendo o ficheiro '/boot/grub/grub.cfg' e tudo isto é mais simples do que parece.

    Se decidires, ou se alguém precisar de indicações, sobre isto diz-me que eu guio-te se precisares.