Guia Rápido do FreeBSD para Usuários
&linux;JohnFerrell2008The FreeBSD Documentation Project$FreeBSD$$FreeBSD$
&tm-attrib.freebsd;
&tm-attrib.linux;
&tm-attrib.intel;
&tm-attrib.redhat;
&tm-attrib.unix;
&tm-attrib.general;
O objetivo deste documento é familiarizar
rapidamente os usuários intermediários e
avançados de &linux; com o FreeBSD.IntroduçãoEste documento irá destacar as diferenças
entre &os; e &linux; para que os usuários
intermediários e avançados possam rapidamente
se familiarizar com os conceitos básicos do FreeBSD.
Esta é apenas uma rápida introdução
técnica, ela não tenta discutir as
diferenças filosóficas entre os
dois sistemas operacionais.Este documento assume que você já tem o &os;
instalado. Se você não tem o &os; instalado ou
precisa de ajuda com o processo de instalação,
por favor, consulte o capítulo
Instalando o FreeBSD no Handbook.Shells: Sem Bash?Usuários vindos do &linux; são frequentemente
surpreendidos por não encontrarem o
Bash como o
shell padrão no &os;. De fato, o
Bash nem mesmo está
presente na instalação padrão. Em vez
disso, o &os; usa o &man.tcsh.1; como shell
padrão. Embora o Bash e
seus outros shells favoritos estejam
disponíveis na
Coleção de Ports
do &os;.Se você instalar outros shells, o
&man.chsh.1; poderá ser usado para definir o
shell padrão dos usuários.
Contudo, é recomendável que o
shell padrão do
root permaneça inalterado. A
razão para isso é que
shells não incluídos na
base do sistema são normalmente instalados em
/usr/local/bin ou
/usr/bin. Caso ocorra um
problema no sistema de arquivos no qual estão localizados
o /usr/local/bin e o
/usr/bin, eles não poderão
ser montados. Neste caso, o usuário
root não teria acesso ao seu
shell padrão, o que o impediria de
efetuar login. Por este motivo uma segunda conta
root, a conta toor,
foi criada para uso com shells que
não fazem parte da base do sistema. Leia o
FAQ de segurança para obter
informações sobre a conta toor.Pacotes e Ports: Adicionando programas
no &os;Além do tradicional método &unix; de
instalação de programas (baixar o código
fonte, extrair, editar o código fonte, e compilar),
o &os; oferece dois outros métodos para instalar
aplicações: pacotes e ports.
Uma lista completa de todos os ports e
pacotes disponíveis pode ser encontrada aqui.PacotesPacotes são aplicações
pré-compiladas, o equivalente no &os; ao
.deb nos sistemas baseados no
Debian/Ubuntu e ao .rpm nos
sistemas baseados no Red Hat/Fedora. Pacotes
são instalados usando &man.pkg.add.1;. Por exemplo,
o seguinte comando instala o
Apache 2.2:&prompt.root; pkg_add /tmp/apache-2.2.6_2.tbzUsar a opção
dirá ao &man.pkg.add.1; para baixar automaticamente
o pacote e instalá-lo, juntamente com quaisquer
dependências que ele possua:&prompt.root; pkg_add -r apache22
Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/Latest/apache22.tbz... Done.
Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/All/expat-2.0.0_1.tbz... Done.
Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/All/perl-5.8.8_1.tbz... Done.
[snip]
To run apache www server from startup, add apache22_enable="YES"
in your /etc/rc.conf. Extra options can be found in startup script.Se você está rodando uma versão de
release do &os; (6.2, 6.3, 7.0, etc.,
geralmente instalada a partir de um CD-ROM) o
pkg_add -r vai baixar o pacote compilado
especificamente para esta versão. Este pacote
pode não ser a versão
mais atual da aplicação. Você pode
usar a variável PACKAGESITE para
sobrescrever este comportamento padrão. Por
exemplo, ajuste PACKAGESITE para ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6-stable/Latest/
para baixar os pacotes mais recentes compilados para a
série 6.X.Para mais informações sobre pacotes, por
favor, consulte a seção 4.4 do Handbook do
&os;:
Usando o Sistema de Pacotes.PortsO segundo método para instalação
de aplicações no &os; é a
Coleção de Ports.
A Coleção de Ports
é um framework de
Makefiles e
patches especialmente
customizados para a instalação de vários
programas a partir do código fonte no &os;. Ao
instalar um port o sistema irá
baixar o código fonte, aplicar qualquer
patch necessário,
compilar o código, e instalar a
aplicação. O mesmo processo será
aplicado para todas as suas dependências.A Coleção de Ports, por
vezes designada como a árvore de
ports, pode ser encontrada em
/usr/ports. Isto assumindo que a
Coleção de Ports foi
instalada durante o processo de instalação do
&os;. Se a Coleção de Ports
não foi instalada, ela pode ser adicionada a partir
dos discos de instalação usando
&man.sysinstall.8;, ou baixada dos servidores do &os; usando
&man.csup.1; ou &man.portsnap.8;. Instruções
detalhadas para a instalação da
Coleção de Ports podem ser
encontradas na
seção 4.5.1 do Handbook.A instalação de um port
é tão simples (geralmente) quanto entrar no
diretório do port desejado e
iniciar o processo de compilação. O exemplo
seguinte instala o Apache 2.2 a
partir da Coleção de
Ports:&prompt.root; cd /usr/ports/www/apache22
&prompt.root; make install cleanUm grande benefício do uso do
ports para instalar programas é a
possibilidade de personalizar as opções de
instalação. Por exemplo, ao instalar o
Apache 2.2 a partir do
ports, você poderá habilitar
o mod_ldap definindo a
variável WITH_LDAP ao executar
&man.make.1;:&prompt.root; cd /usr/ports/www/apache22
&prompt.root; make WITH_LDAP="YES" install cleanPor favor, leia a seção 4.5 do Handbook do
&os;,
Usando a Coleção de
Ports, para maiores
informações sobre a Coleção de
Ports.Ports ou pacotes, qual eu devo usar?Pacotes são apenas ports
pré-compilados, então na prática é
uma questão de instalarmos a partir do código
fonte (ports) contra instalarmos de um
pacote binário. Cada método tem seus
próprios benefícios:Pacotes (binário)Instalação rápida
(a compilação de grandes
aplicações pode ser um tanto
demorada).Você não precisar saber como
compilar o programa.Não é necessário
instalar compiladores no seu sistema.Ports (código fonte)Possibilidade de personalizar as
opções de instalação. (Pacotes
normalmente são compilados com as
opções padrões. Com o
ports você pode personalizar
várias opções, como a
compilação de módulos adicionais ou
a mudança do path de
instalação
padrão.)Você pode aplicar seus
próprios patches se
assim desejar.Se você não tem qualquer requisito especial,
o sistema de pacotes provavelmente vai se adequar
muito bem à sua situação. Se
você for precisar personalizar a
instalação, o ports é
a melhor opção. (E lembre-se, se você
precisa personalizar a instalação, mas prefere
pacotes, você pode compilar um pacote personalizado a
partir do ports usando
makepackage e,
em seguida, copiar o pacote para outros servidores.)Inicialização do Sistema: Onde estão
os run-levels?O &linux; usa o sistema SysV init,
enquanto o &os; usa o tradicional BSD-style
&man.init.8;. Sob o BSD-style &man.init.8;
não existem run-levels e
nem /etc/inittab, em vez disso a
inicialização é controlada pelo
utilitário &man.rc.8;. O script/etc/rc lê
/etc/defaults/rc.conf e
/etc/rc.conf para determinar quais
serviços serão iniciados. Os serviços
especificados são, então, inicializados rodando
os scripts de inicialização
correspondentes em /etc/rc.d/
e /usr/local/etc/rc.d/. Esses
scripts são similares aos
scripts localizados em
/etc/init.d/ nos sistemas &linux;.Por que existem dois locais para
scripts de inicialização de
serviços? Os scripts
encontrados em /etc/rc.d/ são
para aplicações que são parte da
base do sistema. (&man.cron.8;, &man.sshd.8;,
&man.syslog.3;, e outros.) Os scripts em
/usr/local/etc/rc.d/ são para
aplicações instaladas pelo usuário, como
Apache,
Squid, etc.Qual é a diferença entre a
base do sistema e as aplicações
instaladas pelo usuário? O &os; é
desenvolvido como um sistema operacional completo.
Em outras palavras, o kernel, bibliotecas
do sistema, e utilitários de nível de
usuário (como &man.ls.1;, &man.cat.1;, &man.cp.1;,
etc.) são desenvolvidos juntos e lançados como
um só. Isso é designado como
base do sistema. As aplicações
instaladas pelo usuário são
aplicações que não fazem parte da
base do sistema, como
Apache,
X11,
Mozilla Firefox, etc. Estas
aplicações instaladas pelo usuário
são geralmente instaladas usando os Pacotes e a Coleção
de Ports. A fim de mantê-las
separadas da base do sistema, as
aplicações dos usuário são
normalmente instaladas sob /usr/local/.
Portanto, os binários instalados pelo usuário
residem em /usr/local/bin/, arquivos de
configuração em
/usr/local/etc/, e assim por
diante.Os Serviços são ativados espeficificando
NomeDoServiço_enable="YES"
em /etc/rc.conf (&man.rc.conf.5;).
Dê uma olhada em
/etc/defaults/rc.conf para visualizar os
padrões do sistema, essas configurações
padrões podem ser sobrescritas por
configurações em
/etc/rc.conf. Quando instalar
aplicações adicionais não deixe de
analisar a documentação para determinar
como ativar qualquer serviço associado.O seguinte trecho do /etc/rc.conf ativa
o &man.sshd.8; e o Apache 2.2. Ele
também determina que o Apache
deve ser iniciado com SSL.# enable SSHD
sshd_enable="YES"
# enable Apache with SSL
apache22_enable="YES"
apache22_flags="-DSSL"Uma vez que o serviço foi ativado em
/etc/rc.conf, ele pode ser inicializado
pela linha de comando (sem precisar reinicializar o
sistema):&prompt.root; /etc/rc.d/sshd startSe o serviço não foi ativado, ele pode ser
inicializado pela linha de comando usando
:&prompt.root; /etc/rc.d/sshd forcestartConfiguração da redeInterfaces de RedeEm vez do identificador genérico
ethX, que o &linux; usa para identificar
uma interface de rede, o &os; usa o nome do driver do
dispositivo de rede seguido por um número como
identificador. A seguinte saída do &man.ifconfig.8;
mostra duas interfaces de rede &intel; Pro 1000
(em0 e em1):
&prompt.user; ifconfig
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=b<RXCSUM,TXCSUM,VLAN_MTU>
inet 10.10.10.100 netmask 0xffffff00 broadcast 10.10.10.255
ether 00:50:56:a7:70:b2
media: Ethernet autoselect (1000baseTX <full-duplex>)
status: active
em1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=b<RXCSUM,TXCSUM,VLAN_MTU>
inet 192.168.10.222 netmask 0xffffff00 broadcast 192.168.10.255
ether 00:50:56:a7:03:2b
media: Ethernet autoselect (1000baseTX <full-duplex>)
status: activeConfiguração IPUm endereço IP pode ser atribuído a uma
interface de rede usando &man.ifconfig.8;. No entanto, para
mantê-lo persistente entre as
reinicializações, a configuração
deve ser incluída em /etc/rc.conf.
O seguinte exemplo configura o hostname, o
endereço IP, e o gateway
padrão:hostname="server1.example.com"
ifconfig_em0="inet 10.10.10.100 netmask 255.255.255.0"
defaultrouter="10.10.10.1"Use a seguinte sintaxe para configurar a interface para
DHCP:hostname="server1.example.com"
ifconfig_em0="DHCP"FirewallComo o IPTABLES no &linux;, o
&os; também oferece um firewall ao
nível de kernel; atualmente o &os;
oferece três opções de
firewalls:IPFIREWALLIPFILTERPFO IPFIREWALL, ou
IPFW (o comando para gerenciar um
conjunto de regras IPFW é
&man.ipfw.8;), é o firewall
desenvolvido e mantido pelos desenvolvedores do &os;. O
IPFW pode ser integrado com
&man.dummynet.4; para prover a capacidade de controle de
tráfego e simular diferentes tipos de conexões de
rede.Amostra de uma regra do IPFW para
permitir uma conexão de entrada do
SSH:ipfw add allow tcp from any to me 22 in via $ext_ifIPFILTER é um aplicativo
de firewall desenvolvido por
Darren Reed. Ele não é específico
para o &os; e foi portado para vários sistemas
operacionais, incluindo NetBSD, OpenBSD, SunOS, HP/UX, e
Solaris.Amostra do comando IPFILTER para
permitir uma conexão de entrada do
SSH:pass in on $ext_if proto tcp from any to any port = 22O último aplicativo de firewall,
PF, é desenvolvido pelo
projeto OpenBSD. O PF foi criado
como um substituto para o IPFILTER.
Como tal, a sintaxe do PF é
muito similar à do IPFILTER.
O PF pode ser integrado com
&man.altq.4; para prover recursos de QoS.Amostra do comando PF para
permitir uma conexão de entrada do
SSH:pass in on $ext_if inet proto tcp from any to ($ext_if) port 22Atualizando o &os;Existem três métodos para atualizar um
sistema &os;: a partir do código fonte,
atualização binária, e a partir dos
discos de instalação.A atualização a partir do código
fonte é a mais demorada, mas por outro lado é
a que oferece a maior flexibilidade. O processo envolve a
sincronização de uma cópia local do
código fonte do sistema a partir dos servidores
Subversion do &os;. Uma vez que o
código fonte local está atualizado, você pode compilar a nova
versão do kernel e dos aplicativos de nível
de usuário. Para maiores informações sobre atualizações a
partir do código fonte veja
o capítulo sobre atualização no
Handbook do &os;.As atualizações binárias são
similares ao uso do yum ou
apt-get para atualizar sistemas &linux;. O
comando &man.freebsd-update.8; vai baixar e instalar as novas
atualizações. As atualizações
podem ser agendadas usando &man.cron.8;.Se você utilizar o &man.cron.8; para agendar as
atualizações, por favor, certifique-se de
usar freebsd-update cron em seu
&man.crontab.1; para reduzir a possibilidade de que um
grande número de máquinas busquem as
atualizações todas ao mesmo tempo.0 3 * * * root /usr/sbin/freebsd-update cronO último método de atualização,
a partir dos discos de instalação, é um
processo bastante simples. Efetue o boot
a partir dos discos de instalação e selecione a
opção para atualizar.procfs: Morto, mas vivo na memóriaNo &linux;, para determinar se o encaminhamento IP
está ativado, você pode olhar em
/proc/sys/net/ipv4/ip_forward. No &os;
você precisa usar o &man.sysctl.8; para ver esta e
outras opções do sistema, pois o &man.procfs.5;
tornou-se obsoleto nas versões mais recentes do &os;.
(Embora sysctl também esteja
disponível no &linux;.)No exemplo do encaminhamento IP, você poderia usar o
seguinte comando para determinar se ele está ativado no
seu sistema FreeBSD:&prompt.user; sysctl net.inet.ip.forwarding
net.inet.ip.forwarding: 0A opção é
utilizada para listar todas as configurações
do sistema:&prompt.user; sysctl -a
kern.ostype: FreeBSD
kern.osrelease: 6.2-RELEASE-p9
kern.osrevision: 199506
kern.version: FreeBSD 6.2-RELEASE-p9 #0: Thu Nov 29 04:07:33 UTC 2007
root@i386-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC
kern.maxvnodes: 17517
kern.maxproc: 1988
kern.maxfiles: 3976
kern.argmax: 262144
kern.securelevel: -1
kern.hostname: server1
kern.hostid: 0
kern.clockrate: { hz = 1000, tick = 1000, profhz = 666, stathz = 133 }
kern.posix1version: 200112
...Alguns dos valores do sysctl
estão disponíveis somente para
leitura.Existem ocasiões nas quais o procfs
é necessário, como na execução de
programas antigos, no uso do &man.truss.1; para rastrear
chamadas de sistema, e para possibilitar a
Compatibilidade Binária com Linux.
(Embora a Compatibilidade Binária com Linux use seu
próprio procfs, &man.linprocfs.5;.)
Se você precisar montar o procfs,
você pode adicionar a seguinte entrada no
/etc/fstab:proc /proc procfs rw,noauto 0 0 vai prevenir
/proc de ser montado automaticamente
durante o boot.E então monte o procfs com:&prompt.root; mount /procComandos ComunsGerenciamento de PacotesComando no &linux; (Red Hat/Debian)Equivalente no &os;propósitoyum install pacote / apt-get install pacotepkg_add -r pacoteInstala o pacote a partir do repositório remotorpm -ivh pacote / dpkg -i pacotepkg_add -v pacoteInstala um pacoterpm -qa / dpkg -lpkg_infoLista de pacotes instaladosGerenciamento do SistemaComando no &linux;Equivalente no &os;PropósitolspcipciconfLista de dispositivos PCIlsmodkldstatLista de módulos do kernel
carregadosmodprobekldload / kldunloadCarrega/descarrega módulos do
kernelstracetrussRastrear chamadas de sistemaConclusãoEsperamos que este documento tenha fornecido para
você o suficiente para começar a utilizar o
&os;. Certifique-se de dar uma olhada no
Handbook do &os; para se aprofundar nos
tópicos abordados, assim como nos muitos
tópicos não mencionados neste documento.