Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[kernel] mini how-to - versao 3

2 views
Skip to first unread message

Nbk

unread,
Dec 1, 2003, 12:09:59 AM12/1/03
to

Boas.

Lanço hoje a terceira versão deste mini-howto, revisto e
actualizado. Desde já agradeço a todos pelas correcções que enviaram,
e pela participação que tiveram nos threads que se seguiram aos
howto's anteriores.

Este artigo é dirigido sobretudo aqueles utilizadores que ainda não
experimentaram configurar, compilar e instalar um kernel de raiz nas
suas distribuições linux.

Para quem já o sabe fazer muito provavelmente o artigo não trará
nada de novo. :-)

Este mini how-to foi feito para uma distribuição redhat. Se calhar
para a sua distribuição é diferente. É questão de adaptar. :-)

Bem, lets kick it out... again!

[0 - Considerações Iniciais ]

Os comandos precedidos por # deverão ser obrigatoriamente dados como
utilizador root. Os comandos precedidos por $ poderão ser dados por
qualquer utilizador do sistema, tendo este que ter acesso aos
ficheiros e ferramentas que venham a ser utilizadas no entretanto.

Devem executar todos os comandos fornecidos numa shell. Podem
utilizar por exemplo o xterm ou o kconsole, caso estejam numa
sessão X.

Quando necessitarem de usar uma shell como root, basta darem este
comando para irem lá ter:

$ su -

[1 - Reunir informações sobre o Hardware ]

Bem, para quem vai compilar um kernel, é uma boa ideia saber que
hardware está presente na máquina.

$ cat /proc/cpuinfo
$ cat /proc/pci
# lspci -v
# lsusb

Se calhar a melhor forma de obter uma lista realmente fiável do
hardware que a máquina possui é desligando-a e abrindo-a. Note-se que
ao abrir a máquina poderá perder determinadas garantias dadas por
quem a vendeu ou pelo fabricante da mesma. Se for esse o seu caso,
procure antes na página do vendedor ou fabricante pelas
características da máquina.

[2 - Ir buscar o Kernel ]

Normalmente todos os kernel's são guardados e compilados na
directoria /usr/src. No entanto nada o impede de compilar um kernel
noutra directoria qualquer. Em http://www.kernel.org/ encontrará
indicações sobre a versão mais recente do kernel, entre outras
coisas. Existem várias versões, mas aconselho-o a utilizar a "latest
stable version". Neste momento que escrevo, é a versão 2.4.23.

# cd /usr/src
# wget -c
http://www.pt.kernel.org/pub/linux/kernel/v2.4/linux-2.4.23.tar.bz2

Note-se que o download do kernel foi feito a partir de um mirror
localizado em Portugal utilizando o programa "wget", que faz resume
automático no caso da ligação cair. :-)

Para verificar se o ficheiro corresponde exactamente ao ficheiro que
foi publicado pelo "Linux Kernel Archive", e que não foi alterado por
terceiros, pode seguir as instruções presentes
em http://www.kernel.org/signature.html .

Nomeadamente deverá executar os seguintes passos:

a) Importar a chave pública do "Linux Kernel Archive", caso ainda
não a tenha importado anteriormente:

$ gpg --keyserver wwwkeys.pgp.net --recv-keys 0x517D0F0E

b) Fazer o download da assinatura associada ao ficheiro do kernel que
queremos instalar:

$ wget
http://www.pt.kernel.org/pub/linux/kernel/v2.4/linux-2.4.23.tar.bz2.sign

c) Verificar a validade da assinatura:

$ gpg --verify linux-2.4.23.tar.bz2.sign linux-2.4.23.tar.bz2

[3 - Descomprimir o Kernel ]

O kernel em si (sources, documentação, ficheiros compilados, etc)
ocupa cerca de 200MB de espaço! Portanto, convém à partida saber
mesmo se possui espaço no seu disco para estas aventuras.

$ df -h
# bunzip2 linux-2.4.23.tar.bz2
# tar xvf linux-2.4.23.tar
# chown -R root.root linux-2.4.23
# ln -s linux-2.4.23 linux

[4 - Configurar o Kernel ]

Bem, depois dos passos indicados no ponto anterior, teremos uma
directoria "linux-2.4.23" em /usr/src com tudo o que vem no kernel,
prontinha a ser usada.

# cd linux-2.4.23

Aconselho nesta directoria a leitura do ficheiro README e dos
ficheiros presentes em ~/Documentation, caso queiram obter mais
informações sobre o kernel.

Para quem possuir um ficheiro de configuração de um kernel
anteriormente compilado, deverá copiá-lo neste momento para esta
directoria, de forma a aproveitar as configurações feitas
anteriormente.

# cp <ficheiro_de_configuração> .config

De seguida, deverão dar o seguinte comando:

# make menuconfig

A partir daqui irá aparecer-vos um menu com várias opções, e dentro
dessas opções mais opções ainda! Esta é a parte mais compilada na
compilação de um kernel: acertar com as configurações ideais para a
nossa máquina!

Não tenha medo. Podem errar as vezes que quiserem nas configurações.
Não se preocupem em acertar nas melhores opções à primeira. Só com o
hábito é que se começa a acertar tudo à primeira. Errem as vezes que
quiserem. Estão à vontade. :-)

Aconselho na opção "Code maturity level options" a activação da opção
"Prompt for development and/or incomplete code/drivers".

Note-se que existe a opção de se "[M]odularizar" muitas das opções.
Sempre que possível façam-no, pois no final terão um kernel mais
pequeno, e terão a possibilidade de activar ou desactivar certos
drivers em pleno funcionamento, além de outras vantagens.

Quando acabarem as configurações todas, basta sair do programa e
salvar as configurações.

Nota: Para configurar o kernel poderão também usar os seguintes
comandos:

# make config

Neste caso a configuração será feita na shell através de perguntas
sequenciais onde terão de ir respondendo Y/N/M.

