Você está na página 1de 61

Compilao de Drivers,

Criao e Gerenciamento de Pacotes .deb


David Jourdain - jourdain@pti.org.br

Contedo da apresentao
- Oque e para que serve uma Compilao?
- Pr requisitos para efetuar uma Compilao
- Oque e para que serve um Pacote .deb?
- Pr requisitos para criar um Pacote .deb
- Comandos para gerenciamento de Pacotes .deb
- Definio de Driver
- Definio de Firmware
- Efetuando uma Compilao
- Criando Pacote .deb

O que e para que serve uma Compilao?

Em poucas palavras, compilao o processo de traduo


do cdigo fonte de uma linguagem de alto nvel (escrita e
entendida por pessoas humanas, no caso, programadores)
para uma linguagem binria de baixo nvel (linguagem de
mquina). Em uma compilao, a relao dessa traduo
mltipla, cada instruo do cdigo fonte vai gerando
vrias instrues de mquina.
Durante a compilao, atravs dos chamados
compiladores, o cdigo fonte analisado, ento gerado
um cdigo intermedirio.

O que e para que serve uma Compilao?

So construdas tabelas de smbolos, alocam-se as reas


de memria para variveis e atribui-se os registradores a
serem utilizados, e finalmente gerado o cdigo objeto
em linguagem binria de mquina.
Resumidamente uma Compilao serve para traduzir o
cdigo fonte para linguagens de mquinas e ento poder
fazer um determinado dispositivo funcionar ou executar
um determinado aplicativo, lembrando que ambos os
exemplos que citei, antes da compilao estavam somente
em linguagens de alto nvel.

Pr requisitos para uma Compilao

Levando em considerao que efetuaremos o processo de


compilao em distribuies linux com base Debian, para
efetuar essas compilaes, sejam elas qual for, mas neste
caso voltarei mais para as compilaes de drivers e
mdulos externos de kernel, que so escritos em C, ser
necessrio a instalao de alguns pacotes principais que
sero usados durante a compilao. So eles:
libncurses5dev,libc6dev,gcc,g++,make,
linuxheadersx.x.x.
Vamos saber um pouco mais de cada um:

Pr requisitos para uma Compilao


libncurses5-dev

Biblioteca para usar a interface ncurses. Nele contm os


arquivos de cabealho, bibliotecas estticas e links
simblicos que os desenvolvedores usando ncurses iro
precisar para compilar algum cdigo fonte.

Ncurses uma biblioteca que prov uma API para o


desenvolvimento de interfaces em modo texto.
E o qu uma API?

Pr requisitos para uma Compilao


API Application Programming Interface (ou Interface de
Programao de Aplicativos) um conjunto de rotinas e
padres estabelecidos por um software para a utilizao
das suas funcionalidades, por aplicativos que no
pretendem envolver-se em detalhes da implementao do
software, mas apenas usar seus servios.

Pr requisitos para uma Compilao


libc6-dev

Arquivos de cabealho e auxiliares para se linkar com a


biblioteca padro c. Alm dos cabealhos e arquivos, nele
contm ligaes simblicas, objeto necessrios para
compilar e ligar programas que usem a biblioteca C
padro.

Pr requisitos para uma Compilao


gcc

Compilador GNU para C

Compilador usado na compilao para traduzir uma


linguagem de alto nvel para uma linguagem de mquina,
baixo nvel.
g++

Compilador GNU para C++.

Pr requisitos para uma Compilao


Make

GNU Make, um utilitrio para controlar a compilao, gerao de


executveis e outros arquivos alvo de um programa a partir dos
arquivos de cdigo fonte deste programa. Ele determina
automaticamente quais pedaos de um grande programa precisam
ser (re)criados e executa os comandos para (re)cri-los. Make no
est limitado a programas e executveis, ele pode ser aplicado a
qualquer tarefa onde um grande conjunto de arquivos alvo deve
ser criado a partir de um conjunto de arquivos de entrada, baseado
em dependncias e regras de processamento. Na verdade, Make
um resolvedor de dependncias de propsito geral.

Pr requisitos para uma Compilao


linux-headers-x.x.x

Todos os arquivos de cabealho para a determinada


kernel linux. Geralmente utilizado para construo e
compilao de mdulos que se encontram fora do roteiro
da kernel.

O que e para que serve um Pacote .deb


Pacote .deb um arquivo compactado cuja
extenso .deb, nele pode conter um software,
uma biblioteca, um driver, um script, um cdigo
fonte, etc.

