Fastboot, SecureBoot e UEFI

linux-secureboot-lead

Fastboot com SecureBoot ?

Não vamos falar sobre o fastboot do Android com os seus recursos do pacote SDK para modificar a sua flash filesystem por uma conexão USB, mas um outro recurso interessante que ja tem a alguma tempo em vários devices do mercado, desde Desktop , Notebooks e agora tablets. Muitos trolls e amantes das inovações para o Windows (ou as que a Microsoft passou a usar e que NÃO são dela), tem se levantado para desmerecer o desktop Linux (em suas instalações), tanto como a utilização em Workstation, no seu ambiente de trabalho. So que antes de começar falar um pouco sobre eu gostaria de lembrar alguns pontos muito importante.

1. Quando a Microsoft lançou o Xbox 360 ela disse atraves dos seus pseudo-“engenheiros”, que seria impossível colocar Linux nele e desafiou os “hackers”. Em menos de 6 meses de lançamento ja tinha instalações de distribuições Linux para XBOX 360! Existe um projeto bem legal chamado  Free60 que possibilida instalações de Linux e BSD para Xbox360. http://www.free60.org

2. Quando o iPad foi lançado, tal como o iPhone a Apple disse que seria impossível alguem quebrar o seu firmware (baseada na EFI). Em algum momento depois surgiu as primeiras versões do Jailbreak para iOS nestes hardwares tal como os hackers Patrick Wildt e Ricky Taylor conseguiram rodar distribuições Linux nele. Lembrando que o OpeniBoot permite executar até mesmo um dualboot com o Android, bom mas que pena que o projeto acabou (o source ainda esta disponível).

3. Nunca diga: será impossivel! Diga, poder!

Algumas novidades pintaram ja a algum tempo mas somente agora estão sendo explorados pelos fabricantes, algumas delas são:

 

UEFI

Que veio para substituir a antiga Bios Legacy e trazer novos recursos ja conhecidos para outras arquiteturas como HP Itanium2 e Apple. A UEFI teve um recurso de segurança SecureBoot implementado na versão 2.3.1 (stable), cujo ja acompanha diversas outras arquiteturas como ARM, Mac, HP P900, Integrity Ia2 e outras RISC. O secureboot utiliza recursos como Key Management Service (KMS) e Storage Security Command Protocol for encrypted HDD da UEFI. (ps NÃO é da Microsoft ;)
Por favor, leia minha recente materia sobre.

Nota: http://www.aprigiosimoes.com.br/2013/05/30/uefi/

 

Fastboot

Cold_HybridBoot

Assim como o “Secure Boot”, “Trusted Boot” e “Measured Boot” , existem vários outras tecnologias que a Intel disponibiliza com outros fabricantes que o sistema operacional pode utilizar. Os recursos são distribuídos não somente ao Windows, aquele sistema operacional da Microsoft (rs), mas também a outros sistemas operacionais como o Linux.

O FastBoot é interessante pois ele é um recurso da firmware que permite que o sistema operacional inicie em 2 níveis de velocidade, a “Fast” e a “Hyper Fast”, além das 90% das firmwares terem a opção de disabled também. O Fastboot foi incluído em BIOS ja a algum tempo atrás e hoje é um “quase” padrão da UEFI, sendo suportado pelo kernel Linux desde a versão 2.6.29 e logo depois foi também utilizado pela Microsoft no seu sistema operacional.

A tempos que se buscam soluções de boot rápido e frequentemente muitos sites colocam algumas regras de tuning para diminuir o tempo de boot, como a remoção de alguns serviços e scripts rc, instalações de patchs e é claro, a perfeita compilação do kernel, mas ainda sim você não terá algo próximo ao recurso implementado em firmware.

A tempos que as estatísticas dizem que os usuários de notebook preferem colocar o seu sistema em modo sleeping(dormindo), do que hibernate (hibernação) do que até mesmo desligar a máquina, para facilitar o arranque do sistema operacional quando ligar novamente. Para quem conhece o MacOS X ja deve saber como ele usa o recurso de fastboot da EFI (que é um dos resources de System/Library), iniciando muito rápido.