# make xconfig

Este caso será aconselhado para quem está a tentar compilar o kernel
numa sessão X, usando por exemplo o kconsole. Neste caso aparecerá um
configurador gráfico bastante simples de usar.

# make oldconfig

Para quem copiou um .config de um kernel anteriormente compilado,
poderá usar este comando para que a configuração do kernel apenas
coloque perguntas sobre novas opções que existirem no novo kernel.
Útil no caso de não ter mudado o hardware da sua máquina.

[5 - Compilar o Kernel ]

Esta é a parte mais fácil, mas mais demorada:

# make dep
# make clean
# sync
# make bzImage
# make modules
# make modules_install

Dependendo do computador, poderá levar mais ou menos tempo a
finalizar os comandos anteriores. No meu cyrix a 266Mhz com 128MB de
ram leva prai uns bons 25 minutos. :-)

[6 - Instalar o novo Kernel]

Normalmente os kernel's são colocados na directoria /boot. Se
verificarem os ficheiros nessa directoria provavelmente já lá terão
vários kernel's, assim como outros ficheiros.

# cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.23
# cp System.map /boot/System-2.4.23.map

[7 - Configurar o boot loader ]

O que é o "boot loader"?

Bem, é um ... boot loader!

"A boot loader is a program that resides in the starting sectors of a
disk, e.g., the MBR (Master Boot Record) of the hard disk. After
testing the system during bootup, the BIOS(Basic Input/Output System)
tranfers control to the MBR if the system is set to be booted from
there. Then the program residing in MBR gets executed. This program
is called the boot loader. Its duty is to transfer control to the
operating system, which will then proceed with the boot process."

(in http://www.linuxgazette.com/issue64/kohli.html)

Vou apenas explicar aqui com se configura o LILO. Para quem usa o
GRUB deverão ler o manual desse outro boot loader ( ou esperar que
alguém contribua meia dúzia de linhas para este mini-howto.. :-> )

O ficheiro de configuração do LILO é o /etc/lilo.conf .

Deverão passar primeiro os olhos pelo manual do LILO:

$ man lilo.conf

No meu caso, foi só necessário adicionar e editar as seguintes linhas
no ficheiro de configuração do LILO:

image=/boot/vmlinuz-2.4.22
label=linux-old
read-only
root=/dev/hda2

image=/boot/vmlinuz-2.4.23
label=linux2.4.23
read-only
root=/dev/hda1

Deverá ser semelhante nos vossos casos em particular. Note-se que foi
deixada uma entrada para um kernel anterior, de forma a podermos
"bootar" a máquina caso o kernel que acabámos de compilar tenha
problemas.

Depois de editarem e salvarem o ficheiro de configuração, deverão dar
o seguinte comando para que o lilo seja (re)instalado:

# lilo

[8 - Reboot! ]

Bem, depois disto tudo, basta fazer reboot e escolher no arranque o
kernel acabadinho de compilar. :-)

# shutdown -r 0

Muito provavelmente irão apanhar com alguns erros, e alguns dos
programas deixarão de arrancar, etc.

Poderão visualizar esses erros usando os seguintes comandos:

$ dmesg
# tail -n 100 /var/log/messages

Depois de acertarem com as configurações para a vossa máquina, e de
conseguirem uma versão satisfatória do kernel, salvem o ficheiro
.config que está em /usr/src/linux-2.4.23, de forma a poderem usá-lo
em próximas releases do kernel.

Já agora, para verificarem a versão actual do vosso kernel podem usar
o seguinte comando:

$ uname -a

[9 - Considerações Finais ]

O autor deste mini how-to não se responsabiliza por danos causados
por terceiros que leram este how-to. :-)

Agradeço o máximo de feedback possível sobre o mini-howto. Se tiver
paciência e tempo, prometo lançar novas versões actualizadas do
mesmo.

[10 - Feedback ]

A compilação de um kernel, assim como a compilação/instalação de
qualquer software deverá ser feita tomando as maiores e melhores
cautelas em termos de segurança. Este howto, pelo target de
utilizadores a que se dirige, é "relaxado" em relação a esses
detalhes. Mais dicas neste artigo:

http://groups.google.com/groups?selm=pan.2003.09.04.04.15.15.873422%40mail.telepac.pt

[11 - Agradecimentos ]

Amarok <amarok(@)netcabo.pt>
Antonio Manuel Dias <amdias(@)netvisao.pt>
João Jerónimo <j_j_b_o(@)myrealbox.com>
João Miguel Neves <news(@)silvaneves.org>
João M. S. Silva <jmss(@)vinci.inesc-id.pt>
Luis Bruno <lbruno(@)republico.estv.ipv.pt>
Luis Oliveira <luismbo(@)netcabo.pt>
Nuno Justo <nuno(@)justoweb.com>
Nuno Tavares <nunotavares(@)hotmail.com>
RJ <fsoss(@)linuxwaves.com>
Rui Malheiro <rmalheiro(@)mail.telepac.pt>
VL <vonloxx(@)yahoo.com>

(Se faltar alguém avisem-me por email. TIA)

Having fun,

@209, Nbk

João Jerónimo

unread,
Dec 1, 2003, 12:25:09 PM12/1/03
to
Nbk wrote:
> ... kconsole ...

é konsole e não kconsole (embora não seja muito relevante, toda a gente
percebe)!

> # bunzip2 linux-2.4.23.tar.bz2
> # tar xvf linux-2.4.23.tar

é igual a tar xjvf (nome de ficheiro).tar.bz2

e convem dizer também que o(s) comando(s) são/é diferente(s) caso seja
um ficheiro tar.gz em vez de tar.bz2!

> # chown -R root.root linux-2.4.23

chown -R root *:* root linux-2.4.23

> ... kconsole ...

corrige também este se quiseres...

--
João Jerónimo

ICQ: 312332573
Jabber ID: j_j...@jabber.org