Sua principal vantagem a facilidade de gerenciamento


que proporciona ao usurio, tanto na instalao, remoo
e atualizao, pois o debian possui um sistema de
gerenciamento de pacotes muito inteligente, e conta com
um forte controle de qualidade para os pacotes que ficam
em seus repositrios.

O que e para que serve um Pacote .deb

Vale lembrar tambm, que para cada pacote .deb existe


uma pessoa responsvel pelas verses, correes e
manuteno do mesmo, essas pessoas so chamadas de
DDs (Debian Developer's).

Pr requisitos para criar um Pacote .deb

Para a criao de um Pacote .deb ser necessrio a


instalao de alguns utilitrios, que por sinal j esto
empacotados e se encontram nos repositrios do debian.
Recomendo que tambm seja instalados os pacotes pr
requisitados para compilao, porm para criao de um
pacote .deb os principais que devem ser instalados so:
buildessential,dpkgdev,dhmake,fakeroot.
Vamos saber mais sobre cada um deles:

Pr requisitos para criar um Pacote .deb


build-essential

Este pacote contm uma lista informativa de pacotes que


so considerados essenciais ("build-essential") para a
construo de pacotes Debian.

dpkg-dev

Este pacote fornece as ferramentas de desenvolvimento


(incluindo o dpkg-source) necessrias para desempacotar,
construir e enviar pacotes fonte Debian.

Pr requisitos para criar um Pacote .deb


dh-make

Depois de alguns processos, o dh-make fornecer um conjunto de


modelos que, depois de alguma edio pequena, permite que voc
pegue um pacote fonte padro e converta-o em um formato que lhe
permitir construir pacotes Debian.

fakeroot

Este pacote elimina a necessidade de se tornar root para construir


um pacote. Isto feito atravs da criao de LD_PRELOAD
libfakeroot.so, que fornece invlucros em torno getuid, chown,
chmod, mknod, stat, e assim por diante, criando assim um ambiente
de raiz falsa.

Comandos para gerenciamento de Pacotes .deb


Quando o Debian foi criado, sentiu-se a necessidade de um sistema
de gerenciamento de pacotes instalados no sistema. Deu-se a esse
sistema o nome de DPKG. Assim surgiu o famoso pacote.
Rapidamente outro dilema tomou conta das mentes dos produtores
de GNU/Linux. Uma maneira rpida, prtica e eficiente de se
instalar pacotes, gerenciando suas dependncias automaticamente
e tomando conta de seus arquivos de configurao ao atualizar.
Assim, o Debian, novamente pioneiro, criou o APT ou Advanced
Packaging Tool.

Comandos para gerenciamento de Pacotes .deb


Vale ressaltar que para gerenciamento de pacotes j instalados no
seu S.O Linux, recomendado o uso do DPKG, j para instalao,
atualizao, verificao de novas verses de pacotes a partir de
repositrios, recomenda-se o uso do gerenciador APT.
Repositrio um local de armazenamento de onde pacotes de
software podem ser recuperados e instalados em um computador.
Abaixo segue alguns dos comandos mais importantes e mais usados
para o APT e tambm para o DPKG:

Comandos para gerenciamento de Pacotes .deb


apt-get update

Definio: usado para sincronizar novamente os arquivos de ndice


de pacotes a partir de suas fontes (repositrios). Os ndices de
pacotes disponveis so buscados a partir do local especificado no
arquivo /etc/apt/sources.list.

apt-get upgrade

Definio: usado para fazer uma atualizao dos pacotes contidos


no sistema, ou seja, instalar as verses mais recentes de todos os
pacotes das fontes (repositrios) enumerados no /etc/apt/sources.list.
Lembre-se que o upgrade s fara uma atualizao dos pacotes j
instalados, no instalar nenhum pacote adicional.

Comandos para gerenciamento de Pacotes .deb


apt-get install <pacote>

Definio: usado para instalar um pacote debian a partir de um


determinado repositrio, caso j contenha esse pacote instalado ele
o substitui.

apt-get remove <pacote>

Definio: idntico ao install, exceto que os pacotes sero


retirados, em vez de instalados. Voc tambm pode usar o comando
um um adicional, o --purge antes do remove, que serve para eliminar
juntamente com o pacote, todos os arquivos de configuraes do
mesmo. Com o --purge ficaria assim: apt-get --purge remove
<pacote>

Comandos para gerenciamento de Pacotes .deb


apt-get source <pacote>

Definio: Faz com que o apt-get faa uma busca e baixe o


pacote fonte mais atual. Nas linhas de repositrios do arquivo
sources.list, o repositrio dos pacotes fontes se encontram
com a sigla src de source no incio da linha.

apt-get clean

Definio: Cada vez que voc instala um pacote debian atravs


do apt, ele fica guardado em um diretrio cache em seu disco
chamado /var/cache/apt/archives, o clean usado para limpar
esse cache e liberar espao em disco.

Comandos para gerenciamento de Pacotes .deb


apt-get autoremove

Definio: usado para remover os pacotes que foram instalados


automaticamente para satisfazer as dependncias de alguns
pacotes e que no so mais necessrios.

apt-cache show <pacote>

Definio: Exibe os registros e informaes do pacote, como por


exemplo sua verso.

apt-cache search <palavra>

Definio: Realiza uma pesquisa completa em todos


repositrios, procurando o nome do pacote e descrio.

os

Comandos para gerenciamento de Pacotes .deb


dpkg -i <pacote>

Definio: Mesma definio do apt-get install porm o dpkg -i


utilizado se voc for instalar um pacote que estiver fisicamente
em seu computador.

dpkg -r <pacote>

Definio: Mesma definio do apt-get remove porm tambm


s para pacotes que se encontram fisicamente em seu
computador. Para remover tambm seus arquivos de
configurao, basta usar o -P (--purge) e fica assim:

dpkg -P <pacote>.

Comandos para gerenciamento de Pacotes .deb


dpkg -l <pacote>

Definio: Comando que mostra o nome, verso e uma breve


descrio do pacote instalado em seu sistema.

dpkg -L <pacote>

Definio: Lista o caminho dos arquivos instalados pelo pacote em


questo, bem como a estrutura do mesmo.

dpkg S <arquivo>

Definio: Atravs de um nome de arquivo especificado, faz uma


busca em todos os pacotes instalados apontando quis possuem
esse determinado arquivo.

Definio de Driver
De uma maneira bem fcil, drivers so pequenos programas
que fazem a comunicao entre o Sistema Operacional de
sua mquina e o Hardware, fazendo com que determinado
dispositivo funcione.

Definio de Firmware
De uma maneira bem simples de entender, firmware o
conjunto de instrues operacionais programadas diretamente
no hardware de um equipamento eletrnico.
No h muita diferena entre firmware e software, porm o
termo firmware foi criado para contrastar com software, pois o
software est envolvido em alto nvel e poderia ser alterado
sem ser necessrio a troca de um hardware, j o firmware est
envolvido em muito baixo nvel (hardware) e caso esse falte, o
determinado dispositivo no ir funcionar.

Efetuando uma Compilao


Compilao o processo de traduo de um cdigo fonte
que est escrito em uma linguagem de alto nvel para uma
de baixo nvel. Geralmente as compilaes so mais
frequentes para drivers e aplicativos, neste caso
demonstrarei uma compilao do driver rtl8192se para
funcionamento de um modelo de placa wireless realtek no
linux. Para isso, primeiramente iremos fazer o download do
driver para linux no site da realtek, seguindo este link:
http://www.realtek.com.tw/downloads/downloadsView.aspx?Langi
d=1&PNid=48&PFid=48&Level=5&Conn=4&DownTypeID=3&GetDown=fals
e&Downloads=true#RTL8192SE

Ou outros aqui disponveis, atravs das referncias.

Efetuando uma Compilao


Vamos usar um passo-a-passo para efetuar a compilao, lembrando que voc j
deva ter os pr-requisitos para efetuar uma compilao e para criar pacotes
debian instalados:
1) Aps voc efetuar o download do driver, ele ira baixar um arquivo
compactado semelhante a este:
rtl8192se_linux_2.6.0013.1204.2009.tar.gz. Para sua compilao ficar mais
organizada, vamos criar uma pasta chamada rtl8192se e mover este arquivo para
dentro dela:
brlix@brlix:~$mkdirrtl8192se