O interessante do FastBoot é que ele não é somente um recurso poderoso para a hibernação, mas ele usa o sistema de “multi-fase”, que usa todos os núcleos do seu CPU, tanto em multi-core de forma pararela que divide o trabalho de leitura do arquivo de hibernação para abrir o conteúdo (no Windows 8 o hiberfile.sys). O mais interessante é que o arquivo de hibernação no sistema do mal trabalhando com discos SSD é mmmuito mais rápido e aí que mora o problema. Se o cache do SSD estiver otimizado, qualquer pessoa que tentar instalar um segundo sistema operacional, como o Linux, voce pode perder todos os dados do disco com um recurso de segurança de desativar os dados (ele não queima nao ta, rsrs, isso é papo de troll).

Então, se caso voce comprar alguma máquina como Thinkpad da série W, Lenovo da série ideapad z, placas como da MSI A55M-P, Dell Vostro 131-x e novos Samsung, NÃO SE DESESPERE. É tão idiota de instalar o Linux nestas máquinas, que os trolls idiotas não entendem e ficam por ai espalhando besteira. Se você olhar para o Ubuntu (como exemplo),a maioria dessas máquinas praticamente ja são homologadas em http://www.ubuntu.com/certification/.

Mas o que fazer para acabar com alguns bloqueios e eu ser bem sucedido com 1 dualboot ou uma singleboot de Linux? Mais a frente …

Ah, antes que eu me esqueça, nem mesmo se o recurso estiver em HPA (Host Protected Area), o que voce pode consultar pelo dmesg ou hdparm -N no seu blockdevice, ainda sim o serviço pode ser desabilitado. Outro detalhe, e mesmo que trabalhe com TPM pelo Measured Boot.

Outro detalhe é que ele pode trabalhar junto com o SecureBoot da UEFI e não permitir que voce dê um arranque em 1 USB Pendrive OU CD/DVD, por causa da chave da Microsoft. Mas afinal, posso desabilitar isso e instalar normalmente? Sim claro! Continue lendo …

 

Mas como Funciona o processo de suspend e hibernate no Linux?

O processo de boot do Linux se basea na leitura da firmware da máquina, o gerenciador de boot onde é carregado a imagem do kernel compilada e a imagem com os módulos carregados na memória que dar-se o processo de bootstrap do sistema operacional carregando o init, o pai de todos os processos ou qualquer outro processo “mestre”, carregando e descarregando todos os scripts (daemons) de acordo com o perfil de sua runlevel (nível de execução) até que voce seja direcionado ao processo login para carregar um terminal, deixando o seu sistema operacional, bem operacional. O processo de desligamento do sistema é a mesma coisa, porem, a possibilidade de suspender e hibernar a máquina é não passar por todos estes passos desde que ambos se baseam no estado da máquina antes de ser interrompida, seja pela suspenção da memoria ram e cpu, como a hibernação do sistema através de um arquivo de imagem, gerado que contem uma fotografica de todo o estado da mesma antes do processo acontecer. Ou seja, MUITO MAIS RÁPIDO do que voce desligar a máquina e iniciar novamente.

Este processo de suspender é gerenciado pelo kernel em várias partes em /sys, como o (1) arquivo /sys/power/image_size que define o tamanho da imagem que será criada quando ocorrer o “suspend-to-disk. (2) O arquivo /sys/power/state controla o sistema e estado quando ocorre o “suspend-to-ram”, conforme ja comentei ai em cima. (3) O arquivo /sys/power/disk informa ao kernel a operação permitida no hardware, tal como o suspend, shutdown, reboot e hibernate e outros arquivos. Note que se voce usa o systemd, deve-se usar o systemctl para tal.

Ja o procedimento de hibernar é muito mais tranquilo, pois o mesmo utiliza da área de swap e os recursos da ACPI se permitir, ou seja, o arquivo /etc/acpi/hibernate.sh é um script que possui uma condição de verificar o arquivo /usr/share/acpi-support/state-funcs se o seu sistema suporta o uso de wirelress, para interromper de forma correta e carregar suas opções nas variáveis em /etc/default/acpi-support. Essa imagem fica registra em swap e o administrador pode utilizar do parametro do kernel (em grub), como “resume=SWAP_PARTITION“, para definir a partição que será preenchida com a imagem. Hoje, utilizamos o pm-utils para tudo isso e que ja vem instalado na sua distribuição e então para hibernar basta digitar o comando pm-hibernate.

No Ubuntu, você pode adicionar a opção de hibernate no Unity ou Gnome3, criando o arquivo /var/lib/polkit-1/localauthority/50-local.d/hibernate.pkla com o conteúdo abaixo:

[Enable Hibernate]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