higuita

unread,
Dec 2, 2003, 12:48:12 AM12/2/03
to
X-Newsreader: Sylpheed version 0.9.7claws9 (GTK+ 1.2.10; i486-pc-linux-gnu)
X-Face: &qEAZz'M-P2%W(<TRj?K@>IXcT1`0p3ZOrB?n\$y~}m%W6O%rgb<c+pG(hjeR{<ck{t!0So
Y"SGN
X-PGP-KeyServer: x-hkp://wwwkeys.eu.pgp.net
X-Request-PGP: http://caravela.homelinux.net/~higuita/public_key.asc
X-Spam-bait-dont-use: sb...@caravela.homelinux.net
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-15
Content-Transfer-Encoding: quoted-printable

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Mon, 01 Dec 2003 17:25:09 +0000, Jo=E3o Jer=F3nimo <j_j_b_o.nospam@sapo.=
pt> wrote:


> Nbk wrote:
> > # bunzip2 linux-2.4.23.tar.bz2
> > # tar xvf linux-2.4.23.tar

> =E9 igual a tar xjvf (nome de ficheiro).tar.bz2

sim, e' o mais usual, mas pode haver ainda tar que nao suportem
essas extensoes...
talvez meter uma nota que se nao funcionar usar o bunzip2/gunzip e
depois o tar
=20


> > # chown -R root.root linux-2.4.23
> chown -R root *:* root linux-2.4.23

uhh!? 8)
o que querias dizer?

higuita
- --=20
Naturally the common people don't want war... but after all it is the
leaders of a country who determine the policy, and it is always a=20
simple matter to drag the people along, whether it is a democracy, or
a fascist dictatorship, or a parliament, or a communist dictatorship.
Voice or no voice, the people can always be brought to the bidding of
the leaders. That is easy. All you have to do is tell them they are=20
being attacked, and denounce the pacifists for lack of patriotism and
exposing the country to danger. It works the same in every country.
-- Hermann Goering, Nazi and war criminal, 1883-1946

ps: ignorem isto, para lixar os gajos, se gostam de spam, vao ter spam
geral.s...@mail.telepac.pt
safemo...@mail.telepac.pt
safe...@mail.telepac.pt

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)

iD8DBQE/zCebrv1jazsMcrMRAqZyAKDQMNhGKwIJGMBCKoPaqqLkhn9lqgCgtdfQ
OtFw1RGmYiM+WdntdCTbsY4=3D
=3DbTXD
-----END PGP SIGNATURE-----

Luis Oliveira

unread,
Dec 1, 2003, 5:34:54 PM12/1/03
to
On Mon, 01 Dec 2003 17:25:09 +0000 João Jerónimo wrote:
>> # bunzip2 linux-2.4.23.tar.bz2
>> # tar xvf linux-2.4.23.tar
>
> é igual a tar xjvf (nome de ficheiro).tar.bz2

Este aspecto já foi falado numa anterior versão. A opção -j não existe
no GNU tar oficial. (pelo menos dantes não exisitia)

--
Luís Oliveira Lisp is the red pill.
Reply-To: luismbo (@) netcabo (.) pt -- John Fraser, comp.lang.lisp
Equipa Portuguesa do Translation Project
http://www2.iro.umontreal.ca/~pinard/po/registry.cgi?team=pt

Carlos J. G. Duarte

unread,
Dec 2, 2003, 6:36:20 AM12/2/03
to
Luis Oliveira wrote:
> On Mon, 01 Dec 2003 17:25:09 +0000 João Jerónimo wrote:
>
>>># bunzip2 linux-2.4.23.tar.bz2
>>># tar xvf linux-2.4.23.tar
>>
>>é igual a tar xjvf (nome de ficheiro).tar.bz2
>
>
> Este aspecto já foi falado numa anterior versão. A opção -j não existe
> no GNU tar oficial. (pelo menos dantes não exisitia)
>

Tenho o gnu tar 1.13.25, compilei-o em Dec 3 2001 (por isso é de
certeza anterior a essa data) e já tem o -j.

Outras dicas, o star (**1), do mesmo senhor que fez o cdrecord (**2),
deve ser o melhor tar que por aí anda: mais rápido, mais correcto e mais
portável em relação aos arquivos produzidos por outros tars.

O star automaticamente detecta o formato dos ficheiros, por isso basta
logo fazer:
# star xvf xpto.tar.bz2
# star xvf x2.tar.gz
# star xvf x3.tar

Alternativamente, um método que nunca falha é usar os pipes de unix
directamente, que, sinceramente, era o que eu fazia até começar a usar o
star:
# gzip -dc x.tar.gz | tar xf -
# bzip2 -dc x2.tar.bz2 | tar xf -

cya


**1
http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/star.html
**2
http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/cdrecord.html

--
carlos ** http://7mares.terravista.pt/cjgd

João Jerónimo

unread,
Dec 2, 2003, 4:20:29 PM12/2/03
to
higuita wrote:
>>chown -R root *:* root linux-2.4.23
>
>
> uhh!? 8)
> o que querias dizer?

hum... baralhei um bocado não?!

queria dizer que é:
chown -R root:root linux-2.4.23

e não:
chown -R root.root linux-2.4.23


mas puz os asteríscos estre os dois pontos para realçar os últimos, o
que parece que ainda complicou mais as coisas!

Nuno Justo AKA Cyborgas

unread,
Dec 4, 2003, 5:20:03 PM12/4/03
to
Nbk wrote:
> [0 - Considerações Iniciais ]

Acho que neste capitulo se deveria colocar os requisitos mínimos para se
iniciar este trabalho, como por exemplo os programas usados e os links onde
ir fazer o download deles. Porque nem todas as distribuições vêm com todos
os programas que aqui usamos neste manual. Como o exemplo do wget.

Eu posso fazer isso, em breve coloco aqui...

--
Nuno Justo AKA Cyborgas
"Be a good person, adopt a tux!"

