| Falando UNIX: Conheça o Ksplice |
|
|
|
| Escrito por Martin Streicher | ||||||
| Dom, 06 de Março de 2011 01:06 | ||||||
|
Resumo: O Ksplice aplica correções do kernel dinamicamente—sem necessidade de reboot—em uma fração de segundo. Aqui está um guia prático para realizar atualizações de sistema facilmente As máquinas UNIX® executam e executam (e executam). Um sistema de desktop ou móvel pode ser deixado de lado por semanas, até meses, e o tempo de atividade do servidor pode se estender a um ano ou mais. De fato, se pudesse impedir falhas de hardware e a Mãe Natureza, um sistema UNIX ficaria em execução eternamente. Infelizmente, o hardware é imperfeito, a Mãe Natureza tem sua própria vontade, e o software sofre erros. O mecanismo precisa de substituição. Tempestades podem acontecer e acontecem. E os sistemas precisam de correções e reinicializações. Assim como a morte e os impostos, o tempo de inatividade é uma certeza. No entanto, diferentemente da morte e dos impostos, é possível minimizar o tempo de inatividade. Uma manutenção do sistema proativa e regular e peças de reposição impulsionam a disponibilidade, assim como em um robusto datacenter repleto de capacidade de backup e conexões redundantes à Internet. Felizmente, também, a maioria dos aplicativos e bibliotecas pode ser atualizada continuamente e on demand usando ferramentas como rpm, Aptitude e yum. Infelizmente, as atualizações do kernel—modificações para abranger vulnerabilidades e falhas no software do sistema principal—não são tão fáceis. Uma atualização do kernel é muito perturbante, exigindo um tempo de inatividade programado para interromper temporariamente todos os serviços em toda e qualquer máquina afetada. Embora essa manutenção seja necessária e vital, acompanhar as atualizações do kernel pode, contudo, tornar as operações algo parecido com um ioiô. A saber, as linhas de tempo na figura 1 mostram a frequência das atualizações críticas do kernel de um número de sistemas operacionais populares entre janeiro de 2009 e fevereiro de 2010. Cada ícone de ciclo representa uma reinicialização obrigatória (imagem cortesia da Ksplice, Inc.).
Mas agora, é possível corrigir seu kernel enquanto ele é executado, eliminando a interrupção maciça causada por uma reinicialização. Em outras palavras, atualizações programadas não precisam mais de programação. O Ksplice é um conjunto de ferramentas para corrigir o kernel in situ, enquanto está sendo executado—sem necessidade de reboot. Dado um kernel existente, seu código de origem e um ou mais arquivos diff unificados (um diff unificado é a forma canônica das correções do kernel), o Ksplice substitui o código do objeto existente e errôneo no kernel residente por um novo código do objeto. O Ksplice pode substituir código do programa e estruturas de dados. Melhor ainda, um kernel spliceinterrompe a operação normal do sistema por uma mera fração de milissegundo, deixando daemons, processos e conexões intactos. Vamos ver rapidamente como o Ksplice funciona e aprender como usar suas ferramentas para manter um kernel atualizado. Há três maneiras de usar o Ksplice:
Um usuário da versão Ubuntu 9.04 ou versão 9.10, por exemplo, pode fazer o download e instalar um aplicativo de apontar e clicar para escolher e aplicar as modificações no kernel. Todas as três variantes do Ksplice serão introduzidas aqui. De forma sucinta, o Ksplice corrige um kernel em execução substituindo uma ou mais funções vulneráveis ou com falhas por implementações corretas e mais recentes. Para efetuar a substituição, a ferramenta repara uma imagem do kernel em execução com o código do objeto das novas funções e injeta um obstáculo para cada função existente para chamar seu novo correspondente. Praticamente o kernel inteiro permanece inalterado, exceto pelo novo código do objeto e algumas instruções para redirecionar as chamadas de função. Além disso, o Ksplice pode afetar estruturas de dados, embora com um pouco de programação extra. O Ksplice pode executar código durante uma atualização para facilitar a alteração. O Ksplice também fornece um par de ganchos para executar a configuração e destruir o código imediatamente antes e imediatamente depois que o kernel é atualizado. Também é possível adicionar novas funções para aumentar o kernel; novas funções simplesmente não possuem correspondentes no kernel original.
É possível aplicar o Ksplice em praticamente qualquer kernel, mesmo aqueles que foram enviados antes do Ksplice ser desenvolvido. Para unir um kernel, é preciso ter seu código de origem, o conjunto de correções que você quer aplicar e um compilador capaz de isolar cada função e estrutura de dados no kernel em sua própria seção no código do objeto. Por exemplo, o GCC (GNU Compiler Collection - Coleção do Compilador GNU) fornece os sinalizadores O Ksplice se refere ao kernel compilado da fonte original como pré- kernel. O novo kernel construído a partir da origem corrigida é o pós- kernel. E o kernel em execução é apelidado de kernel de execução. O Ksplice falha se o pré não é o mesmo que o de execução—uma indicação clara de que o código de origem não corresponde ao kernel que está sendo executado. Exceto por essa condição especial, o Ksplice compara o pré ao pós e cada diferença se torna uma junção. Todas as junções são empacotadas em um arquivo de objeto único pronto para ser injetado no kernel.
O Ksplice usa o recurso A correção do kernel nunca foi tão fácil Se você executar uma das distribuições mais populares de UNIX, o Ksplice não poderia ser mais fácil de usar. Os autores do Ksplice fornecem um aplicativo cliente customizado para a sua distribuição Linux. É possível manter seu kernel atualizado por uma taxa nominal de menos de 5 dólares por sistema por mês. É possível encontrar uma lista dos sistemas operacionais suportados no Web site do Ksplice (consulte Recursos). O software Ksplice software está disponível gratuitamente para Ubuntu 9.04 (Jaunty Jackalope) e Ubuntu 9.10.
Para fins de demonstração, este artigo usa Ubuntu 9.10 e une seu kernel. Para usar o Ksplice em Ubuntu, é preciso fazer o download e instalar o Ksplice Uptrack cliente (consulte Recursos para obter um link). O Uptrack gerencia as atualizações de kernel sem reboot disponíveis para o seu sistema. É possível visualizar e instalar atualizações do Ksplice, e você pode revisar alertas quando novas atualizações do kernel estiverem disponíveis. O software é fornecido como pacote Debian. Também é possível fazer o download do software a partir da linha de comando usando uma ferramenta como
A seguir, use
Se preferir um cliente gráfico, é possível instalar o Ksplice com o comando:
Depois que você aceitar os termos de serviço e que a instalação terminar, o Uptrack é iniciado automaticamente. O instalador também coloca um ícone do Ksplice —uma grande letra K na barra de tarefas—para acesso fácil. A figura 2 mostra o Uptrack Manager sendo ativado pela primeira vez em uma instalação limpa de Ubuntu 9.10. Para corrigir o kernel, clique em Install all updates.
Uma barra de progresso, mostrada na figura 3, mostra cada correção conforme é instalada. Corrigir o kernel leva apenas alguns minutos, mesmo quando um bom número de correções está pendente. E, é claro, nenhum reboot é necessário.
Quando concluído, o Uptrack Manager se atualiza para mostrar o novo estado do seu sistema, como mostrado na figura 4. Uma marca de seleção verde indica que a correção nomeada foi aplicada com sucesso e agora está ativa no seu kernel em execução. Clique em Check para procurar correções adicionais do kernel disponíveis para seu sistema. Clique em Close para liberar a janela. Não é necessário executar
É possível abrir o Uptrack Manager a qualquer momento com o comando
Além do E é essencial lembrar que o Uptrack Manager não rouba o papel do gerente do pacote padrão da sua distribuição. Todas as alterações que o Ksplice faz são aplicadas no kernel em execução e só existem na memória. Portanto, todas as correções do Ksplice são perdidas no encerramento. Continue a atualizar seu kernel em disco com um procedimento de manutenção de software tradicional, como executar:
Execute-o como raiz regularmente ou quando sua distribuição informá-lo sobre novas atualizações de sistema. Manter o kernel atualizado no disco garante que seu sistema inicialize o melhor kernel disponível quando seu sistema eventualmente solicitar uma reinicialização. Atualização de kernels customizados O Uptrack Manager é uma opção prática para desktop e computadores de servidor baseados em kernels construídos e distribuídos por um fornecedor ou um projeto de uma comunidade. Ele não funcionará, no entanto, se o seu kernel for customizado e construído localmente, pois o Uptrack Manager não pode comparar seu kernel a um sistema operacional publicado e conhecido para gerar junções. No entanto, é possível usar utilitários "primitivos" do Ksplice para analisar correções públicas e criar suas próprias junções. Descrever como construir um kernel está além do escopo deste artigo. Se você não está familiarizado com o processo, há instruções excelentes e um bom número de tutoriais satisfatórios espalhados pela Internet. Em vez disso, vamos focar as ferramentas que o Ksplice fornece e como prosseguir quando for capaz de construir algum kernel.
O Ksplice fornece um utilitário chamado Aqui está um exemplo (retirado do estudo acadêmico dos autores e usado com permissão expressa) que cria uma atualização para "prctl vulnerability", CVE-2006-2451, usando um arquivo de caminho chamado prctl e um diretório de origem do kernel ~/src:
O comando anterior gera um tar de código do objeto, ksplice-8c4o6u.tar.gz, para ser corrigido no kernel. O segundo comando lê o tar, calcula as renovações necessárias e aplica a junção. Vinte e quatro, sete, trezentos e sessenta e cinco O Ksplice é uma tecnologia comprovada. De acordo com o ensaio original e o estudo técnico do autor, o Ksplice era capaz de corrigir o® kernel Linux dinamicamente com todas as correções funcionais e de segurança emitidas entre 2006 e 2008. Destas, mais de dois terços não requeriam código especial para atualizar o kernel. Das correções restantes, uma programação especial somava uma média de 17 linhas de código por correção. O Linux foi escolhido para provar a abordagem do Ksplice. A origem do Linux é ampla e frequentemente verificada em busca de falhas e é corrigida várias vezes para lidar com os defeitos rapidamente. No entanto, o Ksplice pode ser prontamente adaptado a qualquer kernel cujo código de origem esteja disponível, incluindo BSD e Sun Solaris. O Ksplice também suporta processadores x86, x86_64 e ARM.
Aprender
Obter produtos e tecnologias
Discutir
Martin Streicher é desenvolvedor autônomo de Ruby on Rails e o editor-chefe anterior da Linux Magazine. Martin é Mestre em Ciência da Computação pela Purdue University e faz programação de sistemas do tipo UNIX desde 1986. Ele coleciona arte e brinquedos.
|
||||||
| Última atualização em Dom, 06 de Março de 2011 01:09 |