No fedora voce pode até fazer a mesma coisa, mas é interessante você adicionar o recurso no GNOME3 http://intgat.tigress.co.uk/rmy/extensions/index.html

 

Como ativar o FastBoot no Linux?

Adicione em /etc/default/grub em  GRUB_CMDLINE_LINUX_DEFAULT o parametro fastboot.
GRUB_CMDLINE_LINUX_DEFAULT=”fastboot”

Você nem precisa desligar a sua máquina, basta hibernar com o pm-hibernate.

 

Intel Smart Response

O suporte a este recurso é semelhante a discos híbridos. Existe um algorítimo que calcula quais são so arquivos mais acessados do disco e copia os dados rapidamente e automaticamente para o SSD, aumentando a performance da leitura dos dados após o tempo de uso.Foi lançado em placas com o chipset Intel Z68, tal como em ultrabooks com placas intel com placas de memória flash soldada na placa mãe ou sendo disponibilizado via mSATA. Erradamente confudem muito com os recursos da UEFI e o SecureBoot e o Key Management Service (KMS), tanto com o Storage Security Command Protocol encrypted HDD. Existe uma grande diferença nos recursos de segurança da Intel, como o Advanced Encryption Standard, Intel Secure Key, recursos para cloud como o Smart Connect, OS Guard, remote Encryption Management, Anti-Theft e outros.

O recurso Smart Response possui uma limitação de até 64GB de SSD como o disco de cache, um disco SSD e um HD e deve ser ativado o recurso de RAID da sua Smart Controller ou da BIOS, porque se não, nada de Smart Response. Um para RAID0 DISK (para o seu sistema) e o outro para Cache Disk. Note que o sistema operacional Linux deve ser instalado SOMENTE APÓS a criação deste arranjo com o disco de caching, extamente como os fabricantes colocam o Windows nele ( de novo: não se coloca o sistema no disco SSD).

Quem usa o Windows, pode se usar o software da propria Intel chamado Smart SRT Software para gerenciar os discos e o SSD Caching. Ah, antes de continuar a ler, lembre-se, rs, de novo, não existe BIOS fechada o que acontece é que a propria INTEL disposnibiliza o software para a arquitetura baseada no sistema operacional Windows, que pena. Mas vc de Linux, nao precisa disso ;)

Mas se voce precisa de alguma informação sobre suporte, ok! O Software suporta as seguintes:

Intel H55, HM55, P55, PM55, A57, H57, HM57, P57, PM57, Q57, QM57, QS57, X58, H61, B65, HM65, Q65, H67, HM67, P67, Q67, QM67, QS67, UM67, Z68, HM70, B75, HM75, Q75, Z75, HM76, H77, HM77, Q77, QM77, QS77, UM77, Z77, X79, B85, HM86, H87, HM87, Q85, Q87, QM87, Z87, C202, C204, C206, C216 e outras.

Ponto de atenção imporante: NÃO altere o arranjo apos instalar o sistema nele, pois se voce alterar a sua operação, bye bye dados. Rsrs fique tranquilo, não queima nao. Alguns recursos de remoção segura dos dados pode apenas apagar o seu device.

Vide: http://www.intel.com.br/content/www/br/pt/solid-state-drives/ssd-smart-response-video.html

 

SSD caching

Nosso amigo e camarada Linus Torvalds, implementou recentemente no kernel 3.9, uma grande demanda e suporte de armazenamento lógico, dispositivos de rede e protocolos, sistemas de arquivos, drivers, suporte ao RAID 5 e 6 no BTRFS, suporte melhorado a virtualização, outros recursos de gerenciamento de energia “melhorado” e como experimental o suporte a SSD caching para outros dispositivos., o que aumenta consideravelmente a escrita no disco e nos primeiros registros de cache.

Nota: http://lkml.indiana.edu/hypermail/linux/kernel/1304.3/02009.html

 

Como desativar o FastBoot e SecureBoot da UEFI pelo Windows 8?

A UEFI usa alguns recursos do Windows 8, como ja foi mencionado a Microsoft como Member UEFI Forum, homologou o seu sistema disponibilizando alguns recursos direto com a firmware, como ocorre a anos com os Mac. Então você pode tanto zerar as configurações da UEFI voltando para os padrões sem os recursos do Windows 8 ativados, como desativar o SecureBoot e consequentemente, cagar para a chave da Microsoft.

 

Como Desabilitar o FastBoot do Windows 8?

Entre no PowerShell e digite:

REG ADD “HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Power” /V HiberbootEnabled /T REG_dWORD /D 0 /F

Ou digite o comando: powercfg -h off  ou adicione na chave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power

 

Como desabilitar o SecureBoot?

Abra o PowerShell e digite o seguinte comando: confirme-SecureBootUEFI para confirmar que esta habilitado.

uefi-true

Para desabilitar digite novamente:

uefi-false

 

 

Pontos de atenção:  voce pode fazer mais …

O comando Confirm-SecureBootUEFI, permite que você declare os registros como ativos ou inativos dentro do Windows 8, lembrando que vc deve desabilitar por aqui primeiro e depois no hardware, se não o Windows 8 nao entra mais.

O comando Get-SecureBootPolicy, publica e visualiza a policy implementada e visualiza a GUID.

C:\> Get-SecureBootPolicy | Format-List
Publisher: 77fa9abd-0359-4d32-bd60-chupaMSe78f784b
Version : 1

O comando Set-SecureBootUEFI, define as variaveis e as chaves e assina a base de dados da uefi

C:\> Set-SecureBootUEFI -ContentFilePath FormattedVariable.bin -SignedFilePath GeneratedFileToSign.bin.p7

Name : dbx
Bytes : {161, 89, 192, 165…}
Attributes : NON VOLATILE
BOOTSERVICE ACCESS
RUNTIME ACCESS
TIME BASED AUTHENTICATED WRITE ACCESS

O comando Format-SecureBootUEFI, formata o certificado e hash e gera chaves para a base dbx-uefi

 

Como zerar as configurações de UEFI pelo Windows 8 afim de ter possibilidade de arrancar uma instalação de Linux?

1. No Windows 8 vá em SEARCH (Pesquisar), e escreva UEFI, ele vai encontrar Apps, Settings e Files. Clique em Settings e na caixa ao lado clique em Advanced Settings Options.

2.
Em “PC SETTINGS” clique em Advanced Startup

3.
Sua máquina será iniciada e não note a velocidade, pois o FastBoot esta ativo. Ele vai chegar ao menu de Statup onde encontramos a opção de UEFI, mas é necessário clicar em “Troubleshoot” primeiro.

4. Clique em Advanced options e será aberto mais uma tela onde voce vai encontrar a opção: “UEFI Firmware Settings”, após clicar nessa opção será visualizado apenas a opção de reiniciar, com isso será reiniciado na BIOS “FECHADA”, (bom, eu disse fechada? bios fechada é um argumento filosofico que nao existe).

5.
Para zerar toda a sua configuração da UEFI, inclusive todas as chaves que a Microsoft colocou nessa instalação do Windows e colocando a máquina nos padrões de fábrica e ANTES de receber alguma instalação do Windows, apenas clique em F9 ou [Setup Defaults]. Apenas um detalhe, voce pode usar em algumas firmwares a opção F8 para o modo recovery.

Video da Toshiba de como fazer, pois muitos usam este procedimento para fazer um downgrade para o Windows 7 e aos irmãos, instalar Linux e BSD:  http://www.youtube.com/watch?v=6KUyZIJ0xOc3

Imagem de exemplo:

Windows-8-Downgrade-009-SB


Windows-8-Downgrade-001-SB

 

 

 

 

 

E como dar um boot no CD/DVD/USB caso eu tenha um?

Ah garotao, voce achou que eu não ia falar isso também? No processo de boot digite o seguinte (varia de acordo com o seu fabricante):

ASUS                -> F8
Sony                  -> F2
Gateway          -> F10
Gigabyte         -> F12
Dell                    -> F12
HP/Compaq  -> ESC
Acer                  -> F12
eMachnes      -> F10
Toshiba           -> F12
Fujitsu             -> F12

Basta selecionar o seu device no menu e seja feliz ;)

 

Ah, para fechar!

Ubuntu rodando em um ThinkPad W530: http://www.youtube.com/watch?v=fXzPGYR4jAU
Debian 7 rodando em ThinkPad W530: http://www.youtube.com/watch?v=cTK3aIZbe2A

*Nos vemos depois em como criar uma chave para o SecureBoot utilizando Linux e proibir instalações de Windows, vem ai.

 

Entendendo a UEFI
Como fazer o Windows 8 gerenciar o boot do Ubuntu com a UEFI

 

[]

Aprígio Simões

Powered by Moblie Video for WordPress + Daniel Watrous