Nbk

unread,
Dec 4, 2003, 10:53:47 PM12/4/03
to
On Thu, 04 Dec 2003 22:20:03 +0000, Nuno Justo AKA Cyborgas
<nuno_N...@justoweb.com> escreveu em 13 linhas:

Boas.

>Acho que neste capitulo se deveria colocar os requisitos mínimos para se
>iniciar este trabalho, como por exemplo os programas usados e os links onde
>ir fazer o download deles. Porque nem todas as distribuições vêm com todos
>os programas que aqui usamos neste manual. Como o exemplo do wget.
>
>Eu posso fazer isso, em breve coloco aqui...

Obrigado pela sugestão.

Não te preocupes, na próxima edição já aparecerá uma pequena lista
dos mesmos. Isso e as instruções para o grub, já que agora o fedora
parece não trazer o lilo "de raiz"...

@203, Nbk

Nbk

unread,
Dec 4, 2003, 10:59:49 PM12/4/03
to
On Mon, 01 Dec 2003 17:25:09 +0000, João Jerónimo
<j_j_b_o...@sapo.pt> escreveu em 28 linhas:

Boas.

>Nbk wrote:
>> ... kconsole ...
>
>é konsole e não kconsole (embora não seja muito relevante, toda a gente
>percebe)!

Topa-se mesmo a milhas que farto-me de usar o X... :-)

>> # bunzip2 linux-2.4.23.tar.bz2
>> # tar xvf linux-2.4.23.tar
>
>é igual a tar xjvf (nome de ficheiro).tar.bz2
>
>e convem dizer também que o(s) comando(s) são/é diferente(s) caso seja
>um ficheiro tar.gz em vez de tar.bz2!

A minha ideia é criar um howto o menos desviante possível do
objectivo: compilar um kernel.

Como no perl, existem N formas de se completar uma determinada
tarefa em linux. Eu neste howto ( como em quase tudo ) tento manter
uma certa simplicidade. Cabe ao leitor mais curioso ir "desbravando"
man pages. :-)

@206, Nbk

P.s. - Thks pelas sugestões.

João Jerónimo

unread,
Dec 5, 2003, 7:22:07 PM12/5/03
to
Nbk wrote:
> Topa-se mesmo a milhas que farto-me de usar o X... :-)

pois... não é muito relevante tal como eu acrescentei...

> A minha ideia é criar um howto o menos desviante possível do
> objectivo: compilar um kernel.

tu é que sabes!

Nbk

unread,
Dec 6, 2003, 6:28:32 AM12/6/03
to
On Sat, 06 Dec 2003 00:22:07 +0000, João Jerónimo
<j_j_b_o...@sapo.pt> escreveu em 16 linhas:

Boas.

>> A minha ideia é criar um howto o menos desviante possível do
>> objectivo: compilar um kernel.
>
>tu é que sabes!

Pois sei.

A ideia que se passa às ditas pessoas vulgares ( será que elas
existem mesmo? ) não é que a internet é a maior biblioteca de
informação do mundo?

Ora, a usenet permite-nos (bem, não é só a usenet, é a usenet e o
google) aceder a essa "biblioteca" e até nos deixa colocar lá alguns
pedacinhos pequeninos adicionais de informação.

Bem, eu uso esse truque e meti lá (nessa biblioteca) um pequeno
pedaço de informação a que recorro vezes sem conta.

Assim ganhei o melhor de dois mundos: a existência de tal informação
e a possibilidade de aceder à mesma em qq lado e a qq hora.

Melhor: partilhei essa informação de forma a ter e obter correcções
e melhores "pontos de vista" sobre ela.

Isn't it beautifull? :-)

@515, Nbk

Mr. BuNgL3

unread,
Dec 6, 2003, 7:24:28 AM12/6/03
to
Nbk wrote:
> [3 - Descomprimir o Kernel ]
> $ df -h
> # bunzip2 linux-2.4.23.tar.bz2
> # tar xvf linux-2.4.23.tar
> # chown -R root.root linux-2.4.23
> # ln -s linux-2.4.23 linux

Para que serve ou irá servir o link simbólico criado na última linha?

> [4 - Configurar o Kernel ]

> # cp <ficheiro_de_configuração> .config

Tenho a versão 2.4.20 instalada na minha máquina. Há maneira de ir
buscar as configurações deste kernel para aproveitar para o novo?

Para já é só... vai-se andando e vai-se vendo:)

Obrigado

Cumps

Rui Malheiro

unread,
Dec 6, 2003, 9:43:14 AM12/6/03
to
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Em Sábado, 06 de Dezembro de 2003 12:24, Mr. BuNgL3 escreveu:

> Nbk wrote:
>> [3 - Descomprimir o Kernel ]
>> $ df -h
>> # bunzip2 linux-2.4.23.tar.bz2
>> # tar xvf linux-2.4.23.tar
>> # chown -R root.root linux-2.4.23
>> # ln -s linux-2.4.23 linux
>
> Para que serve ou irá servir o link simbólico criado na última linha?

Para simplificar e normalizar as coisas. Muitos programas assumem (por
omissão) que as bibliotecas necessárias para "linkar" programas com o
kernel estão dentro de /usr/src/linux/. Ao usar um link mantêm-se esta
norma e facilita-se a utilização de multiplas versões do kernel. Basta
refazer o link e temos outra versão "por omissão".

A alternativa ao link seria descompactar o kernel para /usr/src/linux, o que
não é tão versátil.

>> [4 - Configurar o Kernel ]
>> # cp <ficheiro_de_configuração> .config
>
> Tenho a versão 2.4.20 instalada na minha máquina. Há maneira de ir
> buscar as configurações deste kernel para aproveitar para o novo?

Sim. Se tiveres o kernel actual com o tal link simbólico, podes:

a) Fazer "make menuconfig" no novo kernel e usar a opção de "ler a
configuração de outro ficheiro", indicando o .config da directoria antiga.

