{"id":315,"date":"2012-08-09T14:02:22","date_gmt":"2012-08-09T17:02:22","guid":{"rendered":"http:\/\/linuxrs.com.br\/?p=315"},"modified":"2012-08-09T14:02:22","modified_gmt":"2012-08-09T17:02:22","slug":"compilando-ou-atualizando-um-kernel-linux","status":"publish","type":"post","link":"https:\/\/blog.clusterweb.com.br\/?p=315","title":{"rendered":"Compilando ou atualizando um kernel Linux"},"content":{"rendered":"<p><strong>Antes de Compilar<\/strong><\/p>\n<div>Ol\u00e1,<\/p>\n<p>Antes de personalizar um kernel, n\u00f3s precisamos obter algumas informa\u00e7\u00f5es, al\u00e9m dos pacotes necess\u00e1rios e o kernel. Com este m\u00e9todo, podemos instalar qualquer vers\u00e3o, e ainda personalizar com o nome desejado.<\/p>\n<p>Neste exemplo, foi utilizando o <em>Debian 6 x86<\/em>.<\/p>\n<p>1. Verifica\u00e7\u00e3o do kernel instalado, pacotes necess\u00e1rios, download do kernel desejado e descompacta\u00e7\u00e3o.<\/p>\n<p>1.1. Verificando a vers\u00e3o do kernel instalada.<\/p>\n<p>Primeiro, devemos verificar qual a vers\u00e3o do kernel estamos rodando. Para isso, basta rodar o comando:<\/p>\n<p><strong># uname -r<\/strong><\/p>\n<p>Meu resultado foi a vers\u00e3o:<\/p>\n<blockquote><p>2.6.26-2<\/p><\/blockquote>\n<p>Obs.: Caso voc\u00ea pergunte, o que cada um deste n\u00fameros significa, aqui vai uma revis\u00e3o:<\/p>\n<ul>\n<li>1\u00ba campo (2)\u00a0\u00a0\u00a0-&gt; vers\u00e3o maior<\/li>\n<li>2\u00ba campo (6)\u00a0\u00a0\u00a0-&gt; vers\u00e3o menor<\/li>\n<li>3\u00ba campo (26)\u00a0-&gt; patch level<\/li>\n<li>4\u00ba campo (2)\u00a0\u00a0\u00a0-&gt; extra version<\/li>\n<\/ul>\n<p>1.2. Baixando os pacotes necess\u00e1rios<\/p>\n<p>Precisamos de 4 pacotes, s\u00e3o eles: <em>make, gcc, build-essential<\/em> e <em>libncurses5-dev<\/em>.<\/p>\n<p><strong># apt-get install make gcc build-essential libncurses5-dev<\/strong><\/p>\n<p>1.3. Baixar a vers\u00e3o do kernel desejada<\/p>\n<p>V\u00e1 em <a href=\"http:\/\/www.kernel.org\/\">kernel.org<\/a>, e baixe a vers\u00e3o desejada.<\/p>\n<p>Nesse exemplo, instalarei a vers\u00e3o 2.6.28, por\u00e9m, o mesmo m\u00e9todo pode ser utilizado por outras vers\u00f5es. J\u00e1 instalei, em testes, a vers\u00e3o 3.5 sem problemas.<\/p>\n<p>* Vale a pena lembrar que, a vers\u00e3o est\u00e1vel mais recente no dia da cria\u00e7\u00e3o do artigo, \u00e9 a 3.4.7.<\/p>\n<p>Ap\u00f3s feito o download, voc\u00ea ter\u00e1 um arquivo assim: linux-2.6.28-5.tar.bz2<\/p>\n<p>Ou, o arquivo correspondente \u00e0 vers\u00e3o escolhida.<\/p>\n<p>* Para facilitar,salvei o arquivo em <em>\/root<\/em>.<\/p>\n<p>1.4. Ap\u00f3s baixado, precisamos descompactar e colocar estes arquivos no lugar ideal.<\/p>\n<p>Primeiro descompacte o arquivo:<\/p>\n<p><strong># tar -xf linux-2.6.28.tar.bz2 -C \/usr\/src<\/strong><\/p>\n<p>Com este comando, estamos extraindo o arquivo e j\u00e1 apontando o destino dele.<\/p>\n<p>Detalhando as seguintes op\u00e7\u00f5es utilizadas:<\/p>\n<ul>\n<li><em>-x<\/em> : Indica que voc\u00ea deseja extrair o arquivo;<\/li>\n<li><em>-f<\/em> : Aponta para o aquivo desejado.\n<p>A op\u00e7\u00e3o &#8216;-f&#8217; precisa ser a \u00faltima quando utilizamos o &#8216;.tar&#8217;. Podemos acrescentar outras op\u00e7\u00f5es, como o &#8216;-v&#8217; (verbose), por\u00e9m o &#8216;-f&#8217; ser\u00e1 a ultima op\u00e7\u00e3o independente das que voc\u00ea estiver usando;<\/li>\n<li><em>-C<\/em> (mai\u00fasculo) : Esta op\u00e7\u00e3o \u00e9 utilizada para apontar o caminho de destino desejado.<\/li>\n<\/ul>\n<p>Feito isso, voc\u00ea ter\u00e1 uma pasta chamada &#8216;linux-2.6.28&#8217; em <em>\/usr\/src<\/em>: \/usr\/src\/linux-2.6.28<\/p>\n<div><a href=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/1343944612.1.JPG\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_1343944612.1.JPG\" alt=\"\" width=\"500\" height=\"369\" border=\"0\" \/><\/a><\/div>\n<p>Na pr\u00f3xima etapa, iremos personalizar nosso kernel e criar sua imagem.<\/p>\n<\/div>\n<p><strong>Personalizando\/compilando o kernel &#8211; M\u00f3dulos<\/strong><\/p>\n<h1>Personalizando e compilando o kernel<\/h1>\n<p>Chegamos \u00e0 segunda etapa.<\/p>\n<p>Nesse momento, voc\u00ea ir\u00e1 aprender a personalizar e compilar um kernel.<\/p>\n<p>2. Assuntos desta segunda etapa:<\/p>\n<ul>\n<li>Resolvendo depend\u00eancias;<\/li>\n<li>Criar o arquivo .config;<\/li>\n<li>Editando o nome da distribui\u00e7\u00e3o;<\/li>\n<li>Criando o bzImage.<\/li>\n<\/ul>\n<p>2.1. Para iniciar, iremos rodar um comando r\u00e1pido e verificar nossas depend\u00eancias.<\/p>\n<p>Primeiro, entre na pasta onde foi descompactado o kernel (no meu caso: \/usr\/src\/linux-2.6.28):<\/p>\n<p><strong># cd \/usr\/src\/linux-2.6.28<\/strong><\/p>\n<p>Depois:<\/p>\n<p><strong># make dep<\/strong><\/p>\n<p>Obs.: Caso voc\u00ea receba uma mensagem que n\u00e3o \u00e9 necess\u00e1rio executar esta tarefa, est\u00e1 tudo OK.<\/p>\n<p>2.2. Agora, iremos come\u00e7ar a personalizar de verdade nosso kernel, com o comando:<\/p>\n<p><strong># make menuconfig<\/strong><\/p>\n<p>Com este comando, iremos entrar no modo de edi\u00e7\u00e3o do kernel.<\/p>\n<p>Aqui voc\u00ea ir\u00e1 ver todas as op\u00e7\u00f5es do kernel. Use as op\u00e7\u00f5es para navegar nos menus, adicione ou remova conforme desejado, por\u00e9m, tome cuidado, pois toda modifica\u00e7\u00e3o sem o conhecimento devido, pode causas erros.<\/p>\n<p>\u00c9 extremamente recomend\u00e1vel testar este m\u00e9todo em uma m\u00e1quina virtual, antes de por em pr\u00e1tica no seu <a href=\"http:\/\/www.vivaolinux.com.br\/linux\/\">GNU\/Linux<\/a>.<\/p>\n<p>Navega\u00e7\u00e3o:<\/p>\n<ul>\n<li>[ENTER] &#8211; Entra num submenu<\/li>\n<li>[N] ou [ESPA\u00c7O] &#8211; Desmarca a op\u00e7\u00e3o onde est\u00e1 o cursor<\/li>\n<li>[SETAS] &#8211; Navega\u00e7\u00e3o<\/li>\n<\/ul>\n<p>Ap\u00f3s terminadas as modifica\u00e7\u00f5es desejadas, v\u00e1 em: SAVE AN ALTERNATE CONFIGURATION FILE<\/p>\n<p>E salve como: <em>.config<\/em><\/p>\n<div><a href=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/1344043196.2.JPG\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_1344043196.2.JPG\" alt=\"\" width=\"500\" height=\"364\" border=\"0\" \/><\/a><\/div>\n<div><a href=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/1344043196.3.JPG\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_1344043196.3.JPG\" alt=\"\" width=\"500\" height=\"364\" border=\"0\" \/><\/a><\/div>\n<p>2.3. Coloque agora, o seu nome no kernel<\/p>\n<p>Voc\u00ea pode editar o arquivo <em>Makefile<\/em> para adicionar o seu nome a esta compila\u00e7\u00e3o do kernel.<\/p>\n<p><strong># vim Makefile<\/strong><\/p>\n<p>Na linha: &#8220;EXTRAVERSION =&#8221;<\/p>\n<p>Voc\u00ea pode acrescentar &#8220;.seunome&#8221; e a vers\u00e3o do kernel. Ir\u00e1 aparecer da seguinte forma (no meu exemplo): 2.6.28.luiz<\/p>\n<p>2.4. Agora, precisamos criar a imagem do kernel.<\/p>\n<p>Este processo pode levar algum tempo. Tudo depende do seu hardware:<\/p>\n<p><strong># make bzImage<\/strong><\/p>\n<p>Obs.: Fique atento \u00e0 sintaxe. No GNU\/Linux, &#8220;bzImage&#8221; n\u00e3o \u00e9 o mesmo que &#8220;bzimage&#8221;.<\/p>\n<p>Nessa fase, voc\u00ea aprendeu a personalizar um kernel e a criar a sua imagem.<\/p>\n<p>Adiante, vamos criar os m\u00f3dulos.<\/p>\n<h1>Criando os m\u00f3dulos<\/h1>\n<p>Terceira etapa, vamos criar os m\u00f3dulos.<\/p>\n<p>3.1. Esta etapa \u00e9 provavelmente a mais demorada. Criar os m\u00f3dulos podem levar horas dependendo do seu equipamento.<\/p>\n<p>Basta digitar o seguinte comando e aguardar:<\/p>\n<p><strong># make modules<\/strong><\/p>\n<p>3.2. Agora, vamos \u00e0 pr\u00f3xima etapa. Mais um comando simples, por\u00e9m que pode levar um tempinho:<\/p>\n<p><strong># make modules_install<\/strong><\/p>\n<p>3.3. Agora iremos copiar a imagem do kernel que criamos para o diret\u00f3rio <em>\/boot<\/em>:<\/p>\n<p><strong># cp -p arch\/x86\/boot\/bzImage \/boot\/vmlinuz-2.6.28.luiz<\/strong><\/p>\n<p>3.4. Na pr\u00f3xima etapa, precisamos criar o sistema <em>ramfs<\/em> e atualizar o GRUB.<\/p>\n<p>Precisamos criar o sistema ramfs para carregamento de m\u00f3dulos no boot, e fazemos isso com o seguintes comandos:<\/p>\n<p>&#8211; Para entrar na pasta <em>\/lib\/modules<\/em>:<\/p>\n<p><strong># cd \/lib\/modules<\/strong><\/p>\n<p>-Para criar o sistema:<\/p>\n<p><strong># mkinitramfs -o \/boot\/initrd.img-2.6.28.luiz 2.6.28.luiz<\/strong><\/p>\n<p>E enfim, rodar o update-grub:<\/p>\n<p><strong># udpate-grub<\/strong><\/p>\n<p>Neste artigo, voc\u00ea aprendeu a personalizar um kernel.<\/p>\n<p>Lembre-se que, toda modifica\u00e7\u00e3o no kernel \u00e9 perigosa.<\/p>\n<p>Recomenda-se fazer backup antes de qualquer modifica\u00e7\u00e3o, e testar este m\u00e9todo em uma m\u00e1quina virtual, caso voc\u00ea esteja inseguro.<\/p>\n<p>Obrigado, e estou \u00e0 disposi\u00e7\u00e3o para d\u00favidas e sugest\u00f5es.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Antes de Compilar Ol\u00e1, Antes de personalizar um kernel, n\u00f3s precisamos obter algumas informa\u00e7\u00f5es, al\u00e9m dos pacotes necess\u00e1rios e o kernel. Com este m\u00e9todo, podemos instalar qualquer vers\u00e3o, e ainda personalizar com o nome desejado. Neste exemplo, foi utilizando o Debian 6 x86. 1. Verifica\u00e7\u00e3o do kernel instalado, pacotes necess\u00e1rios, download do kernel desejado e [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1,51],"tags":[66,15,14,149],"class_list":["post-315","post","type-post","status-publish","format-standard","hentry","category-viazap","category-linux-linuxrs","tag-compilacao","tag-kernel","tag-linux","tag-recompilacao"],"_links":{"self":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/315","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=315"}],"version-history":[{"count":2,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/315\/revisions"}],"predecessor-version":[{"id":317,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/315\/revisions\/317"}],"wp:attachment":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=315"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=315"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=315"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}