Efetuando uma Compilao


2) Aps criar esse diretrio, mova o arquivo do driver para dentro dele:
brlix@brlix:~$mvrtl8192se_linux_2.6.0013.1204.2009.tar.gzrtl8192se

3) Depois disso entre no diretrio rtl8192se e descompacte o driver, pois


o mesmo est compactado em formato tar.gz:
brlix@brlix:~$cdrtl8192se
brlix@brlix:~$tarxzvfrtl8192se_linux_2.6.0013.1204.2009.tar.gz

Efetuando uma Compilao


4) Nota-se que aps descompactar o arquivo, extraiu o seguinte diretrio
rtl8192se_linux_2.6.0013.1204.2009. Entre nesse diretrio, dentro dele
voc ver diversos arquivos, porm o principal que voc deve olhar antes
de iniciar a compilao, o arquivo readme.txt, nele ter informaes teis
para voc efetuar todo o processo.
5) Vamos iniciar o processo de compilao, ento com poderes de root
digite:
brlix:/home/brlix#make
Caso ocorra tudo bem durante a compilao, vamos para...

Efetuando uma Compilao


...O prximo passo que o make install, que instalar o driver ou mdulo
compilado:
brlix:/home/brlix#makeinstall
Voc deve prestar bem ateno no log do make install, pois ali est todo
o processo de instalao do driver, oque foi feito, para onde foi jogado o
mdulo, e isso essencial voc saber para futuramente criar um pacote
.deb desse driver.
Pronto, caso no ocorreu nenhum erro, o driver est compilado e com seu
mdulo para funcionamento desse modelo de placa instalado! Porm
vamos ao ltimo passo que o firmware.