b) Copiar o .config antigo para a nova versão do kernel e fazer "make
oldconfig" (ou "make menuconfig" se quiseres mudar alguma coisa)

- --
Rui Malheiro
"Um outro mundo é possível"
.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)

iD8DBQE/0esH6xZVe81Ht3gRAuBSAJwPVn4l4VeGZEwm+JoKdXBzLqpWSwCgl6Mc
TUjoVn3M5tLPI1NxNbcRYNw=
=hdZy
-----END PGP SIGNATURE-----

Nuno Justo AKA Cyborgas

unread,
Dec 6, 2003, 2:36:50 PM12/6/03
to
Nbk wrote:
> Melhor: partilhei essa informação de forma a ter e obter correcções
> e melhores "pontos de vista" sobre ela.

Esta frase explica o espírito open source a todos voces que ainda não o
entenderam como filosofia.
Muito boa frase, parabéns.

Eu costumo usar estas frases de minha autoria:
Quanto mais souberem, menos preciso de explicar. E já agora, será que sei
mais do que vocês? Por favor ajudem-me! :)

Com o tempo apercebi-me que o aluno acaba sempre por ultrapassar o
professor, nem que seja só em algumas coisas.

Mr. BuNgL3

unread,
Dec 7, 2003, 10:55:59 AM12/7/03
to
Rui Malheiro wrote:
> Sim. Se tiveres o kernel actual com o tal link simbólico, podes:
>
> a) Fazer "make menuconfig" no novo kernel e usar a opção de "ler a
> configuração de outro ficheiro", indicando o .config da directoria antiga.
>
> b) Copiar o .config antigo para a nova versão do kernel e fazer "make
> oldconfig" (ou "make menuconfig" se quiseres mudar alguma coisa)

E onde é que posso encontrar esse ficheiro no kernel antigo? Em que
directório? Uso redhat9. Em principio será onde o kernel está instalado.

higuita

unread,
Dec 7, 2003, 1:39:10 PM12/7/03
to
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Sat, 06 Dec 2003 14:43:14 +0000, Rui Malheiro <rmal...@mail.telepac.pt> wrote:
> b) Copiar o .config antigo para a nova versão do kernel e fazer "make
> oldconfig" (ou "make menuconfig" se quiseres mudar alguma coisa)

convem referir que o make oldconfig vai perguntar apenas
coisas que foram adicionadas desde a versao do kernel
de onde vem o .config que vais aproveitar como base

isto ajuda muito a "manter" um kernel, depois de ja'
estar tudo configurado, passar de uma versa para a outra
basta ir fazendo os make oldconfig e decidir se se quer
ou nao as opcoes novas (geralmente sao novos drivers de
hardware)

por esta razao, geralmente e' mais simples fazer sempre
1º o make oldoconfig e decidir sobre as novas opcoes e
so' depois se usar o make menuconfig para alterar algo
que ainda nao esteja no ponto

se fores logo ao make menuconfig podes nao reparar nas novas
opcoes todas pois nao sabes sequer onde e o que e' que existe
de novo

e ja' agora, faz sempre um backup de tempos a tempos do .config
para o /usr/src... acredita, vai haver um dia que vai precisar
dele, nao fosse o ser humano distraido ;)

higuita
- --

Naturally the common people don't want war... but after all it is the
leaders of a country who determine the policy, and it is always a

simple matter to drag the people along, whether it is a democracy, or
a fascist dictatorship, or a parliament, or a communist dictatorship.
Voice or no voice, the people can always be brought to the bidding of
the leaders. That is easy. All you have to do is tell them they are

being attacked, and denounce the pacifists for lack of patriotism and
exposing the country to danger. It works the same in every country.
-- Hermann Goering, Nazi and war criminal, 1883-1946

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)

iD8DBQE/03PNrv1jazsMcrMRAt1FAKC8LBJi0SklKnhpQRd+SZG/CekztgCg4rdV
jBCKL3l3L2/Y2cfaaNmXOd8=
=XguP
-----END PGP SIGNATURE-----

higuita

unread,
Dec 7, 2003, 1:41:23 PM12/7/03
to
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Sun, 07 Dec 2003 15:55:59 +0000, "Mr. BuNgL3" <mrbungle...@netcabo.pt> wrote:
> E onde é que posso encontrar esse ficheiro no kernel antigo? Em que
> directório? Uso redhat9. Em principio será onde o kernel está instalado.

o .config ou estao em /usr/src/linux (caso tenhas ja'
compilado o kernel anteriormente) ou entao esta' uma
versao em /boot/config (ou algo assim)

este ultimo e' colocado pelas distros, precisamente para
servir de base a quem quiser recompilar o kernel

este config e' o config que gerou o kernel da que a distro
esta' a usar

higuita
- --
Naturally the common people don't want war... but after all it is the
leaders of a country who determine the policy, and it is always a
simple matter to drag the people along, whether it is a democracy, or
a fascist dictatorship, or a parliament, or a communist dictatorship.
Voice or no voice, the people can always be brought to the bidding of
the leaders. That is easy. All you have to do is tell them they are
being attacked, and denounce the pacifists for lack of patriotism and
exposing the country to danger. It works the same in every country.
-- Hermann Goering, Nazi and war criminal, 1883-1946

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)

iD8DBQE/03RSrv1jazsMcrMRAll7AJ9OMCwo875CRyyHsuBnQ7JLiFnOogCg3X0f
mNCGSEi11Tgvg9AfEyExFrc=
=p7q9
-----END PGP SIGNATURE-----

higuita

unread,
Dec 7, 2003, 1:45:53 PM12/7/03
to
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

> Com o tempo apercebi-me que o aluno acaba sempre por ultrapassar o


> professor, nem que seja só em algumas coisas.

neste mundo, podemos saber muito de uma coisa e sermos
ignorantes noutras

