Existe possibilidade de instalar o coreboot em uma máquina com BIOS genérica?

Quero agilizar o tempo de boot da minha máquina, um Lenovo IdeaPad S145 AMD com Ubuntu 20.04,

Já deixei somente o estritamente necessário na inicialização, arranquei fora o plymouth (splash screen), já uso ssd nvme, e o tempo de boot ainda tá perto de 25s, conferido pelo comando systemd-analyze

Testando, percebi que a tela que mais demora no boot é logo a primeira, tipo uma “splash screen” da Lenovo, creio eu que seja uma máscara pra esconder as letrinhas da BIOS.

Enfim, atrasa muito o boot. Quero algo bem mais rápido que isso, conheço o coreboot, famoso pelos boots de menos 10s, mas não tenho informação sobre se é possível instalar/flashear ele numa máquina já pronta. (Pelo menos que não envolva GPIO)

Alguém tem alguma ideia?

que é possível é
mas eu não manjo disso então vou chamar o @EsTeVaO
mas vc pode usar os recursos da uefi para isso
vc configura para a uefi iniciar direto o kernel sem passar pelo grub.

Core boot pode ser flashado sim em uma maquina já pronta inclusive minha mãe tem um Lenovo Ideapad s145 com r5 3500u provavelmente o mesmo que o seu já flashei uma vez o coreboot para fazer alguns testes logicamente com a permissão dela. Funcionou bem, porém não recomendo pelo fato de ser meio que um inferno fazer isso em uma maquina da Lenovo, tive que fazer várias tentativas para funcionar bem. Dps resolvi tirar já que eu só coloquei para fazer alguns testes. Só que ele está com deepin.

1 curtida

E também não vejo necessidade para isso pode fazer o “método” que o @Talls recomendou que provavelmente vai deixar bem mais rápido, o boot da máquina quando estava com core boot e um hd era de 15 segundos.

Sem core boot chega em 30 geralmente as vezes 1:30.

Entendi. Como que eu faço essa configuração na uefi?

Não é bem isso, essa parte trata do sistema operacional já, apesar da logo do fabricante

eu descobri que isso era possível semana passada lendo postagens aqui do fórum. nunca fiz!
mas veja esse link da archwiki:
https://wiki.archlinux.org/title/EFISTUB_(Português)

1 curtida

Caraca, maneiro, e ainda vai me render um aprendizado durante o processo! Valeu!

depois vc volta aqui para nos contar

Tô na saga agora de buscar informação, pq na ArchWiki apesar de robusta, não é lá muito user-friendly. Mas vou atualizar aqui depois.

Terminei a saga da informação e descobri como fazer pra iniciar direto pelo kernel, sem passar pelo grub (EFISTUB).

vou deixar passo a passo aqui de uma forma um pouco mais amigável do que eu encontrei no artigo do qstack e na ArchWiki.

1. Monte a partição efi e copie os arquivos do kernel para lá


Você precisa copiar os arquivos vmlinuz e os initrd.img para a pasta /boot/efi/EFI/ubuntu/ (no caso de estar usando o Ubuntu, obviamente) para inicializar direto por eles.


(Os diretórios do /boot/efi não possuem permissão de acesso nem com o sudo, no meu caso, então pode ser necessário estar logado como root no terminal, com o comando sudo su.)

E o comando é

cp -uv /boot/vmlinuz-* /boot/initrd.img-* /boot/efi/EFI/ubuntu/



2. Altere o nome do arquivo do kernel


Existe uma suposta limitação de caracteres para o caminho até o kernel* (vmlinuz), então precisamos diminuir o nome dele.

E o comando é

for f in /boot/efi/EFI/ubuntu/vmlinuz-*-generic; do mv -uv -- "$f" "${f//-generic/}.efi"; done

*note que os comandos independem da versão do kernel utilizada, porém, para o kernel de linha prinicipal dpkg, é necessária uma abordagem diferente, pois ainda permanece com nome muito grande depois do comando acima


3. Adicione uma nova entrada ao menu de inicialização EFI


Aqui será o momento em que você pode definir a menu entry.

O comando base é o abaixo, substituindo yourKernelVersion com a versão do seu Kernel, o rootDisk com o disco e partição onde se encontra a raíz do sistema (/), e também o fileSystemType com o sistema de arquivos do seu sistema:

kv=yourKernelVersion;efibootmgr -c -p 3 -L $kv -l \EFI\ubuntu\vmlinuz-$kv.efi -u root=/dev/rootDisk initrd=\\EFI\\ubuntu\\initrd.img-$kv-generic ro rootfstype=fileSystemType debug ignore_loglevel libata.force=dump_id crashkernel=384M-:128M

Um exemplo para a minha máquina com kernel 5.8.0-59, sistema na partição 1 do ssd nvme, e em sistema de arquivos em ext4, o comando ficaria dessa forma:

kv=5.8.0-59;efibootmgr -c -p 3 -L $kv -l \EFI\ubuntu\vmlinuz-$kv.efi -u root=/dev/nvme0n1p1 initrd=\\EFI\\ubuntu\\initrd.img-$kv-generic ro rootfstype=ext4 debug ignore_loglevel libata.force=dump_id crashkernel=384M-:128M

(Para um HD comum, o disco é descrito na fórmula sdXx, onde ‘‘X’’ é o próprio disco e ‘‘x’’ a partição. Ex.: sda2).


Dessa forma, essa nova entrada do menu de inicialização se tornará padrão no seu boot.


Segue aí uma pic da saída do comando systemd-analyze depois disso:


(era 25s antes)


Só não é mais rápido do que isso por conta dos snaps que incomodam um pouco o boot.
2 curtidas

nossaaaaaaa!
diferença dramática!
imagina com coreboot!
vc poderia colocar esse tutorial em um tópico separado para ser mais fácil de outras pessoas encontrarem.

Pô, era até uma boa ideia, mas eu acho que eu não tenho permissão pra criar um tópico lá no “Artigos da Comunidade”, o botão tem ícone de bloqueado, algo do tipo. Mas, sim, é boa a ideia