https://tecporto.pt/wiki/api.php?action=feedcontributions&user=Cl%C3%A1udia&feedformat=atomTecPorto - Contribuições do utilizador [pt]2024-03-28T23:17:03ZContribuições do utilizadorMediaWiki 1.34.0https://tecporto.pt/wiki/index.php?title=P%C3%A1gina_principal&diff=354Página principal2018-09-14T23:31:13Z<p>Cláudia: /* General/uncategorized */</p>
<hr />
<div>Antes de começar, tenha em consideração que todos ou practicamente todos os tutoriais aqui são trabalhos em curso e poderão ainda não ter sido revistos e corrigidos. Muitos poderão necessitar de revisão linguística, outros necessitarão de correcções técnicas. Agradecemos que nos comunique, através dos contactos disponíveis [http://tecporto.pt/page/h.page.contacts aqui], quaisquer erros que encontre nestas páginas.<br />
<br />
As páginas que ainda não tenham sido consideradas completas estarão marcadas com a sigla WIP (Work In Progress).<br />
<br />
Todos os tutoriais aqui apresentados são baseados em informação obtida em primeira mão através das nossas próprias experiências ou através do teste prático de documentação encontrada.<br />
<br />
Se tiver sugestões de tutoriais que gostasse de ver aqui publicados, por favor informe-nos através da página de contactos mencionada acima.<br />
<br />
= Projectos [PT] =<br />
* [[TWF]] (WIP)<br />
<br />
= Workshops [PT] =<br />
* [[Introdução ao Arduino]] (WIP)<br />
* [[Boas práticas de programação]] (WIP)<br />
* [[Introdução à elaboração de Planos de Negócios]] (WIP)<br />
* [[Práticas básicas de Segurança Informática]] (WIP)<br />
* [[Introdução ao sistema operativo Linux]] (WIP)<br />
* [[Introdução à utilização de iptables]] (WIP)<br />
<br />
= Legislação =<br />
<br />
* [[Combate ao terrorismo e branqueamento de capitais]] (WIP)<br />
* [[Portuguese Consumer and Warranty Law]] (WIP)<br />
* [[Regulamento Geral de Protecção de Dados]] (WIP)<br />
<br />
= Tutoriais =<br />
== General/uncategorized ==<br />
* [[Segurança no PHP]] (WIP)<br />
* [[Regras e boas práticas de webdesign]] (WIP)<br />
* [[How to make money with Facebook]]<br />
* [[Pacotes necessários para a utilização de LaTeX em Ubuntu]]<br />
<br />
== Arduino ==<br />
* [[Connecting a Firefly module to a Linux workstation]]<br />
<br />
== BASH ==<br />
* [[Location independent includes]]<br />
<br />
== Bluetooth ==<br />
* [[Adicionar dispositivo Bluetooth em Linux]] (WIP)<br />
* [[Connecting a Firefly module to a Linux workstation]]<br />
* [[Ping device]]<br />
* [[Programação com BlueZ]] (WIP)<br />
<br />
== C e C++ ==<br />
* [[Alignment and packing]] (WIP)<br />
* [[C++ From Scratch]] (WIP)<br />
* [[Exemplo simples de criação de Sockets]] (WIP)<br />
<br />
== Cryptography ==<br />
* [[Using LibreSSL]] (WIP)<br />
<br />
== Drivers ==<br />
* [[FGLRX on legacy graphics cards]]<br />
<br />
== EFI/UEFI ==<br />
* [[Booting the Linux Kernel without a bootloader]]<br />
* [[Removing an entry from the UEFI boot list (Linux)]]<br />
<br />
== Gestão de Projectos ==<br />
<br />
* [[Subversion vs Git]] (WIP)<br />
<br />
=== Redmine ===<br />
* [[Redmine + LDAP]] (WIP)<br />
* [[Redmine no Gentoo]] (WIP)<br />
* [[Redmine no Ubuntu]] (WIP)<br />
<br />
=== Subversion ===<br />
* [[Combinar vários repositórios SVN num só]] (WIP)<br />
* [[Configurar permissões em repositório Subversion]] (WIP)<br />
* [[Criar um repositório SVN]] (WIP)<br />
* [[Recriar repositório SVN perdido]] (WIP)<br />
* [[Subversion + LDAP]] (WIP)<br />
<br />
== Gnome ==<br />
* [[Fixing multi-monitor workspaces on Gnome 3.x]]<br />
* [[Estilizar GDM]] (WIP)<br />
* [[Ubuntu 18.04 com Gnome 3 básico]] (WIP)<br />
<br />
== Internet ==<br />
* [[Desempenho no Firefox]] (WIP)<br />
* [[Normalização de temas escuros no Firefox]] (WIP)<br />
<br />
== Javascript ==<br />
* [[Adding an "onenter" event to an input element]]<br />
* [[Validação de campos em Javascript]]<br />
<br />
== Linux ==<br />
* [[Caixa de pesquisa rápida no Synaptic]]<br />
* [[Compilação do Kernel]] (WIP)<br />
* [[Corrigir bloqueio do Guake ao fechar aba]] (WIP)<br />
* [[Criação de RAID em Linux]] (WIP)<br />
* [[Criação de uma distribuição minimalista]] (WIP)<br />
* [[Gentoo Portage Tricks]] (WIP)<br />
* [[LibreSSL no Gentoo]] (WIP)<br />
* [[NTFS completo em Linux]] (WIP)<br />
<br />
== Media Wiki ==<br />
* [[Disable registration]]<br />
<br />
== MySQL ==<br />
* [[Importing CSV file]]<br />
<br />
== Redes e Administração de Sistemas ==<br />
* [[Activar Jumbo Frames em Linux]] (WIP)<br />
* [[Aprovisionamento remoto de workstations]] (WIP)<br />
* [[Captura de Pacotes]] (WIP)<br />
* [[Corrigir falta de rede após saída de suspensão]] (WIP)<br />
* [[Gestão de energia]] (WIP)<br />
* [[Montar partilhas via SSH]] (WIP)<br />
* [[Redes]] (WIP)<br />
<br />
=== Apache ===<br />
* [[Apache em Gentoo]] (WIP)<br />
* [[Configurar PHP no Apache]] (WIP)<br />
* [[Virtualhosts por directório]] (WIP)<br />
<br />
=== Autenticação ===<br />
* [[LDAP]] (WIP)<br />
* [[MariaDB + LDAP]] (WIP)<br />
* [[PAM + LDAP]] (WIP)<br />
* [[Removing a key from the Known Hosts file]] (WIP)<br />
* [[SUDO + LDAP]] (WIP)<br />
<br />
=== Samba ===<br />
* [[Melhorar o desempenho do Samba]] (WIP)<br />
* [[Samba + LDAP]] (WIP)<br />
* [[Samba como PDC Active Directory]] (WIP)<br />
<br />
=== VPN ===<br />
<br />
* [[Criar uma VPN site-to-site com TINC]] (WIP)<br />
<br />
= Suporte de Hardware =<br />
<br />
* [[Lenovo Thinkpad]]</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Pacotes_necess%C3%A1rios_para_a_utiliza%C3%A7%C3%A3o_de_LaTeX_em_Ubuntu&diff=352Pacotes necessários para a utilização de LaTeX em Ubuntu2018-09-14T23:30:41Z<p>Cláudia: Cláudia moveu Pacotes necessários para a utilização de LaTeX em Linux para Pacotes necessários para a utilização de LaTeX em Ubuntu</p>
<hr />
<div>= No Synaptic =<br />
<br />
* texlive-latex-base<br />
* texlive-latex-extra<br />
* fonts-mathjax<br />
* fonts-mathjax-extras<br />
* libjs-mathjax<br />
* preview-latex-style<br />
* python-sagetex<br />
* sagetex<br />
* textlive-latex-recommended<br />
* tipas<br />
* textlive-base<br />
* textlive-extra-utils<br />
* textlive-binaries<br />
* textlive-font-utils<br />
* textlive-fonts-recommended<br />
* textlive-lang-portuguese<br />
* textlive-pictures<br />
* textlive-plain-generic</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Pacotes_necess%C3%A1rios_para_a_utiliza%C3%A7%C3%A3o_de_LaTeX_em_Linux&diff=353Pacotes necessários para a utilização de LaTeX em Linux2018-09-14T23:30:41Z<p>Cláudia: Cláudia moveu Pacotes necessários para a utilização de LaTeX em Linux para Pacotes necessários para a utilização de LaTeX em Ubuntu</p>
<hr />
<div>#REDIRECIONAMENTO [[Pacotes necessários para a utilização de LaTeX em Ubuntu]]</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Pacotes_necess%C3%A1rios_para_a_utiliza%C3%A7%C3%A3o_de_LaTeX_em_Ubuntu&diff=351Pacotes necessários para a utilização de LaTeX em Ubuntu2018-09-14T23:29:05Z<p>Cláudia: Criou a página com "= No Synaptic = * texlive-latex-base * texlive-latex-extra * fonts-mathjax * fonts-mathjax-extras * libjs-mathjax * preview-latex-style * python-sagetex * sagetex * textliv..."</p>
<hr />
<div>= No Synaptic =<br />
<br />
* texlive-latex-base<br />
* texlive-latex-extra<br />
* fonts-mathjax<br />
* fonts-mathjax-extras<br />
* libjs-mathjax<br />
* preview-latex-style<br />
* python-sagetex<br />
* sagetex<br />
* textlive-latex-recommended<br />
* tipas<br />
* textlive-base<br />
* textlive-extra-utils<br />
* textlive-binaries<br />
* textlive-font-utils<br />
* textlive-fonts-recommended<br />
* textlive-lang-portuguese<br />
* textlive-pictures<br />
* textlive-plain-generic</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=P%C3%A1gina_principal&diff=350Página principal2018-09-14T23:01:38Z<p>Cláudia: </p>
<hr />
<div>Antes de começar, tenha em consideração que todos ou practicamente todos os tutoriais aqui são trabalhos em curso e poderão ainda não ter sido revistos e corrigidos. Muitos poderão necessitar de revisão linguística, outros necessitarão de correcções técnicas. Agradecemos que nos comunique, através dos contactos disponíveis [http://tecporto.pt/page/h.page.contacts aqui], quaisquer erros que encontre nestas páginas.<br />
<br />
As páginas que ainda não tenham sido consideradas completas estarão marcadas com a sigla WIP (Work In Progress).<br />
<br />
Todos os tutoriais aqui apresentados são baseados em informação obtida em primeira mão através das nossas próprias experiências ou através do teste prático de documentação encontrada.<br />
<br />
Se tiver sugestões de tutoriais que gostasse de ver aqui publicados, por favor informe-nos através da página de contactos mencionada acima.<br />
<br />
= Projectos [PT] =<br />
* [[TWF]] (WIP)<br />
<br />
= Workshops [PT] =<br />
* [[Introdução ao Arduino]] (WIP)<br />
* [[Boas práticas de programação]] (WIP)<br />
* [[Introdução à elaboração de Planos de Negócios]] (WIP)<br />
* [[Práticas básicas de Segurança Informática]] (WIP)<br />
* [[Introdução ao sistema operativo Linux]] (WIP)<br />
* [[Introdução à utilização de iptables]] (WIP)<br />
<br />
= Legislação =<br />
<br />
* [[Combate ao terrorismo e branqueamento de capitais]] (WIP)<br />
* [[Portuguese Consumer and Warranty Law]] (WIP)<br />
* [[Regulamento Geral de Protecção de Dados]] (WIP)<br />
<br />
= Tutoriais =<br />
== General/uncategorized ==<br />
* [[Segurança no PHP]] (WIP)<br />
* [[Regras e boas práticas de webdesign]] (WIP)<br />
* [[How to make money with Facebook]]<br />
* [[Pacotes necessários para a utilização de LaTeX em Linux]]<br />
<br />
== Arduino ==<br />
* [[Connecting a Firefly module to a Linux workstation]]<br />
<br />
== BASH ==<br />
* [[Location independent includes]]<br />
<br />
== Bluetooth ==<br />
* [[Adicionar dispositivo Bluetooth em Linux]] (WIP)<br />
* [[Connecting a Firefly module to a Linux workstation]]<br />
* [[Ping device]]<br />
* [[Programação com BlueZ]] (WIP)<br />
<br />
== C e C++ ==<br />
* [[Alignment and packing]] (WIP)<br />
* [[C++ From Scratch]] (WIP)<br />
* [[Exemplo simples de criação de Sockets]] (WIP)<br />
<br />
== Cryptography ==<br />
* [[Using LibreSSL]] (WIP)<br />
<br />
== Drivers ==<br />
* [[FGLRX on legacy graphics cards]]<br />
<br />
== EFI/UEFI ==<br />
* [[Booting the Linux Kernel without a bootloader]]<br />
* [[Removing an entry from the UEFI boot list (Linux)]]<br />
<br />
== Gestão de Projectos ==<br />
<br />
* [[Subversion vs Git]] (WIP)<br />
<br />
=== Redmine ===<br />
* [[Redmine + LDAP]] (WIP)<br />
* [[Redmine no Gentoo]] (WIP)<br />
* [[Redmine no Ubuntu]] (WIP)<br />
<br />
=== Subversion ===<br />
* [[Combinar vários repositórios SVN num só]] (WIP)<br />
* [[Configurar permissões em repositório Subversion]] (WIP)<br />
* [[Criar um repositório SVN]] (WIP)<br />
* [[Recriar repositório SVN perdido]] (WIP)<br />
* [[Subversion + LDAP]] (WIP)<br />
<br />
== Gnome ==<br />
* [[Fixing multi-monitor workspaces on Gnome 3.x]]<br />
* [[Estilizar GDM]] (WIP)<br />
* [[Ubuntu 18.04 com Gnome 3 básico]] (WIP)<br />
<br />
== Internet ==<br />
* [[Desempenho no Firefox]] (WIP)<br />
* [[Normalização de temas escuros no Firefox]] (WIP)<br />
<br />
== Javascript ==<br />
* [[Adding an "onenter" event to an input element]]<br />
* [[Validação de campos em Javascript]]<br />
<br />
== Linux ==<br />
* [[Caixa de pesquisa rápida no Synaptic]]<br />
* [[Compilação do Kernel]] (WIP)<br />
* [[Corrigir bloqueio do Guake ao fechar aba]] (WIP)<br />
* [[Criação de RAID em Linux]] (WIP)<br />
* [[Criação de uma distribuição minimalista]] (WIP)<br />
* [[Gentoo Portage Tricks]] (WIP)<br />
* [[LibreSSL no Gentoo]] (WIP)<br />
* [[NTFS completo em Linux]] (WIP)<br />
<br />
== Media Wiki ==<br />
* [[Disable registration]]<br />
<br />
== MySQL ==<br />
* [[Importing CSV file]]<br />
<br />
== Redes e Administração de Sistemas ==<br />
* [[Activar Jumbo Frames em Linux]] (WIP)<br />
* [[Aprovisionamento remoto de workstations]] (WIP)<br />
* [[Captura de Pacotes]] (WIP)<br />
* [[Corrigir falta de rede após saída de suspensão]] (WIP)<br />
* [[Gestão de energia]] (WIP)<br />
* [[Montar partilhas via SSH]] (WIP)<br />
* [[Redes]] (WIP)<br />
<br />
=== Apache ===<br />
* [[Apache em Gentoo]] (WIP)<br />
* [[Configurar PHP no Apache]] (WIP)<br />
* [[Virtualhosts por directório]] (WIP)<br />
<br />
=== Autenticação ===<br />
* [[LDAP]] (WIP)<br />
* [[MariaDB + LDAP]] (WIP)<br />
* [[PAM + LDAP]] (WIP)<br />
* [[Removing a key from the Known Hosts file]] (WIP)<br />
* [[SUDO + LDAP]] (WIP)<br />
<br />
=== Samba ===<br />
* [[Melhorar o desempenho do Samba]] (WIP)<br />
* [[Samba + LDAP]] (WIP)<br />
* [[Samba como PDC Active Directory]] (WIP)<br />
<br />
=== VPN ===<br />
<br />
* [[Criar uma VPN site-to-site com TINC]] (WIP)<br />
<br />
= Suporte de Hardware =<br />
<br />
* [[Lenovo Thinkpad]]</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=345Compilação do Kernel2018-08-29T17:39:54Z<p>Cláudia: /* Genérico/Vanilla */</p>
<hr />
<div>= Genérico/Vanilla =<br />
Antes de compilar o novo kernel, é necessário instalar as seguintes dependências:<br />
<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
*libssl-dev<br />
<br />
De seguida:<br />
*Entrar no directório descompactado do Kernel<br />
<br />
<syntaxhighlight lang="bash"><br />
cd linux-4.17.12<br />
</syntaxhighlight><br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
<br />
<syntaxhighlight lang="bash"><br />
make mrproper<br />
</syntaxhighlight><br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
<br />
<syntaxhighlight lang="bash"><br />
make menuconfig<br />
</syntaxhighlight><br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
<br />
<syntaxhighlight lang="bash"><br />
make <br />
</syntaxhighlight><br />
<br />
ou<br />
<br />
<syntaxhighlight lang="bash"><br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
</syntaxhighlight><br />
<br />
ou <br />
<br />
<syntaxhighlight lang="bash"><br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
</syntaxhighlight><br />
<br />
*Verificar tamanho do novo Kernel<br />
<br />
<syntaxhighlight lang="bash"><br />
ls -l arch/x86/boot<br />
</syntaxhighlight><br />
<br />
<br />
Verificar o tamanho do ficheiro bzImage. <br />
<br />
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Exemplo_simples_de_cria%C3%A7%C3%A3o_de_Sockets&diff=344Exemplo simples de criação de Sockets2018-08-12T15:27:40Z<p>Cláudia: /* Código Servidor */</p>
<hr />
<div>Uma socket é uma extremidade de um canal de transmissão entre dois processos através de uma rede de computadores.<br />
<br />
Representa a ligação com outro ponto da rede e através da mesma pode-se realizar transferência de dados.<br />
<br />
Exemplo do uso de sockets:<br />
*Firefox a transferir uma página de um servidor;<br />
*Ligação SSH de uma máquina para outra;<br />
*Ligação FTP para gerir ficheiros.<br />
<br />
As sockets funcionam como caixas (“tomadas”), que ligam um determinado programa a outro programa;<br />
<br />
Em sockets TCP existe um cliente e um servidor.<br />
<br />
Uma comunicação pode ser feita de forma síncrona ou assíncrona <br />
<br />
A forma síncrona resulta no bloqueio do programa enquanto espera pela recepção ou pelo envio de dados.<br />
<br />
A forma assíncrona devolve os dados disponíveis no momento em que a função de recepção de dados é chamada e sai imediatamente se não houver ainda dados disponíveis.<br />
<br />
=Tipos=<br />
*UDP - Datagramas<br />
*TCP – Stream Oriented<br />
*Unix - Comunicação Local entre processos<br />
*SCTP – Stream Control Transmission Protocol<br />
*RAW – sem protocolo definido (só leva cabeçalho IP)<br />
*Entre outros…<br />
<br />
==Tipo UDP==<br />
*Sem garantia de entrega;<br />
*Sem garantia de ordem;<br />
*Sem estabelecimento de ligação;<br />
*Garantia da consistência do pacote;<br />
*O pacote tem limites definidos quanto à mensagem;<br />
*Não sofre fragmentação ao chegar ao destino.<br />
<br />
==Tipo TCP==<br />
*Fluxo continuo de dados, bidireccional, com garantia de entrega;<br />
*Dados chegam sempre na mesma ordem em que foram enviados e chegam sempre correctamente;<br />
*Se não chegarem correctamente os dados são reenviados;<br />
*Os dados podem ser fragmentados.<br />
<br />
=Cliente-Servidor=<br />
É o cliente que faz os pedidos de ligação;<br />
<br />
O servidor está sempre à escuta e decide se e quando aceita um pedido de ligação de um cliente.<br />
<br />
Um cliente normalmente comunica com um servidor de cada vez, por outro lado, um servidor pode receber ligações de vários clientes.<br />
<br />
==Código Cliente==<br />
<syntaxhighlight lang="c"><br />
#include <sys/socket.h><br />
#include <sys/types.h><br />
#include <netinet/in.h><br />
#include <arpa/inet.h><br />
#include <cstdio><br />
#include <cstring><br />
<br />
<br />
int main (int p_argc, char** p_argv)<br />
{<br />
<br />
//PT: criação da socket<br />
int link = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);<br />
<br />
//PT: criação do endereço<br />
struct sockaddr_in address;<br />
<br />
//PT: preenchimento do endereço<br />
//PT: indicar a utilização do IPv4<br />
address.sin_family = AF_INET;<br />
<br />
//PT: host to network short (coloca a porta na ordem de rede). Porta do servidor a ser ligada.<br />
address.sin_port = htons(1100);<br />
<br />
//PT: host to network long (coloca o endereço na ordem de rede). 127<<24 | 1 = 127.0.0.1!!<br />
address.sin_addr.s_addr = htonl(127<<24 | 1);<br />
<br />
//PT: estabelecer ligação ao servidor<br />
connect(link, (struct sockaddr *) &address, sizeof(address));<br />
<br />
for(int i = 1; i < p_argc; ++i)<br />
{<br />
send(link, p_argv[i], strlen(p_argv[i]), 0);<br />
send(link, " ", 1, 0);<br />
}<br />
<br />
}<br />
</syntaxhighlight><br />
<br />
==Código Servidor==<br />
<syntaxhighlight lang="c"><br />
#include <sys/socket.h><br />
#include <netinet/in.h><br />
#include <arpa/inet.h><br />
#include <cstdio><br />
<br />
<br />
int main(int p_argc, char** p_argv)<br />
{<br />
//PT: criação da socket <br />
int escuta = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);<br />
<br />
//PT: criação do endereço<br />
struct sockaddr_in address;<br />
<br />
//PT: preenchimento do endereço<br />
//PT: indicar a utilização do IPv4<br />
address.sin_family = AF_INET;<br />
<br />
//PT: Host to network short (coloca a porta na ordem de rede).<br />
//PT: Escutar na porta 1100.<br />
address.sin_port = htons(1100);<br />
<br />
//PT: Host to network long (coloca o endereço na ordem de rede).<br />
//PT: Qualquer IP da máquina.<br />
address.sin_addr.s_addr = htonl(INADDR_ANY);<br />
<br />
//PT: Ligação da porta, ao endereço e à socket criada.<br />
bind(escuta, (const struct sockaddr *) &address, sizeof(address));<br />
<br />
//PT: Colocar a socket à escuta<br />
listen(escuta, 1);<br />
<br />
//PT: Estruturas para receber a info do cliente.<br />
struct sockaddr_in addclient;<br />
socklen_t addclientlen = 0;<br />
<br />
//PT: Colocar a aceitar sockets<br />
int sockclient = 0;<br />
sockclient = accept(escuta, (struct sockaddr *) &addclient, &addclientlen);<br />
<br />
//PT: Mensagem de sucesso na recepção de uma ligação<br />
if(0 < sockclient)<br />
printf("Ligação bem estabelecida.\n");<br />
<br />
char * buffer = new char[1500];<br />
int numreceived = 0;<br />
int totalreceived = 0;<br />
<br />
while(1)<br />
{<br />
numreceived = recv(sockclient, &buffer[totalreceived], (1499 - totalreceived), 0);<br />
if(0 >= numreceived)<br />
break;<br />
totalreceived += numreceived;<br />
}<br />
buffer[totalreceived] = 0;<br />
<br />
printf("%s\n", buffer);<br />
delete [] buffer; <br />
}<br />
</syntaxhighlight></div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Exemplo_simples_de_cria%C3%A7%C3%A3o_de_Sockets&diff=343Exemplo simples de criação de Sockets2018-08-12T15:25:20Z<p>Cláudia: </p>
<hr />
<div>Uma socket é uma extremidade de um canal de transmissão entre dois processos através de uma rede de computadores.<br />
<br />
Representa a ligação com outro ponto da rede e através da mesma pode-se realizar transferência de dados.<br />
<br />
Exemplo do uso de sockets:<br />
*Firefox a transferir uma página de um servidor;<br />
*Ligação SSH de uma máquina para outra;<br />
*Ligação FTP para gerir ficheiros.<br />
<br />
As sockets funcionam como caixas (“tomadas”), que ligam um determinado programa a outro programa;<br />
<br />
Em sockets TCP existe um cliente e um servidor.<br />
<br />
Uma comunicação pode ser feita de forma síncrona ou assíncrona <br />
<br />
A forma síncrona resulta no bloqueio do programa enquanto espera pela recepção ou pelo envio de dados.<br />
<br />
A forma assíncrona devolve os dados disponíveis no momento em que a função de recepção de dados é chamada e sai imediatamente se não houver ainda dados disponíveis.<br />
<br />
=Tipos=<br />
*UDP - Datagramas<br />
*TCP – Stream Oriented<br />
*Unix - Comunicação Local entre processos<br />
*SCTP – Stream Control Transmission Protocol<br />
*RAW – sem protocolo definido (só leva cabeçalho IP)<br />
*Entre outros…<br />
<br />
==Tipo UDP==<br />
*Sem garantia de entrega;<br />
*Sem garantia de ordem;<br />
*Sem estabelecimento de ligação;<br />
*Garantia da consistência do pacote;<br />
*O pacote tem limites definidos quanto à mensagem;<br />
*Não sofre fragmentação ao chegar ao destino.<br />
<br />
==Tipo TCP==<br />
*Fluxo continuo de dados, bidireccional, com garantia de entrega;<br />
*Dados chegam sempre na mesma ordem em que foram enviados e chegam sempre correctamente;<br />
*Se não chegarem correctamente os dados são reenviados;<br />
*Os dados podem ser fragmentados.<br />
<br />
=Cliente-Servidor=<br />
É o cliente que faz os pedidos de ligação;<br />
<br />
O servidor está sempre à escuta e decide se e quando aceita um pedido de ligação de um cliente.<br />
<br />
Um cliente normalmente comunica com um servidor de cada vez, por outro lado, um servidor pode receber ligações de vários clientes.<br />
<br />
==Código Cliente==<br />
<syntaxhighlight lang="c"><br />
#include <sys/socket.h><br />
#include <sys/types.h><br />
#include <netinet/in.h><br />
#include <arpa/inet.h><br />
#include <cstdio><br />
#include <cstring><br />
<br />
<br />
int main (int p_argc, char** p_argv)<br />
{<br />
<br />
//PT: criação da socket<br />
int link = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);<br />
<br />
//PT: criação do endereço<br />
struct sockaddr_in address;<br />
<br />
//PT: preenchimento do endereço<br />
//PT: indicar a utilização do IPv4<br />
address.sin_family = AF_INET;<br />
<br />
//PT: host to network short (coloca a porta na ordem de rede). Porta do servidor a ser ligada.<br />
address.sin_port = htons(1100);<br />
<br />
//PT: host to network long (coloca o endereço na ordem de rede). 127<<24 | 1 = 127.0.0.1!!<br />
address.sin_addr.s_addr = htonl(127<<24 | 1);<br />
<br />
//PT: estabelecer ligação ao servidor<br />
connect(link, (struct sockaddr *) &address, sizeof(address));<br />
<br />
for(int i = 1; i < p_argc; ++i)<br />
{<br />
send(link, p_argv[i], strlen(p_argv[i]), 0);<br />
send(link, " ", 1, 0);<br />
}<br />
<br />
}<br />
</syntaxhighlight><br />
<br />
==Código Servidor==<br />
<syntaxhighlight lang="c"><br />
#include <sys/socket.h><br />
#include <netinet/in.h><br />
#include <arpa/inet.h><br />
#include <cstdio><br />
<br />
<br />
int main(int p_argc, char** p_argv)<br />
{<br />
//PT: criação da socket <br />
int escuta = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);<br />
<br />
//PT: criação do endereço<br />
struct sockaddr_in address;<br />
<br />
//PT: preenchimento do endereço<br />
//PT: indicar a utilização do IPv4<br />
address.sin_family = AF_INET;<br />
<br />
//PT: Host to network short (coloca a porta na ordem de rede).<br />
//PT: Escutar na porta 1100.<br />
address.sin_port = htons(1100);<br />
<br />
//PT: Host to network long (coloca a porta na ordem de rede).<br />
//PT: Qualquer IP da máquina.<br />
address.sin_addr.s_addr = htonl(INADDR_ANY);<br />
<br />
//PT: Ligação da porta, ao endereço e à socket criada.<br />
bind(escuta, (const struct sockaddr *) &address, sizeof(address));<br />
<br />
//PT: Colocar a socket à escuta<br />
listen(escuta, 1);<br />
<br />
//PT: Estruturas para receber a info do cliente.<br />
struct sockaddr_in addclient;<br />
socklen_t addclientlen = 0;<br />
<br />
//PT: Colocar a aceitar sockets<br />
int sockclient = 0;<br />
sockclient = accept(escuta, (struct sockaddr *) &addclient, &addclientlen);<br />
<br />
//PT: Mensagem de sucesso na recepção de uma ligação<br />
if(0 < sockclient)<br />
printf("Ligação bem estabelecida.\n");<br />
<br />
char * buffer = new char[1500];<br />
int numreceived = 0;<br />
int totalreceived = 0;<br />
<br />
while(1)<br />
{<br />
numreceived = recv(sockclient, &buffer[totalreceived], (1499 - totalreceived), 0);<br />
if(0 >= numreceived)<br />
break;<br />
totalreceived += numreceived;<br />
}<br />
buffer[totalreceived] = 0;<br />
<br />
printf("%s\n", buffer);<br />
delete [] buffer; <br />
}<br />
</syntaxhighlight></div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Exemplo_simples_de_cria%C3%A7%C3%A3o_de_Sockets&diff=342Exemplo simples de criação de Sockets2018-08-12T15:23:52Z<p>Cláudia: </p>
<hr />
<div>Uma socket é uma extremidade de um canal de transmissão entre dois processos através de uma rede de computadores.<br />
<br />
Representa a ligação com outro ponto da rede e através da mesma pode-se realizar transferência de dados.<br />
<br />
Exemplo do uso de sockets:<br />
*Firefox a transferir uma página de um servidor;<br />
*Ligação SSH de uma máquina para outra;<br />
*Ligação FTP para gerir ficheiros.<br />
<br />
As sockets funcionam como caixas (“tomadas”), que ligam um determinado programa a outro programa;<br />
<br />
Em sockets TCP existe um cliente e um servidor.<br />
<br />
Uma comunicação pode ser feita de forma síncrona ou assíncrona <br />
<br />
A forma síncrona resulta no bloqueio do programa enquanto espera pela recepção ou pelo envio de dados.<br />
<br />
A forma assíncrona devolve os dados disponíveis no momento em que a função de recepção de dados é chamada e sai imediatamente se não houver ainda dados disponíveis.<br />
<br />
=Tipos=<br />
*UDP - Datagramas<br />
*TCP – Stream Oriented<br />
*Unix - Comunicação Local entre processos<br />
*SCTP – Stream Control Transmission Protocol<br />
*RAW – sem protocolo definido (só leva cabeçalho IP)<br />
*Entre outros…<br />
<br />
==Tipo UDP==<br />
*Sem garantia de entrega;<br />
*Sem garantia de ordem;<br />
*Sem estabelecimento de ligação;<br />
*Garantia da consistência do pacote;<br />
*O pacote tem limites definidos quanto à mensagem;<br />
*Não sofre fragmentação ao chegar ao destino.<br />
<br />
==Tipo TCP==<br />
*Fluxo continuo de dados, bidireccional, com garantia de entrega;<br />
*Dados chegam sempre na mesma ordem em que foram enviados e chegam sempre correctamente;<br />
*Se não chegarem correctamente os dados são reenviados;<br />
*Os dados podem ser fragmentados.<br />
<br />
=Cliente-Servidor=<br />
É o cliente que faz os pedidos de ligação;<br />
<br />
O servidor está sempre à escuta e decide se e quando aceita um pedido de ligação de um cliente.<br />
<br />
Um cliente normalmente comunica com um servidor de cada vez, por outro lado, um servidor pode receber ligações de vários clientes.<br />
<br />
==Código Cliente==<br />
<syntaxhighlight lang="c"><br />
#include <sys/socket.h><br />
#include <sys/types.h><br />
#include <netinet/in.h><br />
#include <arpa/inet.h><br />
#include <cstdio><br />
#include <cstring><br />
<br />
<br />
int main (int p_argc, char** p_argv)<br />
{<br />
<br />
//PT: criação da socket<br />
int link = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);<br />
<br />
//PT: criação do endereço<br />
struct sockaddr_in address;<br />
<br />
//PT: preenchimento do endereço<br />
//PT: indicar a utilização do IPv4<br />
address.sin_family = AF_INET;<br />
<br />
//PT: host to network short (coloca a porta na ordem de rede). Porta do servidor a ser ligada.<br />
address.sin_port = htons(1100);<br />
<br />
//PT: host to network long (coloca a porta na ordem de rede). 127<<24 | 1 = 127.0.0.1!!<br />
address.sin_addr.s_addr = htonl(127<<24 | 1);<br />
<br />
//PT: estabelecer ligação ao servidor<br />
connect(link, (struct sockaddr *) &address, sizeof(address));<br />
<br />
for(int i = 1; i < p_argc; ++i)<br />
{<br />
send(link, p_argv[i], strlen(p_argv[i]), 0);<br />
send(link, " ", 1, 0);<br />
}<br />
<br />
}<br />
</syntaxhighlight></div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Exemplo_simples_de_cria%C3%A7%C3%A3o_de_Sockets&diff=341Exemplo simples de criação de Sockets2018-08-12T15:20:02Z<p>Cláudia: Criou a página com "Uma socket é uma extremidade de um canal de transmissão entre dois processos através de uma rede de computadores. Representa a ligação com outro ponto da rede e atrav..."</p>
<hr />
<div>Uma socket é uma extremidade de um canal de transmissão entre dois processos através de uma rede de computadores.<br />
<br />
Representa a ligação com outro ponto da rede e através da mesma pode-se realizar transferência de dados.<br />
<br />
Exemplo do uso de sockets:<br />
*Firefox a transferir uma página de um servidor;<br />
*Ligação SSH de uma máquina para outra;<br />
*Ligação FTP para gerir ficheiros.<br />
<br />
As sockets funcionam como caixas (“tomadas”), que ligam um determinado programa a outro programa;<br />
<br />
Em sockets TCP existe um cliente e um servidor.<br />
<br />
Uma comunicação pode ser feita de forma síncrona ou assíncrona <br />
<br />
A forma síncrona resulta no bloqueio do programa enquanto espera pela recepção ou pelo envio de dados.<br />
<br />
A forma assíncrona devolve os dados disponíveis no momento em que a função de recepção de dados é chamada e sai imediatamente se não houver ainda dados disponíveis.<br />
<br />
=Tipos=<br />
*UDP - Datagramas<br />
*TCP – Stream Oriented<br />
*Unix - Comunicação Local entre processos<br />
*SCTP – Stream Control Transmission Protocol<br />
*RAW – sem protocolo definido (só leva cabeçalho IP)<br />
*Entre outros…<br />
<br />
==Tipo UDP==<br />
*Sem garantia de entrega;<br />
*Sem garantia de ordem;<br />
*Sem estabelecimento de ligação;<br />
*Garantia da consistência do pacote;<br />
*O pacote tem limites definidos quanto à mensagem;<br />
*Não sofre fragmentação ao chegar ao destino.<br />
<br />
==Tipo TCP==<br />
*Fluxo continuo de dados, bidireccional, com garantia de entrega;<br />
*Dados chegam sempre na mesma ordem em que foram enviados e chegam sempre correctamente;<br />
*Se não chegarem correctamente os dados são reenviados;<br />
*Os dados podem ser fragmentados.<br />
<br />
=Cliente-Servidor=<br />
É o cliente que faz os pedidos de ligação;<br />
<br />
O servidor está sempre à escuta e decide se e quando aceita um pedido de ligação de um cliente.<br />
<br />
Um cliente normalmente comunica com um servidor de cada vez, por outro lado, um servidor pode receber ligações de vários clientes.<br />
<br />
==Código Cliente==<br />
<br />
#include <sys/socket.h><br />
#include <sys/types.h><br />
#include <netinet/in.h><br />
#include <arpa/inet.h><br />
#include <cstdio><br />
#include <cstring><br />
<br />
<br />
int main (int p_argc, char** p_argv)<br />
{<br />
<br />
//PT: criação da socket<br />
int link = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);<br />
<br />
//PT: criação do endereço<br />
struct sockaddr_in address;<br />
<br />
//PT: preenchimento do endereço<br />
//PT: indicar a utilização do IPv4<br />
address.sin_family = AF_INET;<br />
<br />
//PT: host to network short (coloca a porta na ordem de rede). Porta do servidor a ser ligada.<br />
address.sin_port = htons(1100);<br />
<br />
//PT: host to network long (coloca a porta na ordem de rede). 127<<24 | 1 = 127.0.0.1!!<br />
address.sin_addr.s_addr = htonl(127<<24 | 1);<br />
<br />
//PT: estabelecer ligação ao servidor<br />
connect(link, (struct sockaddr *) &address, sizeof(address));<br />
<br />
for(int i = 1; i < p_argc; ++i)<br />
{<br />
send(link, p_argv[i], strlen(p_argv[i]), 0);<br />
send(link, " ", 1, 0);<br />
}<br />
<br />
}</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=P%C3%A1gina_principal&diff=340Página principal2018-08-09T14:12:50Z<p>Cláudia: /* C e C++ */</p>
<hr />
<div>Antes de começar, tenha em consideração que todos ou practicamente todos os tutoriais aqui são trabalhos em curso e poderão ainda não ter sido revistos e corrigidos. Muitos poderão necessitar de revisão linguística, outros necessitarão de correcções técnicas. Agradecemos que nos comunique, através dos contactos disponíveis [http://tecporto.pt/page/h.page.contacts aqui], quaisquer erros que encontre nestas páginas.<br />
<br />
As páginas que ainda não tenham sido consideradas completas estarão marcadas com a sigla WIP (Work In Progress).<br />
<br />
Todos os tutoriais aqui apresentados são baseados em informação obtida em primeira mão através das nossas próprias experiências ou através do teste prático de documentação encontrada.<br />
<br />
Se tiver sugestões de tutoriais que gostasse de ver aqui publicados, por favor informe-nos através da página de contactos mencionada acima.<br />
<br />
= Documentação =<br />
== Projectos [PT] ==<br />
* [[TWF]] (WIP)<br />
<br />
== Workshops [PT] ==<br />
* [[Introdução ao Arduino]] (WIP)<br />
* [[Boas práticas de programação]] (WIP)<br />
* [[Introdução à elaboração de Planos de Negócios]] (WIP)<br />
* [[Práticas básicas de Segurança Informática]] (WIP)<br />
* [[Introdução ao sistema operativo Linux]] (WIP)<br />
* [[Introdução à utilização de iptables]] (WIP)<br />
<br />
== Legislação ==<br />
<br />
* [[Combate ao terrorismo e branqueamento de capitais]] (WIP)<br />
* [[Portuguese Consumer and Warranty Law]] (WIP)<br />
* [[Regulamento Geral de Protecção de Dados]] (WIP)<br />
<br />
== Tutoriais ==<br />
=== General/uncategorized ===<br />
* [[Segurança no PHP]] (WIP)<br />
* [[Regras e boas práticas de webdesign]] (WIP)<br />
* [[How to make money with Facebook]]<br />
<br />
=== Arduino ===<br />
* [[Connecting a Firefly module to a Linux workstation]]<br />
<br />
=== BASH ===<br />
* [[Location independent includes]]<br />
<br />
=== Bluetooth ===<br />
* [[Adicionar dispositivo Bluetooth em Linux]] (WIP)<br />
* [[Connecting a Firefly module to a Linux workstation]]<br />
* [[Ping device]]<br />
* [[Programação com BlueZ]] (WIP)<br />
<br />
=== C e C++ ===<br />
* [[Alignment and packing]] (WIP)<br />
* [[C++ From Scratch]] (WIP)<br />
* [[Exemplo simples de criação de Sockets]] (WIP)<br />
<br />
=== Cryptography ===<br />
* [[Using LibreSSL]] (WIP)<br />
<br />
=== Drivers ===<br />
* [[FGLRX on legacy graphics cards]]<br />
<br />
=== EFI/UEFI ===<br />
* [[Booting the Linux Kernel without a bootloader]]<br />
* [[Removing an entry from the UEFI boot list (Linux)]]<br />
<br />
=== Gestão de Projectos ===<br />
<br />
* [[Subversion vs Git]] (WIP)<br />
<br />
==== Redmine ====<br />
* [[Redmine + LDAP]] (WIP)<br />
* [[Redmine no Gentoo]] (WIP)<br />
* [[Redmine no Ubuntu]] (WIP)<br />
<br />
==== Subversion ====<br />
* [[Combinar vários repositórios SVN num só]] (WIP)<br />
* [[Configurar permissões em repositório Subversion]] (WIP)<br />
* [[Criar um repositório SVN]] (WIP)<br />
* [[Recriar repositório SVN perdido]] (WIP)<br />
* [[Subversion + LDAP]] (WIP)<br />
<br />
=== Gnome ===<br />
* [[Fixing multi-monitor workspaces on Gnome 3.x]]<br />
* [[Estilizar GDM]] (WIP)<br />
* [[Ubuntu 18.04 com Gnome 3 básico]] (WIP)<br />
<br />
=== Internet ===<br />
* [[Desempenho no Firefox]] (WIP)<br />
* [[Normalização de temas escuros no Firefox]] (WIP)<br />
<br />
=== Javascript ===<br />
* [[Adding an "onenter" event to an input element]]<br />
* [[Validação de campos em Javascript]]<br />
<br />
=== Linux ===<br />
* [[Caixa de pesquisa rápida no Synaptic]]<br />
* [[Compilação do Kernel]] (WIP)<br />
* [[Corrigir bloqueio do Guake ao fechar aba]] (WIP)<br />
* [[Criação de RAID em Linux]] (WIP)<br />
* [[Criação de uma distribuição minimalista]] (WIP)<br />
* [[Gentoo Portage Tricks]] (WIP)<br />
* [[LibreSSL no Gentoo]] (WIP)<br />
* [[NTFS completo em Linux]] (WIP)<br />
<br />
=== Media Wiki ===<br />
* [[Disable registration]]<br />
<br />
=== MySQL ===<br />
* [[Importing CSV file]]<br />
<br />
=== Redes e Administração de Sistemas ===<br />
* [[Activar Jumbo Frames em Linux]] (WIP)<br />
* [[Aprovisionamento remoto de workstations]] (WIP)<br />
* [[Captura de Pacotes]] (WIP)<br />
* [[Corrigir falta de rede após saída de suspensão]] (WIP)<br />
* [[Gestão de energia]] (WIP)<br />
* [[Montar partilhas via SSH]] (WIP)<br />
* [[Redes]] (WIP)<br />
<br />
==== Apache ====<br />
* [[Apache em Gentoo]] (WIP)<br />
* [[Configurar PHP no Apache]] (WIP)<br />
* [[Virtualhosts por directório]] (WIP)<br />
<br />
==== Autenticação ====<br />
* [[LDAP]] (WIP)<br />
* [[MariaDB + LDAP]] (WIP)<br />
* [[PAM + LDAP]] (WIP)<br />
* [[Removing a key from the Known Hosts file]] (WIP)<br />
* [[SUDO + LDAP]] (WIP)<br />
<br />
==== Samba ====<br />
* [[Melhorar o desempenho do Samba]] (WIP)<br />
* [[Samba + LDAP]] (WIP)<br />
* [[Samba como PDC Active Directory]] (WIP)<br />
<br />
==== VPN ====<br />
<br />
* [[Criar uma VPN site-to-site com TINC]] (WIP)</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Cria%C3%A7%C3%A3o_de_uma_distribui%C3%A7%C3%A3o_minimalista&diff=339Criação de uma distribuição minimalista2018-08-07T16:45:54Z<p>Cláudia: </p>
<hr />
<div>= Fazer o download dos pacotes base =<br />
<br />
* [http://www.kernel.org Kernel Vanilla]<br />
* [http://www.busybox.net BusyBox]<br />
<br />
= Instalação de pacotes adicionais =<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
= Pré-configuração =<br />
*Criação de um directório de trabalho<br />
<br />
<syntaxhighlight lang="bash"><br />
mkdir MyDistro<br />
</syntaxhighlight><br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
<br />
<syntaxhighlight lang="bash"><br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
</syntaxhighlight><br />
<br />
*Descompactar os downloads<br />
<br />
<syntaxhighlight lang="bash"><br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
</syntaxhighlight><br />
<br />
= Compilação do Kernel =<br />
<br />
[[Compilação_do_Kernel]]<br />
<br />
= Compilação do BusyBox =<br />
<br />
Entrar no directório BusyBox previamente descompactado<br />
<br />
*Entrar no menu de configuração do BusyBox<br />
<br />
<syntaxhighlight lang="bash"><br />
make menuconfig<br />
</syntaxhighlight><br />
<br />
<br />
Importante: Adicionar no menu Settings -> Build Options -> Build static binary (no shared libs)<br />
<br />
*Compilar o BusyBox<br />
<br />
<syntaxhighlight lang="bash"><br />
make <br />
</syntaxhighlight><br />
<br />
ou<br />
<br />
<syntaxhighlight lang="bash"><br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
</syntaxhighlight><br />
<br />
ou <br />
<br />
<syntaxhighlight lang="bash"><br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
</syntaxhighlight><br />
<br />
* Verificar o tamanho do novo BusyBox<br />
<br />
<syntaxhighlight lang="bash"><br />
ls -l <br />
</syntaxhighlight><br />
<br />
Verificar o tamanho do ficheiro busybox.<br />
<br />
= Preparação da máquina de teste =<br />
O teste do novo kernel pode ser feita na máquina local. Contudo, neste tutorial foi utilizada uma máquina virtual, com 10GB de disco e duas partições, e uma distribuição linux instalada.<br />
<br />
*8GB para o sistema base <br />
*2GB para /MyDistro em jfs (ou o sistema de ficheiros que desejar)<br />
<br />
Após a instalação da máquina é necessário executar os comandos de update e upgrade:<br />
<br />
<syntaxhighlight lang="bash"><br />
sudo apt update<br />
sudo apt upgrade<br />
</syntaxhighlight><br />
<br />
<br />
Antes de passar os ficheiros, deverá verificar se a partição onde vão ficar os novos ficheiros do kernel está montada.<br />
<br />
<syntaxhighlight lang="bash"><br />
mount | grep "MyDistro"<br />
</syntaxhighlight><br />
<br />
Deverá, de seguida, passar os ficheiros do kernel, o bzImage, e o do Busybox, busybox, para a partição /MyDistro da máquina virtual.<br />
Umas das formas utilizadas para passar os ficheiros foi via ssh. E necessário instalar o pacote ssh na máquina virtual (sudo apt install ssh) e na máquina real, basta aceder a uma pasta e ligar a um servidor remoto (sftp://<ip_máquina_virtual>/<pasta>).<br />
<br />
== Criação da estrutura de directórios e arquivos==<br />
Dentro da partição do MyDistro e em root:<br />
*Modificar dono e grupo dos arquivos anteriormente copiados<br />
<br />
<syntaxhighlight lang="bash"><br />
chown root:root busybox bzImage<br />
</syntaxhighlight><br />
<br />
*Criação dos directórios<br />
<br />
<syntaxhighlight lang="bash"><br />
mkdir sbin bin dev<br />
</syntaxhighlight><br />
<br />
*Criação de links simbólicos<br />
<br />
<syntaxhighlight lang="bash"><br />
ln -s busybox init<br />
ln -s /busybox sbin/init<br />
</syntaxhighlight><br />
<br />
*Criação dos arquivos que representam os dispositivos<br />
<br />
<syntaxhighlight lang="bash"><br />
mknod -m 600 console c 5 1<br />
mknod -m 666 null c 1 3<br />
mknod -m 620 tty1 c 4 1<br />
mknod -m 620 tty2 c 4 2<br />
mknod -m 660 sda b 8 0<br />
mknod -m 660 sda1 b 8 1<br />
mknod -m 660 sda2 b 8 2<br />
</syntaxhighlight><br />
<br />
*Criação dos arquivos que representam as consolas<br />
<br />
<syntaxhighlight lang="bash"><br />
cd bin<br />
ln -s ../busybox sh<br />
ln -s ../busybox bash<br />
</syntaxhighlight><br />
<br />
*Verificar se o BusyBox está OK<br />
<br />
<syntaxhighlight lang="bash"><br />
chroot /MyDistro /busybox<br />
</syntaxhighlight><br />
<br />
== Modificação do Grub ==<br />
Entrar no ficheiro default do grub nano /etc/grub.d/40_custom e colocar no final do ficheiro:<br />
<br />
<syntaxhighlight lang="bash"><br />
menuentry "MyDistro" {<br />
set root='hd0,msdos2' <br />
search --set=root --hint-bios=hd0,msdos2<br />
linux /bzImage root=/dev/sda2<br />
}<br />
</syntaxhighlight><br />
<br />
<br />
No final, gravar o ficheiro e executar o comando:<br />
<br />
<syntaxhighlight lang="bash"><br />
update-grub<br />
</syntaxhighlight><br />
<br />
<br />
Reiniciar e testar!</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=338Compilação do Kernel2018-08-07T16:45:09Z<p>Cláudia: /* Genérico/Vanilla */</p>
<hr />
<div>= Genérico/Vanilla =<br />
Antes de compilar o novo kernel, é necessário instalar as seguintes dependências:<br />
<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
De seguida:<br />
*Entrar no directório descompactado do Kernel<br />
<br />
<syntaxhighlight lang="bash"><br />
cd linux-4.17.12<br />
</syntaxhighlight><br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
<br />
<syntaxhighlight lang="bash"><br />
make mrproper<br />
</syntaxhighlight><br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
<br />
<syntaxhighlight lang="bash"><br />
make menuconfig<br />
</syntaxhighlight><br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
<br />
<syntaxhighlight lang="bash"><br />
make <br />
</syntaxhighlight><br />
<br />
ou<br />
<br />
<syntaxhighlight lang="bash"><br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
</syntaxhighlight><br />
<br />
ou <br />
<br />
<syntaxhighlight lang="bash"><br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
</syntaxhighlight><br />
<br />
*Verificar tamanho do novo Kernel<br />
<br />
<syntaxhighlight lang="bash"><br />
ls -l arch/x86/boot<br />
</syntaxhighlight><br />
<br />
<br />
Verificar o tamanho do ficheiro bzImage. <br />
<br />
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=337Compilação do Kernel2018-08-07T16:44:55Z<p>Cláudia: /* Genérico/Vanilla */</p>
<hr />
<div>= Genérico/Vanilla =<br />
Antes de compilar o novo kernel, é necessário instalar as seguintes dependências:<br />
<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
<br />
*Entrar no directório descompactado do Kernel<br />
<br />
<syntaxhighlight lang="bash"><br />
cd linux-4.17.12<br />
</syntaxhighlight><br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
<br />
<syntaxhighlight lang="bash"><br />
make mrproper<br />
</syntaxhighlight><br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
<br />
<syntaxhighlight lang="bash"><br />
make menuconfig<br />
</syntaxhighlight><br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
<br />
<syntaxhighlight lang="bash"><br />
make <br />
</syntaxhighlight><br />
<br />
ou<br />
<br />
<syntaxhighlight lang="bash"><br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
</syntaxhighlight><br />
<br />
ou <br />
<br />
<syntaxhighlight lang="bash"><br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
</syntaxhighlight><br />
<br />
*Verificar tamanho do novo Kernel<br />
<br />
<syntaxhighlight lang="bash"><br />
ls -l arch/x86/boot<br />
</syntaxhighlight><br />
<br />
<br />
Verificar o tamanho do ficheiro bzImage. <br />
<br />
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=336Compilação do Kernel2018-08-07T16:43:19Z<p>Cláudia: /* Compilação do Kernel */</p>
<hr />
<div>= Genérico/Vanilla =<br />
*Entrar no directório descompactado do Kernel<br />
<br />
<syntaxhighlight lang="bash"><br />
cd linux-4.17.12<br />
</syntaxhighlight><br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
<br />
<syntaxhighlight lang="bash"><br />
make mrproper<br />
</syntaxhighlight><br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
<br />
<syntaxhighlight lang="bash"><br />
make menuconfig<br />
</syntaxhighlight><br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
<br />
<syntaxhighlight lang="bash"><br />
make <br />
</syntaxhighlight><br />
<br />
ou<br />
<br />
<syntaxhighlight lang="bash"><br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
</syntaxhighlight><br />
<br />
ou <br />
<br />
<syntaxhighlight lang="bash"><br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
</syntaxhighlight><br />
<br />
*Verificar tamanho do novo Kernel<br />
<br />
<syntaxhighlight lang="bash"><br />
ls -l arch/x86/boot<br />
</syntaxhighlight><br />
<br />
<br />
Verificar o tamanho do ficheiro bzImage. <br />
<br />
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Cria%C3%A7%C3%A3o_de_uma_distribui%C3%A7%C3%A3o_minimalista&diff=335Criação de uma distribuição minimalista2018-08-07T16:42:36Z<p>Cláudia: /* Compilação do Kernel */</p>
<hr />
<div>= Fazer o download dos pacotes base =<br />
<br />
* [http://www.kernel.org Kernel Vanilla]<br />
* [http://www.busybox.net BusyBox]<br />
<br />
= Instalação de pacotes adicionais =<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
= Pré-configuração =<br />
*Criação de um directório de trabalho<br />
<br />
<syntaxhighlight lang="bash"><br />
mkdir MyDistro<br />
</syntaxhighlight><br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
<br />
<syntaxhighlight lang="bash"><br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
</syntaxhighlight><br />
<br />
*Descompactar os downloads<br />
<br />
<syntaxhighlight lang="bash"><br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
</syntaxhighlight><br />
<br />
= Compilação do Kernel =<br />
<br />
[[Compilação_do_Kernel]]<br />
<br />
= Compilação do BusyBox =<br />
<br />
Entrar no directório BusyBox previamente descompactado<br />
<br />
*Entrar no menu de configuração do BusyBox<br />
<br />
<syntaxhighlight lang="bash"><br />
make menuconfig<br />
</syntaxhighlight><br />
<br />
<br />
Importante: Adicionar no menu Settings -> Build Options -> Build static binary (no shared libs)<br />
<br />
*Compilar o BusyBox<br />
<br />
<syntaxhighlight lang="bash"><br />
make <br />
</syntaxhighlight><br />
<br />
ou<br />
<br />
<syntaxhighlight lang="bash"><br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
</syntaxhighlight><br />
<br />
ou <br />
<br />
<syntaxhighlight lang="bash"><br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
</syntaxhighlight><br />
<br />
* Verificar o tamanho do novo BusyBox<br />
<br />
<syntaxhighlight lang="bash"><br />
ls -l <br />
</syntaxhighlight><br />
<br />
Verificar o tamanho do ficheiro busybox.<br />
<br />
== Preparação da máquina de teste ==<br />
O teste do novo kernel pode ser feita na máquina local. Contudo, neste tutorial foi utilizada uma máquina virtual, com 10GB de disco e duas partições, e uma distribuição linux instalada.<br />
<br />
*8GB para o sistema base <br />
*2GB para /MyDistro em jfs (ou o sistema de ficheiros que desejar)<br />
<br />
Após a instalação da máquina é necessário executar os comandos de update e upgrade:<br />
<br />
<syntaxhighlight lang="bash"><br />
sudo apt update<br />
sudo apt upgrade<br />
</syntaxhighlight><br />
<br />
<br />
Antes de passar os ficheiros, deverá verificar se a partição onde vão ficar os novos ficheiros do kernel está montada.<br />
<br />
<syntaxhighlight lang="bash"><br />
mount | grep "MyDistro"<br />
</syntaxhighlight><br />
<br />
Deverá, de seguida, passar os ficheiros do kernel, o bzImage, e o do Busybox, busybox, para a partição /MyDistro da máquina virtual.<br />
Umas das formas utilizadas para passar os ficheiros foi via ssh. E necessário instalar o pacote ssh na máquina virtual (sudo apt install ssh) e na máquina real, basta aceder a uma pasta e ligar a um servidor remoto (sftp://<ip_máquina_virtual>/<pasta>).<br />
<br />
=== Criação da estrutura de directórios e arquivos===<br />
Dentro da partição do MyDistro e em root:<br />
*Modificar dono e grupo dos arquivos anteriormente copiados<br />
<br />
<syntaxhighlight lang="bash"><br />
chown root:root busybox bzImage<br />
</syntaxhighlight><br />
<br />
*Criação dos directórios<br />
<br />
<syntaxhighlight lang="bash"><br />
mkdir sbin bin dev<br />
</syntaxhighlight><br />
<br />
*Criação de links simbólicos<br />
<br />
<syntaxhighlight lang="bash"><br />
ln -s busybox init<br />
ln -s /busybox sbin/init<br />
</syntaxhighlight><br />
<br />
*Criação dos arquivos que representam os dispositivos<br />
<br />
<syntaxhighlight lang="bash"><br />
mknod -m 600 console c 5 1<br />
mknod -m 666 null c 1 3<br />
mknod -m 620 tty1 c 4 1<br />
mknod -m 620 tty2 c 4 2<br />
mknod -m 660 sda b 8 0<br />
mknod -m 660 sda1 b 8 1<br />
mknod -m 660 sda2 b 8 2<br />
</syntaxhighlight><br />
<br />
*Criação dos arquivos que representam as consolas<br />
<br />
<syntaxhighlight lang="bash"><br />
cd bin<br />
ln -s ../busybox sh<br />
ln -s ../busybox bash<br />
</syntaxhighlight><br />
<br />
*Verificar se o BusyBox está OK<br />
<br />
<syntaxhighlight lang="bash"><br />
chroot /MyDistro /busybox<br />
</syntaxhighlight><br />
<br />
=== Modificação do Grub ===<br />
Entrar no ficheiro default do grub nano /etc/grub.d/40_custom e colocar no final do ficheiro:<br />
<br />
<syntaxhighlight lang="bash"><br />
menuentry "MyDistro" {<br />
set root='hd0,msdos2' <br />
search --set=root --hint-bios=hd0,msdos2<br />
linux /bzImage root=/dev/sda2<br />
}<br />
</syntaxhighlight><br />
<br />
<br />
No final, gravar o ficheiro e executar o comando:<br />
<br />
<syntaxhighlight lang="bash"><br />
update-grub<br />
</syntaxhighlight><br />
<br />
<br />
Reiniciar e testar!</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Cria%C3%A7%C3%A3o_de_uma_distribui%C3%A7%C3%A3o_minimalista&diff=332Criação de uma distribuição minimalista2018-08-07T16:37:48Z<p>Cláudia: </p>
<hr />
<div>= Fazer o download do Kernel e do BusyBox =<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
= Instalação de pacotes adicionais =<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
= Pré-configuração =<br />
*Criação de um directório de trabalho<br />
<br />
<syntaxhighlight lang="bash"><br />
mkdir MyDistro<br />
</syntaxhighlight><br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
<br />
<syntaxhighlight lang="bash"><br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
</syntaxhighlight><br />
<br />
*Descompactar os downloads<br />
<br />
<syntaxhighlight lang="bash"><br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
</syntaxhighlight><br />
<br />
= Compilação do Kernel =<br />
*Entrar no directório descompactado do Kernel<br />
<br />
<syntaxhighlight lang="bash"><br />
cd MyDistro/linux-4.17.12<br />
</syntaxhighlight><br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
<br />
<syntaxhighlight lang="bash"><br />
make mrproper<br />
</syntaxhighlight><br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
<br />
<syntaxhighlight lang="bash"><br />
make menuconfig<br />
</syntaxhighlight><br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
<br />
<syntaxhighlight lang="bash"><br />
make <br />
</syntaxhighlight><br />
<br />
ou<br />
<br />
<syntaxhighlight lang="bash"><br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
</syntaxhighlight><br />
<br />
ou <br />
<br />
<syntaxhighlight lang="bash"><br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
</syntaxhighlight><br />
<br />
*Verificar tamanho do novo Kernel<br />
<br />
<syntaxhighlight lang="bash"><br />
ls -l arch/x86/boot<br />
</syntaxhighlight><br />
<br />
<br />
Verificar o tamanho do ficheiro bzImage. <br />
<br />
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.<br />
<br />
= Compilação do BusyBox =<br />
<br />
Entrar no directório BusyBox previamente descompactado<br />
<br />
*Entrar no menu de configuração do BusyBox<br />
<br />
<syntaxhighlight lang="bash"><br />
make menuconfig<br />
</syntaxhighlight><br />
<br />
<br />
Importante: Adicionar no menu Settings -> Build Options -> Build static binary (no shared libs)<br />
<br />
*Compilar o BusyBox<br />
<br />
<syntaxhighlight lang="bash"><br />
make <br />
</syntaxhighlight><br />
<br />
ou<br />
<br />
<syntaxhighlight lang="bash"><br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
</syntaxhighlight><br />
<br />
ou <br />
<br />
<syntaxhighlight lang="bash"><br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
</syntaxhighlight><br />
<br />
* Verificar o tamanho do novo BusyBox<br />
<br />
<syntaxhighlight lang="bash"><br />
ls -l <br />
</syntaxhighlight><br />
<br />
Verificar o tamanho do ficheiro busybox.<br />
<br />
== Preparação da máquina de teste ==<br />
O teste do novo kernel pode ser feita na máquina local. Contudo, neste tutorial foi utilizada uma máquina virtual, com 10GB de disco e duas partições, e uma distribuição linux instalada.<br />
<br />
*8GB para o sistema base <br />
*2GB para /MyDistro em jfs (ou o sistema de ficheiros que desejar)<br />
<br />
Após a instalação da máquina é necessário executar os comandos de update e upgrade:<br />
<br />
<syntaxhighlight lang="bash"><br />
sudo apt update<br />
sudo apt upgrade<br />
</syntaxhighlight><br />
<br />
<br />
Antes de passar os ficheiros, deverá verificar se a partição onde vão ficar os novos ficheiros do kernel está montada.<br />
<br />
<syntaxhighlight lang="bash"><br />
mount | grep "MyDistro"<br />
</syntaxhighlight><br />
<br />
Deverá, de seguida, passar os ficheiros do kernel, o bzImage, e o do Busybox, busybox, para a partição /MyDistro da máquina virtual.<br />
Umas das formas utilizadas para passar os ficheiros foi via ssh. E necessário instalar o pacote ssh na máquina virtual (sudo apt install ssh) e na máquina real, basta aceder a uma pasta e ligar a um servidor remoto (sftp://<ip_máquina_virtual>/<pasta>).<br />
<br />
=== Criação da estrutura de directórios e arquivos===<br />
Dentro da partição do MyDistro e em root:<br />
*Modificar dono e grupo dos arquivos anteriormente copiados<br />
<br />
<syntaxhighlight lang="bash"><br />
chown root:root busybox bzImage<br />
</syntaxhighlight><br />
<br />
*Criação dos directórios<br />
<br />
<syntaxhighlight lang="bash"><br />
mkdir sbin bin dev<br />
</syntaxhighlight><br />
<br />
*Criação de links simbólicos<br />
<br />
<syntaxhighlight lang="bash"><br />
ln -s busybox init<br />
ln -s /busybox sbin/init<br />
</syntaxhighlight><br />
<br />
*Criação dos arquivos que representam os dispositivos<br />
<br />
<syntaxhighlight lang="bash"><br />
mknod -m 600 console c 5 1<br />
mknod -m 666 null c 1 3<br />
mknod -m 620 tty1 c 4 1<br />
mknod -m 620 tty2 c 4 2<br />
mknod -m 660 sda b 8 0<br />
mknod -m 660 sda1 b 8 1<br />
mknod -m 660 sda2 b 8 2<br />
</syntaxhighlight><br />
<br />
*Criação dos arquivos que representam as consolas<br />
<br />
<syntaxhighlight lang="bash"><br />
cd bin<br />
ln -s ../busybox sh<br />
ln -s ../busybox bash<br />
</syntaxhighlight><br />
<br />
*Verificar se o BusyBox está OK<br />
<br />
<syntaxhighlight lang="bash"><br />
chroot /MyDistro /busybox<br />
</syntaxhighlight><br />
<br />
=== Modificação do Grub ===<br />
Entrar no ficheiro default do grub nano /etc/grub.d/40_custom e colocar no final do ficheiro:<br />
<br />
<syntaxhighlight lang="bash"><br />
menuentry "MyDistro" {<br />
set root='hd0,msdos2' <br />
search --set=root --hint-bios=hd0,msdos2<br />
linux /bzImage root=/dev/sda2<br />
}<br />
</syntaxhighlight><br />
<br />
<br />
No final, gravar o ficheiro e executar o comando:<br />
<br />
<syntaxhighlight lang="bash"><br />
update-grub<br />
</syntaxhighlight><br />
<br />
<br />
Reiniciar e testar!</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=331Compilação do Kernel2018-08-07T16:35:17Z<p>Cláudia: /* Compilação do Kernel */</p>
<hr />
<div>== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
<br />
<syntaxhighlight lang="bash"><br />
cd linux-4.17.12<br />
</syntaxhighlight><br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
<br />
<syntaxhighlight lang="bash"><br />
make mrproper<br />
</syntaxhighlight><br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
<br />
<syntaxhighlight lang="bash"><br />
make menuconfig<br />
</syntaxhighlight><br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
<br />
<syntaxhighlight lang="bash"><br />
make <br />
</syntaxhighlight><br />
<br />
ou<br />
<br />
<syntaxhighlight lang="bash"><br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
</syntaxhighlight><br />
<br />
ou <br />
<br />
<syntaxhighlight lang="bash"><br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
</syntaxhighlight><br />
<br />
*Verificar tamanho do novo Kernel<br />
<br />
<syntaxhighlight lang="bash"><br />
ls -l arch/x86/boot<br />
</syntaxhighlight><br />
<br />
<br />
Verificar o tamanho do ficheiro bzImage. <br />
<br />
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=330Compilação do Kernel2018-08-07T16:34:54Z<p>Cláudia: /* Genérico / Vanilla */</p>
<hr />
<div>== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
<br />
<syntaxhighlight lang="bash"><br />
cd MyDistro/linux-4.17.12<br />
</syntaxhighlight><br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
<br />
<syntaxhighlight lang="bash"><br />
make mrproper<br />
</syntaxhighlight><br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
<br />
<syntaxhighlight lang="bash"><br />
make menuconfig<br />
</syntaxhighlight><br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
<br />
<syntaxhighlight lang="bash"><br />
make <br />
</syntaxhighlight><br />
<br />
ou<br />
<br />
<syntaxhighlight lang="bash"><br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
</syntaxhighlight><br />
<br />
ou <br />
<br />
<syntaxhighlight lang="bash"><br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
</syntaxhighlight><br />
<br />
*Verificar tamanho do novo Kernel<br />
<br />
<syntaxhighlight lang="bash"><br />
ls -l arch/x86/boot<br />
</syntaxhighlight><br />
<br />
<br />
Verificar o tamanho do ficheiro bzImage. <br />
<br />
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Cria%C3%A7%C3%A3o_de_uma_distribui%C3%A7%C3%A3o_minimalista&diff=329Criação de uma distribuição minimalista2018-08-07T16:33:53Z<p>Cláudia: Criou a página com "= Genérico / Vanilla = == Fazer o download do kernel e do BusyBox == [http://www.kernel.org Kernel Vanilla] [http://www.busybox.net BusyBox] == Instalação de pacotes a..."</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Instalação de pacotes adicionais ==<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
<br />
<syntaxhighlight lang="bash"><br />
mkdir MyDistro<br />
</syntaxhighlight><br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
<br />
<syntaxhighlight lang="bash"><br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
</syntaxhighlight><br />
<br />
*Descompactar os downloads<br />
<br />
<syntaxhighlight lang="bash"><br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
</syntaxhighlight><br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
<br />
<syntaxhighlight lang="bash"><br />
cd MyDistro/linux-4.17.12<br />
</syntaxhighlight><br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
<br />
<syntaxhighlight lang="bash"><br />
make mrproper<br />
</syntaxhighlight><br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
<br />
<syntaxhighlight lang="bash"><br />
make menuconfig<br />
</syntaxhighlight><br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
<br />
<syntaxhighlight lang="bash"><br />
make <br />
</syntaxhighlight><br />
<br />
ou<br />
<br />
<syntaxhighlight lang="bash"><br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
</syntaxhighlight><br />
<br />
ou <br />
<br />
<syntaxhighlight lang="bash"><br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
</syntaxhighlight><br />
<br />
*Verificar tamanho do novo Kernel<br />
<br />
<syntaxhighlight lang="bash"><br />
ls -l arch/x86/boot<br />
</syntaxhighlight><br />
<br />
<br />
Verificar o tamanho do ficheiro bzImage. <br />
<br />
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.<br />
<br />
== Compilação do BusyBox ==<br />
<br />
Entrar no directório BusyBox previamente descompactado<br />
<br />
*Entrar no menu de configuração do BusyBox<br />
<br />
<syntaxhighlight lang="bash"><br />
make menuconfig<br />
</syntaxhighlight><br />
<br />
<br />
Importante: Adicionar no menu Settings -> Build Options -> Build static binary (no shared libs)<br />
<br />
*Compilar o BusyBox<br />
<br />
<syntaxhighlight lang="bash"><br />
make <br />
</syntaxhighlight><br />
<br />
ou<br />
<br />
<syntaxhighlight lang="bash"><br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
</syntaxhighlight><br />
<br />
ou <br />
<br />
<syntaxhighlight lang="bash"><br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
</syntaxhighlight><br />
<br />
* Verificar o tamanho do novo BusyBox<br />
<br />
<syntaxhighlight lang="bash"><br />
ls -l <br />
</syntaxhighlight><br />
<br />
Verificar o tamanho do ficheiro busybox.<br />
<br />
== Preparação da máquina de teste ==<br />
O teste do novo kernel pode ser feita na máquina local. Contudo, neste tutorial foi utilizada uma máquina virtual, com 10GB de disco e duas partições, e uma distribuição linux instalada.<br />
<br />
*8GB para o sistema base <br />
*2GB para /MyDistro em jfs (ou o sistema de ficheiros que desejar)<br />
<br />
Após a instalação da máquina é necessário executar os comandos de update e upgrade:<br />
<br />
<syntaxhighlight lang="bash"><br />
sudo apt update<br />
sudo apt upgrade<br />
</syntaxhighlight><br />
<br />
<br />
Antes de passar os ficheiros, deverá verificar se a partição onde vão ficar os novos ficheiros do kernel está montada.<br />
<br />
<syntaxhighlight lang="bash"><br />
mount | grep "MyDistro"<br />
</syntaxhighlight><br />
<br />
Deverá, de seguida, passar os ficheiros do kernel, o bzImage, e o do Busybox, busybox, para a partição /MyDistro da máquina virtual.<br />
Umas das formas utilizadas para passar os ficheiros foi via ssh. E necessário instalar o pacote ssh na máquina virtual (sudo apt install ssh) e na máquina real, basta aceder a uma pasta e ligar a um servidor remoto (sftp://<ip_máquina_virtual>/<pasta>).<br />
<br />
=== Criação da estrutura de directórios e arquivos===<br />
Dentro da partição do MyDistro e em root:<br />
*Modificar dono e grupo dos arquivos anteriormente copiados<br />
<br />
<syntaxhighlight lang="bash"><br />
chown root:root busybox bzImage<br />
</syntaxhighlight><br />
<br />
*Criação dos directórios<br />
<br />
<syntaxhighlight lang="bash"><br />
mkdir sbin bin dev<br />
</syntaxhighlight><br />
<br />
*Criação de links simbólicos<br />
<br />
<syntaxhighlight lang="bash"><br />
ln -s busybox init<br />
ln -s /busybox sbin/init<br />
</syntaxhighlight><br />
<br />
*Criação dos arquivos que representam os dispositivos<br />
<br />
<syntaxhighlight lang="bash"><br />
mknod -m 600 console c 5 1<br />
mknod -m 666 null c 1 3<br />
mknod -m 620 tty1 c 4 1<br />
mknod -m 620 tty2 c 4 2<br />
mknod -m 660 sda b 8 0<br />
mknod -m 660 sda1 b 8 1<br />
mknod -m 660 sda2 b 8 2<br />
</syntaxhighlight><br />
<br />
*Criação dos arquivos que representam as consolas<br />
<br />
<syntaxhighlight lang="bash"><br />
cd bin<br />
ln -s ../busybox sh<br />
ln -s ../busybox bash<br />
</syntaxhighlight><br />
<br />
*Verificar se o BusyBox está OK<br />
<br />
<syntaxhighlight lang="bash"><br />
chroot /MyDistro /busybox<br />
</syntaxhighlight><br />
<br />
=== Modificação do Grub ===<br />
Entrar no ficheiro default do grub nano /etc/grub.d/40_custom e colocar no final do ficheiro:<br />
<br />
<syntaxhighlight lang="bash"><br />
menuentry "MyDistro" {<br />
set root='hd0,msdos2' <br />
search --set=root --hint-bios=hd0,msdos2<br />
linux /bzImage root=/dev/sda2<br />
}<br />
</syntaxhighlight><br />
<br />
<br />
No final, gravar o ficheiro e executar o comando:<br />
<br />
<syntaxhighlight lang="bash"><br />
update-grub<br />
</syntaxhighlight><br />
<br />
<br />
Reiniciar e testar!</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=327Compilação do Kernel2018-08-07T16:31:24Z<p>Cláudia: /* Preparação da máquina de teste */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Instalação de pacotes adicionais ==<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
<br />
<syntaxhighlight lang="bash"><br />
mkdir MyDistro<br />
</syntaxhighlight><br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
<br />
<syntaxhighlight lang="bash"><br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
</syntaxhighlight><br />
<br />
*Descompactar os downloads<br />
<br />
<syntaxhighlight lang="bash"><br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
</syntaxhighlight><br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
<br />
<syntaxhighlight lang="bash"><br />
cd MyDistro/linux-4.17.12<br />
</syntaxhighlight><br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
<br />
<syntaxhighlight lang="bash"><br />
make mrproper<br />
</syntaxhighlight><br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
<br />
<syntaxhighlight lang="bash"><br />
make menuconfig<br />
</syntaxhighlight><br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
<br />
<syntaxhighlight lang="bash"><br />
make <br />
</syntaxhighlight><br />
<br />
ou<br />
<br />
<syntaxhighlight lang="bash"><br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
</syntaxhighlight><br />
<br />
ou <br />
<br />
<syntaxhighlight lang="bash"><br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
</syntaxhighlight><br />
<br />
*Verificar tamanho do novo Kernel<br />
<br />
<syntaxhighlight lang="bash"><br />
ls -l arch/x86/boot<br />
</syntaxhighlight><br />
<br />
<br />
Verificar o tamanho do ficheiro bzImage. <br />
<br />
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.<br />
<br />
== Compilação do BusyBox ==<br />
<br />
Entrar no directório BusyBox previamente descompactado<br />
<br />
*Entrar no menu de configuração do BusyBox<br />
<br />
<syntaxhighlight lang="bash"><br />
make menuconfig<br />
</syntaxhighlight><br />
<br />
<br />
Importante: Adicionar no menu Settings -> Build Options -> Build static binary (no shared libs)<br />
<br />
*Compilar o BusyBox<br />
<br />
<syntaxhighlight lang="bash"><br />
make <br />
</syntaxhighlight><br />
<br />
ou<br />
<br />
<syntaxhighlight lang="bash"><br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
</syntaxhighlight><br />
<br />
ou <br />
<br />
<syntaxhighlight lang="bash"><br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
</syntaxhighlight><br />
<br />
* Verificar o tamanho do novo BusyBox<br />
<br />
<syntaxhighlight lang="bash"><br />
ls -l <br />
</syntaxhighlight><br />
<br />
Verificar o tamanho do ficheiro busybox.<br />
<br />
== Preparação da máquina de teste ==<br />
O teste do novo kernel pode ser feita na máquina local. Contudo, neste tutorial foi utilizada uma máquina virtual, com 10GB de disco e duas partições, e uma distribuição linux instalada.<br />
<br />
*8GB para o sistema base <br />
*2GB para /MyDistro em jfs (ou o sistema de ficheiros que desejar)<br />
<br />
Após a instalação da máquina é necessário executar os comandos de update e upgrade:<br />
<br />
<syntaxhighlight lang="bash"><br />
sudo apt update<br />
sudo apt upgrade<br />
</syntaxhighlight><br />
<br />
<br />
Antes de passar os ficheiros, deverá verificar se a partição onde vão ficar os novos ficheiros do kernel está montada.<br />
<br />
<syntaxhighlight lang="bash"><br />
mount | grep "MyDistro"<br />
</syntaxhighlight><br />
<br />
Deverá, de seguida, passar os ficheiros do kernel, o bzImage, e o do Busybox, busybox, para a partição /MyDistro da máquina virtual.<br />
Umas das formas utilizadas para passar os ficheiros foi via ssh. E necessário instalar o pacote ssh na máquina virtual (sudo apt install ssh) e na máquina real, basta aceder a uma pasta e ligar a um servidor remoto (sftp://<ip_máquina_virtual>/<pasta>).<br />
<br />
=== Criação da estrutura de directórios e arquivos===<br />
Dentro da partição do MyDistro e em root:<br />
*Modificar dono e grupo dos arquivos anteriormente copiados<br />
<br />
<syntaxhighlight lang="bash"><br />
chown root:root busybox bzImage<br />
</syntaxhighlight><br />
<br />
*Criação dos directórios<br />
<br />
<syntaxhighlight lang="bash"><br />
mkdir sbin bin dev<br />
</syntaxhighlight><br />
<br />
*Criação de links simbólicos<br />
<br />
<syntaxhighlight lang="bash"><br />
ln -s busybox init<br />
ln -s /busybox sbin/init<br />
</syntaxhighlight><br />
<br />
*Criação dos arquivos que representam os dispositivos<br />
<br />
<syntaxhighlight lang="bash"><br />
mknod -m 600 console c 5 1<br />
mknod -m 666 null c 1 3<br />
mknod -m 620 tty1 c 4 1<br />
mknod -m 620 tty2 c 4 2<br />
mknod -m 660 sda b 8 0<br />
mknod -m 660 sda1 b 8 1<br />
mknod -m 660 sda2 b 8 2<br />
</syntaxhighlight><br />
<br />
*Criação dos arquivos que representam as consolas<br />
<br />
<syntaxhighlight lang="bash"><br />
cd bin<br />
ln -s ../busybox sh<br />
ln -s ../busybox bash<br />
</syntaxhighlight><br />
<br />
*Verificar se o BusyBox está OK<br />
<br />
<syntaxhighlight lang="bash"><br />
chroot /MyDistro /busybox<br />
</syntaxhighlight><br />
<br />
=== Modificação do Grub ===<br />
Entrar no ficheiro default do grub nano /etc/grub.d/40_custom e colocar no final do ficheiro:<br />
<br />
<syntaxhighlight lang="bash"><br />
menuentry "MyDistro" {<br />
set root='hd0,msdos2' <br />
search --set=root --hint-bios=hd0,msdos2<br />
linux /bzImage root=/dev/sda2<br />
}<br />
</syntaxhighlight><br />
<br />
<br />
No final, gravar o ficheiro e executar o comando:<br />
<br />
<syntaxhighlight lang="bash"><br />
update-grub<br />
</syntaxhighlight><br />
<br />
<br />
Reiniciar e testar!<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=326Compilação do Kernel2018-08-07T16:31:00Z<p>Cláudia: /* Genérico / Vanilla */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Instalação de pacotes adicionais ==<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
<br />
<syntaxhighlight lang="bash"><br />
mkdir MyDistro<br />
</syntaxhighlight><br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
<br />
<syntaxhighlight lang="bash"><br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
</syntaxhighlight><br />
<br />
*Descompactar os downloads<br />
<br />
<syntaxhighlight lang="bash"><br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
</syntaxhighlight><br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
<br />
<syntaxhighlight lang="bash"><br />
cd MyDistro/linux-4.17.12<br />
</syntaxhighlight><br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
<br />
<syntaxhighlight lang="bash"><br />
make mrproper<br />
</syntaxhighlight><br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
<br />
<syntaxhighlight lang="bash"><br />
make menuconfig<br />
</syntaxhighlight><br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
<br />
<syntaxhighlight lang="bash"><br />
make <br />
</syntaxhighlight><br />
<br />
ou<br />
<br />
<syntaxhighlight lang="bash"><br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
</syntaxhighlight><br />
<br />
ou <br />
<br />
<syntaxhighlight lang="bash"><br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
</syntaxhighlight><br />
<br />
*Verificar tamanho do novo Kernel<br />
<br />
<syntaxhighlight lang="bash"><br />
ls -l arch/x86/boot<br />
</syntaxhighlight><br />
<br />
<br />
Verificar o tamanho do ficheiro bzImage. <br />
<br />
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.<br />
<br />
== Compilação do BusyBox ==<br />
<br />
Entrar no directório BusyBox previamente descompactado<br />
<br />
*Entrar no menu de configuração do BusyBox<br />
<br />
<syntaxhighlight lang="bash"><br />
make menuconfig<br />
</syntaxhighlight><br />
<br />
<br />
Importante: Adicionar no menu Settings -> Build Options -> Build static binary (no shared libs)<br />
<br />
*Compilar o BusyBox<br />
<br />
<syntaxhighlight lang="bash"><br />
make <br />
</syntaxhighlight><br />
<br />
ou<br />
<br />
<syntaxhighlight lang="bash"><br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
</syntaxhighlight><br />
<br />
ou <br />
<br />
<syntaxhighlight lang="bash"><br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
</syntaxhighlight><br />
<br />
* Verificar o tamanho do novo BusyBox<br />
<br />
<syntaxhighlight lang="bash"><br />
ls -l <br />
</syntaxhighlight><br />
<br />
Verificar o tamanho do ficheiro busybox.<br />
<br />
== Preparação da máquina de teste ==<br />
O teste do novo kernel pode ser feita na máquina local. Contudo, neste tutorial foi utilizada uma máquina virtual, com 10GB de disco e duas partições, e uma distribuição linux instalada.<br />
<br />
*8GB para o sistema base <br />
*2GB para /MyDistro em jfs (ou o sistema de ficheiros que desejar)<br />
<br />
Após a instalação da máquina é necessário executar os comandos de update e upgrade:<br />
<br />
<syntaxhighlight lang="bash"><br />
sudo apt update<br />
sudo apt upgrade<br />
</syntaxhighlight><br />
<br />
Antes de passar os ficheiros, deverá verificar se a partição onde vão ficar os novos ficheiros do kernel está montada.<br />
<br />
<syntaxhighlight lang="bash"><br />
mount | grep "MyDistro"<br />
</syntaxhighlight><br />
<br />
Deverá, de seguida, passar os ficheiros do kernel, o bzImage, e o do Busybox, busybox, para a partição /MyDistro da máquina virtual.<br />
Umas das formas utilizadas para passar os ficheiros foi via ssh. E necessário instalar o pacote ssh na máquina virtual (sudo apt install ssh) e na máquina real, basta aceder a uma pasta e ligar a um servidor remoto (sftp://<ip_máquina_virtual>/<pasta>).<br />
<br />
=== Criação da estrutura de directórios e arquivos===<br />
Dentro da partição do MyDistro e em root:<br />
*Modificar dono e grupo dos arquivos anteriormente copiados<br />
<br />
<syntaxhighlight lang="bash"><br />
chown root:root busybox bzImage<br />
</syntaxhighlight><br />
<br />
*Criação dos directórios<br />
<br />
<syntaxhighlight lang="bash"><br />
mkdir sbin bin dev<br />
</syntaxhighlight><br />
<br />
*Criação de links simbólicos<br />
<br />
<syntaxhighlight lang="bash"><br />
ln -s busybox init<br />
ln -s /busybox sbin/init<br />
</syntaxhighlight><br />
<br />
*Criação dos arquivos que representam os dispositivos<br />
<br />
<syntaxhighlight lang="bash"><br />
mknod -m 600 console c 5 1<br />
mknod -m 666 null c 1 3<br />
mknod -m 620 tty1 c 4 1<br />
mknod -m 620 tty2 c 4 2<br />
mknod -m 660 sda b 8 0<br />
mknod -m 660 sda1 b 8 1<br />
mknod -m 660 sda2 b 8 2<br />
</syntaxhighlight><br />
<br />
*Criação dos arquivos que representam as consolas<br />
<br />
<syntaxhighlight lang="bash"><br />
cd bin<br />
ln -s ../busybox sh<br />
ln -s ../busybox bash<br />
</syntaxhighlight><br />
<br />
*Verificar se o BusyBox está OK<br />
<br />
<syntaxhighlight lang="bash"><br />
chroot /MyDistro /busybox<br />
</syntaxhighlight><br />
<br />
=== Modificação do Grub ===<br />
Entrar no ficheiro default do grub nano /etc/grub.d/40_custom e colocar no final do ficheiro:<br />
<br />
<syntaxhighlight lang="bash"><br />
menuentry "MyDistro" {<br />
set root='hd0,msdos2' <br />
search --set=root --hint-bios=hd0,msdos2<br />
linux /bzImage root=/dev/sda2<br />
}<br />
</syntaxhighlight><br />
<br />
<br />
No final, gravar o ficheiro e executar o comando:<br />
<br />
<syntaxhighlight lang="bash"><br />
update-grub<br />
</syntaxhighlight><br />
<br />
<br />
Reiniciar e testar!<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=325Compilação do Kernel2018-08-07T16:25:46Z<p>Cláudia: /* Modificação do Grub */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Instalação de pacotes adicionais ==<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
make menuconfig<br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
make <br />
<br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
<br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
*Verificar tamanho do novo Kernel<br />
<br />
ls -l arch/x86/boot<br />
<br />
Verificar o tamanho do ficheiro bzImage. <br />
<br />
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.<br />
<br />
== Compilação do BusyBox ==<br />
<br />
Entrar no directório BusyBox previamente descompactado<br />
<br />
*Entrar no menu de configuração do BusyBox<br />
make menuconfig<br />
<br />
<br />
Importante: Adicionar no menu Settings -> Build Options -> Build static binary (no shared libs)<br />
<br />
*Compilar o BusyBox<br />
make <br />
<br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
<br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
<br />
* Verificar o tamanho do novo BusyBox<br />
ls -l <br />
<br />
Verificar o tamanho do ficheiro busybox.<br />
<br />
== Preparação da máquina de teste ==<br />
O teste do novo kernel pode ser feita na máquina local. Contudo, neste tutorial foi utilizada uma máquina virtual, com 10GB de disco e duas partições, e uma distribuição linux instalada.<br />
<br />
*8GB para o sistema base <br />
*2GB para /MyDistro em jfs (ou o sistema de ficheiros que desejar)<br />
<br />
Após a instalação da máquina é necessário executar os comandos de update e upgrade:<br />
sudo apt update<br />
sudo apt upgrade<br />
<br />
Antes de passar os ficheiros, deverá verificar se a partição onde vão ficar os novos ficheiros do kernel está montada.<br />
mount | grep "MyDistro"<br />
<br />
<br />
Deverá, de seguida, passar os ficheiros do kernel, o bzImage, e o do Busybox, busybox, para a partição /MyDistro da máquina virtual.<br />
Umas das formas utilizadas para passar os ficheiros foi via ssh. E necessário instalar o pacote ssh na máquina virtual (sudo apt install ssh) e na máquina real, basta aceder a uma pasta e ligar a um servidor remoto (sftp://<ip_máquina_virtual>/<pasta>).<br />
<br />
=== Criação da estrutura de directórios e arquivos===<br />
Dentro da partição do MyDistro e em root:<br />
*Modificar dono e grupo dos arquivos anteriormente copiados<br />
chown root:root busybox bzImage<br />
<br />
*Criação dos directórios<br />
mkdir sbin bin dev<br />
<br />
*Criação de links simbólicos<br />
ln -s busybox init<br />
ln -s /busybox sbin/init<br />
<br />
*Criação dos arquivos que representam os dispositivos<br />
mknod -m 600 console c 5 1<br />
mknod -m 666 null c 1 3<br />
mknod -m 620 tty1 c 4 1<br />
mknod -m 620 tty2 c 4 2<br />
mknod -m 660 sda b 8 0<br />
mknod -m 660 sda1 b 8 1<br />
mknod -m 660 sda2 b 8 2<br />
<br />
*Criação dos arquivos que representam as consolas<br />
cd bin<br />
ln -s ../busybox sh<br />
ln -s ../busybox bash<br />
<br />
*Verificar se o BusyBox está OK<br />
chroot /MyDistro /busybox<br />
<br />
<br />
=== Modificação do Grub ===<br />
Entrar no ficheiro default do grub nano /etc/grub.d/40_custom e colocar no final do ficheiro:<br />
menuentry "MyDistro" {<br />
set root='hd0,msdos2' <br />
search --set=root --hint-bios=hd0,msdos2<br />
linux /bzImage root=/dev/sda2<br />
}<br />
<br />
<br />
No final, gravar o ficheiro e executar o comando:<br />
update-grub<br />
<br />
<br />
Reiniciar e testar!<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=324Compilação do Kernel2018-08-07T16:25:17Z<p>Cláudia: /* Modificação do Grub */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Instalação de pacotes adicionais ==<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
make menuconfig<br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
make <br />
<br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
<br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
*Verificar tamanho do novo Kernel<br />
<br />
ls -l arch/x86/boot<br />
<br />
Verificar o tamanho do ficheiro bzImage. <br />
<br />
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.<br />
<br />
== Compilação do BusyBox ==<br />
<br />
Entrar no directório BusyBox previamente descompactado<br />
<br />
*Entrar no menu de configuração do BusyBox<br />
make menuconfig<br />
<br />
<br />
Importante: Adicionar no menu Settings -> Build Options -> Build static binary (no shared libs)<br />
<br />
*Compilar o BusyBox<br />
make <br />
<br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
<br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
<br />
* Verificar o tamanho do novo BusyBox<br />
ls -l <br />
<br />
Verificar o tamanho do ficheiro busybox.<br />
<br />
== Preparação da máquina de teste ==<br />
O teste do novo kernel pode ser feita na máquina local. Contudo, neste tutorial foi utilizada uma máquina virtual, com 10GB de disco e duas partições, e uma distribuição linux instalada.<br />
<br />
*8GB para o sistema base <br />
*2GB para /MyDistro em jfs (ou o sistema de ficheiros que desejar)<br />
<br />
Após a instalação da máquina é necessário executar os comandos de update e upgrade:<br />
sudo apt update<br />
sudo apt upgrade<br />
<br />
Antes de passar os ficheiros, deverá verificar se a partição onde vão ficar os novos ficheiros do kernel está montada.<br />
mount | grep "MyDistro"<br />
<br />
<br />
Deverá, de seguida, passar os ficheiros do kernel, o bzImage, e o do Busybox, busybox, para a partição /MyDistro da máquina virtual.<br />
Umas das formas utilizadas para passar os ficheiros foi via ssh. E necessário instalar o pacote ssh na máquina virtual (sudo apt install ssh) e na máquina real, basta aceder a uma pasta e ligar a um servidor remoto (sftp://<ip_máquina_virtual>/<pasta>).<br />
<br />
=== Criação da estrutura de directórios e arquivos===<br />
Dentro da partição do MyDistro e em root:<br />
*Modificar dono e grupo dos arquivos anteriormente copiados<br />
chown root:root busybox bzImage<br />
<br />
*Criação dos directórios<br />
mkdir sbin bin dev<br />
<br />
*Criação de links simbólicos<br />
ln -s busybox init<br />
ln -s /busybox sbin/init<br />
<br />
*Criação dos arquivos que representam os dispositivos<br />
mknod -m 600 console c 5 1<br />
mknod -m 666 null c 1 3<br />
mknod -m 620 tty1 c 4 1<br />
mknod -m 620 tty2 c 4 2<br />
mknod -m 660 sda b 8 0<br />
mknod -m 660 sda1 b 8 1<br />
mknod -m 660 sda2 b 8 2<br />
<br />
*Criação dos arquivos que representam as consolas<br />
cd bin<br />
ln -s ../busybox sh<br />
ln -s ../busybox bash<br />
<br />
*Verificar se o BusyBox está OK<br />
chroot /MyDistro /busybox<br />
<br />
<br />
=== Modificação do Grub ===<br />
Entrar no ficheiro default do grub nano /etc/grub.d/40_custom e colocar no final do ficheiro:<br />
menuentry "MyDistro" {<br />
set root='hd0,msdos2' <br />
search --set=root --hint-bios=hd0,msdos2<br />
linux /bzImage root=/dev/sda2<br />
}<br />
<br />
No final, gravar o ficheiro e executar o comando:<br />
update-grub<br />
<br />
<br />
Reiniciar e testar!<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=323Compilação do Kernel2018-08-07T16:24:48Z<p>Cláudia: /* Modificação do Grub */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Instalação de pacotes adicionais ==<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
make menuconfig<br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
make <br />
<br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
<br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
*Verificar tamanho do novo Kernel<br />
<br />
ls -l arch/x86/boot<br />
<br />
Verificar o tamanho do ficheiro bzImage. <br />
<br />
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.<br />
<br />
== Compilação do BusyBox ==<br />
<br />
Entrar no directório BusyBox previamente descompactado<br />
<br />
*Entrar no menu de configuração do BusyBox<br />
make menuconfig<br />
<br />
<br />
Importante: Adicionar no menu Settings -> Build Options -> Build static binary (no shared libs)<br />
<br />
*Compilar o BusyBox<br />
make <br />
<br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
<br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
<br />
* Verificar o tamanho do novo BusyBox<br />
ls -l <br />
<br />
Verificar o tamanho do ficheiro busybox.<br />
<br />
== Preparação da máquina de teste ==<br />
O teste do novo kernel pode ser feita na máquina local. Contudo, neste tutorial foi utilizada uma máquina virtual, com 10GB de disco e duas partições, e uma distribuição linux instalada.<br />
<br />
*8GB para o sistema base <br />
*2GB para /MyDistro em jfs (ou o sistema de ficheiros que desejar)<br />
<br />
Após a instalação da máquina é necessário executar os comandos de update e upgrade:<br />
sudo apt update<br />
sudo apt upgrade<br />
<br />
Antes de passar os ficheiros, deverá verificar se a partição onde vão ficar os novos ficheiros do kernel está montada.<br />
mount | grep "MyDistro"<br />
<br />
<br />
Deverá, de seguida, passar os ficheiros do kernel, o bzImage, e o do Busybox, busybox, para a partição /MyDistro da máquina virtual.<br />
Umas das formas utilizadas para passar os ficheiros foi via ssh. E necessário instalar o pacote ssh na máquina virtual (sudo apt install ssh) e na máquina real, basta aceder a uma pasta e ligar a um servidor remoto (sftp://<ip_máquina_virtual>/<pasta>).<br />
<br />
=== Criação da estrutura de directórios e arquivos===<br />
Dentro da partição do MyDistro e em root:<br />
*Modificar dono e grupo dos arquivos anteriormente copiados<br />
chown root:root busybox bzImage<br />
<br />
*Criação dos directórios<br />
mkdir sbin bin dev<br />
<br />
*Criação de links simbólicos<br />
ln -s busybox init<br />
ln -s /busybox sbin/init<br />
<br />
*Criação dos arquivos que representam os dispositivos<br />
mknod -m 600 console c 5 1<br />
mknod -m 666 null c 1 3<br />
mknod -m 620 tty1 c 4 1<br />
mknod -m 620 tty2 c 4 2<br />
mknod -m 660 sda b 8 0<br />
mknod -m 660 sda1 b 8 1<br />
mknod -m 660 sda2 b 8 2<br />
<br />
*Criação dos arquivos que representam as consolas<br />
cd bin<br />
ln -s ../busybox sh<br />
ln -s ../busybox bash<br />
<br />
*Verificar se o BusyBox está OK<br />
chroot /MyDistro /busybox<br />
<br />
<br />
=== Modificação do Grub ===<br />
Entrar no ficheiro default do grub nano /etc/grub.d/40_custom e colocar no final do ficheiro:<br />
menuentry "MyDistro" {<br />
set root='hd0,msdos2' <br />
search --set=root --hint-bios=hd0,msdos2<br />
linux /bzImage root=/dev/sda2<br />
}<br />
<br />
No final, gravar o ficheiro e executar o comando:<br />
update-grub<br />
<br />
<br />
Reiniciar e testar!<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=322Compilação do Kernel2018-08-07T16:24:19Z<p>Cláudia: /* Preparação da máquina de teste */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Instalação de pacotes adicionais ==<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
make menuconfig<br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
make <br />
<br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
<br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
*Verificar tamanho do novo Kernel<br />
<br />
ls -l arch/x86/boot<br />
<br />
Verificar o tamanho do ficheiro bzImage. <br />
<br />
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.<br />
<br />
== Compilação do BusyBox ==<br />
<br />
Entrar no directório BusyBox previamente descompactado<br />
<br />
*Entrar no menu de configuração do BusyBox<br />
make menuconfig<br />
<br />
<br />
Importante: Adicionar no menu Settings -> Build Options -> Build static binary (no shared libs)<br />
<br />
*Compilar o BusyBox<br />
make <br />
<br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
<br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
<br />
* Verificar o tamanho do novo BusyBox<br />
ls -l <br />
<br />
Verificar o tamanho do ficheiro busybox.<br />
<br />
== Preparação da máquina de teste ==<br />
O teste do novo kernel pode ser feita na máquina local. Contudo, neste tutorial foi utilizada uma máquina virtual, com 10GB de disco e duas partições, e uma distribuição linux instalada.<br />
<br />
*8GB para o sistema base <br />
*2GB para /MyDistro em jfs (ou o sistema de ficheiros que desejar)<br />
<br />
Após a instalação da máquina é necessário executar os comandos de update e upgrade:<br />
sudo apt update<br />
sudo apt upgrade<br />
<br />
Antes de passar os ficheiros, deverá verificar se a partição onde vão ficar os novos ficheiros do kernel está montada.<br />
mount | grep "MyDistro"<br />
<br />
<br />
Deverá, de seguida, passar os ficheiros do kernel, o bzImage, e o do Busybox, busybox, para a partição /MyDistro da máquina virtual.<br />
Umas das formas utilizadas para passar os ficheiros foi via ssh. E necessário instalar o pacote ssh na máquina virtual (sudo apt install ssh) e na máquina real, basta aceder a uma pasta e ligar a um servidor remoto (sftp://<ip_máquina_virtual>/<pasta>).<br />
<br />
=== Criação da estrutura de directórios e arquivos===<br />
Dentro da partição do MyDistro e em root:<br />
*Modificar dono e grupo dos arquivos anteriormente copiados<br />
chown root:root busybox bzImage<br />
<br />
*Criação dos directórios<br />
mkdir sbin bin dev<br />
<br />
*Criação de links simbólicos<br />
ln -s busybox init<br />
ln -s /busybox sbin/init<br />
<br />
*Criação dos arquivos que representam os dispositivos<br />
mknod -m 600 console c 5 1<br />
mknod -m 666 null c 1 3<br />
mknod -m 620 tty1 c 4 1<br />
mknod -m 620 tty2 c 4 2<br />
mknod -m 660 sda b 8 0<br />
mknod -m 660 sda1 b 8 1<br />
mknod -m 660 sda2 b 8 2<br />
<br />
*Criação dos arquivos que representam as consolas<br />
cd bin<br />
ln -s ../busybox sh<br />
ln -s ../busybox bash<br />
<br />
*Verificar se o BusyBox está OK<br />
chroot /MyDistro /busybox<br />
<br />
<br />
=== Modificação do Grub ===<br />
Entrar no ficheiro default do grub nano /etc/grub.d/40_custom e colocar no final do ficheiro:<br />
menuentry "MyDistro" {<br />
set root='hd0,msdos2' <br />
search --set=root --hint-bios=hd0,msdos2<br />
linux /bzImage root=/dev/sda2<br />
}<br />
<br />
No final, gravar o ficheiro e executar o comando:<br />
update-grub<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=321Compilação do Kernel2018-08-07T16:10:22Z<p>Cláudia: /* Preparação da máquina de teste */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Instalação de pacotes adicionais ==<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
make menuconfig<br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
make <br />
<br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
<br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
*Verificar tamanho do novo Kernel<br />
<br />
ls -l arch/x86/boot<br />
<br />
Verificar o tamanho do ficheiro bzImage. <br />
<br />
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.<br />
<br />
== Compilação do BusyBox ==<br />
<br />
Entrar no directório BusyBox previamente descompactado<br />
<br />
*Entrar no menu de configuração do BusyBox<br />
make menuconfig<br />
<br />
<br />
Importante: Adicionar no menu Settings -> Build Options -> Build static binary (no shared libs)<br />
<br />
*Compilar o BusyBox<br />
make <br />
<br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
<br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
<br />
* Verificar o tamanho do novo BusyBox<br />
ls -l <br />
<br />
Verificar o tamanho do ficheiro busybox.<br />
<br />
== Preparação da máquina de teste ==<br />
O teste do novo kernel pode ser feita na máquina local. Contudo, neste tutorial foi utilizada uma máquina virtual, com 10GB de disco e duas partições, e uma distribuição linux instalada.<br />
<br />
*8GB para o sistema base <br />
*2GB para /MyDistro em jfs (ou o sistema de ficheiros que desejar)<br />
<br />
Após a instalação da máquina é necessário executar os comandos de update e upgrade:<br />
sudo apt update<br />
sudo apt upgrade<br />
<br />
Antes de passar os ficheiros, deverá verificar se a partição onde vão ficar os novos ficheiros do kernel está montada.<br />
mount | grep "MyDistro"<br />
<br />
<br />
Deverá, de seguida, passar os ficheiros do kernel, o bzImage, e o do Busybox, busybox, para a partição /MyDistro da máquina virtual.<br />
Umas das formas utilizadas para passar os ficheiros foi via ssh. E necessário instalar o pacote ssh na máquina virtual (sudo apt install ssh) e na máquina real, basta aceder a uma pasta e ligar a um servidor remoto (sftp://<ip_máquina_virtual>/<pasta>).<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=320Compilação do Kernel2018-08-07T16:06:15Z<p>Cláudia: /* Genérico / Vanilla */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Instalação de pacotes adicionais ==<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
make menuconfig<br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
make <br />
<br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
<br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
*Verificar tamanho do novo Kernel<br />
<br />
ls -l arch/x86/boot<br />
<br />
Verificar o tamanho do ficheiro bzImage. <br />
<br />
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.<br />
<br />
== Compilação do BusyBox ==<br />
<br />
Entrar no directório BusyBox previamente descompactado<br />
<br />
*Entrar no menu de configuração do BusyBox<br />
make menuconfig<br />
<br />
<br />
Importante: Adicionar no menu Settings -> Build Options -> Build static binary (no shared libs)<br />
<br />
*Compilar o BusyBox<br />
make <br />
<br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
<br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
<br />
* Verificar o tamanho do novo BusyBox<br />
ls -l <br />
<br />
Verificar o tamanho do ficheiro busybox.<br />
<br />
== Preparação da máquina de teste ==<br />
O teste do novo kernel pode ser feita na máquina local. Contudo, neste tutorial foi utilizada uma máquina virtual, com 10GB de disco e duas partições, e uma distribuição linux instalada.<br />
<br />
*8GB para o sistema base <br />
*2GB para /MyDistro em jfs (ou o sistema de ficheiros que desejar)<br />
<br />
Após a instalação da máquina é necessário executar os comandos de update e upgrade:<br />
sudo apt update<br />
sudo apt upgrade<br />
<br />
<br />
Deverá, de seguida, passar os ficheiros do kernel, o bzImage, e o do Busybox, busybox, para a partição /MyDistro da máquina virtual.<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=319Compilação do Kernel2018-08-07T16:01:51Z<p>Cláudia: /* Compilação do BusyBox */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Instalação de pacotes adicionais ==<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
make menuconfig<br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
make <br />
<br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
<br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
*Verificar tamanho do novo Kernel<br />
<br />
ls -l arch/x86/boot<br />
<br />
Verificar o tamanho do ficheiro bzImage. <br />
<br />
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.<br />
<br />
== Compilação do BusyBox ==<br />
<br />
Entrar no directório BusyBox previamente descompactado<br />
<br />
*Entrar no menu de configuração do BusyBox<br />
make menuconfig<br />
<br />
<br />
Importante: Adicionar no menu Settings -> Build Options -> Build static binary (no shared libs)<br />
<br />
*Compilar o BusyBox<br />
make <br />
<br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
<br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
<br />
* Verificar o tamanho do novo BusyBox<br />
ls -l <br />
<br />
Verificar o tamanho do ficheiro busybox.<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=318Compilação do Kernel2018-08-07T16:00:50Z<p>Cláudia: /* Compilação do BusyBox */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Instalação de pacotes adicionais ==<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
make menuconfig<br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
make <br />
<br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
<br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
*Verificar tamanho do novo Kernel<br />
<br />
ls -l arch/x86/boot<br />
<br />
Verificar o tamanho do ficheiro bzImage. <br />
<br />
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.<br />
<br />
== Compilação do BusyBox ==<br />
<br />
Entrar no directório BusyBox previamente descompactado<br />
<br />
*Entrar no menu de configuração do BusyBox<br />
make menuconfig<br />
<br />
<br />
Importante: Adicionar no menu Settings -> Build Options -> Build static binary (no shared libs)<br />
<br />
*Compilar o BusyBox<br />
make <br />
<br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
<br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
* Verificar o tamanho do ficheiro<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=317Compilação do Kernel2018-08-07T15:58:37Z<p>Cláudia: /* Genérico / Vanilla */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Instalação de pacotes adicionais ==<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
make menuconfig<br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
make <br />
<br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
<br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
*Verificar tamanho do novo Kernel<br />
<br />
ls -l arch/x86/boot<br />
<br />
Verificar o tamanho do ficheiro bzImage. <br />
<br />
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.<br />
<br />
== Compilação do BusyBox ==<br />
<br />
Entrar no directório BusyBox previamente descompactado<br />
<br />
*Entrar no menu de configuração do BusyBox<br />
make menuconfig<br />
<br />
<br />
Importante: Adicionar no menu Settings -> Build Options -> Build static binary (no shared libs)<br />
<br />
*Compilar o BusyBox<br />
make <br />
<br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
<br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=316Compilação do Kernel2018-08-07T15:58:09Z<p>Cláudia: /* Compilação do BusyBox */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Instalação de pacotes adicionais ==<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
make menuconfig<br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
make <br />
<br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
<br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
*Verificar tamanho do novo Kernel<br />
<br />
ls -l arch/x86/boot<br />
<br />
Verificar o tamanho do ficheiro bzImage. <br />
<br />
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.<br />
<br />
== Compilação do BusyBox ==<br />
<br />
Entrar no directório BusyBox previamente descompactado<br />
<br />
*Entrar no menu de configuração do BusyBox<br />
make menuconfig<br />
<br />
<br />
Importante: Adicionar no menu Settings -> Build Options -> Build static binary (no shared libs)<br />
<br />
*Compilar o busybox<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=315Compilação do Kernel2018-08-07T15:51:59Z<p>Cláudia: /* Compilação do BusyBox */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Instalação de pacotes adicionais ==<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
make menuconfig<br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
make <br />
<br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
<br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
*Verificar tamanho do novo Kernel<br />
<br />
ls -l arch/x86/boot<br />
<br />
Verificar o tamanho do ficheiro bzImage. <br />
<br />
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.<br />
<br />
== Compilação do BusyBox ==<br />
<br />
Entrar no directório BusyBox previamente descompactado<br />
<br />
*Entrar no menu de configuração do BusyBox<br />
make menuconfig<br />
<br />
Importante: Adicionar no menu Settings -> Build Options -> Build static binary (no shared libs)<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=314Compilação do Kernel2018-08-07T12:18:10Z<p>Cláudia: /* Compilação do Kernel */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Instalação de pacotes adicionais ==<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
make menuconfig<br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
make <br />
<br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
<br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
*Verificar tamanho do novo Kernel<br />
<br />
ls -l arch/x86/boot<br />
<br />
Verificar o tamanho do ficheiro bzImage. <br />
<br />
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.<br />
<br />
== Compilação do BusyBox ==<br />
<br />
Entrar no directório BusyBox previamente descompactado<br />
<br />
*Entrar no menu de configuração do BusyBox<br />
make menuconfig<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=313Compilação do Kernel2018-08-06T18:56:40Z<p>Cláudia: /* Compilação do BusyBox */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Instalação de pacotes adicionais ==<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
make menuconfig<br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
make <br />
<br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
<br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
*Verificar tamanho do novo Kernel<br />
<br />
ls -l arch/x86/boot<br />
<br />
Verificar o tamanho do ficheiro bzImage. <br />
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.<br />
<br />
== Compilação do BusyBox ==<br />
<br />
Entrar no directório BusyBox previamente descompactado<br />
<br />
*Entrar no menu de configuração do BusyBox<br />
make menuconfig<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=312Compilação do Kernel2018-08-06T18:38:23Z<p>Cláudia: /* Compilação do Kernel */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Instalação de pacotes adicionais ==<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
make menuconfig<br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
make <br />
<br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
<br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
*Verificar tamanho do novo Kernel<br />
<br />
ls -l arch/x86/boot<br />
<br />
Verificar o tamanho do ficheiro bzImage. <br />
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.<br />
<br />
== Compilação do BusyBox ==<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=311Compilação do Kernel2018-08-06T18:38:04Z<p>Cláudia: /* Genérico / Vanilla */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Instalação de pacotes adicionais ==<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
make menuconfig<br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
make <br />
<br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
<br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
*Verificar tamanho do novo Kernel<br />
<br />
ls -l arch/x86/boot<br />
<br />
Verificar o tamanho do ficheiro bzImage. <br />
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB. <br />
<br />
<br />
== Compilação do BusyBox ==<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=310Compilação do Kernel2018-08-06T18:34:32Z<p>Cláudia: /* Compilação do Kernel */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Instalação de pacotes adicionais ==<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
make menuconfig<br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
make <br />
<br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui) <br />
<br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=309Compilação do Kernel2018-08-06T18:34:04Z<p>Cláudia: /* Compilação do Kernel */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Instalação de pacotes adicionais ==<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
make menuconfig<br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
make <br />
<br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de cores que o processador possui) <br />
<br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=308Compilação do Kernel2018-08-06T18:33:49Z<p>Cláudia: /* Compilação do Kernel */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Instalação de pacotes adicionais ==<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
make menuconfig<br />
<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
make <br />
<br />
ou<br />
<br />
<br />
make -j4 (em que o 4 corresponde ao número de cores que o processador possui) <br />
<br />
ou <br />
<br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=307Compilação do Kernel2018-08-06T18:33:32Z<p>Cláudia: /* Compilação do Kernel */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Instalação de pacotes adicionais ==<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
make menuconfig<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
make <br />
<br />
ou<br />
<br />
make -j4 (em que o 4 corresponde ao número de cores que o processador possui) <br />
<br />
ou <br />
<br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=306Compilação do Kernel2018-08-06T18:33:07Z<p>Cláudia: /* Compilação do Kernel */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Instalação de pacotes adicionais ==<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
make menuconfig<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
make <br />
<br />
ou<br />
make -j4 (em que o 4 corresponde ao número de cores que o processador possui) <br />
<br />
ou <br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=305Compilação do Kernel2018-08-06T18:32:48Z<p>Cláudia: /* Compilação do Kernel */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Instalação de pacotes adicionais ==<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.<br />
<br />
*Entrar no menu de configuração do Kernel.<br />
make menuconfig<br />
<br />
Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.<br />
<br />
*Compilar o novo Kernel.<br />
make <br />
ou<br />
make -j4 (em que o 4 corresponde ao número de cores que o processador possui) <br />
ou <br />
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=304Compilação do Kernel2018-08-06T18:28:02Z<p>Cláudia: /* Instalação de pacotes adicionais */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Instalação de pacotes adicionais ==<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
<br />
*<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=303Compilação do Kernel2018-08-06T18:27:54Z<p>Cláudia: /* Genérico / Vanilla */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Instalação de pacotes adicionais ==<br />
*build-essential<br />
*libncurses-dev<br />
*bison<br />
*flex<br />
*libelf-dev<br />
<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
<br />
*<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=302Compilação do Kernel2018-08-06T18:26:10Z<p>Cláudia: /* Compilação do Kernel */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
<br />
*<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=301Compilação do Kernel2018-08-06T18:25:55Z<p>Cláudia: /* Pré-configuração */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
*<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=300Compilação do Kernel2018-08-06T18:25:43Z<p>Cláudia: /* Pré-configuração */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
*<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Compila%C3%A7%C3%A3o_do_Kernel&diff=299Compilação do Kernel2018-08-06T18:22:33Z<p>Cláudia: /* Genérico / Vanilla */</p>
<hr />
<div>= Genérico / Vanilla =<br />
<br />
== Fazer o download do kernel e do BusyBox ==<br />
[http://www.kernel.org Kernel Vanilla]<br />
<br />
[http://www.busybox.net BusyBox]<br />
<br />
== Pré-configuração ==<br />
*Criação de um directório de trabalho<br />
mkdir MyDistro<br />
<br />
*Mover os downloads efectuados para o directório anteriormente criado<br />
mv Transferências/linux-4.17.12.tar.xz MyDistro/<br />
mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/<br />
cd MyDistro<br />
<br />
*Descompactar os downloads<br />
tar -jxf busybox-1.29.2.tar.bz2<br />
tar -Jxf linux-4.17.12.tar.xz<br />
<br />
== Compilação do Kernel ==<br />
*Entrar no directório descompactado do Kernel<br />
cd MyDistro/linux-4.17.12<br />
<br />
*Limpar a pasta do código fonte de todas as configurações e objectos já construídos.<br />
make mrproper<br />
<br />
*<br />
<br />
= Gentoo =<br />
<br />
= Ubuntu =<br />
<br />
= CentOS =</div>Cláudiahttps://tecporto.pt/wiki/index.php?title=Introdu%C3%A7%C3%A3o_%C3%A0_utiliza%C3%A7%C3%A3o_de_iptables&diff=201Introdução à utilização de iptables2018-06-07T16:12:49Z<p>Cláudia: /* Regras */</p>
<hr />
<div>= Vantagens e desvantagens =<br />
<br />
* Grande estabilidade, confiabilidade e escalável.<br />
* Económicas tanto monetariamente como em termos de recursos computacionais.<br />
* Mais eficazes.<br />
* Maior liberdade de configuração.<br />
<br />
* Necessário vasto conhecimento do funcionamento interno do Linux.<br />
* Não é uma solução rápida de implementar.<br />
* Não possui grandes ferramentas gráficas nativas de configuração (excepto de terceiros).<br />
* Configurações perdidas após reiniciar o sistema.<br />
<br />
= Exemplos = <br />
iptables -A INPUT -p tcp -s 192.168.219.0/255.255.255.0 -j ACCEPT<br />
<br />
Todas as configurações de regras da firewall são aplicadas através do comando “iptables”.<br />
<br />
Em seguida vem uma condição, indicada pela opção "-A".<br />
<br />
As opções “INPUT -p tcp -s 192.168.219.0/255.255.255.0", aplicam-se a qualquer pacote de entrada (INPUT), utilizando o protocolo TCP (-p tcp), proveniente dos computadores da rede local (192.168.200.0/255.255.255.0).<br />
<br />
O "-j ACCEPT" indica que ação deve ser tomada e, neste caso, diz que estes pacotes devem ser aceites.<br />
<br />
= Criação de um cenário prático =<br />
<br />
* Instalar e configurar máquina virtual com o ubuntu server:<br />
** Actualizar a máquina virtual (apt-get update && apt-get upgrade)<br />
** Activar utilizador root (sudo passwd root)<br />
<br />
* Instalar o seguintes serviços:<br />
** Apache<br />
*** apt-get install lamp-server^<br />
** SSH<br />
*** apt-get install ssh<br />
** FTP<br />
*** apt-get install vsftpd<br />
<br />
== Instalação de serviços para testes ==<br />
<br />
===Configuração de uma página===<br />
<syntaxhighlight lang="bash"><br />
cd /var/www/html<br />
cp index.html index_old.html<br />
nano index.html<br />
<html><br />
<body><br />
Escrever texto aqui….<br />
</body><br />
</html><br />
service apache2 restart (se necessário)</syntaxhighlight><br />
<br />
* Aceder ao IP da máquina no browser<br />
<br />
===Configuração do vsftpd===<br />
<syntaxhighlight lang="bash"><br />
cp /etc/vsftpd.conf /etc/vsftpd_back.conf <br />
adduser teste<br />
mkdir /home/teste/ftp<br />
chown nobody:nogroup /home/teste/ftp<br />
chmod a-w /home/teste/ftp (as permissões atribuídas são 555)<br />
ls –la /home/teste/ftp<br />
touch /home/teste/ftp/test.txt<br />
echo “teste de acesso” > /home/teste/ftp/test.txt<br />
</syntaxhighlight><br />
<br />
<syntaxhighlight lang="bash">nano /etc/vsftpd.conf (ou vi)</syntaxhighlight><br />
<br />
Descomentar a linha write_enable=YES<br />
Descomentar a linha chroot_local_user=YES<br />
Adicionar as linhas no fim do ficheiro<br />
<br />
<syntaxhighlight lang="bash"><br />
user_sub_token=$USER<br />
local_root=/home/$USER/ftp<br />
pasv_min_port=40000<br />
pasv_max_port=50000<br />
userlist_enable=YES<br />
userlist_file=/etc/vsftpd.userlist<br />
userlist_deny=NO<br />
</syntaxhighlight><br />
<br />
<br />
<syntaxhighlight lang="bash"><br />
touch /etc/vsftpd.userlist<br />
echo “teste” > /etc/vsftpd.userlist<br />
service vsftpd restart<br />
</syntaxhighlight><br />
<br />
<br />
<syntaxhighlight lang="bash">ftp –p <ip do servidor></syntaxhighlight><br />
Efectuar o login<br />
ls <br />
quit<br />
<br />
=== Portos utilizados pelos serviços===<br />
* HTTP – 80<br />
* SSH – 22<br />
* FTP – 20 e 21<br />
<br />
== Regras ==<br />
Limpar todas as regras<br />
<br />
iptables –F INPUT<br />
iptables –F OUTPUT<br />
iptables –F FORWARD<br />
<br />
Bloquear pacotes mal formados<br />
<br />
iptables -A INPUT -m state --state INVALID -j DROP<br />
<br />
Permitir ligações para o endereço de loopback<br />
<br />
iptables -A INPUT -i lo -j ACCEPT<br />
<br />
Bloquear uma ligação FTP a um IP especifico<br />
iptables –A INPUT –p tcp –s <IP_A_BLOQUEAR> --dport 21 –j REJECT<br />
<br />
Abrir as portas para o servidor FTP<br />
<br />
iptables –A INPUT –p tcp –m multiport --dport 80, 20, 21, 40000, 50000 –j ACCEPT<br />
<br />
Permitir uma ligação SSH a um IP especifico<br />
<br />
iptables –A INPUT –p tcp –s <IP_A_PERMITIR> --dport 22 –j ACCEPT<br />
<br />
Rejeitar as portas para o serviço SSH<br />
<br />
iptables –A INPUT –p tcp --dport 22 –j REJECT<br />
<br />
Bloquear network flood na porta 80<br />
<br />
iptables –A INPUT –p tcp --dport 80 –m limit --limit 100/minute --limit-burst 200 –j ACCEPT<br />
<br />
Bloquear o acesso ssh de uma máquina em especifica <br />
<br />
iptables –A INPUT –p tcp –s <IP_A_BLOQUEAR> --dport ssh –j DROP<br />
<br />
Permitir o acesso a um IP à página web<br />
<br />
iptables –A INPUT –p tcp –s <IP_A_PERMITIR> --dport 80 –j ACCEPT<br />
<br />
Bloquear a toda a rede o acesso à página web<br />
<br />
iptables –A INPUT –p tcp –s <IP_REDE> --dport 80 –j DROP<br />
<br />
Permitir o ping request de uma máquina especifica<br />
<br />
iptables –A INPUT –s <IP_MAQUINA> –p icmp --icmp-type echo-request –j ACCEPT<br />
<br />
Bloquear ping request<br />
<br />
iptables –A INPUT –p icmp --icmp-type echo-request –j DROP<br />
<br />
Bloquear o acesso telnet<br />
<br />
iptables –A INPUT –p tcp –s <IP_A_BLOQUEAR> --dport telnet –j REJECT<br />
<br />
Permitir a rede local<br />
<br />
iptables –A INPUT –p tcp –syn –s <IP_REDE_LOCAL> -j ACCEPT<br />
<br />
Protecção contra MAC Spoofing<br />
<br />
iptables –A INPUT –s <IP_MAQUINA> -m mac --mac-source <MAC_MAQUINA> –j ACCPET</div>Cláudia