no mundo do software livre, nao a' ninguem que saiba muito de
tudo, ora um dia se ensina umas coisas, como um especialista,
ora no dia seguinte se esta' a aprender uma coisa totalmente
nova

esta' e' uma das razoes porque gosto dos newsgroups, enquanto
se ajuda o proximo, vai-se aprendendo coisas novas pelo caminho
e assim abrindo mais os horizontes

higuita
- --
Naturally the common people don't want war... but after all it is the
leaders of a country who determine the policy, and it is always a
simple matter to drag the people along, whether it is a democracy, or
a fascist dictatorship, or a parliament, or a communist dictatorship.
Voice or no voice, the people can always be brought to the bidding of
the leaders. That is easy. All you have to do is tell them they are
being attacked, and denounce the pacifists for lack of patriotism and
exposing the country to danger. It works the same in every country.
-- Hermann Goering, Nazi and war criminal, 1883-1946
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)

iD8DBQE/03Vgrv1jazsMcrMRAldtAJ95X81A3tyMkL+iMZeHtKJ+bonhNwCgqNl4
5d644yFdzWtWzfdHmaf/kIU=
=iGn0
-----END PGP SIGNATURE-----

Mr. BuNgL3

unread,
Dec 7, 2003, 5:21:20 PM12/7/03
to
Nbk wrote:
> [5 - Compilar o Kernel ]
>
> Esta é a parte mais fácil, mas mais demorada:
>
> # make dep

Depois de ter feito um make oldconfig surgiu-me este erro:

[root@localhost linux-2.4.23]# make dep
gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -o scripts/mkdep
scripts/mkdep.c
make: gcc: Command not found
make: *** [scripts/mkdep] Error 127

Alguém sabe o porquê deste erro?

João Jerónimo

unread,
Dec 7, 2003, 5:57:01 PM12/7/03
to
Mr. BuNgL3 wrote:
> make: gcc: Command not found

isso quer dizer que falta o gcc (GNU Compiler Collection)

instala o pacote utilizando a ferramenta de gestão de pacotes que vem na
tua distro... o nome deve ser gcc-x.x.x onde os x correspondem ao número
da versão... mas deve bastar procurar por gcc!

Nbk

unread,
Dec 7, 2003, 6:40:13 PM12/7/03
to
On Sun, 07 Dec 2003 22:57:01 +0000, João Jerónimo

<j_j_b_o...@sapo.pt> escreveu em 16 linhas:

Boas.

>> make: gcc: Command not found


>
>isso quer dizer que falta o gcc (GNU Compiler Collection)
>
>instala o pacote utilizando a ferramenta de gestão de pacotes que vem na
>tua distro... o nome deve ser gcc-x.x.x onde os x correspondem ao número
>da versão... mas deve bastar procurar por gcc!

Já agora, para o redhat 9, fica aqui a lista alinhada dos RPM's que
devem ser instalados para poder compilar um kernel:

binutils-2.13.90.0.18-9.i386.rpm
cpp-3.2.2-5.i386.rpm
glibc-kernheaders-2.4-8.10.i386.rpm
glibc-devel-2.3.2-11.9.i386.rpm
gcc-3.2.2-5.i386.rpm
libstdc++-devel-3.2.2-5.i386.rpm
gcc-c++-3.2.2-5.i386.rpm

Não esquecer:

- Caso queiras usar o "make menuconfig", instalar tb o seguinte rpm:

ncurses-devel-5.3-4.i386.rpm

- Correr a seguir o up2date (ou semelhante) para possiveis updates;

Os rpm's poderão ser encontrados nos primeiros 2/3 cd's do redhat9.

@027, Nbk

GotTLoS

unread,
Dec 7, 2003, 7:12:10 PM12/7/03
to
On Sat, 06 Dec 2003 12:24:28 +0000, Mr. BuNgL3 wrote:

> Nbk wrote:
>> [3 - Descomprimir o Kernel ]
>> $ df -h
>> # bunzip2 linux-2.4.23.tar.bz2
>> # tar xvf linux-2.4.23.tar

Ha' alguma razao para nao utilizar o tar -jxvf linux-2.4.23.tar.bz2 ?

inte'

GotTLoS

unread,
Dec 7, 2003, 7:34:45 PM12/7/03
to
boas nas sao correccoes apenas outras maneiras de fazer o mm.

On Mon, 01 Dec 2003 05:09:59 +0000, Nbk wrote:

> Esta é a parte mais fácil, mas mais demorada:
>
> # make dep
> # make clean
> # sync
> # make bzImage
> # make modules
> # make modules_install

para nao ter de ficar a olhar para o pc e ir dormir uma sesta...
# make dep && make clean bzImage modules modules_install


> [7 - Configurar o boot loader ]

versao grub:

cp arch/i386/boot/bzImage /boot/bzImage-2.4.23

title Kernel Antigo
root (hd0,5)
kernel (hd0,5)/boot/bzImage root=/dev/hda8

title Kernel Novo
root (hd0,5)
kernel (hd0,5)/boot/bzImage-2.4.23 root=/dev/hda8

em que a particao boot e' /dev/hda6
e a particao de / e' /dev/hda8


> Having fun,
>
> @209, Nbk

inte'

GotTLoS

unread,
Dec 7, 2003, 7:42:21 PM12/7/03
to
desculpem ja' vi que isto ja foi discutido.
para a proxima leio a tread toda antes de escrever.. ;)

inte'


Mr. BuNgL3

unread,
Dec 8, 2003, 1:17:31 PM12/8/03
to
Mais ums questões...

1) Sempre que quiser alterar qq coisa que seja nas configurações do
kernel terei que repetir todos os passos a partir do 4º passo? É claro
que o passo de configuração do boot loader só se justifica se entretanto
alterarmos a localização ou o nome do kernel certo?

2) Eu utilizei o #make oldconfig. Apareceram-me algumas opções novas e
que eu não percebia népia... as que não sabia fui dando enter. Se eu der
enter's o que é que ele aceita por defeito?