Efetuando uma Compilao


6) Se voc olhar novamente no arquivo readme.txt que se encontra no
diretrio do cdigo fonte do driver, voc ver que ter que copiar o
firmware para seu sistema, seno mesmo compilado o driver, a placa em
questo no funcionar, ento vamos l, entre na pasta firmware:
brlix:/home/brlix#cdfirmware
brlix:/home/brlix#cpaRTL8192SE/lib/firmware/
Agora demonstrarei alguns comandos para levantar o mdulo e deixar sua
placa em pleno funcionamento:
brlix:/home/brlix#depmoda (Cujo comando serve para...

Efetuando uma Compilao


...atualizar a lista dos mdulos reconhecidos pelo kernel).
brlix:/home/brlix#modprober8192se_pci (Este comando serve para
carregar o mdulo que voc acabou de compilar, aps isso se no der nenhum
erro, somente voc executar o comando iwconfig e ver que sua placa
wireless estar em pleno funcionamento.
Caso voc deseje desinstalar o driver, basta entrar no diretrio onde se
encontra o cdigo fonte e executar:
brlix:/home/brlix#makeuninstall
Para recompilar o driver, basta limpar os arquivos da compilao anterior
usando o comando:
brlix:/home/brlix#makeclean

Criando Pacote .deb


Como citado no tpico O que e para que serve um Pacote .deb, ele
possui diversas vantagens, dentre ela sua facilidade para gerenciamento,
ento em conta disso, vamos criar pacotes debian do driver rtl8192se.
Sero criados 3 pacotes debian, um com o driver ou mdulo compilado,
outro com o firmware e um terceiro contendo o cdigo fonte do driver.
Existem diversas formas de efetuar a criao de um pacote .deb, desde o
modo mais simples amador at o modo mais completo profissional
qual segue mais a risca as normas e polticas de empacotamento Debian.
Aqui voc aprender a criar pacote debian seguindo o mais prximo
possvel as polticas do Debian.

Criando Pacote .deb


Estruturalmente, um pacote .deb nada mais que um arquivo
compactado, se voc o descompactar com o utilitrio ar (utililtrio
que cria, modifica e extrai arquivos) utilizando o comando ar xv
<pacote>ele extrair 3 arquivos, so eles:
debian-binary Contm apenas a strint 2.0 (verso do formato do
pacote debian)
data.tar.gz - Imagem do pacote instalado no Sistema de Arquivos.
control.tar.gz Informaes de controle para as ferramentas de
manipulao de pacotes.

Criando Pacote .deb


As informaes acima so para um conhecimento geral, porm oque
vocs realmente devem saber inicia agora. Irei mostrar um passo-apasso detalhado com explicao de todo processo de criao e
arquivos de um pacote debian do mdulo da placa wireless rtl8192se
que foi compilada anteriormente. Prestem muita ateno pois um dos
exerccios ser criar um pacote debian para o firmware e outro para o
cdigo fonte!
1) Para dar incio, crie um diretrio qualquer para manter o ambiente
mais organizado, neste caso criarei o deb-rtl8192se, aps a criao,
entre nele:

Criando Pacote .deb


brlix@brlix:~$mkdirdebrtl8192se
brlix@brlix:~$cddebrtl8192se
2) Como a primeira verso que voc est criando deste pacote que
contm do mdulo, crie o seguinte diretrio, que tambm ter o nome do
pacote:
brlix@brlix:~$mkdirrtl8192semodules3.16.7
3) Aps, entre nesse diretrio e crie outros dois diretrios, um chamado
data e o outro debian:

Criando Pacote .deb


brlix@brlix:~$cdrtl8192semodules3.16.7
brlix@brlix:~$mkdirdatadebian
O diretrio data, responsvel por conter os dados do pacote, bem
como sua estrutura, tal qual ser instalada no sistema.
O diretrio debian, responsvel por conter diversos arquivos
importantes, dentre os principais esto o arquivo de controle (control),
o script de construo (rules), arquivo responsvel pelas mudanas do
pacote (changelog) e a licena do pacote (copyright).

Criando Pacote .deb


4) Primeiramente vamos organizar a estrutura do diretrio data, entre dentro
dele e crie o mesmo caminho das pastas e sub-pastas que o make-install
mostrou para copiar os arquivos necessrios para o funcionamento do driver
que foram gerados durante a compilao, aps tambm copie os arquivos tal
qual o make-install copiou.
brlix@brlix:~$mkdirplib/modules/3.16.7/kernel/extra

Esse o caminho que o make-install usou, o -p utilizado para criar um


diretrio dentro de outro recursivamente, cuide para no por / no incio ao
criar os diretrios, pois o / indica que dever ser criado a partir da raiz e...

Criando Pacote .deb


...na verdade, eles devem ser criados dentro da pasta data.
brlix@brlix:~$ cp /lib/modules/3.16.7/kernel/extra/r8192se_pci.ko
lib/modules/3.16.7/kernel/extra

Neste comando acima, voc est copiando o mdulo de onde o makeinstall tinha jogado, que era no /lib/modules do sistema, para o
lib/modules que voc criou para fazer o pacote.
5) Agora vamos criar os arquivos que ficam dentro do diretrio
debian, para isso entre dentro desse diretrio:

Criando Pacote .deb


Vamos comear criando o arquivo control, que um arquivo de
controle e contm detalhes independentes de verso sobre o pacote
fonte e sobre o pacote binrio que cria.
brlix@brlix~$ touch control (O comando touch serve para
criar um arquivo texto vazio).
brlix@brlix~$ vim control (O comando vim um editor de
texto modo caracter, utilizando ele vamos criar o contedo do arquivo
control, aps criar o contedo salve o arquivo). O contedo do
arquivo control dever ficar assim:

Criando Pacote .deb


Source:rtl8192semodules3.16.7
Section:base
Priority:extra
Maintainer:DavidJourdain<jourdain@gmx.de>
BuildDepends:debhelper(>=5)
Package:rtl8192semodules3.16.7
Architecture:i386
Description:Modulesrtl8192seforkernel3.167

Criando Pacote .deb


Abaixo, temos uma breve explicao de cada parte do arquivo control.
Source um item obrigatrio e identifica o nome do pacote fonte.
Section e Priority Alm de obrigatrio, esses dois campos classificam o
pacote, onde Section representa uma rea de aplicao em qual o pacote
foi classificado e Priority representa quo importante que o usurio o
tenha instalado.
Mantainer Nome do mantenedor e endereo de email.
Build-Depends Dependncia do pacote fonte, no obrigatrio, porm
bom pr.

Criando Pacote .deb


Package Um campo obrigatrio onde contm o nome do pacote
binrio.
Architecture Outro campo obrigatrio, onde vai a string de
arquitetura, se i386, all (para todas arquiteturas).
Description Pequeno resumo ou descrio de o que o pacote e
para que serve.
Alm desses campos, existem mais alguns importantes, dentre eles:
Depends Campo onde vai o nome de pacotes que este
absolutamente depende.
Recommends Declara uma dependncia forte, mas no absoluta.

Criando Pacote .deb


Suggests Declara que este pacote pode ser mais til com outros
pacotes que iro ser listados neste campo.
Conflicts Declara que este pacote conflita com o pacote que ir
neste campo, ento o dpkg s instalar este, se o outro for removido.
Replaces Sabendo que o dpkg no permite alterar arquivos de
outro pacote, ento no deixa que o mesmo seja instalado. Porm se
seu pacote precisa alterar arquivos de um pacote chamado fulano
basta por o nome deste pacote, ou seja, fulano no campo Replaces
que tudo ocorrer bem.