3) Como o oldconfig aproveita as opções do outro kernel, e como o outro
kernel corria sem problemas na minha máquina, há algum problema que os
enter's que dei na configuração origine erros no arranque ou no próprio
funcionamento do kernel?

4) Configurei o bootloader da seguinte maneira: (GRUB)

title Red Hat Linux (2.4.20-8) #original
root (hd0,2)
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/ hdd=ide-scsi hdc=ide-scsi
initrd /initrd-2.4.20-8.img

title Red Hat Linux (2.4.23) #novo
root (hd0,2)
kernel (hd0,2)/boot/bzImage-2.4.23 root=/dev/hda6 hdd=ide-scsi
hdc=ide-scsi

A minha dúvida reside na linha que contem hdd=ide-scsi hdc=ide-scsi...
Isto refere-se, segundo me parece, a forma de emular (se sei se esoua
dizer bem) o gravador de cds e o leitor como scsi. Está correcta a
sintax? (Tirei a partir da sintax do kernel antigo)

Já agora, para que serve a linha "initrd /initrd-2.4.20-8.img" visto que
para o novo não fizeram qq referência na configuração do boot loader?

Desculpem lá, este post tornou-se massivo. Newbies são chatos como a
putaça:)

Obrigado pela ajuda...

cump's

Nbk

unread,
Dec 9, 2003, 2:49:44 AM12/9/03
to
On Mon, 08 Dec 2003 00:34:45 +0000, GotTLoS <Got...@GotTLoS.LanD>
escreveu em 39 linhas:

Boas.

Obrigado pelas sugestões!

@367, Nbk

Nbk

unread,
Dec 9, 2003, 3:07:49 AM12/9/03
to
On Mon, 08 Dec 2003 18:17:31 +0000, "Mr. BuNgL3"
<mrbungle...@netcabo.pt> escreveu em 43 linhas:

Boas.

>1) Sempre que quiser alterar qq coisa que seja nas configurações do
>kernel terei que repetir todos os passos a partir do 4º passo? É claro
>que o passo de configuração do boot loader só se justifica se entretanto
>alterarmos a localização ou o nome do kernel certo?

Sim, sempre que quiser alterar as configurações de compilação tem
que repetir todos os passos a partir do 4º.

E precisa sempre de efectuar o passo 7. Claro, se não mudar nenhum
nome a nenhum ficheiro, terá apenas de dar o seguinte comando:

$ lilo

>2) Eu utilizei o #make oldconfig. Apareceram-me algumas opções novas e
>que eu não percebia népia... as que não sabia fui dando enter. Se eu der
>enter's o que é que ele aceita por defeito?

Aceita por defeito a opção que aparece com letra maiúscula.

Exemplo:

Dell laptop support (CONFIG_I8K) [N/y/m/?]

A opção que será assumida por defeito será o "N" (No).

>3) Como o oldconfig aproveita as opções do outro kernel, e como o outro
>kernel corria sem problemas na minha máquina, há algum problema que os
>enter's que dei na configuração origine erros no arranque ou no próprio
>funcionamento do kernel?

Depende, mas em principio não irá afectar em nada. É questão de
fazer um dmesg no final da instalação.

>4) Configurei o bootloader da seguinte maneira: (GRUB)
>
>title Red Hat Linux (2.4.20-8) #original
> root (hd0,2)
> kernel /vmlinuz-2.4.20-8 ro root=LABEL=/ hdd=ide-scsi hdc=ide-scsi
> initrd /initrd-2.4.20-8.img
>
>title Red Hat Linux (2.4.23) #novo
> root (hd0,2)
> kernel (hd0,2)/boot/bzImage-2.4.23 root=/dev/hda6 hdd=ide-scsi
>hdc=ide-scsi
>
>A minha dúvida reside na linha que contem hdd=ide-scsi hdc=ide-scsi...
>Isto refere-se, segundo me parece, a forma de emular (se sei se esoua
>dizer bem) o gravador de cds e o leitor como scsi. Está correcta a
>sintax? (Tirei a partir da sintax do kernel antigo)

De GRUB percebo pouco. Talvez outra pessoa possa responder.

>Já agora, para que serve a linha "initrd /initrd-2.4.20-8.img" visto que
>para o novo não fizeram qq referência na configuração do boot loader?

Veja por exemplo esta resposta do Rui Malheiro sobre o assunto:

http://groups.google.com/groups?selm=5100766.KarBj2m7BQ%40vincent.6mil.pt&output=gplain

>Desculpem lá, este post tornou-se massivo. Newbies são chatos como a
>putaça:)

A grande maioria sim, mas aqueles que escrevem perguntas
inteligentes não.

@374, Nbk

Rui Malheiro

unread,
Dec 9, 2003, 6:51:18 AM12/9/03
to
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Em Terça, 09 de Dezembro de 2003 08:07, Nbk escreveu:

> Sim, sempre que quiser alterar as configurações de compilação tem
> que repetir todos os passos a partir do 4º.

Eh pah, não exageremos :) Depois de ganharem alguma confiança com o processo
podem começar a saltar pequenos passos. Como por exemplo "make clean". Por
outro lado, se a única coisa que quiserem for acrescenar um módulo, basta
fazer um "make modules && make modules_install" (desde que não se tenha
acrescentado suporte ao kernel).

A ideia é que o processo descito no mini-howto é o processo seguro e que
funciona "sempre". Mas com o conhecimento vem o esclarecimento e não há
nada como dar uns passos sozinho para cimentar os conhecimentos.

Ao contrário do que um iniciado possa pensar, compilar um kernel não é um
processo ariscado. O processo crítico é configurar o bootloader. Se tiverem
o cuidado de deixar *sempre* uma versão de kernel funcional no Grub ou
LiLo, podem "enfaralhar" o kernel completamente que têm sempre um "porto
seguro" para onde regressar.



>>4) Configurei o bootloader da seguinte maneira: (GRUB)
>>
>>title Red Hat Linux (2.4.20-8) #original
>> root (hd0,2)
>> kernel /vmlinuz-2.4.20-8 ro root=LABEL=/ hdd=ide-scsi
>> hdc=ide-scsi initrd /initrd-2.4.20-8.img
>>
>>title Red Hat Linux (2.4.23) #novo
>> root (hd0,2)
>> kernel (hd0,2)/boot/bzImage-2.4.23 root=/dev/hda6 hdd=ide-scsi
>>hdc=ide-scsi
>>
>>A minha dúvida reside na linha que contem hdd=ide-scsi hdc=ide-scsi...
>>Isto refere-se, segundo me parece, a forma de emular (se sei se esoua
>>dizer bem) o gravador de cds e o leitor como scsi. Está correcta a
>>sintax? (Tirei a partir da sintax do kernel antigo)

Yup. Perfeitamente correcto. J+a agora, o ide-scsi é necessário porque o
cdrecord não suporta IDE. No caso dos leitores (não-CDRW), só necessitam de
ter emulação SCSI se quiserem usa-los em conjunto com CDRW para copiar de
CD para CD.


>>Desculpem lá, este post tornou-se massivo. Newbies são chatos como a
>>putaça:)

LOL! *Potassa*. Putaça é *outra* coisa ;)

- --
Rui Malheiro
"Um outro mundo é possível"
.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)

iD8DBQE/1bc96xZVe81Ht3gRAgXkAKDGyKpOeXeIdMerkjBarq5PoXGB7gCgoye/
MdF5ss9TGCjBqa2QOYrlJF8=
=n9an
-----END PGP SIGNATURE-----

Mr. BuNgL3

unread,
Dec 9, 2003, 6:30:31 PM12/9/03
to
Boas mais uma vez...

Tentei inciar a máquina com a nova versão do kernel mas surgiu-me o
seguinte erro:

Booting 'Red Hat Linux (2.4.23)'
root(hd0,2)
Filesystem type is ext2fs, partition type 0x83
Kernel (hd0,2)/boot/bzimage-2.4.23 root=/dev/hda6 hdd=ide-scsi hdc=ide-scsi
Error 15: file not found

Que ficheiro ele não está a encontrar? A imagem do kernel?
Tentei correr com a configuração "kernel (hd0,2)/boot/vmlinuz-2.4.23
root=/dev/hda6 hdd=ide-scsi hdc=ide-scsi", que é o ficheiro que eu
encontro em /boot mais parecido como sendo imagem mas tb me deu o mesmo
erro. Que será que estarei a fazer mal?

Parece que ainda não foi desta:)

Obrigado

cump's

Rui Malheiro

unread,
Dec 10, 2003, 8:06:37 AM12/10/03
to
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Em Terça, 09 de Dezembro de 2003 23:30, Mr. BuNgL3 escreveu:

> Booting 'Red Hat Linux (2.4.23)'
> root(hd0,2)
> Filesystem type is ext2fs, partition type 0x83
> Kernel (hd0,2)/boot/bzimage-2.4.23 root=/dev/hda6 hdd=ide-scsi
> hdc=ide-scsi Error 15: file not found
>
> Que ficheiro ele não está a encontrar? A imagem do kernel?
> Tentei correr com a configuração "kernel (hd0,2)/boot/vmlinuz-2.4.23
> root=/dev/hda6 hdd=ide-scsi hdc=ide-scsi", que é o ficheiro que eu
> encontro em /boot mais parecido como sendo imagem mas tb me deu o mesmo
> erro. Que será que estarei a fazer mal?

Pelos sintomas, deves ter o /boot na partição /dev/hda3 e o / (root)
na /dev/hda6. Se for isso, a linha corecta será:

Kernel (hd0,2)/bzimage-2.4.23 root=/dev/hda6 hdd=ide-scsi

O Grub não sabe nada sobre como os filesystems ficarão arranjados após o
boot, (hd0,2)/ é a "raiz" do filesystem que está na 3ª partição. Estou com
pressa de momento, posso explicar melhor mais tarde, se necessitares.

- --
Rui Malheiro
"Um outro mundo é possível"
.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)

iD8DBQE/1xpd6xZVe81Ht3gRAkWIAJ9ojFj7ZOqo/73Lc2zq/yrnSRYyFgCffiOh
lVlOVcCrMy6kIXrTjkKIl5w=
=7o0l
-----END PGP SIGNATURE-----

MC

unread,
Dec 12, 2003, 7:16:17 AM12/12/03
to
Nbk wrote:

> Este mini how-to foi feito para uma distribuição redhat.

Tenho seguido com interesse o desenvolvimento deste how-to, mas
penso que talvez fosse útil fazer também referência à compilação
do kernel utilizando o rpm (já que se fala na distribuição redhat).
Habitualmente quando pretendo actualizar o kernel, limito-me a fazer
o download do "kernel-(versão).src.rpm".
Para exemplificar, na última actualização aconselhada do kernel fiz o
download do "kernel-2.4.20-24.8.src.rpm" e de seguida:

$rpmbuild --rebuild kernel-2.4.20-24.8.src.rpm

Desta forma o kernel é recompilado (com as configurações de origem)
e são criados novos rpm na directoria /usr/src/redhat/RPMS/i386
prontos a serem instalados.
De seguida faço a instalação com o comando:

$rpm -ivh kernel-2.4.20-24.8.i386.rpm

e depois limito-me a reconfigurar o lilo ou o grub, conforme
o caso.

Obviamente que isto implica que já exista um src.rpm para o efeito
e que a distribuição seja redhat, mas isto simplifica de forma
significativa a compilação e instalação de um novo kernel.
Não sei se concordam, mas penso que esta alternativa também
poderia ser mencionada no how-to.

MC

0 new messages