Criando Pacote .deb


6) Ainda dentro do diretrio debian, vamos criar o arquivo rules, que
um script de construo, um arquivo Makefile executvel e contm
as entradas especificas do programa pra compilar o pacote e construir
o(s) pacote(s) binrios do cdigo.
brlix@brlix~$touchrules
brlix@brlix~$vimrules
O contedo do arquivo rules dever ficar tal qual como segue abaixo,
e depois ser salvo e receber poderes de execuo:

Criando Pacote .deb


#!/usr/bin/makef

dh_gencontrol:

build:

dh_md5sums

clean:
dh_testdir
dh_testroot

dh_builddeb
binaryarch:

Binaryindep:

binary:binaryindepbinaryarch

dh_clean:

.PHONY:binarybinaryarchbinaryindepcleanbuild

dh_testdir
dh_testroot
dh_installchangelogs
dh_installdocs
cpadata/*debian/tmp/
dh_fixperms
dh_compress
dh_installdeb
#Continue...

Criando Pacote .deb


Para dar poderes de execuo ao arquivo rules execute o seguinte
comando:
brlix@brlix~$chmod+xrules
7) Outro arquivo importante que dever conter dentro do diretrio
debian, o changelog, que um arquivo responsvel por gravar as
mudanas especificas feitas no pacote. Ele tem um formato especial
que permite s ferramentas de construo de pacote descobrirem
qual verso do pacote est sendo construda e descobrir outras
informaes especficas de lanamento. Mais ou menos assim:

Criando Pacote .deb


pacote(verso)distribuio(es);urgency=urgncia

*detalhesdemudanas
maisdetalhesdemudanas
*aindamaisdetalhesdemudanas

nomedomantenedoreendereodeemaildata
Onde pacote e verso so a fonte do nome do pacote e nmero de verso.
Distribuio(es) lista as distribuies nas quais essa verso deve ser instalado
quando for...

Criando Pacote .deb


...enviada. Urgncia o valor do campo Urgency no arquivo. Os
detalhes de mudana podem de fato ser uma srie de linhas
comeando com pelo menos dois espaos, mas convencionalmente
cada mudana comea com um asterisco e um espao separatrio e a
continuao das linhas so 'identados' para alinh-las com o incio do
texto acima. Linhas em branco podem ser usadas para separar grupos
de mudanas, se desejado. O nome e endereo de e-mail do
mantenedor no devem necessariamente ser aqueles do mantenedor
do pacote usual e sim de quem efetuou a ltima correo ou
alterao no pacote. A data deve ser no formato RFC822, deve incluir
a zona de tempo especificada numericamente, com o nome dela ou...

Criando Pacote .deb


...abreviao opcionalmente presente como comentrio. A
primeira linha ttulo com o nome do pacote deve comear
na margem da esquerda, a linha trailer com os detalhes do
mantenedor e da data devem ser precedidos por exatamente
um espao. Os detalhes do mantenedor e a data devem ser
separadas por, exatamente, dois espaos.
- Todos os dados explicados acima importante saber, pois
qualquer ponto a mais ou vrgula no lugar errado dar erro
na hora de construir o pacote, o arquivo changelog do nosso
pacote dever ficar como no slide seguinte:

Criando Pacote .deb


rtl8192semodules3.16.7(0.11)unstable;urgency=low

*Initialrelease

DavidJourdain<jourdain@gmx.de>Fri,13Mar201523:29:220300

Criando Pacote .deb


Para voc pegar o formato correto da data, basta executar o seguinte
comando no terminal:
brlix@brlix~$dateR
8) O ltimo arquivo que dever conter dentro do diretrio debian, o
copyright, ou seja, a licena do pacote debian, neste caso o pacote
est sob a licena GNU/GPL ento usarei uma licena padro dos
pacotes debian sob essa licena, para isso crie o arquivo copyright,
copie o contedo que postarei abaixo para dentro dele e salve-o.

Criando Pacote .deb


brlix@brlix~$touchcopyright
brlix@brlix~$vimcopyright
Copie o seguinte contedo para dentro do arquivo copyright:
License:
This program is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
Foundation;eitherversion2oftheLicense,or(atyouroption)anylaterversion.
This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULARPURPOSE.SeetheGNUGeneralPublicLicenseformoredetails.Youshould
havereceivedacopyoftheGNUGeneralPublicLicensealongwiththisprogram;if
not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
Boston, MA 021101301, USA. The full text of the GNU General Public License is
availableonDebian.systemsin/usr/share/commonlicenses/GPL.TheDebianpackaging
is(C)2007,andislicensedundertheGPL,see`/usr/share/commonlicenses/GPL'.

Criando Pacote .deb


9) Feito isso, agora vamos sair do diretrio debian e criar
nosso pacote:
brlix@brlix~$ cd .. (Esse comando serve para voltar
um diretrio atrs)
Bom, se tudo ocorreu bem voc deve estar no diretrio...

Criando Pacote .deb


rtl8192se-modules-3.16.7-0.1 que voc criou l no incio, e
dando um ls dever aparecer apenas os diretrios data e debian.
Ento vamos criar nosso pacote:
brlix@brlix~$ dpkgbuildpackage rfakeroot (dpkgbuildpackage o comando de controle e criao do pacote, -rfakeroot
serve para criar o pacote sem privilgios de root).
Se tudo ocorreu bem, o pacote debian juntamente com os fontes
foram criados. Para verificar, volte um diretrio para trs usando o cd
.. e de um ls, dever conter o pacote debian com outros 3 arquivos.

Criando Pacote .deb


Os 4 arquivos que o dpkg-buildpackage -rfakeroot criou foram os seguinte:
rtl8192semodules3.16.7_0.11_i386.deb

Pacote debian

rtl8192semodules3.16.7_0.11_i386.changes Arquivo de controle, que

controla a instalao dos arquivos enviados e o banco de dados interno do


dpkg.
rtl8192semodulesrtl8192semodules3.16.7_0.11.dsc_0.11.dsc

Arquivo de controle de fonte debian. Contm uma srie de campos,


identificados e separados como os campos no arquivo control do pacote
binrio.
rtl8192semodules3.16.7_0.11.tar.gz

pacote debian.

Arquivo fonte original do

Criando Pacote .deb


Pronto, agora voc se baseando nos Comandos para Gerenciamento
de Pacotes .deb mostrado no incio, instale seu pacote e execute
alguns comandos de gerenciamento no mesmo.
Usando os conhecimentos que voc aprendeu, tente criar um pacote
debian para o Firmware do driver rtl8192se - E outro com o cdigo
fonte do driver, lembrando que o fonte o arquivo tar.gz e no
momento que estar criando sua estrutura no diretrio data, dever
ser jogado em /usr/src.

Referncias
- Oque e para que serve uma Compilao?
http://wwwusers.rdc.puc-rio.br/rmano/processo.html

- Pr requisitos para efetuar uma Compilao


http://wiki.dcc.ufba.br/bin/view/GAVRI/TutorialCompilacaoKernel#Pacotes_necess_rios_para_compila
http://packages.debian.org
http://pt.wikipedia.org/wiki/Ncurses
http://foldoc.org/Application+Program+Interface

- Oque e para que serve um Pacote .deb?


http://www.slideshare.net/bueroman/empacotamento-debian-bsico
http://www.debian.org/doc/debian-policy/

- Pr requisitos para criar um Pacote .deb


http://packages.debian.org

- Comandos para gerenciamento de Pacotes .deb


http://www.debian.org/doc/manuals/apt-howto/ch1.pt-br.html
http://pt.wikipedia.org/wiki/Repositrio
Manual de comandos linux, atravs do comando man no terminal

Referncias
- Definio de Driver
http://pt.wikipedia.org/wiki/Driver_de_dispositivo

- Definio de Firmware
http://pt.wikipedia.org/wiki/Firmware

- Efetuando uma Compilao


http://brunotorres.net/compilar-programas

- Criando Pacote .deb


http://debian-br.sourceforge.net/docs/sgml/packaging/online/index.html#abstract
http://www.mentebinaria.com.br/artigos/0x19/0x19-debnaunha.html

- Outros links de drivers para o Kernel Linux


http://linuxwireless.org/en/users/Drivers/
http://elinux.org/Device_drivers
http://en.wikipedia.org/wiki/Comparison_of_open-source_wireless_drivers
https://wireless.wiki.kernel.org/en/users/drivers
http://www.linux-drivers.org/network.html

Demais referncias: Arquivos PDF disponveis no mini-curso