"> ]> FreeBSD Handbook Projeto de Documentação do FreeBSD $FreeBSD$ $FreeBSD$ 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 The FreeBSD Documentation Project Copyright Redistribution and use in source (XML DocBook) and 'compiled' forms (XML, HTML, PDF, PostScript, RTF and so forth) with or without modification, are permitted provided that the following conditions are met: Redistributions of source code (XML DocBook) must retain the above copyright notice, this list of conditions and the following disclaimer as the first lines of this file unmodified. Redistributions in compiled form (transformed to other DTDs, converted to PDF, PostScript, RTF and other formats) must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS DOCUMENTATION IS PROVIDED BY THE FREEBSD DOCUMENTATION PROJECT "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FREEBSD DOCUMENTATION PROJECT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. FreeBSD is a registered trademark of the FreeBSD Foundation. 3Com and HomeConnect are registered trademarks of 3Com Corporation. 3ware is a registered trademark of 3ware Inc. ARM is a registered trademark of ARM Limited. Adaptec is a registered trademark of Adaptec, Inc. Adobe, Acrobat, Acrobat Reader, Flash and PostScript are either registered trademarks or trademarks of Adobe Systems Incorporated in the United States and/or other countries. Apple, AirPort, FireWire, iMac, iPhone, iPad, Mac, Macintosh, Mac OS, Quicktime, and TrueType are trademarks of Apple Inc., registered in the U.S. and other countries. Android is a trademark of Google Inc. Heidelberg, Helvetica, Palatino, and Times Roman are either registered trademarks or trademarks of Heidelberger Druckmaschinen AG in the U.S. and other countries. IBM, AIX, OS/2, PowerPC, PS/2, S/390, and ThinkPad are trademarks of International Business Machines Corporation in the United States, other countries, or both. IEEE, POSIX, and 802 are registered trademarks of Institute of Electrical and Electronics Engineers, Inc. in the United States. Intel, Celeron, Centrino, Core, EtherExpress, i386, i486, Itanium, Pentium, and Xeon are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. Intuit and Quicken are registered trademarks and/or registered service marks of Intuit Inc., or one of its subsidiaries, in the United States and other countries. Linux is a registered trademark of Linus Torvalds. LSI Logic, AcceleRAID, eXtremeRAID, MegaRAID and Mylex are trademarks or registered trademarks of LSI Logic Corp. Microsoft, IntelliMouse, MS-DOS, Outlook, Windows, Windows Media and Windows NT are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. Motif, OSF/1, and UNIX are registered trademarks and IT DialTone and The Open Group are trademarks of The Open Group in the United States and other countries. Oracle is a registered trademark of Oracle Corporation. RealNetworks, RealPlayer, and RealAudio are the registered trademarks of RealNetworks, Inc. Red Hat, RPM, are trademarks or registered trademarks of Red Hat, Inc. in the United States and other countries. Sun, Sun Microsystems, Java, Java Virtual Machine, JDK, JRE, JSP, JVM, Netra, OpenJDK, Solaris, StarOffice, SunOS and VirtualBox are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries. MATLAB is a registered trademark of The MathWorks, Inc. SpeedTouch is a trademark of Thomson. VMware is a trademark of VMware, Inc. Mathematica is a registered trademark of Wolfram Research, Inc. XFree86 is a trademark of The XFree86 Project, Inc. Ogg Vorbis and Xiph.Org are trademarks of Xiph.Org. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this document, and the FreeBSD Project was aware of the trademark claim, the designations have been followed by the or the ® symbol. Bem vindo ao FreeBSD! Este manual cobre a instalação e o uso diário do FreeBSD 12.1-RELEASE e do FreeBSD 11.3-RELEASE. Este livro é o resultado do trabalho contínuo de muitas pessoas. Algumas seções podem estar desatualizadas. Os interessados em ajudar a atualizar e expandir este documento devem enviar e-mails para a lista de discussão do projeto de documentação do FreeBSD. A última versão deste livro está disponível no site do FreeBSD. Versões anteriores podem ser obtidas em https://docs.FreeBSD.org/doc/. O livro pode ser baixado em uma variedade de formatos e opções de compressão do servidor FTP do FreeBSD ou de um dos inúmeros sites espelho. Cópias impressas podem ser adquiridas da FreeBSD Mall. As pesquisas podem ser realizadas no manual e em outros documentos na página de busca. Prefácio Audiência Pretendida O novato no FreeBSD descobrirá que a primeira seção deste livro guia o usuário através do processo de instalação do FreeBSD e gentilmente apresenta os conceitos e convenções que sustentam o UNIX. Trabalhar através desta seção exige pouco mais do que o desejo de explorar, e a capacidade de incorporar novos conceitos à medida que eles são introduzidos. Uma vez que você chegou até aqui, a segunda seção do Handbook, muito maior, é uma referência abrangente a todos os tópicos de interesse para administradores de sistemas FreeBSD. Alguns destes capítulos podem recomendar que você faça alguma leitura prévia, e isto é destacado na sinopse no início de cada capítulo. Para uma lista de fontes adicionais de informação, por favor veja o . Mudanças desde a Terceira Edição A versão online atual do Handbook representa o esforço cumulativo de muitas centenas de contribuidores nos últimos 10 anos. A seguir estão algumas das mudanças significativas desde a publicação da terceira edição do volume em 2004: foi adicionado com informações sobre a poderosa ferramenta de análise de desempenho DTrace. foi adicionado com informações sobre sistemas de arquivos não-nativos no FreeBSD, como o ZFS da Sun. foi adicionado para cobrir os novos recursos de auditoria no FreeBSD e explicar seu uso. foi adicionado com informações sobre a instalação do FreeBSD em ambientes virtualizados. foi adicionado para cobrir a instalação do FreeBSD usando o novo utilitário de instalação, bsdinstall. Mudanças desde a Segunda Edição (2004) A terceira edição foi o culminar de mais de dois anos de trabalho pelos membros dedicados do Projeto de Documentação do FreeBSD. A edição impressa cresceu a tal tamanho que foi necessário publicar como dois volumes separados. A seguir estão as principais mudanças nesta nova edição: foi expandido com novas informações sobre o gerenciamento de recursos e energia da ACPI, o utilitário de sistema cron e mais opções para ajuste do kernel. foi expandido com novas informações sobre redes virtuais privadas (VPNs), listas de controle de acesso (ACLs) do sistema de arquivos e avisos de segurança. é um novo capítulo desta edição. Ele explica o que é MAC e como esse mecanismo pode ser usado para proteger um sistema FreeBSD. foi expandido com novas informações sobre dispositivos de armazenamento USB, snapshots do sistema de arquivos, cotas do sistema de arquivos, arquivos e sistemas de arquivos com suporte de rede e partições de disco criptografadas. Uma seção de solução de problemas foi adicionada ao . foi expandido com novas informações sobre o uso de agentes de transporte alternativos, autenticação SMTP, UUCP, fetchmail, procmail e outros tópicos avançados. é novidade nesta edição. Este capítulo inclui informações sobre a configuração do Servidor HTTP Apache, ftpd e a configuração de um servidor para clientes Microsoft Windows com Samba. Algumas seções do foram movidas para cá para melhorar a apresentação. foi expandido com novas informações sobre o uso de dispositivos Bluetooth com o FreeBSD, configuração de redes sem fio e redes ATM (Asynchronous Transfer Mode). Um glossário foi adicionado para fornecer um local central para as definições de termos técnicos utilizados ao longo do livro. Uma série de melhorias estéticas foram feitas nas tabelas e figuras ao longo do livro. Mudanças desde a Primeira Edição (2001) A segunda edição foi o culminar de mais de dois anos de trabalho pelos membros dedicados do Projeto de Documentação do FreeBSD. A seguir, as principais mudanças nesta edição: Um índice completo foi adicionado. Todas as figuras ASCII foram substituídas por diagramas gráficos. Uma sinopse padrão foi adicionada a cada capítulo para fornecer um resumo rápido de quais informações o capítulo contém e o que se espera que o leitor saiba. O conteúdo foi logicamente reorganizado em três partes: Introdução, Administração do Sistema e Apêndices. foi expandido para conter informações adicionais sobre processos, daemons e sinais. foi expandido para conter informações adicionais sobre o gerenciamento de pacotes binários. foi completamente reescrito com ênfase no uso de tecnologias de desktop modernas como KDE e GNOME sobre o XFree86 4.X. foi expandido. foi escrito a partir do que costumava ser dois capítulos separados em Discos e Backups. Sentimos que os tópicos são mais fáceis de compreender quando apresentados como um único capítulo. Uma seção sobre RAID (hardware e software) também foi adicionada. foi completamente reorganizado e atualizado para o FreeBSD 4.X/5.X. foi substancialmente atualizado. Muitas novas seções foram adicionadas ao . foi expandido para incluir mais informações sobre a configuração do sendmail. foi expandido para incluir informações sobre como instalar o Oracle e o SAP R/3. Os novos tópicos a seguir são abordados nesta segunda edição: . . Organização deste Livro Este livro é dividido em cinco seções logicamente distintas. A primeira seção, Introdução, cobre a instalação e o uso básico do FreeBSD. Espera-se que o leitor siga estes capítulos em sequência, possivelmente ignorando capítulos que abordam tópicos familiares. A segunda seção, Tarefas Comuns, cobre alguns dos recursos mais usados do FreeBSD. Esta seção e todas as seções subsequentes podem ser lidas fora de ordem. Cada capítulo começa com uma sinopse sucinta que descreve o que o capítulo cobre e o que se espera que o leitor já conheça. Isso permite que o leitor casual pule para encontrar capítulos de interesse. A terceira seção, Administração do Sistema, cobre tópicos de administração. A quarta seção, Comunicação de Rede, aborda tópicos sobre redes e servidores. A quinta seção contém apêndices de informações de referência. Introduz o FreeBSD para um novo usuário. Descreve a história do projeto FreeBSD, seus objetivos e modelo de desenvolvimento. Guia o usuário durante todo o processo de instalação do FreeBSD 9.x usando o bsdinstall. Cobre os comandos básicos e a funcionalidade do sistema operacional FreeBSD. Se você está familiarizado com Linux ou outro tipo de UNIX, provavelmente você pode pular este capítulo. Cobre a instalação de softwares de terceiros com a inovadora Coleção de Ports do FreeBSD, e com pacotes binários tradicionais. Descreve o Sistema X Window em geral e usa o X11 no FreeBSD em particular. Também descreve ambientes comuns de desktop, como o KDE e GNOME. Lista alguns aplicativos comuns de desktop, como navegadores web e pacotes de produtividade, e descreve como instalá-los no FreeBSD. Mostra como configurar o suporte a reprodução de som e vídeo para o seu sistema. Também descreve alguns exemplos de aplicativos de áudio e vídeo. Explica o porque que você pode precisar configurar um novo kernel e fornece instruções detalhadas para configurar, compilar e instalar um kernel personalizado. Descreve o gerenciamento de impressoras no FreeBSD, incluindo informações sobre páginas de banner, contabilidade de impressoras e configuração inicial. Descreve os recursos de compatibilidade Linux do FreeBSD. Também fornece instruções detalhadas de instalação para muitos aplicativos Linux populares, como o Oracle e o Mathematica. Descreve os parâmetros disponíveis para os administradores do sistema ajustarem um sistema FreeBSD para um ótimo desempenho. Também descreve os vários arquivos de configuração usados no FreeBSD e onde encontrá-los. Descreve o processo de inicialização do FreeBSD e explica como controlar este processo com opções de configuração. Descreve muitas ferramentas diferentes disponíveis para ajudar a manter seu sistema FreeBSD seguro, incluindo Kerberos, IPsec e OpenSSH. Descreve o framework do jail e as suas vantagens sobre o chroot tradicional do FreeBSD. Explica o que é o Mandatory Access Control (MAC) e como esse mecanismo pode ser usado para proteger um sistema FreeBSD. Descreve o que é a Auditoria de Eventos do FreeBSD, como ela pode ser instalada, configurada e como as trilhas de auditoria podem ser inspecionadas ou monitoradas. Descreve como gerenciar mídias de armazenamento e sistemas de arquivos com o FreeBSD. Isto inclui discos físicos, matrizes RAID, mídias óticas e de fita, discos com suporte de memória e sistemas de arquivos de rede. Descreve o que é o framework GEOM do FreeBSD e como configurar os vários níveis suportados de RAID. Examina o suporte a sistemas de arquivos não-nativos no FreeBSD, como o Z File System da Sun. Descreve o que os sistemas de virtualização oferecem e como eles podem ser usados com o FreeBSD. Descreve como usar o FreeBSD em outros idiomas além do inglês. Abrange a localização tanto em nível de sistema como em nível de aplicativo. Explica as diferenças entre FreeBSD-STABLE, FreeBSD-CURRENT e FreeBSD releases. Descreve quais usuários se beneficiariam do uso de um sistema em desenvolvimento e descreve este processo. Cobre os métodos que os usuários podem usar para atualizar seu sistema para a última release de segurança. Descreve como configurar e usar a ferramenta DTrace da Sun no FreeBSD. O rastreamento dinâmico pode ajudar a localizar problemas de desempenho, realizando a análise do sistema em tempo real. Explica como conectar terminais e modems ao seu sistema FreeBSD para conexões de discagem de entrada e de saída. Descreve como usar o PPP para se conectar a sistemas remotos com o FreeBSD. Explica os diferentes componentes de um servidor de e-mail e mergulha em tópicos simples de configuração do software mais popular de servidor de e-mails: o sendmail. Fornece instruções detalhadas e exemplos de arquivos de configuração para configurar sua máquina FreeBSD como um servidor de sistema de arquivos de rede, servidor de nome de domínio, servidor de sistema de informações de rede ou servidor de sincronização de horário. Explica a filosofia por trás dos firewalls baseados em software e fornece informações detalhadas sobre a configuração dos diferentes firewalls disponíveis para o FreeBSD. Descreve muitos tópicos de rede, incluindo o compartilhamento de uma conexão à Internet com outros computadores em sua LAN, tópicos avançados de roteamento, rede sem fio, Bluetooth, ATM, IPv6 e muito mais. Lista diferentes fontes para obter a mídia de instalação do FreeBSD em CD-ROM ou DVD, bem como diferentes sites na Internet que permitem que você baixe e instale o FreeBSD. Este livro aborda muitos assuntos diferentes que podem deixá-lo com a curiosidade de uma explicação mais detalhada. A bibliografia lista muitos livros excelentes que são referenciados no texto. Descreve os muitos fóruns disponíveis para usuários do FreeBSD postarem perguntas e se engajarem em conversas técnicas sobre o FreeBSD. Lista as fingerprints PGP de vários desenvolvedores do FreeBSD. Convenções utilizadas neste livro Para fornecer um texto consistente e fácil de ler, várias convenções são seguidas ao longo do livro. Convenções Tipográficas Itálico Uma fonte itálica é usada para nomes de arquivos, URLs, textos enfatizados e o primeiro uso de termos técnicos. Monospace Uma fonte monoespaçada é usada para mensagens de erro, comandos, variáveis de ambiente, nomes de ports, nomes de host, nomes de usuários, nomes de grupos, nomes de dispositivos, variáveis e fragmentos de código. Negrito Uma fonte negrita é usada para aplicativos, comandos e chaves. Entrada do Usuário As teclas são mostradas em negrito para se destacar do restante do texto. As combinações de teclas que devem ser digitadas simultaneamente são mostradas com `+' entre as teclas, como: Ctrl Alt Del Isso significa que o usuário deve digitar as teclas Ctrl, Alt e Del ao mesmo tempo. As teclas que devem ser digitadas em sequência serão separadas por vírgulas, por exemplo: Ctrl X , Ctrl S Significaria que o usuário deve digitar as teclas Ctrl e X simultaneamente e, em seguida, digitar as teclas Ctrl e S simultaneamente. Exemplos Exemplos começando com C:\> indicam um comando MS-DOS. Salvo indicação em contrário, estes comandos podem ser executados a partir de uma janela de Prompt de Comando em um ambiente Microsoft Windows. E:\> tools\fdimage floppies\kern.flp A: Exemplos começando com # indicam um comando que deve ser executado como superusuário no FreeBSD. Você pode logar como root para digitar o comando, ou logar como sua conta normal e usar o comando su1 para obter privilégios de superusuário. # dd if=kern.flp of=/dev/fd0 Exemplos começando com % indicam um comando que deve ser chamado a partir de uma conta de usuário normal. Salvo indicação em contrário, a sintaxe C-shell é usada para definir variáveis de ambiente e outros comandos do shell. % top Agradecimentos O livro que você está segurando representa os esforços de muitas centenas de pessoas em todo o mundo. Não importa se eles enviaram correções para erros de digitação ou submeteram capítulos completos, todas as contribuições foram úteis. Várias empresas têm apoiado o desenvolvimento deste documento, pagando aos autores para trabalhar em tempo integral, pagando pela publicação, etc. Em particular, a BSDi (posteriormente adquirida pela Wind River Systems) pagou membros do Projeto de Documentação do FreeBSD para trabalhar na melhoria deste livro em tempo integral, levando à publicação da primeira edição impressa em março de 2000 (ISBN 1-57176-241-8). A Wind River Systems pagou vários autores adicionais para fazer uma série de melhorias na infraestrutura de impressão e adicionar capítulos adicionais ao texto. Este trabalho culminou com a publicação da segunda edição impressa em novembro de 2001 (ISBN 1-57176-303-1). Em 2003-2004, a FreeBSD Mall, Inc. pagou a vários contribuidores para melhorar o Handbook em preparação para a terceira edição impressa. Primeiros Passos Esta parte do handbook é destinada aos usuários e administradores que são novos no FreeBSD. Estes capítulos: Apresentam o FreeBSD. Guiam os leitores através do processo de instalação. Ensinam conceitos básicos e fundamentais do UNIX. Mostram como instalar a grande variedade de aplicativos de terceiros disponíveis para o FreeBSD. Apresenta o X, o sistema de janelas UNIX e detalha como configurar um ambiente de desktop para tornar os usuários mais produtivos. O número de referências a tópicos futuros no texto foi mantido no mínimo, para que uma seção possa ser lida do começo ao fim com o mínimo de avanço desnecessário de páginas. Introdução Jim Mock Reestruturado, reorganizado e com partes reescritas por Sinopse Obrigado pelo seu interesse no FreeBSD! O capítulo seguinte cobre vários aspectos do Projeto FreeBSD, como seu histórico, objetivos, modelo de desenvolvimento e assim por diante. Depois de ler este capítulo, você saberá: Como o FreeBSD se relaciona com outros sistemas operacionais de computadores. A história do projeto FreeBSD. Os objetivos do projeto FreeBSD. O básico do modelo de desenvolvimento de código aberto do FreeBSD. E claro: de onde o nome FreeBSD vem. Bem vindo ao FreeBSD! 4.4BSD-Lite O FreeBSD é um Sistema Operacional de código aberto nos padrões Unix-Like para computadores de arquitetura x86 (32 and 64 bits), ARM, AArch64, RISC-V, MIPS, POWER, PowerPC, and Sun UltraSPARC. Ele fornece todos os recursos que são considerados comuns hoje em dia, como multitarefa preemptiva, proteção de memória, memória virtual, recursos para múltiplos usuários, suporte a SMP, todas as ferramentas de desenvolvimento de código aberto para diferentes linguagens e estruturas e recursos de área de trabalho centralizados no Sistema X Window, KDE ou GNOME. Seus pontos fortes são: Licença Liberal Open Source, que concede a você o direito de modificar e estender livremente seu código-fonte e incorporá-lo em projetos Open Source e produtos fechados, sem impor restrições típicas às licenças copyleft, bem como evita potenciais problemas de incompatibilidade de licença. Rede TCP/IP forte TCP/IP networking - O FreeBSD implementa protocolos padrões da indústria com desempenho e escalabilidade crescentes. Isso faz com que seja uma boa combinação tanto em funções de servidor quanto de roteamento/firewall - e, de fato, muitas empresas e fornecedores o utilizam precisamente para essa finalidade. Suporte totalmente integrado ao OpenZFS, incluindo root-on-ZFS, ZFS Boot Environments, gerenciamento de falhas, delegação administrativa, suporte a jails, documentação específica ao FreeBSD e suporte ao instalador do sistema. Extensivos recursos de segurança, do Mandatory Access Control ao Capsicum e mecanismos de sandbox. Mais de 30 mil pacotes pré-compilados para todas as arquiteturas suportadas, e a Coleção de Ports, que facilita a compilação de seus próprios pacotes personalizados. Documentação - além do Handbook e livros de diferentes autores que cobrem tópicos que vão da administração do sistema aos internals do kernel, há também as páginas man, não apenas para daemons do userspace, utilitários e arquivos de configuração, mas também para APIs do driver do kernel (seção 9) e drivers individuais (seção 4). Estrutura de repositório simples e consistente e sistema de compilação - O FreeBSD usa um único repositório para todos os seus componentes, tanto para o kernel quanto para o userspace. Isso, juntamente com um sistema de compilação unificado, fácil de personalizar e um processo de desenvolvimento bem pensado, facilita a integração do FreeBSD com a infraestrutura de compilação do seu próprio produto. Mantem-se fiel à filosofia do Unix, preferindo heterogeneidade ao invés de deamons monolíticos all in one com comportamento codificado (hardcoded). binary compatibility Linux Compatibilidade binária com o Linux, o que torna possível executar muitos binários do Linux sem a necessidade de virtualização. O FreeBSD é baseado na release 4.4BSD-Lite 4.4BSD-Lite do Computer Systems Research Group (CSRG) Computer Systems Research Group (CSRG) da Universidade da Califórnia em Berkeley, e mantém a tradição distinta do desenvolvimento de sistemas BSD. Além do bom trabalho fornecido pelo CSRG, o Projeto FreeBSD colocou milhares de horas-homem para estender a funcionalidade e ajustar o sistema para o máximo desempenho e confiabilidade em situações de carga reais. O FreeBSD oferece desempenho e confiabilidade a altura de outras ofertas de código aberto e comerciais, combinadas com recursos de ponta não disponíveis em nenhum outro lugar. O que o FreeBSD Pode Fazer? As aplicações para as quais o FreeBSD pode ser colocado são verdadeiramente limitadas apenas pela sua própria imaginação. Do desenvolvimento de software à automação de fábrica, do controle de estoque à correção de azimute de antenas de satélite remotas; Se isso puder ser feito com um produto comercial UNIX, é mais do que provável que você também possa fazê-lo com o FreeBSD! O FreeBSD também se beneficia significativamente de milhares de aplicativos de alta qualidade desenvolvidos por centros de pesquisa e universidades em todo o mundo, muitas vezes disponíveis com pouco ou nenhum custo. Como o código-fonte do FreeBSD está disponível gratuitamente, o sistema também pode ser customizado em um grau quase inédito para aplicações ou projetos especiais, e de maneiras que geralmente não são possíveis com a maioria do sistemas operacionais dos principais fornecedores comerciais. Aqui está apenas uma amostra de algumas das aplicações em que as pessoas estão atualmente usando o FreeBSD: Serviços de Internet: A robusta rede TCP/IP incorporada ao FreeBSD torna-o uma plataforma ideal para uma variedade de serviços de Internet, tais como: Servidores WEB Roteamento IPv4 e IPv6 Firewalls firewall e Gateways NAT NAT (IP masquerading) Servidores FTP FTP servers electronic mail email email Servidores de Email E mais... Educação: Você é estudante de ciências da computação ou de engenharia relacionada? Não há melhor maneira de aprender sobre sistemas operacionais, arquitetura de computadores e redes do que colocar as mãos no sistema, uma experiência que o FreeBSD pode oferecer. Os vários pacotes CAD, matemáticos e de design gráfico disponíveis gratuitamente também o tornam altamente útil para aqueles cujo principal interesse em um computador é fazer com que outro trabalho seja feito! Pesquisa: Com o código-fonte de todo o sistema disponível, o FreeBSD é uma excelente plataforma para pesquisa em sistemas operacionais, assim como em outros ramos da ciência da computação. A natureza livremente disponível do FreeBSD também possibilita que grupos remotos colaborem em ideias ou desenvolvimento compartilhado sem ter que se preocupar com acordos de licenciamento especiais ou limitações sobre o que pode ser discutido em fóruns abertos. Rede: Precisa de um novo roteador? router Um servidor de nomes (DNS)? DNS Server Um firewall para manter as pessoas fora de sua rede interna? O FreeBSD pode facilmente transformar esse PC não utilizado que está encostado em algum canto em um roteador avançado com recursos sofisticados de filtragem de pacotes. Embarcado: O FreeBSD é uma excelente plataforma para construir sistemas embarcados. embedded Com suporte para plataformas ARM, MIPS e PowerPC, juntamente com uma pilha de rede robusta, recursos de ponta e a permissiva Licença BSD o FreeBSD é uma excelente base para a criação de roteadores embarcados, firewalls e outros dispositivos. X Window System GNOME KDE Desktop: O FreeBSD é uma ótima opção para uma solução de desktop barata usando o servidor X11 disponível gratuitamente. O FreeBSD oferece várias opções de ambientes de desktop de código aberto, incluindo as interfaces gráficas de usuário padrão do GNOME e do KDE. O FreeBSD pode até inicializar diskless a partir de um servidor central, tornando as estações de trabalho individuais ainda mais baratas e fáceis de administrar. Desenvolvimento de Software: O sistema básico do FreeBSD vem com um conjunto completo de ferramentas de desenvolvimento, incluindo um completo compilador e depurador C/C++ Compiler . O suporte para muitas outras linguagens também está disponível por meio da coleção de ports e dos pacotes. O FreeBSD está disponível para download gratuito, ou pode ser obtido em CD-ROM ou DVD. Por favor, consulte para maiores informações sobre como obter o FreeBSD. Quem Usa o FreeBSD? usuários grandes sites que executam o FreeBSD O FreeBSD é conhecido por seus recursos de serviço web - sites que rodam no FreeBSD incluem Hacker News, Netcraft, NetEase, Netflix, Sina, Sony Japan, Rambler, Yahoo!, e Yandex. Os recursos avançados do FreeBSD, a segurança comprovada, o ciclo de release previsível e a licença permissiva levaram à sua utilização como plataforma para a construção de muitos appliances, dispositivos e produtos tanto comerciais quanto de código aberto. Muitas das maiores empresas de TI do mundo usam o FreeBSD: Apache Apache - A Apache Software Foundation executa a maior parte de sua infraestrutura voltada para o público, incluindo possivelmente um dos maiores repositórios SVN do mundo, com mais de 1.4 milhões de commits, no FreeBSD. Apple Apple - OS X utiliza muito do FreeBSD na sua pilha de rede, no seu sistema de arquivos virtuais e em muitos componentes userland. O Apple iOS também contém elementos emprestados do FreeBSD. Cisco Cisco - Os appliances de segurança de rede e anti-spam IronPort executam um kernel modificado do FreeBSD. Citrix Citrix - A linha NetScaler de dispositivos de segurança fornece balanceamento de carga nas camadas 4-7, cache de conteúdo, firewall de aplicativos, VPN segura e acesso móvel à rede em nuvem, juntamente com o poder de um shell do FreeBSD. Dell EMC Isilon Isilon - Os dispositivos de armazenamento corporativo da Isilon são baseados no FreeBSD. A licença extremamente liberal do FreeBSD permitiu que a Isilon integrasse sua propriedade intelectual ao kernel e se concentrasse em construir seu produto ao invés de um sistema operacional. Quest KACE Quest KACE - Os appliances de gerenciamento de sistemas KACE executam o FreeBSD devido à sua confiabilidade, escalabilidade e a comunidade que apoia seu desenvolvimento contínuo. iXsystems iXsystems - A linha TrueNAS de dispositivos de armazenamento unificado é baseada no FreeBSD. Além de seus produtos comerciais, a iXsystems também gerencia o desenvolvimento dos projetos de código aberto TrueOS e FreeNAS. Juniper Juniper - O sistema operacional JunOS que roda em todos os equipamentos de rede da Juniper (incluindo roteadores, switches, firewalls e dispositivos de rede) é baseado no FreeBSD. A Juniper é um dos muitos fornecedores que mostra a relação simbiótica entre o projeto e os fornecedores de produtos comerciais. Melhorias geradas na Juniper são enviadas para o FreeBSD para reduzir a complexidade de integrar novos recursos do FreeBSD ao JunOS no futuro. McAfee McAfee - O SecurOS, a base dos produtos de firewall corporativo da McAfee, incluindo o Sidewinder, é baseado no FreeBSD. NetApp NetApp - A linha de dispositivos de armazenamento Data ONTAP GX é baseada no FreeBSD. Além disso, a NetApp contribuiu com muitos recursos, incluindo o novo hipervisor licenciado pelo BSD, bhyve. Netflix Netflix - O appliance OpenConnect que a Netflix usa para transmitir filmes para seus clientes é baseado no FreeBSD. A Netflix fez extensas contribuições para a base de código e trabalha para manter um delta zero a partir do FreeBSD mainline. Os appliances Netflix OpenConnect são responsáveis por entregar mais de 32% de todo o tráfego de Internet na América do Norte. Sandvine Sandvine - A Sandvine usa o FreeBSD como base de suas plataformas de processamento de rede em tempo real de alto desempenho que compõem seus produtos inteligentes de controle de política de rede. Sony Sony - O console de videogame PlayStation 4 executa uma versão modificada do FreeBSD. Sophos Sophos - O produto Sophos Email Appliance é baseado em uma versão modificada (hardened) do FreeBSD e varre as mensagens de entrada em busca por spam e vírus, ao mesmo tempo em que monitora as mensagens de saída quanto a malware, bem como a perda acidental de informações confidenciais. Spectra Logic Spectra Logic - A linha nTier de dispositivos de armazenamento de dados de arquivamento executa o FreeBSD e o OpenZFS. Stormshield Stormshield - Os dispositivos Stormshield Network Security são baseados em uma versão modificada do FreeBSD. A licença BSD permite que eles integrem sua própria propriedade intelectual ao sistema enquanto retornam uma grande quantidade de desenvolvimento interessante para a comunidade. The Weather Channel The Weather Channel - O appliance IntelliStar que é instalado na central de cada provedor de cabo local e é responsável por injetar previsões meteorológicas locais na programação da rede de TV a cabo, executa o FreeBSD. Verisign Verisign - A Verisign é responsável por operar os registros de domínio raiz .com e .net, bem como a infra-estrutura de DNS que a acompanha. Eles contam com diversos sistemas operacionais de rede, incluindo o FreeBSD, para garantir que não haja um ponto comum de falha em sua infraestrutura. Voxer Voxer - A Voxer suporta sua plataforma de mensagem de voz móvel com o ZFS no FreeBSD. A Voxer mudou de um derivativo do Solaris para o FreeBSD por causa da sua documentação superior, comunidade maior e mais ativa e ao ambiente mais favorável ao desenvolvedor. Além de recursos críticos como o ZFS e o DTrace, o FreeBSD também oferece suporte a TRIM no ZFS. Fudo Security Fudo Security - O dispositivo de segurança FUDO permite que as empresas monitorem, controlem, registrem e façam auditoria de contratados e administradores que trabalham em seus sistemas. Baseado em todos os melhores recursos de segurança do FreeBSD, incluindo ZFS, GELI, Capsicum, HAST e auditdistd. O FreeBSD também gerou vários projetos de código aberto relacionados: BSD Router BSD Router - Um substituto baseado em FreeBSD para grandes roteadores corporativos projetados para rodar em hardware PC padrão. FreeNAS FreeNAS - Um FreeBSD personalizado projetado para ser usado como um dispositivo de servidor de arquivos de rede. Fornece uma interface web baseada em Python para simplificar o gerenciamento dos sistemas de arquivos UFS e ZFS. Inclui suporte para NFS, SMB/CIFS, AFP, FTP e iSCSI. Inclui um sistema extensível de plugins baseado em jails do FreeBSD. GhostBSD GhostBSD - é derivado do FreeBSD, usa o ambiente GTK para fornecer uma aparência bonita e uma experiência confortável na moderna plataforma BSD, oferecendo um ambiente de trabalho natural e nativo UNIX. mfsBSD mfsBSD - Um kit de ferramentas para compilar uma imagem do sistema FreeBSD que roda inteiramente da memória. NAS4Free NAS4Free - Uma distribuição de servidor de arquivos baseada no FreeBSD com uma interface web PHP. OPNSense OPNsense - OPNsense é um firewall e uma plataforma de roteamento open source, baseado em FreeBSD, fácil-de-usar e fácil-de-compilar. O OPNsense inclui a maioria dos recursos disponíveis em firewalls comerciais caros e, em muitos casos, muito mais. Ele traz o rico conjunto de recursos de ofertas comerciais com os benefícios de códigos fonte abertos e verificáveis. TrueOS TrueOS - O TrueOS é baseado na lendária segurança e estabilidade do FreeBSD. O TrueOS segue o FreeBSD-CURRENT, com os drivers, atualizações de segurança e pacotes mais recentes disponíveis. FuryBSD FuryBSD - é um desktop FreeBSD de código aberto novinho em folha. O FuryBSD presta homenagem aos projetos de BSD de desktop do passado, como PC-BSD e TrueOS com sua interface gráfica e adiciona ferramentas adicionais, como uma imagem live USB/DVD híbrida. O FuryBSD é totalmente gratuito para uso e distribuído sob a licença BSD. MidnightBSD MidnightBSD - é um sistema operacional derivado do FreeBSD desenvolvido com usuários de desktop em mente. Inclui todo o software que você esperaria para suas tarefas diárias: email, navegação web, processamento de texto, jogos e muito mais. pfSense pfSense - Uma distribuição de firewall baseada no FreeBSD com uma enorme variedade de recursos e amplo suporte a IPv6. ZRouter ZRouter - Um firmware alternativo de código aberto para dispositivos embarcados baseado no FreeBSD. Projetado para substituir o firmware proprietário em roteadores prontos para uso. Uma lista de depoimentos de empresas que baseiam seus produtos e serviços no FreeBSD pode ser encontrada no site da Fundação FreeBSD. A Wikipedia também mantém uma lista de produtos baseados no FreeBSD. Sobre o Projeto FreeBSD A seção a seguir fornece algumas informações básicas sobre o projeto, incluindo um breve histórico, metas do projeto e o modelo de desenvolvimento do projeto. Uma Breve História do FreeBSD 386BSD Patchkit Hubbard, Jordan Williams, Nate Grimes, Rod FreeBSD Project history O Projeto FreeBSD teve sua gênese no início de 1993, parcialmente como uma evolução natural do Unofficial 386BSD Patchkit por parte dos três últimos coordenadores: Nate Williams, Rod Grimes e Jordan Hubbard. 386BSD O objetivo original era produzir um snapshot intermediário do 386BSD, a fim de corrigir um grande número de problemas que o mecanismo do patchkit simplesmente não era capaz de resolver. O título inicial do projeto foi 386BSD 0.5 ou 386BSD Interim em referência a esse fato. Jolitz, Bill O 386BSD era o sistema operacional do Bill Jolitz, que havia até então sofrido bastante com quase um ano de negligência. Como o patchkit inchava cada vez mais desconfortavelmente a cada dia que passava, eles decidiram ajudar o Bill fornecendo este snapshot limpo. Esses planos foram interrompidos quando, de repente, Bill Jolitz decidiu retirar sua sanção do projeto sem qualquer indicação clara do que seria feito em seu lugar. Greenman, David Walnut Creek CDROM O trio achou que a meta continuava valendo a pena, mesmo sem o apoio de Bill, e então adotaram o nome "FreeBSD" cunhado por David Greenman. Os objetivos iniciais foram definidos após consultar os usuários atuais do sistema e, uma vez que ficou claro que o projeto estava em vias de se tornar realidade, Jordan entrou em contato com a Walnut Creek CDROM com o objetivo de melhorar os canais de distribuição do FreeBSD para aqueles desafortunados sem acesso fácil à Internet. O Walnut Creek CDROM não apenas apoiou a ideia de distribuir o FreeBSD em CD, mas também chegou a fornecer ao projeto uma máquina para trabalhar e uma conexão rápida à Internet. Sem o grau de fé quase sem precedentes da Walnut Creek CDROM no que era, na época, um projeto completamente desconhecido, é bastante improvável que o FreeBSD tivesse chegado tão longe, tão rápido, como hoje. 4.3BSD-Lite Net/2 U.C. Berkeley 386BSD Free Software Foundation A primeira distribuição em CD-ROM (e amplo pela rede) foi o FreeBSD 1.0, lançado em dezembro de 1993. Isto foi baseado na fita 4.3BSD-Lite (Net/2) da U.C. Berkeley, com muitos componentes também fornecidos pelo 386BSD e pela Free Software Foundation. Foi um sucesso bastante razoável para uma primeira oferta, e e eles seguiram com o bem-sucedido FreeBSD 1.1 em maio de 1994. Novell U.C. Berkeley Net/2 AT&T Por esta altura, algumas nuvens de tempestade inesperadas formaram-se no horizonte, como a Novell e U.C. Berkeley resolveram seu longo processo judicial sobre o status legal da fita do Berkeley Net/2. Uma condição desse acordo foi a concessão da U.C. Berkeley de que grande parte do código Net/2 foi onerado e era de propriedade da Novell, que por sua vez o adquiriu da AT&T algum tempo antes. O que a Berkeley recebeu em troca foi a bênção da Novell de que o lançamento do 4.4BSD-Lite, quando finalmente fosse lançado, seria declarado livre e todos os atuais usuários do Net/2 seriam fortemente encorajados a mudar. Isso incluiu o FreeBSD, e foi dado ao projeto o tempo para interromper o envio de seu próprio produto baseado em Net/2 até o final de julho de 1994. Sob os termos desse acordo, o projeto recebeu um último lançamento antes do prazo final, sendo esse lançamento o FreeBSD 1.1.5.1. O FreeBSD então começou a tarefa árdua de literalmente se reinventar de um conjunto completamente novo e incompleto de bits do 4.4BSD-Lite. As versões Lite foram leves em parte porque o CSRG da Berkeley removeu grandes pedaços de código necessários para realmente compilar um sistema inicializável (devido a vários requisitos legais) e o fato de que a port Intel do 4.4 era altamente incompleto. O projeto levou até novembro de 1994 para fazer essa transição, e em dezembro lançou o FreeBSD 2.0 para o mundo. Apesar de ainda ser um pouco mais difícil, o lançamento foi um sucesso significativo e foi seguido pela versão mais robusta e fácil de instalar o FreeBSD 2.0.5 em junho de 1995. Desde aquela época, o FreeBSD fez uma série de lançamentos cada vez melhorando a estabilidade, a velocidade e o conjunto de recursos da versão anterior. Por enquanto, os projetos de desenvolvimento de longo prazo continuam a ocorrer no ramo 10.X-CURRENT (trunk), e os snapshots de release 10.X são continuamente disponibilizados a partir do servidor de snapshots à medida que o trabalho progride. Objetivos do Projeto FreeBSD Jordan Hubbard Contribuído por FreeBSD Project goals Os objetivos do Projeto FreeBSD são fornecer software que possa ser usado para qualquer propósito e sem amarras. Muitos de nós temos um investimento significativo no código (e projeto) e certamente não nos importaríamos com uma pequena compensação financeira de vez em quando, mas definitivamente não estamos preparados para insistir nisso. Acreditamos que a nossa primeira e principal missão é fornecer código a todos os participantes, e para qualquer finalidade, para que o código obtenha o maior uso possível e forneça o maior benefício possível. Este é, acredito, um dos objetivos mais fundamentais do Software Livre e um dos que apoiamos entusiasticamente. GNU General Public License (GPL) GNU Lesser General Public License (LGPL) BSD Copyright O código em nossa árvore de código-fonte que se enquadra na GNU General Public License (GPL) ou na Library General Public License (LGPL) vem com um pouco mais de amarras, embora pelo menos do lado do acesso imposto, em vez do oposto usual. Devido às complexidades adicionais que podem evoluir no uso comercial de software GPL, no entanto, preferimos software submetido sob licença BSD quando é uma opção razoável fazê-lo. O Modelo de Desenvolvimento do FreeBSD Satoshi Asami Contribuído por FreeBSD Project development model O desenvolvimento do FreeBSD é um processo muito aberto e flexível, sendo construído literalmente a partir das contribuições de milhares de pessoas ao redor do mundo, como pode ser visto na nossa lista de contribuidores. A infraestrutura de desenvolvimento do FreeBSD permite que milhares de colaboradores colaborem pela Internet. Estamos constantemente à procura de novos desenvolvedores e ideias, e os interessados em se envolver mais estreitamente com o projeto precisam simplesmente entrar em contato conosco pelas lista de discussões técnicas do FreeBSD. A lista de discussão de anúncios do FreeBSD também está disponível para aqueles que desejam fazer com que outros usuários do FreeBSD conheçam as principais áreas de trabalho. Coisas úteis para saber sobre o Projeto FreeBSD e seu processo de desenvolvimento, seja trabalhando independentemente ou em estreita cooperação: Os repositórios SVN CVS CVS Repository Concurrent Versions System CVS Subversion Subversion Repository SVN Subversion Por vários anos, a árvore de código-fonte central do FreeBSD foi mantida pelo CVS (Concurrent Versions Systems), uma ferramenta de controle de código-fonte disponível gratuitamente. Em junho de 2008, o Projeto mudou para o SVN (Subversion). A troca foi considerada necessária, pois as limitações técnicas impostas pelo CVS estavam se tornando óbvias devido à rápida expansão da árvore de código-fonte e à quantidade de histórico já armazenada. Os repositórios do Projeto de Documentação e da Coleção de Ports também foram movidos do CVS para o SVN em maio de 2012 e julho de 2012, respectivamente. Por favor, consulte a seção Atualizando o código fonte para maiores informações sobre como obter o repositório src/ do FreeBSD e Usando a Coleção de Ports para detalhes sobre como obter a coleção de ports do FreeBSD. A lista de committers Os committers committers são as pessoas que têm acesso de escrita na árvore do Subversion, e estão autorizados a fazer modificações no código fonte do FreeBSD (o termo committer vem de commit, o comando de controle de código-fonte que é usado para trazer novas mudanças para o repositório). Qualquer um pode enviar um relatório de bug para o Banco de Dados de Bugs. Antes de enviar um relatório de bug, as listas de discussão, canais de IRC ou fóruns do FreeBSD podem ser usados para ajudar a verificar se um problema é realmente um bug. O FreeBSD core team O FreeBSD core team core team seria equivalente a um conselho de diretores se o Projeto FreeBSD fosse uma empresa. A principal tarefa do core team é garantir que o projeto, como um todo, esteja saudável e seguindo na direção certa. Convidar desenvolvedores dedicados e responsáveis a ingressar em nosso grupo de committers é uma das funções do core team, assim como o recrutamento de novos membros do core team à medida que os outros saiam. O core team atual foi eleito a partir de um grupo de committers candidatos em julho de 2018. As eleições são realizadas a cada dois anos. Como a maioria dos desenvolvedores, a maioria dos membros do core team também são voluntários quando se trata de desenvolvimento do FreeBSD e não se beneficiam financeiramente do projeto, então o compromisso também não deve ser interpretado erroneamente como significando suporte garantido. A analogia do quadro de diretores da diretriz acima não é muito precisa, e pode ser mais apropriado dizer que estas são as pessoas que deram suas vidas em favor do FreeBSD contra o seu melhor julgamento! Contribuidores externos Por último, mas definitivamente não menos importante, o maior grupo de desenvolvedores são os próprios usuários que fornecem feedback e correções de bugs para nós em uma base quase constante. A principal maneira de manter contato com o desenvolvimento não-centralizado do FreeBSD é inscrever-se nas listas de discussões técnicas sobre o FreeBSD onde essas coisas são discutidas. Veja para maiores informações sobre as várias listas de discussão do FreeBSD. A Lista de Colaboradores do FreeBSD contributors é extensa e crescente, então por que não se juntar a ela contribuindo com algo para o FreeBSD hoje? Fornecer código não é a única maneira de contribuir para o projeto; para uma lista mais completa de coisas que precisam ser feitas, por favor consulte o web site do Projeto FreeBSD. Em resumo, nosso modelo de desenvolvimento é organizado como um conjunto solto de círculos concêntricos. O modelo centralizado é projetado para a conveniência dos usuários do FreeBSD, que são providos com uma maneira fácil de rastrear uma base de código central, e não para manter potenciais colaboradores fora! Nosso desejo é apresentar um sistema operacional estável com um grande conjunto de aplicações coerentes que os usuários possam facilmente instalar e usar - este modelo funciona muito bem em realizar isso. Tudo o que pedimos para aqueles que se juntarem a nós como desenvolvedores do FreeBSD é a mesma dedicação que o pessoal atual tem para o seu sucesso contínuo! Programas de Terceiros Além das distribuições básicas, o FreeBSD oferece uma coleção de software portada com milhares de programas comumente procurados. No momento da redação deste texto, havia mais de 24.000 ports! A lista de ports varia de servidores http, a jogos, linguagens, editores e quase tudo no meio. Toda a coleção de ports requer aproximadamente 500 MB. Para compilar um port, simplesmente mude para o diretório do programa que você deseja instalar, digite make install e deixe o sistema fazer o resto. A distribuição original completa para cada port que você cria é baixada dinamicamente, para que você precise apenas de espaço em disco suficiente para compilar os ports desejados. Quase todos os ports também são fornecidos como um pacote pré-compilado, que pode ser instalado com um comando simples (pkg install) por aqueles que não desejam compilar seus próprios ports pelo código fonte. Maiores informações sobre pacotes e ports podem ser encontradas em . Documentação Adicional Todas as versões suportadas do FreeBSD fornecem uma opção no instalador para instalar documentação adicional em /usr/local/shar/doc/freebsd durante a configuração inicial do sistema. A documentação também pode ser instalada posteriormente, usando os pacotes descritos em . Você pode ver os manuais instalados localmente com qualquer navegador compatível com HTML usando as seguintes URLs: O Handbook do FreeBSD /usr/local/share/doc/freebsd/handbook/index.html O FAQ do FreeBSD /usr/local/share/doc/freebsd/faq/index.html Você também pode visualizar as cópias principais (e atualizadas com mais frequência) em https://www.FreeBSD.org/. Instalando o FreeBSD Jim Mock Reestruturado, reorganizado e com partes reescritas por Gavin Atkinson Atualizado para o bsdinstall por Warren Block Allan Jude Atualizado para root-on-ZFS por Sinopse installation Existem diversos modos diferentes de colocar o FreeBSD para rodar, dependendo do ambiente. São eles: Imagens de Máquinas Virtuais, para baixar e importar em um ambiente virtual da sua escolha. Elas podem ser baixadas da página de Download do FreeBSD. Existem imagens para KVM (qcow2), VMWare (vmdk), Hyper-V (vhd) e imagens de dispositivos brutos (raw device) que são universalmente suportadas . Estas não são imagens de instalação, mas sim as instâncias pré-configuradas (já instaladas), prontas para executar e realizar tarefas de pós-instalação. Imagens de máquinas virtuais disponíveis no AWS Marketplace, no Microsoft Azure Marketplace, e na Plataforma Google Cloud, para executar em seus respectivos serviços de hospedagem. Para obter maiores informações sobre como implantar o FreeBSD no Azure, consulte o capítulo relevante na Documentação do Azure. Imagens de cartão SD, para sistemas embarcados, como Raspberry Pi ou BeagleBone Black. Eles podem ser baixados da página de Download do FreeBSD. Esses arquivos devem ser descompactados e gravados como uma imagem bruta para um cartão SD, a partir do qual a placa será inicializada. Imagens de instalação, para instalar o FreeBSD no disco rígido de um desktop padrão, laptop ou servidor. O resto deste capítulo descreve o quarto caso, explicando como instalar o FreeBSD usando o programa de instalação baseado em texto chamado bsdinstall. Em geral, as instruções de instalação neste capítulo foram escritas para as arquiteturas i386 e AMD64. Onde aplicável, instruções específicas para outras plataformas serão listadas. Pode haver pequenas diferenças entre o instalador e o que é mostrado aqui, portanto, use este capítulo como um guia geral, e não como um conjunto de instruções literais. Usuários que preferem instalar o FreeBSD usando um instalador gráfico podem estar interessados no pc-sysinstall , o instalador usado pelo Projeto TrueOS. Ele pode ser usado para instalar um desktop gráfico (TrueOS) ou uma versão de linha de comando do FreeBSD. Consulte o Manual do Usuário do TrueOS para obter detalhes (https://www.trueos.org/handbook/trueos.html). Depois de ler este capítulo, você saberá: Quais os requisitos mínimos de hardware e as arquiteturas suportadas pelo FreeBSD. Como criar a mídia de instalação do FreeBSD. Como iniciar o bsdinstall. As perguntas que o bsdinstall fará, o que elas significam e como respondê-las. Como solucionar problemas de uma instalação com falha. Como acessar uma versão live do FreeBSD antes de se comprometer com uma instalação. Antes de ler este capítulo, você deve: Ler a lista de hardware suportado que acompanha a versão do FreeBSD que será instalada e verificar se o hardware do sistema é suportado. Requisitos mínimos de hardware Os requisitos de hardware para instalar o FreeBSD variam por arquitetura. Arquiteturas de hardware e dispositivos suportados por uma release do FreeBSD estão listados na página Informação de Release do FreeBSD. A página de download do FreeBSD também tem recomendações para escolha a imagem correta para as diferentes arquiteturas. Uma instalação do FreeBSD requer um mínimo de 96 MB de RAM e 1,5 GB de espaço livre no disco rígido. No entanto, essas pequenas quantidades de memória e espaço em disco são realmente adequadas apenas para aplicativos personalizados, como dispositivos embarcados. Os sistemas de desktop de uso geral precisam de mais recursos. De 2 a 4 GB de RAM e pelo menos 8 GB de espaço no disco rígido é um bom ponto de partida. Estes são os requisitos do processador para cada arquitetura: amd64 Esse é o tipo de processador de desktop e laptop mais comum, usado na maioria dos sistemas modernos. A Intel chama ele de Intel64. Outros fabricantes às vezes o chamam de x86-64. Exemplos de processadores compatíveis com AMD64 incluem: AMD Athlon 64, AMD Opteron, multi-core Intel Xeon e processadores Intel Core 2 e posteriores. i386 Desktops e laptops mais antigos geralmente usam essa arquitetura x86 de 32 bits. Quase todos os processadores compatíveis com i386 com uma unidade de ponto flutuante são suportados. Todos os processadores Intel 486 ou superior são suportados. O FreeBSD irá aproveitar o suporte a Extensões de Endereços Físicos (PAE) em CPUs com este recurso. Um kernel com o recurso PAE ativado detectará memória acima de 4 GB e permitirá que ela seja usada pelo sistema. No entanto, o uso do PAE coloca restrições em drivers de dispositivos e outros recursos do FreeBSD. powerpc Todos os sistemas New World ROM Apple Mac com USB incorporados são suportados. O SMP é suportado em máquinas com vários CPUs. Um kernel de 32 bits só pode usar os primeiros 2 GB de RAM. sparc64 Os sistemas suportados pelo FreeBSD/sparc64 estão listados no Projeto FreeBSD/sparc64. O SMP é suportado em todos os sistemas com mais de 1 processador. Um disco dedicado é necessário, pois não é possível compartilhar um disco com outro sistema operacional neste momento. Tarefas de Pré-instalação Uma vez determinado que o sistema atende aos requisitos mínimos de hardware para instalar o FreeBSD, o arquivo de instalação deve ser baixado e a mídia de instalação preparada. Antes de fazer isso, verifique se o sistema está pronto para uma instalação, verificando os itens nesta lista de controle: Faça backup dos dados importantes Antes de instalar qualquer sistema operacional, sempre faça backup de todos os dados importantes primeiro. Não armazene o backup no sistema que está sendo instalado. Em vez disso, salve os dados em um disco removível, como uma unidade USB, outro sistema na rede ou um serviço de backup online. Teste o backup antes de iniciar a instalação para garantir que ele contenha todos os arquivos necessários. Depois que o instalador formatar o disco do sistema, todos os dados armazenados nesse disco serão perdidos. Decida onde instalar o FreeBSD Se o FreeBSD for o único sistema operacional instalado, esta etapa pode ser ignorada. Mas se o FreeBSD compartilhar o disco com outro sistema operacional, decida qual disco ou partição será usado para o FreeBSD. Nas arquiteturas i386 e amd64, os discos podem ser divididos em várias partições usando um dos dois esquemas de particionamento. Um registro de inicialização mestre tradicional (MBR) contém uma tabela de partição que define até quatro partições primárias. Por razões históricas, o FreeBSD chama essas partições primárias de slices. Uma dessas partições primárias pode ser transformada em uma partição estendida contendo várias partições lógicas. A Tabela de Partição GUID (GPT) é um método mais novo e mais simples de particionar um disco. Implementações comuns de GPT permitem até 128 partições por disco, eliminando a necessidade de partições lógicas. O boot loader do FreeBSD requer uma partição primária ou GPT. Se todas as partições primárias ou GPT já estiverem em uso, uma deve ser liberada para o FreeBSD. Para criar uma partição sem excluir dados existentes, use uma ferramenta de redimensionamento de partição para reduzir uma partição existente e criar uma nova partição usando o espaço liberado. Uma variedade de ferramentas de redimensionamento de partições comerciais e gratuitas estão listadas em http://en.wikipedia.org/wiki/List_of_disk_partitioning_software. O GParted Live (http://gparted.sourceforge.net/livecd.php) é um live CD que inclui o editor de partições GParted. O GParted também está incluído em muitas outras distribuições live CD do Linux. Quando usados corretamente, os utilitários de encolhimento de disco podem criar espaço com segurança para criar uma nova partição. Como existe a possibilidade de selecionar a partição errada, sempre faça backup de todos os dados importantes e verifique a integridade do backup antes de modificar as partições do disco. Partições de disco contendo diferentes sistemas operacionais tornam possível instalar vários sistemas operacionais em um computador. Uma alternativa é usar virtualização () o que permite que vários sistemas operacionais sejam executados ao mesmo tempo sem modificar nenhuma partição de disco. Colete informações de rede Alguns métodos de instalação do FreeBSD requerem uma conexão de rede para baixar os arquivos de instalação. Após qualquer instalação, o instalador oferecerá a configuração das interfaces de rede do sistema. Se a rede tiver um servidor DHCP, ele poderá ser usado para fornecer configuração de rede automática. Se o DHCP não estiver disponível, as seguintes informações de rede para o sistema devem ser obtidas com o administrador de rede local ou com o provedor de serviços de Internet: Informações de rede necessárias Endereço IP Máscara de sub-rede Endereço do IP do gateway padrão Nome de domínio da rede Endereços IP dos servidores DNS da rede Verifique a Errata do FreeBSD Embora o Projeto FreeBSD se esforce para garantir que cada versão do FreeBSD seja o mais estável possível, ocasionalmente, os bugs aparecem no processo. Em raras ocasiões, esses erros afetam o processo de instalação. A medida que esses problemas são descobertos e corrigidos, eles são anotados na Errata do FreeBSD (https://www.freebsd.org/releases/12.1R/errata.html) no site do FreeBSD. Verifique a errata antes de instalar para certificar-se de que não existem problemas que possam afetar a instalação. Informações e erratas para todos os releases podem ser encontradas na seção de informações de release do site do FreeBSD (https://www.freebsd.org /releases/index.html). Prepare a mídia de instalação O instalador do FreeBSD não é um aplicativo que pode ser executado dentro de outro sistema operacional. Em vez disso, baixe um arquivo de instalação do FreeBSD, grave-o na mídia associada ao seu tipo e tamanho (CD, DVD, ou USB), e inicialize o sistema para instalar a partir da mídia inserida. Os arquivos de instalação do FreeBSD estão disponíveis em www.freebsd.org/where.html#download. O nome de cada arquivo de instalação inclui a versão de Release do FreeBSD, a arquitetura e o tipo de arquivo. Por exemplo, para instalar o FreeBSD 12.1 em um sistema amd64 de um DVD, baixe o FreeBSD-12.1-RELEASE-amd64-dvd1.iso, grave este arquivo em um DVD, e inicialize o sistema com o DVD inserido. Os arquivos de instalação estão disponíveis em vários formatos. Os formatos variam dependendo da arquitetura do computador e do tipo de mídia. Arquivos de instalação adicionais são incluídos para computadores que inicializam com UEFI (Interface de Firmware Extensível Unificada). Os nomes desses arquivos incluem a string uefi. Tipos de arquivo: -bootonly.iso: Este é o menor arquivo de instalação, pois contém apenas o instalador. É necessária uma conexão de Internet em funcionamento durante a instalação, pois o instalador fará o download dos arquivos necessários para concluir a instalação do FreeBSD. Este arquivo deve ser gravado em um CD usando um aplicativo de gravação CD. -disc1.iso: Este arquivo contém todos os arquivos necessários para instalar o FreeBSD, seu código-fonte e a coleção de ports. Ele deve ser gravado em um CD usando um aplicativo de gravação CD. -dvd1.iso: Este arquivo contém todos os arquivos necessários para instalar o FreeBSD, seu código-fonte e a coleção de ports. Ele também contém um conjunto de pacotes binários populares para instalar um gerenciador de janelas e alguns aplicativos para que um sistema completo possa ser instalado a partir da mídia sem a necessidade de uma conexão com a Internet. Este arquivo deve ser gravado em um DVD usando um aplicativo de gravação DVD. -memstick.img: Este arquivo contém todos os arquivos necessários para instalar o FreeBSD, seu código-fonte e a coleção de ports. Ele deve ser gravado em um pendrive USB usando as instruções abaixo. -mini-memstick.img: Como -bootonly.iso , não inclui arquivos de instalação, mas faz o download conforme necessário. É necessária uma conexão de internet em funcionamento durante a instalação. Grave este arquivo para um pendrive USB como mostrado em . Depois de baixar o arquivo de imagem, baixe o CHECKSUM.SHA256 do mesmo diretório. Calcule o checksum para o arquivo de imagem. O FreeBSD fornece o sha2561 para isso, usado como sha256 imagefilename. Outros sistemas operacionais possuem programas semelhantes. Compare o checksum calculado com a mostrado em CHECKSUM.SHA256. Os checksum devem corresponder exatamente. Se os checksums não corresponderem, o arquivo de imagem está corrompido e deve ser baixado novamente. Gravando um arquivo de imagem para um pendrive <acronym>USB</acronym> O arquivo *. Img é uma imagem do conteúdo completo de um cartão de memória. Ele não pode ser copiado para o dispositivo de destino como um arquivo. Várias aplicações estão disponíveis para escrever o *. Img para um pendrive USB. Esta seção descreve dois destes utilitários. Antes de continuar, faça backup de todos os dados importantes do pendrive USB. Este procedimento irá apagar todos os dados existentes no mesmo. Usando o <command>dd</command> para gravar a imagem Este exemplo usa /dev/da0 como o dispositivo de destino em que a imagem será gravada. Seja muito cuidadoso para que o dispositivo correto seja usado, pois esse comando destruirá os dados existentes no dispositivo de destino especificado. O utilitário de linha de comando dd1 está disponível no BSD, no Linux e no Mac OS. Para gravar a imagem usando o dd, insira o pendrive USB e determine o nome do dispositivo. Em seguida, especifique o nome do arquivo de instalação baixado e o nome do dispositivo para o pendrive USB. Este exemplo grava a imagem de instalação amd64 no primeiro dispositivo USB em um sistema FreeBSD existente. # dd if=FreeBSD-12.1-RELEASE-amd64-memstick.img of=/dev/da0 bs=1M conv=sync Se este comando falhar, verifique se o pendrive USB não está montado e se o nome do dispositivo aponta para o disco, não para uma partição. Alguns sistemas operacionais podem requerer que este comando seja executado com o sudo8. A sintaxe do dd1 varia ligeiramente em diferentes plataformas; por exemplo, o Mac OS requer um em minúsculas. Sistemas como o Linux podem gravar em buffer. Para forçar todas as gravações a serem concluídas, use o comando sync8. Usando o <trademark class="registered">Windows</trademark> para gravar a imagem Certifique-se de fornecer a letra da unidade correta, pois os dados existentes na unidade especificada serão sobrescritos e destruídos. Obtendo o <application>Image Writer para <trademark class="registered">Windows</trademark></application> O Image Writer para Windows é um aplicativo gratuito que pode gravar corretamente um arquivo de imagem em um cartão de memória. Faça o download a partir de https://sourceforge.net/projects/win32diskimager/ e extraia-o em uma pasta. Escrevendo a imagem com o Image Writer Clique duas vezes no ícone Win32DiskImager para iniciar o programa. Verifique se a letra da unidade mostrada em Device é a unidade com o cartão de memória. Clique no ícone da pasta e selecione a imagem a ser gravada no cartão de memória. Clique em [ Save ] para aceitar o nome do arquivo de imagem. Verifique se tudo está correto e se nenhuma pasta do cartão de memória está aberta em outras janelas. Quando tudo estiver pronto, clique em [Write] para gravar o arquivo de imagem no cartão de memória. Agora você está pronto para começar a instalar o FreeBSD. Iniciando a instalação Por padrão, a instalação não fará alterações no(s) disco(s) antes da seguinte mensagem: Your changes will now be written to disk. If you have chosen to overwrite existing data, it will be PERMANENTLY ERASED. Are you sure you want to commit your changes? A instalação pode ser encerrada a qualquer momento antes deste aviso. Se houver uma preocupação de que algo esteja configurado incorretamente, basta desligar o computador antes desse ponto e nenhuma alteração será feita nos discos do sistema. Esta seção descreve como inicializar o sistema a partir da mídia de instalação que foi preparada usando as instruções em . Ao usar um dispositivo USB inicializável, conecte o dispositivo USB antes de ligar o computador. Ao inicializar a partir do CD ou do DVD, ligue o computador e insira a mídia na primeira oportunidade. O procedimento para configurar o sistema para inicializar a partir da mídia inserida depende da arquitetura. Inicializando em <trademark>i386</trademark> e amd64 Estas arquiteturas fornecem um menu BIOS para selecionar o dispositivo de inicialização. Dependendo da mídia de instalação usada, selecione o dispositivo de CD/DVD ou o USB como o primeiro dispositivo de inicialização. A maioria dos sistemas também fornece uma chave para selecionar o dispositivo durante a inicialização sem ter que entrar no BIOS. Normalmente, a chave é F10, F11, F12 ou Escape. Se o computador carregar o sistema operacional existente em vez do instalador do FreeBSD, então: A mídia de instalação não foi inserida cedo o suficiente no processo de inicialização. Deixe a mídia inserida e tente reiniciar o computador. As alterações do BIOS estavam incorretas ou não foram salvas. Verifique novamente se o dispositivo de inicialização correto está selecionado como o primeiro dispositivo de inicialização. Este sistema é muito antigo para suportar a inicialização a partir da mídia escolhida. Neste caso, o Plop Boot Manager () pode ser usado para inicializar o sistema a partir da mídia selecionada. Inicializando no <trademark class="registered">PowerPC</trademark> Na maioria das máquinas, manter pressionado o C no teclado durante a inicialização irá inicializar a partir do CD. Caso contrário, mantenha pressionados Command Option O F , ou Windows Alt O F em teclados não-Apple. No prompt 0 >, digite boot cd:,\ppc\loader cd:0 Inicializando no <trademark class="registered"> SPARC64 </trademark> A maioria dos sistemas SPARC64 são configurados para inicializar automaticamente a partir do disco. Para instalar o FreeBSD de um CD, requer uma pausa no PROM. Para fazer isso, reinicialize o sistema e aguarde até que a mensagem de inicialização apareça. A mensagem depende do modelo, mas deve ser algo como isto: Sun Blade 100 (UltraSPARC-IIe), Keyboard Present Copyright 1998-2001 Sun Microsystems, Inc. All rights reserved. OpenBoot 4.2, 128 MB memory installed, Serial #51090132. Ethernet address 0:3:ba:b:92:d4, Host ID: 830b92d4. Se o sistema passar a inicializar a partir do disco neste ponto, pressione L1A ou StopA no teclado, ou envie um BREAK pelo console serial. Ao usar o tip ou o cu, ~# irá emitir um BREAK. O prompt PROM será ok em sistemas com uma CPU e ok {0} em sistemas SMP, onde o dígito indica o número da CPU ativa. Neste ponto, coloque o CD na unidade e digite boot cdrom no prompt PROM. Menu de inicialização do FreeBSD Quando o sistema inicializar a partir da mídia de instalação, um menu semelhante ao seguinte será exibido:
Menu do FreeBSD Boot Loader
Por padrão, o menu irá esperar dez segundos por uma ação do usuário antes de inicializar no instalador do FreeBSD ou, se o FreeBSD já estiver instalado, antes de inicializar no FreeBSD. Para pausar o cronômetro de inicialização para rever as seleções, pressione Espaço. Para selecionar uma opção, pressione seu número, caractere ou tecla destacada. As seguintes opções estão disponíveis. Boot Multi User: Isto irá continuar o processo de inicialização do FreeBSD. Se o temporizador de boot tiver sido pausado, pressione 1, B maiúsculo ou minúsculo ou Enter. Boot Single User: Este modo pode ser usado para corrigir uma instalação existente do FreeBSD como descrito em . Pressione 2 ou S maiúsculo ou minúsculo para entrar neste modo. Escape to loader prompt: Isso inicializará o sistema em um prompt de reparo que contém um número limitado de comandos de baixo nível. Este prompt é descrito em . Pressione 3 ou Esc para inicializar neste prompt. Reboot: Reinicia o sistema. Kernel: Carrega um kernel diferente. Configure Boot Options: Abre o menu mostrado e descrito em .
Menu de Opções de Inicialização do FreeBSD
O menu de opções de inicialização é dividido em duas seções. A primeira seção pode ser usada para retornar ao menu de inicialização principal ou para redefinir quaisquer opções que tenham sido alteradas de volta para seus valores padrões. A próxima seção é usada para alternar as opções disponíveis para On ou Off pressionando o número ou caractere realçado da opção. O sistema sempre inicializará usando as configurações dessas opções até serem modificadas. Várias opções podem ser alternadas usando este menu: ACPI Support: Se o sistema travar durante a inicialização, tente alternar essa opção para Off. Safe Mode: Se o sistema ainda travar durante a inicialização, mesmo com Suporte a ACPI definido como Off, tente definir esta opção como On. Single User: Alterne esta opção para On para corrigir uma instalação existente do FreeBSD como descrito em . Depois que o problema for corrigido, configure-o de volta para Off. Verbose: Alterne esta opção para On para ver mensagens mais detalhadas durante o processo de inicialização. Isso pode ser útil ao solucionar problemas de hardware. Depois de fazer as seleções necessárias, pressione 1 ou Backspace para retornar ao menu de boot principal, então pressione Enter para continuar a inicialização no FreeBSD. Uma série de mensagens de inicialização irão aparecer enquanto o FreeBSD executa seus testes de dispositivos de hardware e carrega o programa de instalação. Quando a inicialização estiver concluída, o menu de boas-vindas mostrado em será exibido.
Menu de boas-vindas
Pressione Enter para selecionar o padrão de [Install] para entrar no instalador. O restante deste capítulo descreve como usar este instalador. Caso contrário, use as setas para a direita ou para a esquerda ou a letra colorida para selecionar o item de menu desejado. A opção [Shell] pode ser usada para acessar um shell do FreeBSD, a fim de usar utilitários de linha de comando para preparar os discos antes da instalação. A opção [Live CD] pode ser usada para testar o FreeBSD antes de instalá-lo. A versão live é descrita em . Para revisar as mensagens de inicialização, incluindo o probe do dispositivo de hardware, pressione a tecla S maiúscula ou minúscula e, em seguida, Enter para acessar um shell. No prompt do shell, digite more /var/run/dmesg.boot e use a barra de espaço para rolar pelas mensagens. Quando terminar, digite exit para retornar ao menu de boas-vindas.
Usando o <application>bsdinstall</application> Esta seção mostra a ordem dos menus do bsdinstall e o tipo de informação que será solicitada antes que o sistema seja instalado. Use as teclas de seta para realçar uma opção de menu e, em seguida, a barra de Espaço para selecionar ou desmarcar esse item de menu. Quando terminar, pressione Enter para salvar a seleção e passar para a próxima tela. Selecionando o menu do Keymap (Mapa de teclas) Antes de iniciar o processo, o bsdinstall carregará os arquivos de keymap como mostrado em .
Carregamento de Keymap
Após o carregamento dos keymaps, o bsdinstall exibe o menu mostrado em . Use as setas para cima e para baixo para selecionar o mapa de teclas que mais representa o mapeamento do teclado conectado ao sistema. Pressione Enter para salvar a seleção.
Menu de Seleção do Keymap
Pressionar Esc sairá deste menu e usará o mapa de teclas padrão. Se a escolha do mapa de teclado não for clara, a opção United States of America ISO-8859-1 é uma opção segura. Além disso, ao selecionar um keymap diferente, o usuário pode testar o keymap e garantir que esteja correto antes de continuar, conforme mostrado em .
Menu de Teste do Keymap
Configurando o nome do host O próximo menu do bsdinstall é usado para definir o nome do host para o sistema recém-instalado.
Configurando o nome do host
Digite um nome de host exclusivo para a rede. Ele deve ser um nome de host totalmente qualificado, como machine3.example.com.
Selecionando Componentes para Instalar Em seguida, o bsdinstall solicitará a seleção de componentes opcionais para instalação.
Selecionando Componentes para Instalar
Decidir quais componentes instalar dependerá em grande parte do uso pretendido para o sistema e da quantidade de espaço em disco disponível. O kernel do FreeBSD e o userland, coletivamente conhecidos como o sistema base, são sempre instalados. Dependendo da arquitetura, alguns desses componentes podem não aparecer: base-dbg - Ferramentas básicas como cat, ls entre outras com símbolos de depuração ativados. kernel-dbg - Kernel e módulos com símbolos de depuração ativados. lib32-dbg - Bibliotecas de compatibilidade para executar aplicativos de 32 bits em uma versão de 64 bits do FreeBSD com símbolos de depuração ativados. lib32 - Bibliotecas de compatibilidade para executar aplicativos de 32 bits em uma versão de 64 bits do FreeBSD. ports - A Coleção de Ports do FreeBSD é uma coleção de arquivos que automatiza o download, a compilação e a instalação de pacotes de software de terceiros. discute como usar a coleção de ports. O programa de instalação não verifica o espaço em disco adequado. Selecione esta opção apenas se houver espaço suficiente no disco rígido. A Coleção de Ports do FreeBSD ocupa cerca de 500 MB de espaço em disco. src - O código-fonte completo do FreeBSD para o kernel e para o userland. Embora não seja necessário para a maioria dos aplicativos, pode ser necessário para compilar drivers de dispositivo, módulos do kernel ou alguns aplicativos da Coleção de Ports. Ele também é usado para desenvolver o próprio FreeBSD. A árvore de código-fonte completa requer 1 GB de espaço em disco e a recompilação de todo o sistema FreeBSD requer 5 GB adicionais de espaço. tests - FreeBSD Test Suite.
Instalando a partir da rede O menu mostrado em só aparece ao instalar a partir de um CD -bootonly.iso pois esta mídia de instalação não possui uma cópias dos arquivos de instalação. Como os arquivos de instalação devem ser recuperados através de uma conexão de rede, esse menu indica que a interface de rede deve ser configurada primeiro.
Instalando a partir da rede
Para configurar a conexão de rede, pressione Enter e siga as instruções em . Quando a interface estiver configurada, selecione um site espelho localizado na mesma região do mundo que o computador no qual o FreeBSD está sendo instalado. Os arquivos podem ser recuperados mais rapidamente quando o espelho está próximo ao computador de destino, reduzindo o tempo de instalação.
Escolhendo um Site Espelho
A instalação continuará como se os arquivos de instalação estivessem localizados na mídia de instalação local.
Alocando o espaço em disco O próximo menu é usado para determinar o método de alocação de espaço em disco. As opções disponíveis no menu dependem da versão do FreeBSD sendo instalada.
Opções de Particionamento
bsdinstall fornece ao usuário quatro métodos para alocar espaço em disco: O particionamento Auto (UFS) configura automaticamente as partições do disco usando o sistema de arquivos UFS. O particionamento Manual permite que usuários avançados criem partições personalizadas a partir das opções de menu. Shell abre um prompt de shell no qual usuários avançados podem criar partições personalizadas usando utilitários de linha de comando como gpart8, fdisk8, e bsdlabel8. O particionamento Auto (ZFS) cria um sistema root-on-ZFS com suporte opcional à criptografia GELI para boot environments. Esta seção descreve o que considerar ao definir as partições de disco. Em seguida, demonstra como usar os diferentes métodos de particionamento. Criando o layout da partição partition layout /etc /var /usr Ao criar os sistemas de arquivos, lembre-se de que os discos rígidos transferem dados mais rapidamente das trilhas externas para as internas. Assim, sistemas de arquivos menores e mais acessados devem estar mais próximos da parte externa da unidade, enquanto partições maiores, como /usr, devem ser colocadas em direção às partes internas do disco. É uma boa idéia criar partições em uma ordem similar a: /, swap, /var e /usr. O tamanho da partição /var reflete o uso pretendido para a máquina. Esta partição é usada para armazenar caixas de correio, arquivos de log e spools de impressora. Caixas de correio e arquivos de log podem crescer até tamanhos inesperados, dependendo do número de usuários e de quanto tempo os arquivos de log são mantidos. Na média, a maioria dos usuários raramente precisa de mais do que cerca de um gigabyte de espaço livre em disco no /var. Às vezes, é necessário muito espaço em disco no /var/tmp. Quando um novo software é instalado, as ferramentas de empacotamento extraem uma cópia temporária dos pacotes no /var/tmp. Grandes pacotes de software, como o Firefox ou LibreOffice podem ser difíceis de instalar se não houver espaço em disco suficiente no /var/tmp. A partição /usr contém muitos dos arquivos que suportam o sistema, incluindo o a Coleção de Ports do FreeBSD e o código-fonte do sistema. Pelo menos 2 gigabytes de espaço são recomendados para esta partição. Ao selecionar os tamanhos das partições, lembre-se dos requisitos de espaço. Ficar sem espaço em uma partição enquanto mal usa outra pode ser um aborrecimento. swap sizing swap partition Como regra geral, a partição swap deve ter o dobro do tamanho da memória física (RAM). Sistemas com pouca memória RAM podem ter um melhor desempenho com mais swap. Configurar um swap pequeno pode levar a ineficiências no código de verificação de página da VM e pode criar problemas mais tarde, se mais memória for adicionada. Em sistemas maiores com vários discos SCSI ou vários discos IDE operando em diferentes controladoras, é recomendável que uma area de swap seja configurada em cada unidade, até quatro unidades. As partições de swap devem ter aproximadamente o mesmo tamanho. O kernel pode manipular tamanhos arbitrários, mas as estruturas internas de dados podem ser dimensionadas para 4 vezes a maior partição de swap. Manter as partições de swap próximas do mesmo tamanho permitirá que o kernel otimize o espaço de swap entre discos. Partições grandes de swap são uma coisa boa, mesmo se o swap não for muito usado. Pode ser mais fácil de se recuperar de um programa devorador de memória antes de ser forçado a reinicializar. Ao particionar adequadamente um sistema, a fragmentação introduzida nas partições menores e intensas em gravação não vai prejudicar as partições que são maioritariamente de leitura. Manter as partições com maior carga de gravação mais próximas da borda do disco aumentará o desempenho de I/O nas partições onde ela é mais necessária. Embora o desempenho de I/O nas partições maiores possa ser necessário, mudá-las mais para a borda do disco não levará a uma melhoria de desempenho significativa em relação à movimentação de /var para a borda. Particionamento Guiado Usando UFS Quando este método é selecionado, um menu exibirá o(s) disco(s) disponível(s). Se vários discos estiverem conectados, escolha aquele em que o FreeBSD deve ser instalado.
Selecionando a partir de vários discos
Depois que o disco é selecionado, o próximo menu solicita a instalação no disco inteiro ou a criação de uma partição usando o espaço livre. Se [ Entire Disk ] for escolhido, um layout de partição geral que preenche todo o disco é criado automaticamente. Selecionar [Partition] cria um layout de partição do espaço não utilizado no disco.
Selecionando todo o disco ou partição
Após [ Entire Disk ] ser escolhido, bsdinstall exibe uma caixa de diálogo indicando que o disco será apagado.
Confirmação
O próximo menu mostra uma lista com os tipos de esquema de partição. O GPT é geralmente a opção mais apropriada para computadores amd64. Computadores mais antigos que não são compatíveis com o GPT devem usar o MBR. Os outros esquemas de partição são geralmente usados para computadores incomuns ou antigos. Mais informações estão disponíveis em .
Selecionar Esquema de Particionamento
Depois que o layout da partição tiver sido criado, revise-o para garantir que ele atenda às necessidades da instalação. Selecionar [ Revert ] redefinirá as partições para seus valores originais e pressionar [Auto] recriará as partições automáticas do FreeBSD. As partições também podem ser criadas, modificadas ou excluídas manualmente. Quando o particionamento estiver correto, selecione [Finish] para continuar com a instalação.
Revise as partições criadas
Depois que os discos são configurados, o próximo menu fornece a última chance de fazer alterações antes que os discos selecionados sejam formatados. Se for necessário fazer alterações, selecione [Back] para retornar ao menu principal de particionamento. [ Revert & Exit ] sairá do instalador sem fazer alterações no disco. Selecione [ Commit ] para iniciar o processo de instalação.
Confirmação final
Para continuar com o processo de instalação, vá para .
Particionamento Manual Selecionar este método abre o editor de partições:
Criar partições manualmente
Realce a unidade de instalação (ada0 neste exemplo) e selecione [ Create ] para exibir um menu dos esquemas de partição disponíveis:
Criar partições manualmente
O GPT é geralmente a opção mais apropriada para computadores amd64. Computadores mais antigos que não são compatíveis com o GPT devem usar o MBR. Os outros esquemas de partição são geralmente usados para computadores incomuns ou antigos. Esquemas de Particionamento Abreviação Descrição APM Apple Partition Map, usado no PowerPC. BSD O Label BSD sem um MBR, às vezes chamado de modo perigosamente dedicado porque os utilitários de discos não BSD podem não reconhecê-lo. GPT Tabela de Partição GUID ( http://en.wikipedia.org/wiki/GUID_Partition_Table ). MBR Registro mestre de inicialização ou MBR ( http://en.wikipedia.org/wiki/Master_boot_record ). VTOC8 Tabela de Volume do Conteúdo usado pelos computadores Sun SPARC64 e UltraSPARC.
Depois que o esquema de particionamento for selecionado e criado, selecione [Create] novamente para criar as partições.A tecla Tab é utilizada para navegação entre os campos.
Criar partições manualmente
Uma instalação padrão do FreeBSD GPT usa pelo menos três partições: freebsd-boot - Mantém o código de inicialização do FreeBSD. freebsd-ufs - Um sistema de arquivos UFS do FreeBSD. freebsd-zfs - Um sistema de arquivos ZFS do FreeBSD. Mais informações sobre o ZFS estão disponíveis em . freebsd-swap - Espaço de swap do FreeBSD. Consulte gpart8 para obter informações de todos os tipos de partições GPT disponíveis. Várias partições do sistema de arquivos podem ser criadas e algumas pessoas preferem um layout tradicional com partições separadas para /, /var, /tmp e /usr. Veja para um exemplo. O tamanho pode ser digitado com abreviações comuns: K para kilobytes, M para megabytes, ou G para gigabytes. O alinhamento adequado do setor fornece o melhor desempenho, e ao definir os tamanhos das partições em múltiplos de 4K bytes ajuda a garantir o alinhamento em discos com setores de 512 ou 4 bytes. Geralmente, usar tamanhos de partições que são múltiplos de 1M ou 1G é a maneira mais fácil de garantir que cada partição comece em um múltiplo par de 4K. Há uma exceção: a partição freebsd-boot não deve ser maior que 512K devido às limitações atuais do código de inicialização. Um Mountpoint é necessário se a partição contiver um sistema de arquivos. Se apenas uma única partição UFS for criada, o ponto de montagem deve ser /. O Label é um nome pelo qual a partição será conhecida. Nomes ou números de unidades podem mudar se a unidade estiver conectada a um controlador ou porta diferente, mas a etiqueta da partição não muda. Referir-se a rótulos em vez de nomes de unidade e números de partição em arquivos como o /etc/fstab torna o sistema mais tolerante a alterações de hardware. Os rótulos GPT aparecem em /dev/gpt/ quando um disco é anexado. Outros esquemas de particionamento têm diferentes capacidades de rótulos e seus rótulos aparecem em diferentes diretórios no /dev/. Use um rótulo único e exclusivo para cada uma das partições para evitar conflitos de rótulos idênticos. Algumas letras do nome, uso ou localização do computador podem ser adicionadas ao rótulo. Por exemplo, use labroot ou rootfslab para a partição raiz UFS no computador chamado lab. Criando partições tradicionais para um sistema de arquivos dividido Para um layout de partição tradicional em que os diretórios /, /var, /tmp e /usr são sistemas de arquivos separados em suas próprias partições, crie um esquema de particionamento GPT e crie as partições conforme mostrado. Os tamanhos de partição mostrados são típicos para um disco de destino de 20G. Se houver mais espaço disponível no disco de destino, partições maiores de swap ou /var podem ser úteis. Os rótulos mostrados aqui são prefixados com ex para exemplo, mas os leitores devem usar outros valores de rótulo exclusivos, conforme descrito acima. Por padrão, o gptboot do FreeBSD espera que a primeira partição UFS seja a partição /. Tipo de Partição Tamanho Ponto de montagem Rótulo freebsd-boot 512K freebsd-ufs 2G / exrootfs freebsd-swap 4G exswap freebsd-ufs 2G /var exvarfs freebsd-ufs 1G /tmp extmpfs freebsd-ufs aceite o padrão (restante do disco) /usr exusrfs Depois que as partições personalizadas forem criadas, selecione [Finish] para continuar com a instalação e vá para .
Particionamento Guiado Usando Root-on-ZFS O suporte para criação automática de instalações root-on-ZFS foi adicionado no FreeBSD 10.0-RELEASE. Este modo de particionamento só funciona com discos inteiros e apaga o conteúdo de todo o disco. O instalador criará automaticamente partições alinhadas a limites de 4k e forçará o ZFS a usar setores 4k. Isso é seguro mesmo com discos de setor de 512 bytes e tem o benefício adicional de garantir que os pools criados em discos de 512 bytes possam ter discos de setor de 4k adicionados no futuro, como espaço de armazenamento adicional ou como substitutos para discos com falha. O instalador também pode opcionalmente empregar a criptografia de disco GELI conforme descrito em . Se a criptografia estiver ativada, um conjunto de inicialização não criptografado de 2 GB contendo o diretório /boot será criado. Ele contém o kernel e outros arquivos necessários para inicializar o sistema. Uma partição swap de um tamanho selecionável pelo usuário também é criada, e todo o espaço restante é usado para o pool do ZFS. O menu de configuração principal do ZFS oferece várias opções para controlar a criação do pool.
Menu de particionamento do <acronym>ZFS</acronym>
Selecione T para configurar o Pool Type e o(s) disco(s) que constituirão o pool. O instalador automático do ZFS atualmente suporta apenas a criação de um único vdev de nível superior, exceto no modo de stripe. Para criar conjuntos mais complexos, use as instruções em para criar o pool. O instalador suporta a criação de vários tipos de conjuntos, incluindo stripe (não recomendada, sem redundância), mirror (melhor desempenho, menos espaço utilizável) e RAID-Z 1, 2 e 3 (com capacidade para suportar a falha simultânea de 1, 2 e 3 discos, respectivamente). Ao selecionar o tipo de pool, uma dica é exibida na parte inferior da tela com conselhos sobre o número de discos necessários e, no caso de RAID-Z, o número ideal de discos para cada configuração.
Tipo de pool <acronym>ZFS</acronym>
Quando um Tipo de pool tiver sido selecionado, uma lista de discos disponíveis será exibida e o usuário será solicitado a selecionar um ou mais discos para compor o pool. A configuração é validada para garantir que discos suficientes sejam selecionados. Caso contrário, selecione <Change Selection> para retornar à lista de discos ou <Cancel> para alterar o tipo de conjunto.
Seleção de disco
Seleção inválida
Se um ou mais discos estiverem faltando na lista, ou se os discos foram anexados depois que o instalador foi iniciado, selecione - Rescan Devices para preencher novamente a lista de discos disponíveis. Para evitar apagar acidentalmente o disco errado, o menu - Disk Info pode ser usado para inspecionar cada disco, incluindo sua tabela de partição e várias outras informações, como o número do modelo do dispositivo e o número de série, se disponíveis.
Analisando um disco
O principal menu de configuração do ZFS também permite que o usuário insira um nome de pool, desabilite a opção que força setores 4k, habilite ou desabilite a criptografia, alterne entre os tipos de tabela de partiçõesGPT (recomendado) ou MBR e selecione a quantidade de espaço de swap. Quando todas as opções tiverem sido definidas para os valores desejados, selecione o >>> Install no topo do menu. Se a criptografia de disco GELI foi ativada, o instalador solicitará duas vezes que a frase secreta seja usada para criptografar os discos.
Senha de criptografia de disco
O instalador oferece uma última chance de cancelar antes que o conteúdo das unidades selecionadas seja destruído para criar o pool do ZFS.
Última chance
A instalação prossegue normalmente.
Particionamento do modo shell Ao criar instalações avançadas, os menus de particionamento do bsdinstall podem não fornecer o nível de flexibilidade necessário. Usuários avançados podem selecionar a opção Shell no menu de particionamento para particionar manualmente as unidades, criar o(s) sistema(s) de arquivos, preencher o /tmp/bsdinstall_etc/fstab e montar os sistemas de arquivos em /mnt. Feito isso, digite exit para retornar ao bsdinstall e continue com a instalação.
Fazendo o download dos arquivos de distribuição O tempo de instalação irá variar dependendo das distribuições escolhidas, mídia de instalação e velocidade do computador. Uma série de mensagens indicará o progresso. Primeiro, o instalador formata o(s) disco(s) selecionado(s) e inicializa as partições. Em seguida, no caso de uma bootonly media ou mini memstick, ele faz o download dos componentes selecionados:
Fazendo o download dos arquivos de distribuição
Em seguida, a integridade dos arquivos de distribuição é verificada para garantir que eles não tenham sido corrompidos durante o download ou mal interpretados da mídia de instalação:
Verificando arquivos de distribuição
Finalmente, os arquivos de distribuição verificados são extraídos para o disco:
Extraindo arquivos de distribuição
Depois que todos os arquivos de distribuição solicitados tiverem sido extraídos, o bsdinstall exibirá a primeira tela de configuração pós-instalação. As opções de configuração pós-instalação disponíveis estão descritas na próxima seção.
Pós-instalação Uma vez instalado o FreeBSD, o bsdinstall solicitará a configuração de várias opções antes de inicializar o sistema recém-instalado. Esta seção descreve essas opções de configuração. Depois que o sistema inicializa, o bsdconfig fornece um método orientado por menus para configurar o sistema usando essas e outras opções. Definindo a Senha de <systemitem class="username">root</systemitem> Primeiro, a senha do root deve ser definida. Ao digitar a senha, os caracteres digitados não são exibidos na tela. Depois que a senha for digitada, ela deve ser digitada novamente. Isso ajuda a evitar erros de digitação.
Definindo a Senha de <systemitem class="username">root</systemitem>
Configurando as Interfaces de Rede Em seguida, é mostrada uma lista das interfaces de rede encontradas no computador. Selecione a interface para configurar. Os menus de configuração de rede serão ignorados se a rede tiver sido previamente configurada como parte de uma instalação bootonly.
Escolha uma interface de rede
Se uma interface Ethernet for selecionada, o instalador irá pular para o menu mostrado em . Se uma interface de rede sem fio for escolhida, o sistema procurará pontos de acesso sem fio:
Buscando por pontos de acesso sem fio
As redes sem fio são identificadas por um identificador de conjunto de serviços (SSID), um nome curto e exclusivo dado a cada rede. Os SSIDs encontrados durante a busca serão listados, seguidos por uma descrição dos tipos de criptografia disponíveis para essa rede. Se o SSID desejado não aparecer na lista, selecione [Rescan] para buscar novamente. Se a rede desejada ainda não aparecer, verifique se há problemas com as conexões da antena ou tente mover o computador para mais perto do ponto de acesso. refaça a busca após cada alteração ser feita.
Escolhendo uma rede sem fio
Em seguida, insira as informações de criptografia para se conectar à rede sem fio selecionada. A encriptação WPA2 é fortemente recomendada, pois os tipos de encriptação mais antigos, como o WEP, oferecem pouca segurança. Se a rede usar WPA2, insira a senha, também conhecida como Chave Pré-Compartilhada (PSK). Por motivos de segurança, os caracteres digitados na caixa de entrada são exibidos como asteriscos.
Configuração WPA2
Em seguida, escolha se um endereço IPv4 deve ou não ser configurado na interface Ethernet ou na interface sem fio:
Escolha a rede <acronym>IPv4</acronym>
Existem dois métodos de configuração de IPv4. O DHCP configurará automaticamente a interface de rede da forma correta e deverá ser usado se a rede fornecer um servidor DHCP. Caso contrário, as informações de endereçamento precisam ser inseridas manualmente como em uma configuração estática. Não insira informações de rede aleatórias, pois isso não funcionará. Se um servidor DHCP não estiver disponível, obtenha as informações listadas em do administrador da rede ou do provedor de serviços de Internet. Se um servidor DHCP estiver disponível, selecione [Yes] no próximo menu para configurar automaticamente a interface de rede. O instalador parecerá pausar por um minuto ou mais enquanto encontra o servidor DHCP e obtém as informações de endereçamento do sistema.
Escolha a configuração <acronym>IPv4</acronym> <acronym>DHCP</acronym>
Se um servidor DHCP não estiver disponível, selecione [No] e insira as seguintes informações de endereçamento neste menu:
Configuração <acronym>IPv4</acronym> estática
Endereço IP - O endereço IPv4 atribuído a este computador. O endereço deve ser único e não estar em uso por outro equipamento na rede local. Subnet Mask - A máscara de sub-rede da rede. Default Router - O endereço IP do gateway padrão da rede. A próxima tela perguntará se a interface deve ser configurada para IPv6. Se IPv6 estiver disponível e for desejado, escolha [Yes] para selecioná-lo.
Escolha a rede IPv6
O IPv6 também possui dois métodos de configuração. A configuração automática de endereços sem estado (SLAAC) solicitará automaticamente as informações de configuração corretas de um roteador local. Consulte http://tools.ietf.org/html/rfc4862 para maiores informações. A configuração estática requer entrada manual das informações da rede. Se um roteador IPv6 estiver disponível, selecione [Yes] no próximo menu para configurar automaticamente a interface de rede. O instalador parecerá pausar por um minuto ou mais enquanto localiza o roteador e obtém as informações de endereçamento do sistema.
Escolha a configuração do SLAAC do IPv6
Se um roteador IPv6 não estiver disponível, selecione [No] e insira as seguintes informações de endereçamento neste menu:
Configuração Estática do IPv6
Endereço IPv6 - O endereço IPv6 atribuído a este computador. O endereço deve ser único e não estar em uso por outro equipamento na rede local. Default Router - O endereço IPv6 do gateway padrão da rede. O último menu de configuração de rede é usado para configurar o resolvedor do Sistema de Nomes de Domínio (DNS), que converte nomes de host de e para endereços de rede. Se o DHCP ou SLAAC foi usado para autoconfigurar a interface de rede, os valores do Resolver Configuration podem já estar preenchidos. Caso contrário, insira o domínio da rede local nome no campo Search. DNS # 1 e DNS # 2 são os endereços IPv4 e/ou IPv6 dos servidores de DNS. Pelo menos um servidor DNS é necessário.
Configuração do DNS
Defina o fuso horário A próxima série de menus é usada para determinar a hora local correta, selecionando a região geográfica, o país e o fuso horário. Definir o fuso horário permite que o sistema corrija automaticamente as alterações de horário regionais, como horário de verão, e execute outras funções relacionadas ao fuso horário corretamente. O exemplo mostrado aqui é para uma máquina localizada no fuso horário do continente da Espanha, Europa. As seleções variam de acordo com a localização geográfica.
Selecione uma região
A região apropriada é selecionada usando as teclas de seta e depois pressionando Enter.
Selecione um pais
Selecione o país apropriado usando as teclas de seta e pressione Enter.
Selecione um fuso horário
O fuso horário apropriado é selecionado usando as teclas de seta e pressionando Enter.
Confirme o fuso horário
Confirme se a abreviação do fuso horário está correta.
Selecionar Data
A data apropriada é selecionada usando as teclas de seta e pressionando [ Set Date ]. Caso contrário, a seleção de data pode ser pulada pressionando [ Skip ].
Selecionar Hora
O horário apropriado é selecionado usando as teclas de seta e, em seguida, pressionando [ Set Time ]. Caso contrário, a seleção da hora pode ser pulada pressionando [ Skip ].
Ativando Serviços O próximo menu é usado para configurar quais serviços do sistema serão iniciados sempre que o sistema for inicializado. Todos esses serviços são opcionais. Inicie apenas os serviços necessários para o funcionamento do sistema.
Selecionando Serviços Adicionais para Ativar
Aqui está um resumo dos serviços que podem ser ativados neste menu: local_unbound -Ative o DNS local unbound. É necessário ter em mente que esse é o unbound do sistema base e deve ser usado apenas como um cache local de consultas DNS. Se o objetivo é configurar um resolvedor para toda a rede, instale dns/unbound. sshd - O daemon Secure Shell (SSH) é usado para acessar remotamente um sistema através de uma conexão criptografada. Ative este serviço somente se o sistema estiver disponível para logins remotos. moused - Ative este serviço se o mouse for usado a partir do console do sistema de linha de comando. ntpdate - Ative a sincronização automática do relógio no momento do boot. A funcionalidade deste programa agora está disponível no daemon ntpd8. Após um período considerável de luto, o utilitário ntpdate8 será aposentado. ntpd - O daemon do Network Time Protocol (NTP) para sincronização automática do relógio. Ative este serviço se houver um servidor Windows, Kerberos ou LDAP na rede. powerd - Utilitário de controle de energia do sistema para controle de energia e economia de energia. dumpdev - A habilitação de despejos de memória é útil na depuração de problemas com o sistema; portanto, os usuários são incentivados a habilitar despejos de memória.
Ativando Opções de Segurança (Hardening) O próximo menu é usado para configurar quais opções de segurança serão ativadas. Todas essas opções são opcionais. Mas seu uso é incentivado.
Selecionando Opções de Segurança (Hardening)
Aqui está um resumo das opções que podem ser ativadas neste menu: hide_uids - Oculta processos em execução de outros usuários para impedir que usuários sem privilégios vejam processos em execução de outros usuários (UID), impedindo o vazamento de informações. hide_gids - Oculta processos em execução de outros grupos para impedir que usuários sem privilégios vejam processos em execução de outros grupos (GID), impedindo o vazamento de informações. hide_jail - Oculta processos em execução em jails para impedir que usuários sem privilégios vejam processos em execução dentro das jails. read_msgbuf - Desativando a leitura do buffer de mensagens do kernel para usuários sem privilégios, impede o uso do dmesg8 para exibir mensagens do log do kernel em buffer. proc_debug - Desativar os recursos de depuração de processo para usuários sem privilégios desativa uma variedade de serviços de depuração entre processos sem privilégios, incluindo algumas funcionalidades procfs, ptrace() e ktrace(). Observe que isso também irá bloquear ferramentas de depuração, como por exemplo, lldb1, truss1, procstat1, bem como alguns recursos de depuração integrados em certas linguagens de script como PHP, etc., de funcionar para usuários sem privilégios. random_pid - Randomize o PID dos processos recém-criados. clear_tmp - Limpar o /tmp na inicialização do sistema. disable_syslogd - Desative a criação de socket de rede do syslogd. Por padrão, o FreeBSD executa o syslogd de maneira segura com -s. Isso impede que o daemon atenda solicitações UDP recebidas na porta 514. Com esta opção ativada, o syslogd será executado com o sinalizador -ss, que impede o syslogd de abrir qualquer porta. Para obter mais informações, consulte syslogd8. disable_sendmail - Desative o agente de transporte de email sendmail. secure_console - Quando esta opção está ativada, o prompt solicita a senha de root ao entrar em modo single. disable_ddtrace - O DTrace pode ser executado em um modo que realmente afetará o kernel em execução. Ações destrutivas não podem ser usadas, a menos que tenham sido explicitamente ativadas. Para habilitar esta opção ao usar o DTrace, use -w. Para obter mais informações, consulte dtrace1.
Adicione usuários O próximo menu pede para criar pelo menos uma conta de usuário. Recomenda-se fazer login no sistema usando uma conta de usuário em vez de utilizar diretamente o root. Quando logado como root, essencialmente não há limites ou proteção sobre o que pode ser feito. Fazer o login como um usuário normal é mais seguro. Selecione [Yes] para adicionar novos usuários.
Adicione contas de usuário
Siga os prompts e insira as informações solicitadas para a conta do usuário. O exemplo mostrado em cria a conta de usuário asample.
Insira as informações do usuário
Aqui está um resumo das informações para solicitadas: Username - O nome que o usuário digitará para efetuar login. Uma convenção comum é usar a primeira letra do primeiro nome combinada com o sobrenome, desde que cada nome de usuário seja exclusivo para o sistema. O nome de usuário faz distinção entre maiúsculas e minúsculas e não deve conter espaços. Username - O nome completo do usuário. Este campo pode conter espaços e é usado como uma descrição para a conta do usuário. Uid - ID do Usuário. Normalmente, isso é deixado em branco para que o sistema atribua um valor. Login group - O grupo do usuário. Normalmente, isso é deixado em branco para aceitar o padrão. Invite user into other groups? - Grupos adicionais aos quais o usuário será adicionado como membro. Se o usuário precisar de acesso administrativo, digite wheel aqui. Login class - normalmente deixado em branco para seguir com o padrão. Shell - Digite um dos valores listados para definir o shell interativo para o usuário. Consulte para maiores informações sobre shells. Home directory - O diretório inicial do usuário. O padrão geralmente está correto. Home directory permissions - Permissões no diretório inicial do usuário. O padrão geralmente está correto. Use password-based authentication? A resposta deve ser Yes para que o usuário seja solicitado a inserir sua senha no login. Use an empty password? - Normalmente a resposta será No, pois é inseguro ter uma senha em branco. Use a random password? - Normalmente a resposta será No para que o usuário possa definir sua própria senha no próximo prompt. Enter password - Escolha a senha para este usuário. Caracteres digitados não serão exibidos na tela. Enter password again - A senha deve ser digitada novamente para verificação. Lock out the account after creation? - A reposta normalmente será No para que o usuário possa fazer o login. Depois de inserir tudo, um resumo será exibido para revisão. Se algum erro foi cometido, digite no e tente novamente. Se tudo estiver correto, digite yes para criar o novo usuário.
Saia do gerenciamento de usuários e grupos
Se houver mais usuários para adicionar, responda a pergunta Add another user? com yes. Digite no para concluir a adição de usuários e continuar a instalação. Para obter maiores informações sobre como adicionar usuários e sobre como gerenciá-los de usuários, consulte .
Configuração final Depois que tudo tiver sido instalado e configurado, você terá uma chance final para modificar as configurações.
Configuração final
Use este menu para fazer alterações ou fazer qualquer configuração adicional antes de concluir a instalação. Add User - Descrito em . Root Password - Descrito em . Hostname - Descrito em . Network - Descrito em . Services - Descrito em . System Hardening - Descrito em . Time Zone - Descrito em . Handbook - Faça o download e instale o FreeBSD Handbook. Depois que completar qualquer configuração final que tenha faltado, selecione Exit.
Configuração manual
O bsdinstall perguntará se há alguma configuração adicional que precise ser feita antes de reinicializar o novo sistema. Selecione [Yes] para sair para um shell dentro do novo sistema ou [No] para prosseguir para a última etapa da instalação.
Conclua a instalação
Se outras configurações ou configurações especiais forem necessárias, selecione [Live CD] para inicializar a mídia de instalação no modo Live CD. Se a instalação estiver completa, selecione [Reboot] para reiniciar o computador e iniciar o novo sistema FreeBSD. Não se esqueça de remover a mídia de instalação do FreeBSD ou o computador poderá inicializar novamente a partir dela. Quando o FreeBSD inicializa, mensagens informativas são exibidas. Depois que o sistema concluir a inicialização, um prompt de login será exibido. No login:, insira o nome de usuário adicionado durante a instalação. Evite efetuar login como root. Consulte para instruções sobre como se tornar o superusuário quando o acesso administrativo for necessário. As mensagens que apareceram durante a inicialização podem ser revisadas pressionando Scroll-Lock para ativar o buffer de rolagem para trás. As teclas PgUp, PgDn e setas podem ser usadas para rolar pelas mensagens. Quando terminar, pressione Scroll-Lock novamente para desbloquear o visor e retornar ao console. Para revisar essas mensagens depois que o sistema estiver ativo por algum tempo, digite less /var/run/dmesg.boot em um prompt de comando. Pressione q para retornar à linha de comando após a visualização. Se o sshd foi habilitado em , a primeira inicialização pode ser um pouco mais lenta, pois o sistema gerará as chaves RSA e DSA. As inicializações subseqüentes serão mais rápidas. As impressões digitais das chaves serão exibidas, conforme mostrado neste exemplo: Generating public/private rsa1 key pair. Your identification has been saved in /etc/ssh/ssh_host_key. Your public key has been saved in /etc/ssh/ssh_host_key.pub. The key fingerprint is: 10:a0:f5:af:93:ae:a3:1a:b2:bb:3c:35:d9:5a:b3:f3 root@machine3.example.com The key's randomart image is: +--[RSA1 1024]----+ | o.. | | o . . | | . o | | o | | o S | | + + o | |o . + * | |o+ ..+ . | |==o..o+E | +-----------------+ Generating public/private dsa key pair. Your identification has been saved in /etc/ssh/ssh_host_dsa_key. Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub. The key fingerprint is: 7e:1c:ce:dc:8a:3a:18:13:5b:34:b5:cf:d9:d1:47:b2 root@machine3.example.com The key's randomart image is: +--[ DSA 1024]----+ | .. . .| | o . . + | | . .. . E .| | . . o o . . | | + S = . | | + . = o | | + . * . | | . . o . | | .o. . | +-----------------+ Starting sshd. Consulte para maiores informações sobre fingerprints e o SSH. O FreeBSD não instala um ambiente gráfico por padrão. Consulte para maiores informações sobre como instalar e configurar um gerenciador gráfico de janelas. O desligamento adequado de um computador FreeBSD ajuda a proteger os dados e o hardware contra danos. Não desligue a energia antes do sistema ter sido desligado corretamente! Se o usuário for membro do grupo wheel, torne-se o superusuário digitando su na linha de comando e inserindo a senha do usuário root. Em seguida, digite shutdown -p now e o sistema será desligado corretamente e, se o hardware suportar, irá se desliga-se.
Solução de problemas installation troubleshooting Esta seção aborda a solução de problemas básicos de instalação, tais como problemas comuns que as pessoas relataram. Verifique o documento Notas de Hardware (https://www.freebsd.org/releases/index.html) para a versão do FreeBSD para garantir que o hardware é suportado. Se o hardware for suportado e houver travamentos ou outros problemas, compile um kernel personalizado usando as instruções em para adicionar suporte a dispositivos que não estão presentes no kernel GENERIC. O kernel padrão assume que a maioria dos dispositivos de hardware está na configuração padrão de fábrica em termos de IRQs, endereços de I/O e canais DMA. Se o hardware foi reconfigurado, um arquivo de configuração personalizado do kernel pode dizer ao FreeBSD onde encontrar os dispositivos. Alguns problemas de instalação podem ser evitados ou aliviados com a atualização do firmware em vários componentes de hardware, principalmente na placa-mãe. O firmware da placa-mãe é geralmente chamado de BIOS. A maioria dos fabricantes de placas-mãe e computadores tem um site para atualizações e para informações sobre as atualizações. Os fabricantes geralmente desaconselham a atualização da BIOS da placa-mãe, a menos que haja uma boa razão para isso, como uma atualização crítica. O processo de atualização pode dar errado, deixando o BIOS incompleto e o computador inoperante. Se o sistema trava enquanto verifica o hardware durante a inicialização ou se comporta de maneira estranha durante a instalação, o ACPI pode ser o culpado. O FreeBSD faz uso extensivo do sistema ACPI nas plataformas i386 e amd64 para ajudar na configuração do sistema, caso seja detectado durante a inicialização. Infelizmente, alguns bugs ainda existem tanto no driver ACPI como nas placas-mãe do sistema e no firmware BIOS. O ACPI pode ser desativado configurando a opção hint.acpi.0.disabled no terceiro estágio do boot loader: set hint.acpi.0.disabled="1" Isso é redefinido toda vez que o sistema é inicializado, portanto é necessário adicionar hint.acpi.0.disabled="1" ao arquivo /boot/loader.conf . Maiores informações sobre o boot loader podem ser encontradas em . Usando o Live <acronym>CD</acronym> O menu de boas-vindas do bsdinstall, mostrado em , fornece uma opção [Live CD]. Isto é útil para aqueles que ainda estão se perguntando se o FreeBSD é o sistema operacional correto para eles e quer testar alguns dos recursos antes de instalar. Os seguintes pontos devem ser observados antes de usar o [Live CD]: Para obter acesso ao sistema, a autenticação é necessária. O nome de usuário é root e a senha está em branco. Como o sistema é executado diretamente da mídia de instalação, o desempenho será significativamente mais lento do que o de um sistema instalado em um disco rígido. Essa opção fornece apenas um prompt de comando e não uma interface gráfica.
Fundamentos do FreeBSD Sinopse Este capítulo cobre os comandos básicos e as funcionalidades do sistema operacional FreeBSD. Grande parte deste material é relevante para qualquer sistema operacional do tipo UNIX. Novos usuários do FreeBSD são encorajados a ler este capítulo cuidadosamente. Depois de ler este capítulo, você saberá: Como usar e configurar consoles virtuais. Como criar e gerenciar usuários e grupos no FreeBSD. Como funcionam as permissões de arquivo UNIX e as flags de arquivos do FreeBSD. O layout padrão do sistema de arquivos do FreeBSD. A organização do disco no FreeBSD. Como montar e desmontar sistemas de arquivos. O que são processos, daemons e sinais. O que é um shell e como alterar o ambiente de login padrão. Como usar editores de texto básicos. O que são devices e device nodes. Como ler páginas de manual para obter maiores informações. Consoles e Terminais Virtuais virtual consoles terminals console A menos que o FreeBSD tenha sido configurado para iniciar automaticamente um ambiente gráfico durante a inicialização, o sistema inicializará em um prompt de login da linha de comando, como visto neste exemplo: FreeBSD/amd64 (pc3.example.org) (ttyv0) login: A primeira linha contém algumas informações sobre o sistema. O amd64 indica que o sistema neste exemplo está executando uma versão de 64 bits do FreeBSD. O nome do host é pc3.example.org, e ttyv0 indica que este é o console do sistema. A segunda linha é o prompt de login. Como o FreeBSD é um sistema multiusuário, ele precisa de alguma maneira distinguir entre usuários diferentes. Isso é feito exigindo que todos os usuários façam login no sistema antes de obter acesso aos programas no sistema. Cada usuário tem um nome de usuário único e uma senha pessoal. Para efetuar login no console do sistema, digite o nome de usuário que foi configurado durante a instalação do sistema, conforme descrito em e pressione Enter. Em seguida, insira a senha associada ao nome de usuário e pressione Enter. A senha não é ecoada por razões de segurança. Uma vez que a senha correta é inserida, a mensagem do dia (MOTD) será exibida, seguida de um prompt de comando. Dependendo do shell que foi selecionado quando o usuário foi criado, este prompt será um caractere #, $ ou %. O prompt indica que o usuário está logado no console do sistema FreeBSD e pronto para testar os comandos disponíveis. Consoles Virtuais Enquanto o console do sistema pode ser usado para interagir com o sistema, um usuário trabalhando a partir da linha de comando no teclado de um sistema FreeBSD normalmente irá efetuar login em um console virtual. Isso ocorre porque as mensagens do sistema são configuradas por padrão para serem exibidas no console do sistema. Essas mensagens serão exibidas por cima do comando ou arquivo em que o usuário estiver trabalhando, dificultando a concentração no trabalho em questão. Por padrão, o FreeBSD é configurado para fornecer vários consoles virtuais para a entrada de comandos. Cada console virtual tem seu próprio prompt de login e shell e é fácil alternar entre os consoles virtuais. Isso essencialmente fornece a linha de comando equivalente a ter várias janelas abertas ao mesmo tempo em um ambiente gráfico. As combinações de teclas AltF1 até a AltF8 foram reservadas pelo FreeBSD para alternar entre os consoles virtuais. Use AltF1 para alternar para o console do sistema (ttyv0), AltF2 para acessar o primeiro console virtual (ttyv1), Alt F3 para acessar o segundo console virtual (ttyv2) e assim por diante. Ao usar o Xorg como um console gráfico, a combinação CtrlAltF1 é utilizada para retornar para um console virtual baseado em texto. Ao mudar de um console para o próximo, o FreeBSD gerencia a saída da tela. O resultado é uma ilusão de ter várias telas virtuais e teclados que podem ser usados para digitar comandos para o FreeBSD rodar. Os programas executados em um console virtual não param de ser executados quando o usuário alterna para um console virtual diferente. Consulte kbdcontrol1, vidcontrol1, atkbd4, syscons4, e vt4 para uma descrição mais técnica do console do FreeBSD e seus drivers de teclado. No FreeBSD, o número de consoles virtuais disponíveis é configurado nesta seção do /etc/ttys: # name getty type status comments # ttyv0 "/usr/libexec/getty Pc" xterm on secure # Virtual terminals ttyv1 "/usr/libexec/getty Pc" xterm on secure ttyv2 "/usr/libexec/getty Pc" xterm on secure ttyv3 "/usr/libexec/getty Pc" xterm on secure ttyv4 "/usr/libexec/getty Pc" xterm on secure ttyv5 "/usr/libexec/getty Pc" xterm on secure ttyv6 "/usr/libexec/getty Pc" xterm on secure ttyv7 "/usr/libexec/getty Pc" xterm on secure ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure Para desativar um console virtual, coloque um símbolo de comentário (#) no início da linha que representa esse console virtual. Por exemplo, para reduzir o número de consoles virtuais disponíveis de oito para quatro, coloque um # na frente das últimas quatro linhas que representam os consoles virtuais de ttyv5 até ttyv8. Não comente a linha do console do sistema ttyv0. Note que o último console virtual (ttyv8) é usado para acessar o ambiente gráfico se o Xorg tiver sido instalado e configurado conforme descrito em . Para uma descrição detalhada de cada coluna neste arquivo e as opções disponíveis para os consoles virtuais, consulte ttys5. Modo "Single User" O menu de inicialização do FreeBSD fornece uma opção chamada Boot Single User. Se esta opção for selecionada, o sistema inicializará em um modo especial conhecido como single user mode. Esse modo é normalmente usado para reparar um sistema que não inicializa ou para redefinir a senha de root quando ela é desconhecida. Quando em modo single user, a rede e outros consoles virtuais não estão disponíveis. No entanto, haverá acesso completo de root ao sistema e, por padrão, a senha de root não é necessária. Por estas razões, o acesso físico ao teclado é necessário para iniciar neste modo e determinar quem tem acesso físico ao teclado é algo a considerar ao proteger um sistema FreeBSD. As configurações que controlam o modo de single user são encontradas nesta seção do /etc/ttys: # name getty type status comments # # If console is marked "insecure", then init will ask for the root password # when going to single-user mode. console none unknown off secure Por padrão, o status é definido como secure. Isso pressupõe que quem tem acesso físico ao teclado não é importante ou é controlado por uma política de segurança física. Se essa configuração for alterada para insecure, a suposição é que o ambiente em si é inseguro porque qualquer pessoa pode acessar o teclado. Quando esta linha é alterada para insecure, o FreeBSD irá solicitar a senha do root quando um usuário selecionar inicializar no modo single user. Tenha cuidado ao alterar esta configuração para inseguro! Se a senha do root for esquecida, a inicialização no modo single user ainda é possível, mas pode ser difícil para alguém que não esteja familiarizado com o processo de inicialização do FreeBSD. Alterar os modos de vídeo do console O modo de vídeo padrão do console do FreeBSD pode ser ajustado para 1024x768, 1280x1024 ou qualquer outro tamanho suportado pelo chip gráfico e monitor. Para usar um modo de vídeo diferente, carregue o módulo VESA: # kldload vesa Para determinar quais modos de vídeo são suportados pelo hardware, use vidcontrol1. Para obter uma lista de modos de vídeo suportados, execute o seguinte: # vidcontrol -i mode A saída deste comando lista os modos de vídeo suportados pelo hardware. Para selecionar um novo modo de vídeo, especifique o modo usando vidcontrol1 como o usuário root : # vidcontrol MODE_279 Se o novo modo de vídeo for aceitável, ele pode ser definido permanentemente na inicialização, adicionando-o ao /etc/rc.conf: allscreens_flags="MODE_279" Usuários e Gerenciamento Básico de Contas O FreeBSD permite que múltiplos usuários usem o computador ao mesmo tempo. Enquanto apenas um usuário pode se sentar em frente à tela e usar o teclado a qualquer momento, qualquer número de usuários pode efetuar o login no sistema através da rede. Para usar o sistema, cada usuário deve ter sua própria conta de usuário. Este capítulo descreve: Os diferentes tipos de contas de usuários em um sistema FreeBSD. Como adicionar, remover e modificar contas de usuários. Como definir limites para controlar os recursos que usuários e grupos podem acessar. Como criar grupos e adicionar usuários como membros de um grupo. Tipos de conta Como todo acesso ao sistema FreeBSD é obtido usando contas e todos os processos são executados por usuários, o gerenciamento de usuários e contas é importante. Existem três tipos principais de contas: contas do sistema, contas de usuário e a conta de superusuário. Contas do sistema accounts system As contas do sistema são usadas para executar serviços como DNS, correio e servidores web. A razão para isso é a segurança; se todos os serviços fossem executados como superusuário, eles poderiam agir sem restrições. accounts daemon accounts operator Exemplos de contas do sistema são daemon, operador, bind, news, e www. É necessário ter cuidado ao usar o grupo operator, pois privilégios de acesso como o de superusuário podem ser concedidos, incluindo e não limitado a, desligamento, reinicialização e acesso a todos os itens em /dev para o grupo. accounts nobody A nobody é uma conta genérica sem privilégios do sistema. No entanto, quanto mais serviços usarem nobody, a mais arquivos e processos esse usuário será associado e, portanto, mais privilegiado esse usuário se tornará. Contas de usuário accounts user As contas de usuários são atribuídas a pessoas reais e são usadas para efetuar login e usar o sistema. Todas as pessoas que acessam o sistema devem ter uma conta de usuário exclusiva. Isso permite que o administrador descubra quem está fazendo o que e impede que usuários alterem as configurações de outros usuários. Cada usuário pode configurar seu próprio ambiente para adequar o sistema ao seu uso, utilizando suas opções padrão para o shell, editor, atalhos de teclado e idioma. Cada conta de usuário em um sistema FreeBSD tem certas informações associadas: Nome de usuário O nome do usuário é digitado no prompt login:. Cada usuário deve ter um nome de usuário exclusivo. Existem diversas regras para criar nomes de usuário válidos que estão documentadas em passwd5. Recomenda-se usar nomes de usuário que tenham oito ou menos caracteres, todos os caracteres devem ser minúsculos para manter a compatibilidade com aplicativos legados. Senha Cada conta tem uma senha associada. ID do usuário (UID) O ID do Usuário (UID) é um número usado para identificar unicamente o usuário no sistema FreeBSD. Comandos que permitem que um nome de usuário seja especificado o converterão para o UID. Recomenda-se usar um UID menor que 65535, já que valores mais altos podem causar problemas de compatibilidade com alguns softwares. ID do grupo (GID) O ID do grupo (GID) é um número usado para identificar unicamente o grupo principal ao qual o usuário pertence. Os grupos são um mecanismo para controlar o acesso a recursos com base no GID de um usuário, em vez de no seu UID. Isso pode reduzir significativamente o tamanho de alguns arquivos de configuração e permite que os usuários sejam membros de mais de um grupo. Recomenda-se usar um GID de 65535 ou inferior, pois GIDs mais altos podem não funcionar com alguns softwares. Classe de login As classes de login são uma extensão do mecanismo de grupo que fornece flexibilidade adicional ao configurar o sistema para diferentes usuários. As classes de login são discutidas em . Tempo para mudança de senha Por padrão as senhas não expiram. No entanto, a expiração de senha pode ser ativada por usuário, forçando alguns ou todos os usuários a alterar suas senhas após um determinado período de tempo. Tempo de expiração da conta Por padrão o FreeBSD não expira contas. Ao criar contas que precisam de uma vida útil limitada, como contas de alunos em uma escola, especifique a data de expiração da conta usando o pw8. Após o tempo de expiração, a conta não poderá ser usada para efetuar login no sistema, embora os diretórios e arquivos da conta permaneçam no servidor. Nome completo do usuário O nome de usuário identifica a conta de forma única para o FreeBSD, mas não reflete necessariamente o nome real do usuário. Semelhante a um comentário, essas informações podem conter espaços, caracteres maiúsculos e ter mais de oito caracteres. Diretório Inicial (home) O diretório "home" é um caminho completo para um diretório no sistema. Este é o diretório inicial do usuário quando o usuário faz o login. Uma convenção comum é colocar todos os diretórios home dos usuários em /home/username ou /usr/home/username. Cada usuário armazena seus arquivos e subdiretórios pessoais em seu próprio diretório home. Shell do usuário O shell fornece o ambiente padrão do usuário para interagir com o sistema. Existem muitos tipos diferentes de shells e usuários experientes terão suas próprias preferências, que podem ser refletidas nas suas configurações da conta. A conta de superusuário accounts superuser (root) A conta de superusuário, geralmente chamada de root, é usada para gerenciar o sistema sem limitações de privilégios. Por este motivo, não deve ser usado para tarefas do dia-a-dia, como enviar e receber e-mail, exploração geral do sistema ou programação. O superusuário, ao contrário de outras contas de usuário, pode operar sem limites, e o uso indevido da conta de superusuário pode resultar em desastres espetaculares. As contas de usuário não podem destruir o sistema operacional por engano, por isso é recomendável fazer o login como uma conta de usuário e se tornar o superusuário somente quando um comando exigir privilégios extras. Sempre cheque duas ou três vezes todos os comandos emitidos como superusuário, pois um espaço extra ou um caractere ausente pode causar uma perda de dados irreparável. Existem várias maneiras de obter privilégios de superusuário. Embora seja possível efetuar login como root, isso é altamente desencorajado. Em vez disso, use su1 para se tornar o superusuário. Se - for especificado ao executar este comando, o usuário também herdará o ambiente do usuário root. O usuário que executa este comando deve estar no grupo wheel ou o comando falhará. O usuário também deve saber a senha da conta de usuário root. Neste exemplo, o usuário só se torna superusuário para executar make install, pois isso requer privilégios de superusuário. Quando o comando é concluído, o usuário digita exit para deixar a conta de superusuário e retornar à sua conta de usuário. Instalar um programa como superusuário % configure % make % su - Password: # make install # exit % O framework integrado su1 funciona bem para sistemas isolados ou redes pequenas com apenas um administrador. Uma alternativa é instalar o pacote ou port security/sudo. Este software fornece registro de atividades e permite ao administrador configurar quais usuários podem executar quais comandos como superusuário. Gerenciando Contas accounts modifying O FreeBSD fornece uma variedade de diferentes comandos para gerenciar contas de usuários. Os comandos mais comuns são descritos em , seguidos por alguns exemplos de seu uso. Veja a página de manual para cada utilitário para maiores detalhes e exemplos de uso. Utilitários para gerenciar contas de usuários Comando Resumo adduser8 Aplicativo de linha de comando recomendado para adicionar novos usuários. rmuser8 Aplicativo de linha de comando recomendado para remover usuários. chpass1 Uma ferramenta flexível para alterar as informações do usuário. passwd1 Ferramenta de linha de comando para alterar senhas de usuários. pw8 Uma ferramenta poderosa e flexível para modificar todos os aspectos das contas de usuário.
<command>adduser</command> accounts adding adduser /usr/share/skel skeleton directory O programa recomendado para adicionar novos usuários é o adduser8. Quando um novo usuário é adicionado, este programa atualiza automaticamente o /etc/passwd e o /etc/group. Ele também cria um diretório inicial para o novo usuário, copia os arquivos de configuração padrão de /usr/share/skel e pode, opcionalmente, enviar uma nova mensagem de boas-vindas ao novo usuário. Este utilitário deve ser executado como o superusuário. O utilitário adduser8 é interativo e percorre as etapas para criar uma nova conta de usuário. Como visto em , insira as informações necessárias ou pressione Enter para aceitar o valor padrão mostrado entre colchetes. Neste exemplo, o usuário foi convidado para o grupo wheel, permitindo que ele se tornasse o superusuário com o uso do su1. Quando terminar, o utilitário perguntará se deseja criar outro usuário ou finalizar o comando. Adicionando um usuário no FreeBSD # adduser Username: jru Full name: J. Random User Uid (Leave empty for default): Login group [jru]: Login group is jru. Invite jru into other groups? []: wheel Login class [default]: Shell (sh csh tcsh zsh nologin) [sh]: zsh Home directory [/home/jru]: Home directory permissions (Leave empty for default): Use password-based authentication? [yes]: Use an empty password? (yes/no) [no]: Use a random password? (yes/no) [no]: Enter password: Enter password again: Lock out the account after creation? [no]: Username : jru Password : **** Full Name : J. Random User Uid : 1001 Class : Groups : jru wheel Home : /home/jru Shell : /usr/local/bin/zsh Locked : no OK? (yes/no): yes adduser: INFO: Successfully added (jru) to the user database. Add another user? (yes/no): no Goodbye! # Como a senha não é mostrada quando digitada, tenha cuidado para não digitar a senha incorretamente ao criar a conta do usuário. <command>rmuser</command> rmuser accounts removing Para remover completamente um usuário do sistema, execute o rmuser8 como o superusuário. Este comando executa as seguintes etapas: Remove a entrada crontab1 do usuário, se existir. Remove todas as tarefas at1 pertencentes ao usuário. Elimina todos os processos pertencentes ao usuário. Remove o usuário do arquivo de senhas do sistema. Opcionalmente, remove o diretório pessoal do usuário, se ele for de propriedade do usuário. Remove os arquivos de mensagens recebidas pertencentes ao usuário de /var/mail. Remove todos os arquivos pertencentes ao usuário das áreas de armazenamento de arquivos temporários, como /tmp. Finalmente, remove o nome de usuário de todos os grupos aos quais ele pertence em /etc/group. Se um grupo ficar vazio e o nome do grupo for o mesmo que o nome de usuário, o grupo será removido. Isso complementa os grupos exclusivos por usuário criados por adduser8. O rmuser8 não pode ser usado para remover contas de superusuário, pois isso quase sempre ocasiona uma de destruição em massa. Por padrão, um modo interativo é usado, conforme mostrado no exemplo a seguir. Remoção de contas interativas com o <command>rmuser</command> # rmuser jru Matching password entry: jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/zsh Is this the entry you wish to remove? y Remove user's home directory (/home/jru)? y Removing user (jru): mailspool home passwd. # <command>chpass</command> chpass Qualquer usuário pode usar o chpass1 para alterar seu shell padrão e informações pessoais associadas à sua conta de usuário. O superusuário pode usar esse utilitário para alterar informações adicionais da conta de qualquer usuário. Quando não há opções, além de um nome de usuário opcional, o chpass1 exibe um editor contendo informações do usuário. Quando o usuário sai do editor, o banco de dados do usuário é atualizado com as novas informações. Este utilitário solicitará a senha do usuário ao sair do editor, a menos que o utilitário seja executado como superusuário. Em , o superusuário digitou chpass jru e agora está visualizando os campos que podem ser alterados para este usuário. Se jru executar este comando, apenas os últimos seis campos serão exibidos e estarão disponíveis para edição. Isso é mostrado em . Usando o <command>chpass</command> como superusuário #Changing user database information for jru. Login: jru Password: * Uid [#]: 1001 Gid [# or name]: 1001 Change [month day year]: Expire [month day year]: Class: Home directory: /home/jru Shell: /usr/local/bin/zsh Full Name: J. Random User Office Location: Office Phone: Home Phone: Other information: Usando o <command>chpass</command> como usuário regular #Changing user database information for jru. Shell: /usr/local/bin/zsh Full Name: J. Random User Office Location: Office Phone: Home Phone: Other information: Os comandos chfn1 e chsh1 são links para chpass1, como são ypchpass1, ypchfn1eypchsh1. Já que o suporte ao NIS é automático, colocar o yp antes do comando não é necessário. Os procedimentos para configurar o NIS está documentado em . <command>passwd</command> passwd accounts changing password Qualquer usuário pode alterar facilmente sua senha usando o passwd1. Para prevenir alterações acidentais ou não autorizadas, este comando irá solicitar a senha atual ao usuário antes de configurar uma nova senha: Alterando Sua Senha % passwd Changing local password for jru. Old password: New password: Retype new password: passwd: updating the database... passwd: done O superusuário pode alterar a senha de qualquer usuário especificando o nome de usuário ao executar o passwd1. Quando este utilitário é executado como superusuário, ele não solicita a senha atual do usuário. Isso permite que a senha seja alterada quando um usuário não consegue lembrar a senha original. Mudando a senha de outro usuário como superusuário # passwd jru Changing local password for jru. New password: Retype new password: passwd: updating the database... passwd: done Como com o chpass1, o yppasswd1 é um link para passwd1, então o NIS funciona com ambos os comandos. <command>pw</command> pw O utilitário pw8 pode criar, remover, modificar e exibir usuários e grupos. Funciona como um front-end para o usuário do sistema e para os arquivos de grupo. O pw8 tem um conjunto muito poderoso de opções de linha de comando que o torna adequado para uso em shell scripts, mas novos usuários podem achar isso mais complicado que os outros comandos apresentados nesta seção.
Gerenciando Grupos groups /etc/groups accounts groups Um grupo é uma lista de usuários. Um grupo é identificado pelo nome do grupo e pelo GID. No FreeBSD, o kernel usa o UID de um processo, e a lista de grupos a que pertence, para determinar o que o processo pode fazer. Na maioria das vezes, o GID de um usuário ou processo geralmente significa o primeiro grupo na lista. O mapeamento do nome do grupo para o GID está listado em /etc/group. Este é um arquivo de texto simples com quatro campos delimitados por dois pontos. O primeiro campo é o nome do grupo, o segundo é a senha criptografada, o terceiro é o GID e o quarto é a lista de membros delimitados por vírgulas. Para uma descrição mais completa da sintaxe, consulte group5. O superusuário pode modificar o /etc/group usando um editor de texto. Alternativamente, o pw8 pode ser usado para adicionar e editar grupos. Por exemplo, para adicionar um grupo chamado teamtwo e confirmar se ele existe: Adicionando um grupo usando o <citerefentry><refentrytitle>pw</refentrytitle><manvolnum>8</manvolnum></citerefentry> # pw groupadd teamtwo # pw groupshow teamtwo teamtwo:*:1100: Neste exemplo, 1100 é o GID de teamtwo. No momento, teamtwo não possui membros. Este comando adicionará jru como um membro de teamtwo. Adicionando contas de usuários a um novo grupo usando o <citerefentry><refentrytitle>pw</refentrytitle><manvolnum>8</manvolnum></citerefentry> # pw groupmod teamtwo -M jru # pw groupshow teamtwo teamtwo:*:1100:jru O argumento para a opção é uma lista de usuários, delimitada por vírgulas, a serem adicionados a um novo grupo (vazio) ou para substituir os membros de um grupo existente. Para o usuário, essa associação ao grupo é diferente (e adicional ao) do grupo principal do usuário listado no arquivo de senha. Isso significa que o usuário não aparecerá como membro ao usar a opção com o pw8, mas mostrará quando a informação é consultada via id1 ou uma ferramenta similar. Quando o pw8 é usado para adicionar um usuário a um grupo, ele apenas manipula o /etc/group e não tenta ler dados adicionais do /etc/passwd. Adicionando um novo membro a um grupo usando o <citerefentry><refentrytitle>pw</refentrytitle><manvolnum>8</manvolnum></citerefentry> # pw groupmod teamtwo -m db # pw groupshow teamtwo teamtwo:*:1100:jru,db Neste exemplo, o argumento para é uma lista delimitada por vírgulas de usuários que devem ser adicionados ao grupo. Ao contrário do exemplo anterior, esses usuários são adicionados ao grupo e não substituem usuários existentes no grupo. Usando o <citerefentry><refentrytitle>id</refentrytitle><manvolnum>1</manvolnum></citerefentry> para determinar a associação ao grupo % id jru uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo) Neste exemplo, jru é um membro dos grupos jru e teamtwo. Para obter mais informações sobre este comando e o formato do /etc/group, consulte pw8 e group5.
Permissões UNIX No FreeBSD, todo arquivo e diretório tem um conjunto associado de permissões e vários utilitários estão disponíveis para visualizar e modificar essas permissões. É necessário entender como as permissões funcionam para garantir que os usuários consigam acessar os arquivos que precisam e não consigam acessar os arquivos usados pelo sistema operacional ou de propriedade de outros usuários. Esta seção discute as permissões UNIX tradicionais usadas no FreeBSD. Para um controle de acesso ao sistema de arquivos mais refinado, consulte . No UNIX, as permissões básicas são atribuídas usando três tipos de acesso: ler, escrever e executar. Esses tipos de acesso são usados para determinar o acesso do arquivo ao proprietário, ao grupo e a outros usuários do arquivo (todos os outros). As permissões de leitura, gravação e execução podem ser representadas como as letras r, w e x. Elas também podem ser representados como números binários, pois cada permissão está ativada ou desativada (0). Quando representada como um número, a ordem é sempre lida como rwx, onde r é ativado com o valor 4, w é ativado com o valor 2 e x é ativado com o valor 1. A Tabela 4.1 resume as possíveis possibilidades numéricas e alfabéticas. Ao ler a coluna Listagem do Diretório, um - é usado para representar uma permissão que está desativada. permissions file permissions Permissões <trademark class="registered">UNIX</trademark> Valor Permissão Listagem de diretório 0 Sem leitura, sem escrita, sem execução --- 1 Sem leitura, sem escrita, execução --x 2 Sem leitura, escrita, sem execução -w- 3 Sem leitura, escrita, execução -wx 4 Leitura, sem escrita, sem execução r-- 5 Leitura, sem escrita, execução r-x 6 Leitura, escrita, sem execução rw- 7 Leitura, escrita, execução rwx
ls1 directories Use o argumento com o ls1 para exibir uma lista longa de diretórios que inclua uma coluna de informações sobre um permissões do arquivo para o proprietário, grupo e outros. Por exemplo, um ls -l em um diretório arbitrário pode mostrar: % ls -l total 530 -rw-r--r-- 1 root wheel 512 Sep 5 12:31 myfile -rw-r--r-- 1 root wheel 512 Sep 5 12:31 otherfile -rw-r--r-- 1 root wheel 7680 Sep 5 12:31 email.txt O primeiro caractere (mais à esquerda) da primeira coluna indica se esse arquivo é um arquivo normal, um diretório, um dispositivo de caractere especial, um soquete ou qualquer outro dispositivo especial de pseudo-arquivo. Neste exemplo, o - indica um arquivo regular. Os próximos três caracteres, rw- neste exemplo, fornecem as permissões para o proprietário do arquivo. Os próximos três caracteres, r--, fornecem as permissões para o grupo ao qual o arquivo pertence. Os três últimos caracteres, r--, dão as permissões para o resto do mundo. Um traço significa que a permissão está desativada. Neste exemplo, as permissões são definidas para que o proprietário possa ler e gravar no arquivo, o grupo possa ler o arquivo e o resto do mundo só possa ler o arquivo. De acordo com a tabela acima, as permissões para este arquivo seriam 644, onde cada dígito representa uma das três partes da permissão do arquivo. Como o sistema controla as permissões nos dispositivos? O FreeBSD trata a maioria dos dispositivos de hardware como um arquivo nos quais os programas podem abrir, ler e gravar dados. Esses arquivos de dispositivos especiais são armazenados em /dev/. Diretórios também são tratados como arquivos. Eles tem permissões de leitura, gravação e execução. O bit executável de um diretório tem um significado ligeiramente diferente que nos arquivos. Quando um diretório é marcado como executável, isso significa que é possível mudar para esse diretório usando cd1. Isso também significa que é possível acessar os arquivos dentro desse diretório, sujeito às permissões dos próprios arquivos. Para executar uma listagem de diretórios, a permissão de leitura deve estar ativada no diretório. Para deletar um arquivo que se conhece o nome, é necessário ter permissões de escrita e execução no diretório que contém o arquivo. Há mais bits de permissão, mas eles são usados principalmente em circunstâncias especiais, como binários setuid e diretórios fixos. Para obter mais informações sobre permissões de arquivos e como configurá-las, consulte chmod1. Permissões simbólicas Tom Rhodes Contribuído por permissions symbolic Permissões simbólicas usam caracteres em vez de valores octais para atribuir permissões a arquivos ou diretórios. Permissões simbólicas usam a sintaxe de (quem) (ação) (permissões), onde os seguintes valores estão disponíveis: Opção Letra Representa (quem) u Usuário (quem) g Grupo (quem) o Outros (quem) a Todos (resto do mundo) (açao) + Adiciona permissões (açao) - Remove permissões (açao) = Permissões definidas explicitamente (permissões) r Leitura (permissões) w Escrita (permissões) x Execução (permissões) t bit fixador (permissões) s Set UID ou GID Esses valores são usados com o chmod1, mas com letras em vez de números. Por exemplo, o comando a seguir impediria que outros usuários acessassem FILE: % chmod go= FILE Uma lista separada por vírgula pode ser fornecida quando mais de um conjunto de alterações em um arquivo precisar ser feito. Por exemplo, o comando a seguir remove as permissões de gravação do grupo e resto do mundo no FILE e adiciona as permissões de execução para todos: % chmod go-w,a+x FILE Flags de arquivos no FreeBSD Tom Rhodes Contribuído por Além das permissões de arquivo, o FreeBSD suporta o uso de flags de arquivo. Esses sinalizadores adicionam um nível a mais de segurança e controle sobre os arquivos, mas não nos diretórios. Com flags de arquivos, mesmo o root pode ser impedido de remover ou alterar arquivos. Os sinalizadores de arquivo são modificados usando o chflags1. Por exemplo, para ativar o sinalizador undeletable do sistema no arquivo file1, use o seguinte comando: # chflags sunlink file1 Para desabilitar o sinalizador undeletable do sistema, coloque um no na frente do : # chflags nosunlink file1 Para visualizar os sinalizadores de um arquivo, use com o ls1: # ls -lo file1 -rw-r--r-- 1 trhodes trhodes sunlnk 0 Mar 1 05:54 file1 Vários flags de arquivo só podem ser adicionados ou removidos pelo usuário root. Em outros casos, o proprietário do arquivo pode definir seus sinalizadores. Consulte chflags1 e chflags2 para maiores informações. As permissões <literal>setuid</literal>, <literal>setgid</literal> e <literal>sticky</literal> Tom Rhodes Contribuído por Além das permissões já discutidas, existem três outras configurações específicas que todos os administradores devem conhecer. Eles são as permissões setuid, setgid e sticky. Essas configurações são importantes para algumas operações UNIX, pois fornecem funcionalidades normalmente não concedidas a usuários normais. Para compreendê-los, a diferença entre o ID real de usuário e o ID efetivo de usuário deve ser explicada. O ID de usuário real é o UID que inicia ou é o dono do processo. O ID de usuário efetivo é o UID do usuário com o qual o processo é executado. Por exemplo, o passwd1 é executado com o ID do usuário real quando um usuário altera sua senha. No entanto, para atualizar o banco de dados de senhas, o comando é executado como o ID efetivo do usuário root. Isso permite que os usuários alterem suas senhas sem ver um erro Permission Denied. A permissão setuid pode ser definida prefixando um conjunto de permissões com o número quatro (4), conforme mostrado no exemplo a seguir: # chmod 4755 suidexample.sh As permissões em suidexample.sh agora se parecem com o seguinte: -rwsr-xr-x 1 trhodes trhodes 63 Aug 29 06:36 suidexample.sh Observe que um s agora faz parte do conjunto de permissões designado para o proprietário do arquivo, substituindo o bit executável. Isso viabiliza utilitários que precisam de permissões elevadas, como o passwd1. A opção nosuid mount8 fará com que esses binários falhem silenciosamente sem alertar o usuário. Essa opção não é totalmente confiável, já que um wrapper nosuid pode contorná-la. Para ver isso em tempo real, abra dois terminais. Em um deles, digite passwd como um usuário normal. Enquanto aguarda uma nova senha, verifique a tabela de processos e observe as informações de usuário do passwd1: No terminal A: Changing local password for trhodes Old Password: No terminal B: # ps aux | grep passwd trhodes 5232 0.0 0.2 3420 1608 0 R+ 2:10AM 0:00.00 grep passwd root 5211 0.0 0.2 3620 1724 2 I+ 2:09AM 0:00.01 passwd Embora passwd1 seja executado como um usuário normal, ele está usando o UID do root. A permissão setgid executa a mesma função que a permissão setuid; exceto que altera as configurações do grupo. Quando um aplicativo ou utilitário é executado com essa configuração, ele recebe as permissões com base no grupo do arquivo, não no usuário que iniciou o processo. Para definir a permissão setgid em um arquivo, execute o chmod1 com dois (2) no início: # chmod 2755 sgidexample.sh Na listagem a seguir, observe que o s está agora no campo designado para as configurações de permissão do grupo: -rwxr-sr-x 1 trhodes trhodes 44 Aug 31 01:49 sgidexample.sh Nestes exemplos, mesmo que o shell script em questão seja um arquivo executável, ele não será executado com um EUID diferente ou um ID de usuário efetivo. Isso ocorre porque os shell scripts podem não acessar as chamadas de sistema setuid2. Os bits de permissão setuid e setgid podem diminuir a segurança do sistema, permitindo permissões elevadas. A terceira permissão especial, o sticky bit, pode fortalecer a segurança de um sistema. Quando o sticky bit é definido em um diretório, ele permite a exclusão de arquivos apenas pelo proprietário do arquivo. Isso é útil para impedir a exclusão de arquivos em diretórios públicos, como /tmp, por usuários que não possuem o arquivo. Para utilizar essa permissão, use o um (1) no início das permissões: # chmod 1777 /tmp A permissão sticky bit será exibida como um t no final do conjunto de permissões: # ls -al / | grep tmp drwxrwxrwt 10 root wheel 512 Aug 31 01:49 tmp
Estrutura de Diretórios directory hierarchy Entender a hierarquia de diretórios do FreeBSD é fundamental para obter uma compreensão geral do sistema. O diretório mais importante é o root ou raiz ou /. Esse diretório é o primeiro montado no momento da inicialização e contém a base do sistema necessária para preparar o sistema operacional para a operação multi-usuário. O diretório raiz também contém pontos de montagem para outros sistemas de arquivos que são montados durante a transição para a operação multi-usuário. Um ponto de montagem é um diretório no qual sistemas de arquivos adicionais podem ser disponibilizados em um sistema de arquivos principal (geralmente o sistema de arquivos raiz). Isso é descrito em . Os pontos de montagem padrão incluem /usr/, /var/, /tmp/, /mnt/ e /cdrom/. Esses diretórios são geralmente associados a entradas em /etc/fstab. Este arquivo é uma tabela de vários sistemas de arquivos e pontos de montagem e é lido pelo sistema. A maioria dos sistemas de arquivos em /etc/fstab é montada automaticamente no momento da inicialização do script rc8 a não ser que haja a opção . Maiores detalhes em . Uma descrição completa da hierarquia do sistema de arquivos está disponível em hier7. A tabela a seguir fornece uma visão geral dos diretórios mais comuns. Diretório Descrição / Diretório raiz do sistema de arquivos. /bin/ Utilitários de usuário fundamentais para ambientes mono e multi-usuário. /boot/ Programas e arquivos de configuração usados durante o bootstrap do sistema operacional. /boot/defaults/ Arquivos de configuração de inicialização padrão. Consulte loader.conf5 para maiores detalhes. /dev/ Nós de dispositivo (device nodes). Consulte intro4 para detalhes. /etc/ Arquivos de configuração do sistema e scripts. /etc/defaults/ Arquivos padrão de configuração do sistema. Consulte rc8 para maiores detalhes. /etc/mail/ Arquivos de configuração para agentes de transporte de mensagens, como o sendmail8. /etc/periodic/ Scripts que são executados diariamente, semanalmente e mensalmente, por meio do cron8. Consulte periodic8 para maiores detalhes. /etc/ppp/ Arquivos de configuração do ppp8. /mnt/ Diretório vazio comumente usado pelos administradores do sistema como um ponto de montagem temporário. /proc/ Sistema de arquivos de processos. Consulte procfs5, mount_procfs8 para detalhes. /rescue/ Programas vinculados estaticamente para recuperação de emergência, conforme descrito em rescue8. /root/ Diretório da conta root. /sbin/ Programas do sistema e utilitários de administração fundamentais para ambientes mono e multi-usuário. /tmp/ Arquivos temporários que normalmente não são preservados em uma reinicialização do sistema. Um sistema de arquivos baseado em memória é frequentemente montado em /tmp. Isso pode ser automatizado usando as variáveis relacionadas ao tmpmfs do rc.conf5 ou com uma entrada em /etc/fstab; consulte mdmfs8 para maiores detalhes. /usr/ A maioria dos utilitários e aplicativos do usuário. /usr/bin/ Utilitários comuns, ferramentas de programação e aplicativos. /usr/include/ Arquivos para "include" do C padrão. /usr/lib/ Arquivos de biblioteca. /usr/libdata/ Diversos arquivos de dados de utilitários. /usr/libexec/ Daemons do sistema e utilitários do sistema executados por outros programas. /usr/local/ Executáveis e bibliotecas locais. Também é usado como o destino padrão para o framework do ports do FreeBSD. Dentro do /usr/local, o layout geral esboçado por hier7 para /usr deve ser usado. Exceções são o diretório man, que está diretamente sob /usr/local em vez de sob /usr/local/share, e a documentação do ports está em share/doc/port. /usr/obj/ Árvore de destino específica da arquitetura produzida pela construção da árvore /usr/src. /usr/ports/ A Coleção de Ports do FreeBSD (opcional). /usr/sbin/ Daemons do sistema e utilitários do sistema executados pelos usuários. /usr/share/ Arquivos independentes de arquitetura. /usr/src/ Arquivos do código-fonte do BSD. /var/ Arquivos de log de múltiplos propósitos, temporários, transientes e de spool. Um sistema de arquivos baseado em memória às vezes é montado em /var. Isso pode ser automatizado usando as variáveis relacionadas ao varmfs em rc.conf5 ou com uma entrada em /etc/fstab; consulte mdmfs8 para maiores detalhes. /var/log/ Diversos arquivos de log do sistema. /var/mail/ Arquivos de caixa de correio do usuário. /var/spool/ Diretórios de spooling de impressoras e sistemas de email. /var/tmp/ Arquivos temporários que geralmente são preservados em uma reinicialização do sistema, a menos que /var seja um sistema de arquivos baseado em memória. /var/yp/ Mapas de NIS. Organização dos Discos A menor unidade de organização que o FreeBSD usa para encontrar arquivos é o nome do arquivo. Os nomes dos arquivos diferenciam maiúsculas de minúsculas, o que significa que readme.txt e README.TXT são dois arquivos distintos. O FreeBSD não usa a extensão de um arquivo para determinar se é um programa, documento ou alguma outra forma de dados. Os arquivos são armazenados em diretórios. Um diretório pode não conter arquivos ou pode conter centenas deles. Um diretório também pode conter outros diretórios, permitindo uma hierarquia de diretórios entre si para organizar os dados. Arquivos e diretórios são referenciados por meio de um nome, seguido por uma barra, /, seguido por qualquer outro nome de diretório que seja necessário. Por exemplo, se o diretório foo contiver um diretório bar que contenha o arquivo readme.txt, o nome completo ou caminho, para o arquivo é foo/bar/readme.txt. Observe que isso é diferente do Windows que usa \ para separar nomes de arquivos e diretórios. O FreeBSD não usa letras de unidades ou outros nomes de unidades no caminho. Por exemplo, não se deve digitar c:\foo\bar\readme.txt no FreeBSD. Diretórios e arquivos são armazenados em um sistema de arquivos. Cada sistema de arquivos contém exatamente um diretório no nível superior, chamado de diretório raiz para esse sistema de arquivos. Este diretório raiz pode conter outros diretórios. Um sistema de arquivos é designado como sistema de arquivos raiz ou /. Todos os outros sistemas de arquivos são montados no sistema de arquivos raiz. Não importa quantos discos estejam no sistema FreeBSD, cada diretório parece fazer parte do mesmo disco. Considere três sistemas de arquivos, chamados A, B e C. Cada sistema de arquivos tem um diretório raiz, que contém dois outros diretórios, chamados A1, A2 (e da mesma forma B1, B2 e C1, C2). Chame A de sistema de arquivos raiz. Se ls1 for usado para visualizar o conteúdo deste diretório, ele mostrará dois subdiretórios, A1 e A2. A árvore de diretórios tem esta aparência: / | +--- A1 | `--- A2 Um sistema de arquivos deve ser montado em um diretório em outro sistema de arquivos. Ao montar o sistema de arquivos B no diretório A1, o diretório raiz de B substitui A1 e os diretórios em B aparecem de acordo: / | +--- A1 | | | +--- B1 | | | `--- B2 | `--- A2 Todos os arquivos que estão nos diretórios B1 ou B2 podem ser alcançados com o caminho /A1/B1 ou /A1/B2, conforme necessário. Todos os arquivos que estavam em /A1 foram temporariamente ocultados. Eles reaparecerão se B for desmontado de A. Se B tivesse sido montado em A2, o diagrama ficaria assim: / | +--- A1 | `--- A2 | +--- B1 | `--- B2 e os caminhos seriam /A2/B1 e /A2/B2 respectivamente. Os sistemas de arquivos podem ser montados uns em cima dos outros. Continuando o último exemplo, o sistema de arquivos C pode ser montado no topo do diretório B1 no sistema de arquivos B, levando a esta disposição: / | +--- A1 | `--- A2 | +--- B1 | | | +--- C1 | | | `--- C2 | `--- B2 Ou C poderia ser montado diretamente no sistema de arquivos A, sob o diretório A1: / | +--- A1 | | | +--- C1 | | | `--- C2 | `--- A2 | +--- B1 | `--- B2 É perfeitamente possível ter um sistema de arquivos raiz grande e não precisar criar nenhum outro. Existem algumas desvantagens nessa abordagem e uma vantagem. Benefícios de vários sistemas de arquivos Sistemas de arquivos diferentes podem ter diferentes opções de montagem. Por exemplo, o sistema de arquivos raiz pode ser montado somente para leitura, impossibilitando que os usuários excluam ou editem inadvertidamente um arquivo crítico. Separar sistemas de arquivos graváveis pelo usuário, como /home, de outros sistemas de arquivos permite que eles sejam montados como nosuid. Essa opção impede que os bits suid/guid dos executáveis armazenados no sistema de arquivos entrem em vigor, possivelmente melhorando a segurança. O FreeBSD otimiza automaticamente o layout dos arquivos em um sistema de arquivos, dependendo de como o sistema de arquivos está sendo usado. Portanto, um sistema de arquivos que contém muitos arquivos pequenos que são gravados com freqüência terá uma otimização diferente para um que contenha menos arquivos maiores. Ao ter um sistema de arquivos maior, essa otimização é quebrada. Os sistemas de arquivos do FreeBSD são robustos se a energia for perdida. No entanto, uma perda de energia em um ponto crítico ainda pode danificar a estrutura do sistema de arquivos. Ao dividir dados em vários sistemas de arquivos, é mais provável que o sistema ainda inicialize, facilitando a restauração do backup conforme necessário. Benefício de um sistema de arquivos único Os sistemas de arquivos são de tamanho fixo. Se você cria um sistema de arquivos quando instala o FreeBSD e dá a ele um tamanho específico, você pode descobrir mais tarde que precisa aumentar a partição. Isso não é facilmente realizado sem um backup, recriando o sistema de arquivos com o novo tamanho e, em seguida, restaurando os dados de backup. O FreeBSD possui o comando growfs8, que torna possível aumentar o tamanho do sistema de arquivos enquanto montado, removendo essa limitação. Os sistemas de arquivos estão contidos em partições. Isto não tem o mesmo significado que o uso comum do termo partição (por exemplo, a partição MS-DOS), por causa da herança UNIX do FreeBSD. Cada partição é identificada por uma letra de a até h. Cada partição pode conter apenas um sistema de arquivos, o que significa que os sistemas de arquivos geralmente são descritos por seu ponto de montagem típico na hierarquia do sistema de arquivos ou pela letra da partição em que estão contidos. O FreeBSD também usa espaço em disco para espaço de swap para fornecer memória virtual. Isso permite que o seu computador se comporte como se tivesse muito mais memória do que realmente tem. Quando o FreeBSD fica sem memória, ele move alguns dos dados que não estão sendo usados atualmente para o espaço de swap, e os move de volta (removendo alguma outra coisa) quando precisa. Algumas partições possuem certas convenções associadas a elas. Partição Convenção a Normalmente contém o sistema de arquivos raiz. b Normalmente contém espaço de swap. c Normalmente o mesmo tamanho da slice que a envolve. Isso permite que os programas que precisem trabalhar na slice inteira, como um scanner de bloco defeituoso, trabalhem na partição c. Um sistema de arquivos normalmente não seria criado nessa partição. d A partição d costumava ter um significado especial associado a ela, mas isso foi descontinuado e d pode funcionar como qualquer partição normal. Os discos no FreeBSD são divididos em slices, referidas no Windows como partições, numeradas de 1 a 4. Estas são então divididas em partições, que contêm sistemas de arquivos, e são rotuladas usando letras. slices partitions dangerously dedicated Os números das slices seguem o nome do dispositivo, prefixado com um s, começando em 1. Então da0s1 é a primeira slice na primeira unidade SCSI. Pode haver apenas quatro slices físicas em um disco, mas pode haver slices lógicas dentro de slices físicas do tipo apropriado. Essas slices estendidas são numeradas a partir de 5, então ada0s5 é a primeira slice estendida no primeiro disco SATA. Esses dispositivos são usados por sistemas de arquivos que esperam ocupar uma slice. Slices, unidades físicas perigosamente dedicadas e outras unidades contêm partições , que são representadas como letras de a até h. Esta letra é adicionada ao nome do dispositivo, então da0a é a partição a na primeira unidade da, que é perigosamente dedicada. A ada1s3e é a quinta partição na terceira slice da segunda unidade de disco SATA. Finalmente, cada disco no sistema é identificado. Um nome de disco começa com um código que indica o tipo de disco e, em seguida, um número, indicando qual é o disco. Ao contrário das slices, a numeração de discos começa em 0. Códigos usuais são listados em . Ao se referir a uma partição, inclua o nome do disco, s, o número da slice, em seguida, a letra da partição. Exemplos são mostrados em . mostra um modelo conceitual de um layout de disco. Ao instalar o FreeBSD, configure as slices de disco, crie partições dentro da slice a ser usada para o FreeBSD, crie um sistema de arquivos ou espaço de swap em cada partição e decida onde cada sistema de arquivos será montado. Nomes de dispositivos de disco Tipo de drive Nome do drive discos rígidos SATA e IDE ada ou ad Discos rígidos SCSI e dispositivos de armazenamento USB da drives de CD-ROM SATA e IDE cd ou acd Unidades SCSI CD-ROM cd Unidades de disquete fd Unidades de CD-ROM não-padrão variadas mcd para CD-ROM Mitsumi e scd para dispositivos de CD-ROM Sony Unidades de fita SCSI sa Unidades de fita IDE ast Drives RAID Exemplos incluem aacd para Adaptec AdvancedRAID, mlxd e mlyd para Mylex, amrd para AMI MegaRAID, idad para Compaq Smart RAID, twed para 3ware RAID.
Exemplo de Nomes de Disco, Slice e Partição Nome Significado ada0s1a A primeira partição (a) na primeira slice (s1) no primeiro disco SATA (ada0). da1s2e A quinta partição (e) na segunda slice (s2) no segundo disco SCSI (da1). Modelo conceitual de um disco Este diagrama mostra a visão do FreeBSD do primeiro disco SATA conectado ao sistema. Suponha que o disco tenha 250 GB de tamanho e contenha uma slice de 80 GB e uma slice de 170 GB (partições MS-DOS). A primeira slice contém um sistema de arquivos Windows NTFS, C:, e a segunda fatia contém uma instalação do FreeBSD. Este exemplo de instalação do FreeBSD possui quatro partições de dados e uma partição swap. Cada uma das quatro partições contém um sistema de arquivos. A partição a é usada para o sistema de arquivos raiz, d para /var/, e para /tmp/ e f para /usr/. A letra de partição c refere-se à fatia inteira e, portanto, não é usada para partições comuns.
Montando e Desmontando Sistemas de Arquivos O sistema de arquivos é melhor visualizado como uma árvore, enraizada, por assim dizer, em /. O /dev, /usr, e os outros diretórios no diretório raiz são ramos, que podem ter suas próprias ramificações, como /usr/local e assim por diante. root file system Existem várias razões para abrigar alguns desses diretórios em sistemas de arquivos separados. O /var contém os diretórios log/, spool/ e vários tipos de arquivos temporários e, como tal, podem encher. Encher completamente o sistema de arquivos raiz não é uma boa ideia, então separar o /var do / geralmente é vantajoso. Outro motivo comum para colocar determinadas árvores de diretório em outros sistemas de arquivos é se elas forem ser armazenadas em discos físicos separados ou se são discos virtuais separados, tal como montagens de NFS (Network File System), descritas em ou unidades de CD-ROM. O arquivo <filename>fstab</filename> file systems mounted with fstab Durante o processo de inicialização (), os sistemas de arquivos listados em /etc/fstab são automaticamente montados, exceto pelas entradas que contêm . Este arquivo contém entradas no seguinte formato: device /mount-point fstype options dumpfreq passno device Um nome de dispositivo existente, conforme explicado em . mount-point Um diretório existente no qual montar o sistema de arquivos. fstype O tipo de sistema de arquivos para passar para o mount8. O sistema de arquivos padrão do FreeBSD é o ufs. options para sistemas de arquivos de leitura/gravação, ou para sistemas de arquivos somente de leitura, seguidos por quaisquer outras opções que possam ser necessárias. Uma opção comum é para sistemas de arquivos normalmente não montados durante a seqüência de inicialização. Outras opções estão listadas em mount8. dumpfreq Usado pelo dump8 para determinar quais sistemas de arquivos requerem o dump. Se o campo estiver faltando, um valor zero será assumido. passno Determina a ordem em que os sistemas de arquivos devem ser verificados. Os sistemas de arquivos que devem ser ignorados devem ter seu passno definido como zero. O sistema de arquivos raiz precisa ser verificado antes de todo o restante e deve ter seu passno definido como um. Os outros sistemas de arquivos devem ser configurados para valores maiores que um. Se mais de um sistema de arquivos tiver o mesmo passno, o fsck8 tentará verificar os sistemas de arquivos em paralelo, se possível. Consulte fstab5 para obter maiores informações sobre o formato do /etc/fstab e suas opções. Usando o <citerefentry><refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum></citerefentry> file systems mounting Os sistemas de arquivos são montados usando o comando mount8. A sintaxe mais básica é a seguinte: # mount device mountpoint Este comando fornece muitas opções que são descritas em mount8. As opções mais usadas incluem: Opções de montagem Monte todos os sistemas de arquivos listados em /etc/fstab, exceto aqueles marcados como noauto, excluídos pela opção , ou aqueles que já estão montados. Faz tudo, exceto a chamada real do sistema de montagem. Esta opção é útil em conjunto com a opção para determinar o que o mount8 está realmente tentando fazer. Força a montagem de um sistema de arquivos sujo (perigoso) ou a revogação do acesso de gravação ao fazer o downgrade do status de montagem de um sistema de arquivos de leitura/gravação para somente leitura. Monta o sistema de arquivos somente para leitura. Isso é idêntico ao uso de . fstype Monta o tipo de sistema de arquivos especificado ou monta somente sistemas de arquivos do tipo especificado, se estiver incluído. ufs é o tipo de sistema de arquivos padrão. Atualiza as opções de montagem no sistema de arquivos. Fica verboso (mostra mais informações). Monta o sistema de arquivos para leitura/gravação. As seguintes opções podem ser passadas para como uma lista separada por vírgula: nosuid Não interprete flags setuid ou setgid no sistema de arquivos. Essa também é uma opção de segurança útil. Usando o <citerefentry><refentrytitle>umount</refentrytitle><manvolnum>8</manvolnum></citerefentry> file systems unmounting Para desmontar um sistema de arquivos use umount8. Esse comando usa um parâmetro que pode ser um ponto de montagem, um nome do dispositivo, ou . Todos os usos aceitam para forçar a desmontagem e para ver mais informações. Atenção, em geral não é uma boa opção, pois pode travar o computador ou danificar os dados no sistema de arquivos. Para desmontar todos os sistemas de arquivos montados, ou apenas os tipos de sistema de arquivos listados após , use ou . Note que não tenta desmontar o sistema de arquivos raiz. Processos e Daemons O FreeBSD é um sistema operacional multitarefa. Cada programa em execução a qualquer momento é chamado de processo. Todo comando em execução inicia pelo menos um novo processo e há vários processos de sistema que são executados pelo FreeBSD. Cada processo é identificado exclusivamente por um número chamado ID do processo (PID). Semelhante aos arquivos, cada processo tem um proprietário e um grupo, e as permissões de proprietário e grupo são usadas para determinar quais arquivos e dispositivos o processo pode abrir. A maioria dos processos também possui um processo pai que os iniciou. Por exemplo, o shell é um processo e qualquer comando iniciado no shell é um processo que tem o shell como seu processo pai. A exceção é um processo especial chamado init8 que é sempre o primeiro processo a rodar na inicialização e que sempre possui um PID de 1. Alguns programas não são projetados para serem executados com a entrada contínua do usuário e desconectam do terminal na primeira oportunidade. Por exemplo, um servidor da Web responde a solicitações da Web, em vez de entradas do usuário. Servidores de email são outro exemplo desse tipo de aplicativo. Esses tipos de programas são conhecidos como daemons. O termo daemon vem da mitologia grega e representa uma entidade que não é boa nem má, e que invisivelmente realiza tarefas úteis. É por isso que o mascote do BSD é o daemon de aparência alegre com tênis e um tridente. Existe uma convenção para nomear programas que normalmente são executados como daemons com um d à direita. Por exemplo, BIND é o Berkeley Internet Name Domain, mas o programa real que é executado é named. O programa do servidor da web Apache é o httpd e o daemon de spooling da impressora de linha é o lpd. Esta é apenas uma convenção de nomenclatura. Por exemplo, o daemon de correio principal para o aplicativo Sendmail é o sendmail e não maild. Visualizando Processos Para ver os processos em execução no sistema, use o ps1 ou o top1. Para exibir uma lista estática dos processos em execução no momento, seus PIDs, quanta memória eles estão usando e o comando com o qual eles foram iniciados, use o ps1. Para exibir todos os processos em execução e atualizar a exibição a cada poucos segundos para ver interativamente o que o computador está fazendo, use o top1. Por padrão, o ps1 mostra apenas os comandos que estão em execução e que são de propriedade do usuário. Por exemplo: % ps PID TT STAT TIME COMMAND 8203 0 Ss 0:00.59 /bin/csh 8895 0 R+ 0:00.00 ps A saída do ps1 é organizada em várias colunas. A coluna PID exibe o ID do processo. Os PIDs são atribuídos a partir de 1, vão até 99999, e depois retornam ao início. No entanto, um PID não é reatribuído se já estiver em uso. A coluna TT mostra o tty em que o programa está sendo executado e STAT mostra o estado do programa. TIME é a quantidade de tempo que o programa foi executado na CPU. Normalmente, esse não é o tempo decorrido desde que o programa foi iniciado, pois a maioria dos programas gasta muito tempo esperando que as coisas aconteçam antes que precisem gastar tempo na CPU. Finalmente, COMMAND é o comando que foi usado para iniciar o programa. Várias opções diferentes estão disponíveis para alterar as informações exibidas. Um dos conjuntos mais úteis é auxww, onde exibe informações sobre todos os processos em execução de todos os usuários, exibe o nome de usuário e o uso de memória do proprietário do processo, exibe informações sobre os processos do daemon e faz com que o ps1 exiba a linha de comando completa para cada processo, em vez de truncá-la para caber na tela quando é muito longa. A saída do top1 é semelhante a abaixo: % top last pid: 9609; load averages: 0.56, 0.45, 0.36 up 0+00:20:03 10:21:46 107 processes: 2 running, 104 sleeping, 1 zombie CPU: 6.2% user, 0.1% nice, 8.2% system, 0.4% interrupt, 85.1% idle Mem: 541M Active, 450M Inact, 1333M Wired, 4064K Cache, 1498M Free ARC: 992M Total, 377M MFU, 589M MRU, 250K Anon, 5280K Header, 21M Other Swap: 2048M Total, 2048M Free PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 557 root 1 -21 r31 136M 42296K select 0 2:20 9.96% Xorg 8198 dru 2 52 0 449M 82736K select 3 0:08 5.96% kdeinit4 8311 dru 27 30 0 1150M 187M uwait 1 1:37 0.98% firefox 431 root 1 20 0 14268K 1728K select 0 0:06 0.98% moused 9551 dru 1 21 0 16600K 2660K CPU3 3 0:01 0.98% top 2357 dru 4 37 0 718M 141M select 0 0:21 0.00% kdeinit4 8705 dru 4 35 0 480M 98M select 2 0:20 0.00% kdeinit4 8076 dru 6 20 0 552M 113M uwait 0 0:12 0.00% soffice.bin 2623 root 1 30 10 12088K 1636K select 3 0:09 0.00% powerd 2338 dru 1 20 0 440M 84532K select 1 0:06 0.00% kwin 1427 dru 5 22 0 605M 86412K select 1 0:05 0.00% kdeinit4 A saída é dividida em duas seções. O cabeçalho (as primeiras cinco ou seis linhas) mostra o PID do último processo executado, as médias de carga do sistema (que são uma medida de quão ocupado o sistema está), o tempo de atividade do sistema desde a última reinicialização) e a hora atual. As outras informações no cabeçalho se relacionam com quantos processos estão sendo executados, quanta memória e swap estão em uso e quanto tempo o sistema está gastando em diferentes estados da CPU. Se o módulo do sistema de arquivos ZFS foi carregado, uma linha ARC indica a quantidade de dados que foram lidos do cache de memória, e não do disco. Abaixo do cabeçalho há uma série de colunas contendo informações semelhantes à saída do ps1, como o PID, nome de usuário, quantidade de tempo de CPU e o comando que iniciou o processo. Por padrão, o top1 também exibe a quantidade de espaço de memória ocupada pelo processo. Isso é dividido em duas colunas: uma para o tamanho total e outra para o tamanho do residente. O tamanho total é a quantidade de memória que o aplicativo precisa e o tamanho de residente é o quanto ele está realmente usando agora. O top1 atualiza automaticamente a exibição a cada dois segundos. Um intervalo diferente pode ser especificado com . Matando Processos Uma maneira de se comunicar com qualquer processo ou daemon em execução é enviar um sinal usando o kill1. Existem vários sinais diferentes; alguns têm um significado específico, enquanto outros são descritos na documentação do comando. Um usuário só pode enviar um sinal para um processo que seja seu. Enviar um sinal para o processo de outra pessoa resultará em um erro de permissão negada. A exceção é o usuário root, que pode enviar sinais para os processos de qualquer pessoa. O sistema operacional também pode enviar um sinal para um processo. Se um aplicativo estiver mal escrito e tentar acessar a memória que não deveria, o FreeBSD enviará ao processo o sinal de Segmentation Violation (SIGSEGV). Se uma aplicação foi escrita para usar a chamada de sistema alarm3 para ser alertada após um período de tempo, será enviado o sinal Alarm (SIGALRM). Dois sinais podem ser usados para interromper um processo: SIGTERM e SIGKILL. SIGTERM é a maneira educada de eliminar um processo, pois o processo pode ler o sinal, fechar quaisquer arquivos de log que possam estar abertos e tentar terminar o que está fazendo antes de desligar. Em alguns casos, um processo pode ignorar SIGTERM se estiver no meio de alguma tarefa que não pode ser interrompida. SIGKILL não pode ser ignorado por um processo. Enviar um SIGKILL para um processo geralmente interromperá esse processo de uma vez por todas. Existem algumas tarefas que não podem ser interrompidas. Por exemplo, se o processo estiver tentando ler de um arquivo que está em outro computador na rede e o outro estiver indisponível, o processo é considerado não interrompível. Eventualmente, o processo expirará, normalmente após dois minutos. Assim que esse tempo limite ocorrer, o processo será eliminado.. Outros sinais comumente usados são SIGHUP, SIGUSR1 e SIGUSR2. Como esses são sinais de finalidade geral, diferentes aplicativos responderão de maneira diferente. Por exemplo, depois de alterar o arquivo de configuração de um servidor da Web, o servidor da Web precisa ser instruído a reler sua configuração. Reiniciar o httpd resultaria em um breve período de interrupção no servidor da web. Em vez disso, envie ao daemon o sinal SIGHUP. Esteja ciente de que diferentes daemons terão um comportamento diferente, então consulte a documentação do daemon para determinar se SIGHUP terá os resultados desejados. Enviando um sinal para um processo Este exemplo mostra como enviar um sinal para o inetd8. O arquivo de configuração do inetd8 é o /etc/inetd.conf e o inetd8 irá reler este arquivo de configuração quando for enviado um SIGHUP. Encontre o PID do processo para enviar o sinal usando pgrep1. Neste exemplo, o PID do inetd8 é 198: % pgrep -l inetd 198 inetd -wW Use o kill1 para enviar o sinal. Como o inetd8 é de propriedade do root, use o su1 para se tornar root primeiro. % su Password: # /bin/kill -s HUP 198 Como a maioria dos comandos UNIX, o kill1 não imprimirá nenhuma saída se for bem-sucedido. Se um sinal for enviado para um processo que não pertence ao usuário, a mensagem kill: PID: Operation not permitted será exibida. Errar o PID irá enviar o sinal para o processo errado, o que poderia ter resultados negativos, ou enviará o sinal para um PID que não esteja em uso no momento, resultando em o erro kill: PID: No such process. Por que usar o <command>/bin/kill</command>? Muitos shells fornecem o kill como um comando interno, o que significa que o shell enviará o sinal diretamente, em vez de executar o /bin/kill. Esteja ciente de que diferentes shells possuem uma sintaxe diferente para especificar o nome do sinal a ser enviado. Em vez de tentar aprender todos eles, pode ser mais simples especificar explicitamente o uso do /bin/kill. Ao enviar outros sinais, substitua TERM ou KILL pelo nome do sinal. Matar um processo aleatório no sistema é uma má ideia. Em particular, o init8, PID 1, é especial. Executar /bin/kill -s KILL 1 é uma maneira rápida e não recomendada de desligar o sistema. Sempre verifique os argumentos do kill1 antes de pressionar a tecla Enter. Shells shells command line Um shell fornece uma interface de linha de comandos para interagir com o sistema operacional. Um shell recebe comandos do canal de entrada e os executa. Muitos shells fornecem funções incorporadas para ajudar nas tarefas diárias, como gerenciamento de arquivos, referenciamento de arquivos, edição de linha de comando, macros de comando e variáveis de ambiente. O FreeBSD vem com vários shells, incluindo o shell Bourne (sh1) e o shell C estendido (tcsh1). Outros shells estão disponíveis na Coleção de Ports do FreeBSD, como o zsh e o bash. O shell usado é realmente uma questão de gosto. Um programador C pode se sentir mais confortável com um shell semelhante ao C, como o tcsh1. Um usuário Linux pode preferir o bash. Cada shell tem propriedades únicas que podem ou não funcionar com o ambiente de trabalho preferido de um usuário, e é por isso que existe a opção de qual shell usar. Um recurso de shell comum é a conclusão do nome do arquivo. Depois que um usuário digita as primeiras letras de um comando ou nome de arquivo e pressiona a tecla Tab, o shell completa o restante do comando ou nome do arquivo. Considere dois arquivos chamados foobar e football. Para excluir foobar, o usuário pode digitar rm foo e pressionar a tecla Tab para completar o nome do arquivo. Mas se o shell mostrar apenas rm foo. Não foi possível completar o nome do arquivo porque ambos foobar e football começam com foo. Algumas shells emitem um sinal sonoro ou mostram todas as opções se houver mais de um nome. O usuário deve digitar mais caracteres para identificar o nome do arquivo desejado. Digitar um t e pressionar a tecla Tab novamente é suficiente para permitir que o shell determine qual nome de arquivo é desejado e preencha o resto. environment variables Outra característica do shell é o uso de variáveis de ambiente. As variáveis de ambiente são um par de variável/chave armazenado no ambiente do shell. Esse ambiente pode ser lido por qualquer programa chamado pela shell e, portanto, contém muitas configurações de programas. fornece uma lista de variáveis de ambiente comuns e seus significados. Observe que os nomes das variáveis de ambiente estão sempre em maiúsculas. Variáveis de Ambiente Comuns Variável Descrição USER Nome do usuário atual. PATH Lista de diretórios separados por dois pontos para pesquisa de binários (progamas). DISPLAY Nome de rede do display do Xorg para conexão, se disponível. SHELL O shell atual. TERM O nome do tipo de terminal do usuário. Usado para determinar os recursos do terminal. TERMCAP Acesso à base de dados dos códigos de escape do terminal para executar várias funções do terminal. OSTYPE Tipo de sistema operacional. MACHTYPE A arquitetura da CPU do sistema. EDITOR O editor de texto preferencial do usuário. PAGER O utilitário preferencial do usuário para visualização de texto página à página. MANPATH Lista de diretórios separados por dois pontos para pesquisar páginas de manual.
Bourne shells O processo para definir uma variável de ambiente difere entre as shells. Em tcsh1 e csh1, use setenv para definir variáveis de ambiente. Em sh1 e no bash, use export para definir as variáveis de ambiente atuais. Este exemplo define o EDITOR padrão para /usr/local/bin/emacs para a shell tcsh1: % setenv EDITOR /usr/local/bin/emacs O comando equivalente para bash seria: % export EDITOR="/usr/local/bin/emacs" Para expandir uma variável de ambiente para ver sua configuração atual, digite um caracter $ na frente de seu nome na linha de comando. Por exemplo, echo $TERM exibe a configuração atual do $TERM. Shells tratam caracteres especiais, conhecidos como meta-caracteres, como representações especiais de dados. O meta-caracter mais comum é *, que representa qualquer número de caracteres em um nome de arquivo. Meta-caracteres podem ser usados para executar a globalização de nomes de arquivos. Por exemplo, echo * é equivalente a ls porque a shell pega todos os arquivos que correspondem ao * e echo os lista na linha de comando. Para evitar que a shell interprete um caractere especial, escape-o a partir da shell, iniciando-o com uma barra invertida (\). Por exemplo, echo $TERM imprime a configuração do terminal, enquanto echo \$TERM imprime literalmente a string $TERM. Alterando a Shell A maneira mais fácil de alterar permanentemente a shell padrão é usar o chsh. A execução desse comando abrirá o editor que está configurado na variável de ambiente EDITOR, que por padrão é definido como o vi1. Altere a linha Shell: para o caminho completo da nova shell. Como alternativa, use chsh -s, que irá definir a shell especificada sem abrir um editor. Por exemplo, para alterar a shell para bash: % chsh -s /usr/local/bin/bash A nova shell deve estar presente no arquivo /etc/shells. Se a shell foi instalada a partir da coleção de ports do FreeBSD, como descrito em , ela deve ser adicionada automaticamente a este arquivo. Se estiver faltando, adicione-a usando este comando, substituindo o caminho pelo caminho da shell: # echo /usr/local/bin/bash >> /etc/shells Em seguida, execute novamente o chsh1. Técnicas Avançadas de Shell Tom RhodesEscrito por A shell UNIX não é apenas um interpretador de comandos, ela atua como uma ferramenta poderosa que permite aos usuários executar comandos, redirecionar sua saída, redirecionar sua entrada e encadear comandos para melhorar o resultado final. Quando essa funcionalidade é mesclada com comandos incorporados, é fornecido ao usuário um ambiente que pode maximizar a eficiência. O redirecionamento de shell é a ação de enviar a saída ou a entrada de um comando para outro comando ou para um arquivo. Para capturar a saída do comando ls 1, por exemplo, em um arquivo, redirecione a saída: % ls > directory_listing.txt O conteúdo do diretório agora será listado em directory_listing.txt. Alguns comandos podem ser usados para ler entradas, como sort1. Para classificar esta listagem, redirecione a entrada: % sort < directory_listing.txt A entrada será classificada e colocada na tela. Para redirecionar essa entrada para outro arquivo, pode-se redirecionar a saída de sort1 misturando a direção: % sort < directory_listing.txt > sorted.txt Em todos os exemplos anteriores, os comandos estão executando o redirecionamento usando descritores de arquivos. Todo sistema UNIX possui descritores de arquivos, que incluem entrada padrão (stdin), saída padrão (stdout) e erro padrão (stderr). Cada um tem um propósito, onde a entrada pode ser um teclado ou um mouse, algo que fornece entrada. A saída pode ser uma tela ou papel em uma impressora. E erro seria tudo o que pode ser usado para mensagens de diagnóstico ou erro. Todos os três são considerados descritores de arquivos baseados em I/O e, às vezes, considerados fluxos. Através do uso desses descritores, a shell permite que a saída e a entrada sejam passadas por vários comandos e redirecionadas para/ou a partir de um arquivo. Outro método de redirecionamento é o operador de pipe. O operador pipe UNIX, | permite que a saída de um comando seja transmitida diretamente ou direcionada para outro programa. Basicamente, um pipe permite que a saída padrão de um comando seja passada como entrada padrão para outro comando, por exemplo: % cat directory_listing.txt | sort | less Nesse exemplo, o conteúdo de directory_listing.txt será classificado e a saída será transmitida para less1. Isso permite que o usuário role pela saída em seu próprio ritmo e evite que ela role para fora da tela.
Editores de Texto text editors editors A maioria das configurações do FreeBSD é feita através da edição de arquivos de texto. Por isso, é uma boa ideia familiarizar-se com um editor de texto. O FreeBSD vem com alguns como parte do sistema base, e muitos outros estão disponíveis na coleção do ports. ee editors ee1 Um editor simples para aprender é o ee1, que significa editor fácil (Ease Editor). Para iniciar este editor, digite eefilename em que filename é o nome do arquivo a ser editado. Uma vez dentro do editor, todos os comandos para manipular as funções do editor são listados no topo da tela. O cursor (^) representa Ctrl, então ^e expande para Ctrle. Para sair do ee1, pressione Esc e escolha a opção leave editor no menu principal. O editor pedirá para salvar as alterações, caso o arquivo tenha sido modificado. vi editors emacs O FreeBSD também vem com editores de texto mais poderosos, como o vi1, como parte do sistema base. Outros editores, como editors/emacs e editors/vim, fazem parte da coleção do ports do FreeBSD. Esses editores oferecem mais funcionalidade às custas de serem mais complicados de aprender. Aprender um editor mais poderoso como o vim ou o Emacs pode economizar mais tempo a longo prazo. Muitos aplicativos que modificam arquivos ou exigem entrada digitada abrirão automaticamente um editor de texto. Para alterar o editor padrão, defina a variável de ambiente EDITOR conforme descrito em . Dispositivos e nós de dispositivos Um dispositivo é um termo usado principalmente para atividades relacionadas a hardware em um sistema, incluindo discos, impressoras, placas gráficas e teclados. Quando o FreeBSD inicializa, a maioria das mensagens de inicialização se refere aos dispositivos sendo detectados. Uma cópia das mensagens de inicialização é salva em /var/run/dmesg.boot. Cada dispositivo tem um nome e um número de dispositivo. Por exemplo, ada0 é o primeiro disco rígido SATA, enquanto kbd0 representa o teclado. A maioria dos dispositivos no FreeBSD deve ser acessada através de arquivos especiais chamados nós de dispositivos (device nodes), que estão localizados em /dev. Páginas de Manual manual pages A documentação mais abrangente sobre o FreeBSD está na forma de páginas de manual. Quase todos os programas do sistema vêm com um breve manual de referência explicando a operação básica e os argumentos disponíveis. Estes manuais podem ser visualizados usando o man: % man command onde command é o nome do comando para aprender. Por exemplo, para saber mais sobre o ls1, digite: % man ls As páginas de manual são divididas em seções que representam o tipo de tópico. No FreeBSD, as seguintes seções estão disponíveis: Comandos de usuário. Chamadas do sistema e números de erro. Funções nas bibliotecas C. Drivers de dispositivos. Formatos de arquivo. Jogos e outras diversões. Informações diversas. Comandos de manutenção e operação do sistema. Interfaces do kernel do sistema. Em alguns casos, o mesmo tópico pode aparecer em mais de uma seção do manual online. Por exemplo, existe um comando de usuário chmod e uma chamada de sistema chmod(). Para informar ao man1 qual seção exibir, especifique o número da seção: % man 1 chmod Isto irá mostrar a página de manual do comando chmod1. Referências a uma seção em particular do manual online são tradicionalmente colocadas entre parênteses na documentação escrita, então chmod1 refere-se ao comando do usuário e chmod2 refere-se à chamada do sistema. Se o nome da página de manual for desconhecido, use man -k para procurar por palavras-chave nas descrições da página de manual: % man -k mail Este comando exibe uma lista de comandos que possuem a palavra-chave mail em suas descrições. Isso é equivalente a usar o apropos1. Para ler as descrições de todos os comandos em /usr/bin, digite: % cd /usr/bin % man -f * | more ou % cd /usr/bin % whatis * |more Arquivos GNU Info Free Software Foundation O FreeBSD inclui vários aplicativos e utilitários produzidos pela Free Software Foundation (FSF). Além das páginas de manual, esses programas podem incluir documentos de hipertexto chamados arquivos info. Elas podem ser visualizadas usando info1 ou, se o editors/emacs estiver instalado, o modo info do emacs. Para usar o info1, digite: % info Para uma breve introdução, digite h. Para uma referência rápida de comandos, digite ?.
Instalando Aplicativos: Pacotes e Ports Sinopse ports packages O FreeBSD tem uma grande coleção de ferramentas dentro do sistema base. Além disso, o FreeBSD fornece duas ferramentas complementares para a instalação de software de terceiros: o a Coleção de Ports do FreeBSD, para instalação a partir do código-fonte, e pacotes, para instalação de binários pré-compilados. Qualquer um dos métodos pode ser usado para instalar um software de uma mídia local ou da rede. Depois de ler este capítulo, você saberá: A diferença entre pacotes binários e ports. Como encontrar softwares de terceiros que tenham sido portados para o FreeBSD. Como gerenciar pacotes binários usando o pkg. Como compilar software de terceiros a partir do código-fonte usando a coleção de ports. Como encontrar os arquivos instalados do aplicativo para configuração pós-instalação. O que fazer se a instalação do software falhar. Visão geral sobre a Instalação de Software As etapas típicas para instalar um software de terceiros em um sistema UNIX incluem: Encontre e baixe o software, que pode ser distribuído no formato de código-fonte ou como um binário. Desempacote o software a partir do seu formato de distribuição. Tipicamente é um arquivo tarball compactado com um programa como compress1,gzip1 , bzip2 1 ou xz1. Localize a documentação em INSTALL, README ou algum arquivo em um subdiretório doc/ e leia sobre como instalar o software. Se o software foi distribuído como código-fonte, compile-o. Isso pode envolver a edição de um Makefile ou a execução de um script configure. Teste e instale o software. Um port do FreeBSD é uma coleção de arquivos projetados para automatizar o processo de compilação de um aplicativo a partir do código-fonte. Os arquivos que compõem um port contêm todas as informações necessárias para baixar, extrair, corrigir, compilar e instalar automaticamente o aplicativo. Se o software ainda não foi adaptado e testado no FreeBSD, o código-fonte pode precisar ser editado para que seja instalado e executado corretamente. No entanto, mais de 24.000 aplicativos de terceiros já foram portados para o FreeBSD. Quando possível, esses aplicativos são disponibilizados para download como pacotes pré-compilados. Pacotes podem ser manipulados com os comandos de gerenciamento de pacotes do FreeBSD. Ambos, pacotes e ports, entendem dependências. Se um pacote ou port for usado para instalar um aplicativo, e uma biblioteca dependente ainda não estiver instalada, a biblioteca será instalada automaticamente primeiro. Um pacote do FreeBSD contém cópias pré-compiladas de todos os comandos para uma aplicação, assim como quaisquer arquivos de configuração e documentação. Um pacote pode ser manipulado com os comandos pkg8, como pkg install. Mesmo as duas tecnologias sendo semelhantes, os pacotes e os ports têm seus próprios pontos fortes. Selecione a tecnologia que melhor atenda aos seus requisitos para instalar um aplicativo específico. Benefícios dos Pacotes Um tarball compactado de um pacote geralmente é menor que o tarball compactado que contém o código-fonte do aplicativo. Pacotes não requerem tempo de compilação. Para aplicativos grandes, como o Mozilla, KDE ou GNOME, isso pode ser importante em um sistema lento. Pacotes não requerem nenhum entendimento do processo envolvido na compilação de software no FreeBSD. Benefícios dos Ports Os pacotes são normalmente compilados com opções conservadoras porque eles precisam ser executados no número máximo de sistemas. Ao compilar a partir do port, podem-se alterar as opções de compilação. Alguns aplicativos têm opções em tempo de compilação relacionadas a quais recursos estão instalados. Por exemplo, o Apache pode ser configurado com uma ampla variedade de diferentes opções internas. Em alguns casos, vários pacotes existirão para o mesmo aplicativo para especificar determinadas configurações. Por exemplo, o Ghostscript está disponível como um pacote ghostscript e um pacote ghostscript-nox11, dependendo se o Xorg está instalado ou não. Criar vários pacotes rapidamente se torna impossível se um aplicativo tiver mais de uma ou duas opções diferentes de tempo de compilação. As condições de licenciamento de alguns softwares proíbem sua distribuição em binário. Tais softwares devem ser distribuídos como código-fonte o qual deve ser compilado pelo usuário final. Algumas pessoas não confiam em distribuições binárias ou preferem ler o código-fonte para procurar possíveis problemas. O código-fonte é necessário para aplicar patches personalizados. Para acompanhar a atualização dos ports, inscreva-se na lista de discussão dos ports do FreeBSD e no link Lista de discussão de bugs no FreeBSD. Antes de instalar qualquer aplicativo, verifique para questões de segurança relacionadas ao aplicativo ou digite pkg audit -F para verificar todas as instâncias instaladas aplicativos para vulnerabilidades conhecidas. O restante deste capítulo explica como usar pacotes e ports para instalar e gerenciar software de terceiros no FreeBSD. Encontrando Software A lista de aplicativos disponíveis do FreeBSD está crescendo o tempo todo. Existem várias maneiras de encontrar softwares para instalar: O site do FreeBSD mantém uma lista atualizada e pesquisável de todos os aplicativos disponíveis, em https://www.FreeBSD.org/ ports/. Os ports podem ser pesquisados por nome do aplicativo ou por categoria de software. FreshPorts Dan Langille mantém o FreshPorts.org, que fornece um utilitário de pesquisa abrangente e também rastreia alterações nos aplicativos da Coleção de Ports. Os usuários registrados podem criar uma lista de observação personalizada para receber um e-mail automatizado quando seus ports sendo monitorados forem atualizados. SourceForge Se encontrar um aplicativo específico se tornar desafiador, tente pesquisar um site como SourceForge.net ou GitHub.com então volte no site do FreeBSD para ver se o aplicativo foi portado. pkg search Para pesquisar o repositório de pacotes binários por um aplicativo: # pkg search subversion git-subversion-1.9.2 java-subversion-1.8.8_2 p5-subversion-1.8.8_2 py27-hgsubversion-1.6 py27-subversion-1.8.8_2 ruby-subversion-1.8.8_2 subversion-1.8.8_2 subversion-book-4515 subversion-static-1.8.8_2 subversion16-1.6.23_4 subversion17-1.7.16_2 Os nomes dos pacotes incluem o número da versão e, no caso de ports baseados em python, o número da versão do pacote python sobre o qual o pacote foi compilado. Alguns ports também possuem várias versões disponíveis. No caso do Subversion, existem diferentes versões disponíveis, bem como diferentes opções de compilação. Neste caso, a versão estaticamente vinculada do Subversion. Ao indicar qual pacote instalar, é melhor especificar o aplicativo pela origem do port, que é o caminho na árvore de ports. Repita o pkg search com para listar a origem de cada pacote: # pkg search -o subversion devel/git-subversion java/java-subversion devel/p5-subversion devel/py-hgsubversion devel/py-subversion devel/ruby-subversion devel/subversion16 devel/subversion17 devel/subversion devel/subversion-book devel/subversion-static Pesquisar por shell globs, expressões regulares, correspondência exata, por descrição ou qualquer outro campo no banco de dados do repositório também é suportado pelo pkg search. Depois de instalar o ports-mgmt/pkg ou o ports-mgmt/pkg-devel, veja pkg-search8 para maiores detalhes. Se a Coleção de Ports já estiver instalada, existem vários métodos para consultar a versão local da árvore de ports. Para descobrir em qual categoria um port está, digite whereis file , onde file é o programa a ser instalado: # whereis lsof lsof: /usr/ports/sysutils/lsof Como alternativa, uma declaração echo1 pode ser usada: # echo /usr/ports/*/*lsof* /usr/ports/sysutils/lsof Observe que isso também retornará todos os arquivos correspondentes baixados no diretório /usr/ports/distfiles. Outra maneira de encontrar software é usando o mecanismo de pesquisa integrado da Coleção de Ports. Para usar o recurso de pesquisa, cd para /usr/ports, execute make search name=program-name onde program-name é o nome do software. Por exemplo, para procurar por lsof: # cd /usr/ports # make search name=lsof Port: lsof-4.88.d,8 Path: /usr/ports/sysutils/lsof Info: Lists information about open files (similar to fstat(1)) Maint: ler@lerctr.org Index: sysutils B-deps: R-deps: O mecanismo de pesquisa interna usa um arquivo de informações de índice. Se uma mensagem indicar que o INDEX é necessário, execute make fetchindex para baixar o arquivo de índice atual. Com o INDEX presente, o make search poderá realizar a pesquisa solicitada. A linha Path: indica onde encontrar o port. Para receber menos informações, use o recurso quicksearch: # cd /usr/ports # make quicksearch name=lsof Port: lsof-4.88.d,8 Path: /usr/ports/sysutils/lsof Info: Lists information about open files (similar to fstat(1)) Para uma busca mais aprofundada, use o make search key=string ou o make quicksearch key=string, onde string é algum texto para procurar. O texto pode estar em comentários, descrições ou dependências para encontrar ports relacionados a um assunto em particular quando o nome do programa é desconhecido. Ao usar pesquisa ou pesquisa rápida, a cadeia de pesquisa não diferencia maiúsculas de minúsculas. Procurar por LSOF produzirá os mesmos resultados que procurar por lsof. Usando o <application>pkg</application> para o gerenciamento de pacotes binários O pkg é o substituto da próxima geração para as tradicionais ferramentas de gerenciamento de pacotes do FreeBSD, oferecendo muitos recursos que tornam o processamento de pacotes binários mais rápido e fácil. Para sites que desejam apenas usar pacotes binários pré-construídos a partir dos espelhos do FreeBSD, o gerenciamento de pacotes com pkg pode ser suficiente. No entanto, para aqueles que optarem por compilar suas aplicações a partir do código-fonte ou que utilizarem seus próprios repositórios, será necessária uma ferramenta de gerenciamento de ports separada. Como o pkg só funciona com pacotes binários, ele não é um substituto para tais ferramentas. Estas ferramentas podem ser usadas para instalar o software a partir de pacotes binários e da Coleção do Ports, enquanto o pkg instala apenas pacotes binários. Introdução ao <application>pkg</application> O FreeBSD inclui um utilitário de bootstrap que pode ser usado para baixar e instalar o pkg e suas páginas de manual. Este utilitário foi projetado para funcionar com versões do FreeBSD começando com 10.X. Nem todas as versões e arquiteturas do FreeBSD suportam este processo de bootstrap. A lista atual está em . Para outros casos, o pkg deve ser instalado a partir da coleção de ports ou como um pacote binário. Para inicializar o sistema, execute: # /usr/sbin/pkg Você deve ter uma conexão com a Internet para que o processo de inicialização seja bem-sucedido. Caso contrário, para instalar o port, execute: # cd /usr/ports/ports-mgmt/pkg # make # make install clean Ao atualizar um sistema existente que usava originalmente as ferramentas pkg_ * mais antigas, o banco de dados deve ser convertido para o novo formato, para que as novas ferramentas estejam cientes dos pacotes já instalados. Uma vez que o pkg tenha sido instalado, o banco de dados de pacotes deve ser convertido do formato tradicional para o novo formato, executando este comando: # pkg2ng Esta etapa não é necessária para novas instalações que ainda não possuem nenhum software de terceiros instalado. Este passo não é reversível. Uma vez que o banco de dados de pacotes tenha sido convertido para o formato pkg, as ferramentas tradicionais pkg _ * não devem mais ser usadas. A conversão do banco de dados de pacotes pode emitir erros conforme o conteúdo é convertido para a nova versão. Geralmente, esses erros podem ser ignorados com segurança. No entanto, uma lista com os softwares que não foram convertidos com sucesso é mostrada após o pkg2ng terminar. Esses aplicativos devem ser reinstalados manualmente. Para garantir que a Coleção de Ports registre novos softwares com o pkg ao invés do tradicional banco de dados de pacotes, versões do FreeBSD anteriores a 10.X requerem esta linha em /etc/make.conf: WITH_PKGNG= yes Por padrão, o pkg usa os pacotes binários dos espelhos de pacotes do FreeBSD (o repositório). Para obter informações sobre como criar um repositório de pacotes personalizados, consulte . Opções adicionais de configuração do pkg são descritas em pkg.conf5. As informações de uso do pkg estão disponíveis na página de manual pkg8 ou executando o pkg sem argumentos adicionais. Cada argumento do comando pkg é documentado em uma página de manual específica do comando. Para ler a página de manual do pkg install, por exemplo, execute um destes comandos: # pkg help install # man pkg-install O restante desta seção demonstra tarefas comuns de gerenciamento de pacotes binários que podem ser executadas usando o pkg. Cada comando demonstrado fornece muitos switches para personalizar seu uso. Consulte a ajuda de um comando ou a página do manual para obter detalhes e mais exemplos. Obtendo informações sobre os pacotes instalados Informações sobre os pacotes instalados em um sistema podem ser visualizadas executando pkg info que, quando executado sem qualquer opção, listará a versão do pacote para todos os pacotes instalados ou para o pacote especificado. Por exemplo, para ver qual versão do pkg está instalada, execute: # pkg info pkg pkg-1.1.4_1 Instalando e removendo pacotes Para instalar um pacote binário, use o seguinte comando, em que packagename é o nome do pacote a ser instalado: # pkg install packagename Esse comando usa os dados do repositório para determinar qual versão do software instalar e se ele possui alguma dependência faltando. Por exemplo, para instalar o curl: # pkg install curl Updating repository catalogue /usr/local/tmp/All/curl-7.31.0_1.txz 100% of 1181 kB 1380 kBps 00m01s /usr/local/tmp/All/ca_root_nss-3.15.1_1.txz 100% of 288 kB 1700 kBps 00m00s Updating repository catalogue The following 2 packages will be installed: Installing ca_root_nss: 3.15.1_1 Installing curl: 7.31.0_1 The installation will require 3 MB more space 0 B to be downloaded Proceed with installing packages [y/N]: y Checking integrity... done [1/2] Installing ca_root_nss-3.15.1_1... done [2/2] Installing curl-7.31.0_1... done Cleaning up cache files...Done O novo pacote e quaisquer pacotes adicionais que foram instalados como dependências podem ser vistos na lista de pacotes instalados: # pkg info ca_root_nss-3.15.1_1 The root certificate bundle from the Mozilla Project curl-7.31.0_1 Non-interactive tool to get files from FTP, GOPHER, HTTP(S) servers pkg-1.1.4_6 New generation package manager Pacotes que não são mais necessários podem ser removidos com pkg delete. Por exemplo: # pkg delete curl The following packages will be deleted: curl-7.31.0_1 The deletion will free 3 MB Proceed with deleting packages [y/N]: y [1/1] Deleting curl-7.31.0_1... done Atualizando os Pacotes Instalados Os pacotes instalados podem ser atualizados para as versões mais recentes executando: # pkg upgrade Este comando irá comparar as versões instaladas com as disponíveis no catálogo do repositório e atualizá-las a partir do repositório. Auditando os Pacotes Instalados Vulnerabilidades de software são regularmente descobertas em aplicativos de terceiros. Para resolver isso, o pkg inclui um mecanismo de auditoria integrado. Para determinar se há alguma vulnerabilidade conhecida para o software instalado no sistema, execute: # pkg audit -F Removendo Pacotes Não Utilizados Automaticamente Remover um pacote pode deixar dependências que não são mais necessárias. Pacotes desnecessários que foram instalados como dependências podem ser automaticamente detectados e removidos usando: # pkg autoremove Packages to be autoremoved: ca_root_nss-3.15.1_1 The autoremoval will free 723 kB Proceed with autoremoval of packages [y/N]: y Deinstalling ca_root_nss-3.15.1_1... done Os pacotes instalados como dependências são chamados de pacotes automáticos. Pacotes não automáticos, ou seja, os pacotes que não foram instalados como uma dependência para outro pacote, podem ser listados usando: # pkg prime-list nginx openvpn sudo O pkg prime-list é um alias de comando declarado no /usr/local/etc/pkg.conf. Existem muitos outros que podem ser usados para consultar o banco de dados de pacotes do sistema. Por exemplo, o comando pkg prime-origins pode ser usado para obter o diretório de origem dos ports da lista mencionada acima: # pkg prime-origins www/nginx security/openvpn security/sudo Esta lista pode ser usada para recompilar todos os pacotes instalados em um sistema usando ferramentas de compilação como o ports-mgmt/poudriere ou o ports-mgmt/synth. Marcar um pacote instalado como automático pode ser feito usando: # pkg set -A 1 devel/cmake Uma vez que um pacote é um pacote orfão e está marcado como automático, ele será selecionado por pkg autoremove. Marcar um pacote instalado como não automático pode ser feito usando: # pkg set -A 0 devel/cmake Restaurando o banco de dados de pacotes Ao contrário do sistema tradicional de gerenciamento de pacotes, o pkg inclui seu próprio mecanismo de backup de banco de dados de pacotes. Essa funcionalidade é habilitada por padrão. Para desabilitar o script que faz o backup periódico do banco de dados de pacotes, defina daily_backup_pkgdb_enable="NO" no periodic.conf5. Para restaurar o conteúdo de um backup anterior do banco de dados de pacotes, execute o seguinte comando substituindo /path/to/pkg.sql pelo local do backup: # pkg backup -r /path/to/pkg.sql Se estiver restaurando um backup feito pelo script periódico, ele deve ser descompactado antes de ser restaurado. Para executar um backup manual do banco de dados pkg, execute o seguinte comando, substituindo /path/to/pkg.sql por um nome de arquivo e local adequados: # pkg backup -d /path/to/pkg.sql Removendo Pacotes Obsoletos Por padrão, o pkg armazena pacotes binários em um diretório de cache definido por PKG_CACHEDIR no pkg.conf5. Somente cópias dos últimos pacotes instalados são mantidas. Versões mais antigas do pkg mantinham todos os pacotes anteriores. Para remover esses pacotes binários desatualizados, execute: # pkg clean O cache inteiro pode ser limpo executando: # pkg clean -a Modificando Metadados de Pacotes Os softwares dentro da Coleção de Ports do FreeBSD podem passar por grandes mudanças no número de versão. Para resolver isso, o pkg possui um comando interno para atualizar as origens do pacote. Isto pode ser útil, por exemplo, se lang/php5 for renomeado para lang/php53 para que lang/php5 possa agora representar a versão 5.4. Para alterar a origem do pacote para o exemplo acima, execute: # pkg set -o lang/php5:lang/php53 Como outro exemplo, para atualizar lang/ruby18 para lang/ruby19, execute: # pkg set -o lang/ruby18:lang/ruby19 Como um exemplo final, para alterar a origem das bibliotecas compartilhadas libglut de graphics/libglut para graphics/freeglut, execute: # pkg set -o graphics/libglut:graphics/freeglut Ao alterar as origens do pacote, é importante reinstalar os pacotes que dependem do pacote com a origem modificada. Para forçar uma reinstalação dos pacotes dependentes, execute: # pkg install -Rf graphics/freeglut Usando a Coleção de Ports A Coleção de Ports é um conjunto de arquivos Makefiles, patches e arquivos de descrição. Cada conjunto desses arquivos é usado para compilar e instalar um aplicativo individual no FreeBSD, e é chamado de port. Por padrão, a própria coleção de ports é armazenada como um subdiretório de /usr/ports. Antes que um aplicativo possa ser compilado usando um port, a Coleção de Ports deve primeiro ser instalada. Se ela não foi instalada durante a instalação do FreeBSD, use um dos seguintes métodos para instalá-la: Método Portsnap O sistema básico do FreeBSD inclui o Portsnap. Esta é uma ferramenta rápida e fácil de usar para recuperar a coleção de ports e é a escolha recomendada para a maioria dos usuários. Este utilitário se conecta a um site do FreeBSD, verifica a chave segura e faz o download de uma nova cópia da Coleção de Ports. A chave é usada para verificar a integridade de todos os arquivos baixados. Para baixar um snapshot compactado da coleção de ports em /var/db/portsnap: # portsnap fetch Ao executar o Portsnap pela primeira vez, extraia o snapshot em /usr/ports: # portsnap extract Após o primeiro uso do Portsnap ter sido concluído, como mostrado acima, o /usr/ports pode ser atualizado conforme necessário executando: # portsnap fetch # portsnap update Ao usar fetch, a operação extract ou update pode ser executada consecutivamente, da seguinte forma: # portsnap fetch update Método Subversion Se for necessário mais controle sobre a árvore de ports ou se as mudanças locais precisarem ser mantidas, o Subversion pode ser usado para obter a coleção de ports. Consulte O Subversion Primer para uma descrição detalhada do Subversion. O Subversion deve ser instalado antes de poder ser usado para fazer o check-out da árvore de ports. Se uma cópia da árvore de ports já estiver presente, instale o Subversion desta forma: # cd /usr/ports/devel/subversion # make install clean Se a árvore de ports não estiver disponível, ou o pkg estiver sendo usado para gerenciar pacotes, o Subversion poderá ser instalado como um pacote: # pkg install subversion Faça o check out de uma cópia da árvore de ports: # svn checkout https://svn.FreeBSD.org/ports/head /usr/ports Conforme necessário, atualize o /usr/ports após o check out inicial do Subversion: # svn update /usr/ports A coleção de ports contém diretórios para categorias de software. Dentro de cada categoria estão subdiretórios para aplicativos individuais. Cada subdiretório de aplicativo contém um conjunto de arquivos que informa ao FreeBSD como compilar e instalar esse programa, chamado de esqueleto do ports. Cada esqueleto de port inclui esses arquivos e diretórios: Makefile: contém instruções que especificam como o aplicativo deve ser compilado e onde seus componentes devem ser instalados. distinfo: contém os nomes e checksums dos arquivos que devem ser baixados para compilar o port. files/: este diretório contém quaisquer patches necessários para o programa compilar e instalar no FreeBSD. Esse diretório também pode conter outros arquivos usados para compilar o port. pkg-descr: fornece uma descrição mais detalhada do programa. pkg-plist: uma lista de todos os arquivos que serão instalados pelo port. Ele também informa ao sistema de ports quais arquivos devem ser removidos após a desinstalação. Alguns ports incluem pkg-message ou outros arquivos para lidar com situações especiais. Para obter mais detalhes sobre esses arquivos e sobre os ports em geral, consulte o FreeBSD Porter's Manual. O port não inclui o código-fonte real, também conhecido como distfile. A etapa de extração da compilação de um port salvará automaticamente o código-fonte transferido por download para /usr/ports/distfiles. Instalando Ports ports installing Esta seção fornece instruções básicas sobre o uso da Coleção de Ports para instalar ou remover software. A descrição detalhada dos targets disponíveis do make e das variáveis de ambiente está disponível em ports7. Antes de compilar qualquer port, certifique-se de atualizar a Coleção de Ports conforme descrito na seção anterior. Como a instalação de qualquer software de terceiros pode introduzir vulnerabilidades de segurança, recomenda-se primeiro verificar para problemas de segurança conhecidos relacionados ao port. Alternativamente, execute pkg -f antes de instalar um novo port. Esse comando pode ser configurado para executar automaticamente uma auditoria de segurança e uma atualização do banco de dados de vulnerabilidades durante a verificação diária do sistema de segurança. Para obter maiores informações, consulte pkg-audit8 e periodic8. O uso da coleção de ports pressupõe uma conexão de Internet ativa. Também requer privilégios de superusuário. Para compilar e instalar o port, mude para o diretório do port a ser instalado e, em seguida, digite make install no prompt. Mensagens indicarão o progresso: # cd /usr/ports/sysutils/lsof # make install >> lsof_4.88D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/. ===> Extracting for lsof-4.88 ... [extraction output snipped] ... >> Checksum OK for lsof_4.88D.freebsd.tar.gz. ===> Patching for lsof-4.88.d,8 ===> Applying FreeBSD patches for lsof-4.88.d,8 ===> Configuring for lsof-4.88.d,8 ... [configure output snipped] ... ===> Building for lsof-4.88.d,8 ... [compilation output snipped] ... ===> Installing for lsof-4.88.d,8 ... [installation output snipped] ... ===> Generating temporary packing list ===> Compressing manual pages for lsof-4.88.d,8 ===> Registering installation for lsof-4.88.d,8 ===> SECURITY NOTE: This port has installed the following binaries which execute with increased privileges. /usr/local/sbin/lsof # Como o lsof é um programa que é executado com privilégios aumentados, um aviso de segurança é exibido quando é instalado. Quando a instalação estiver concluída, o prompt será retornado. Algumas shells mantêm um cache dos comandos que estão disponíveis nos diretórios listados na variável de ambiente PATH, para acelerar as operações de pesquisa do arquivo executável desses comandos. Os usuários do shell tcsh devem digitar rehash para que um comando recém-instalado possa ser usado sem especificar seu caminho completo. Use hash -r para o shell sh. Consulte a documentação do shell para mais informações. Durante a instalação, é criado um subdiretório de trabalho que contém todos os arquivos temporários usados durante a compilação. A remoção desse diretório economiza espaço em disco e minimiza a possibilidade de problemas mais tarde ao atualizar para a versão mais recente do port: # make clean ===> Cleaning for lsof-88.d,8 # Para evitar esta etapa extra, use make install clean ao compilar o port. Personalizando a instalação de ports Alguns ports fornecem opções de compilação que podem ser usadas para habilitar ou desabilitar componentes do aplicativo, fornecer opções de segurança ou permitir outras personalizações. Os exemplos incluem o www/firefox, security/gpgme, e mail/sylpheed-claws. Se o port depender de outros ports que tenham opções configuráveis, ela poderá pausar várias vezes para interação do usuário, pois o comportamento padrão é solicitar ao usuário que selecione opções de um menu. Para evitar isso e fazer toda a configuração em um lote, execute make config-recursive dentro do diretório do port. Em seguida, execute make install [clean] para compilar e instalar o port. Ao usar config-recursive, a lista de ports a serem configurados é reunida pelo target all-depends-list. É recomendado executar o make config-recursive até que todas as opções dos ports dependentes tenham sido definidas, e as telas de opções de ports não apareçam mais, para ter certeza de que todas as opções das dependência foram configuradas. Há várias maneiras de revisitar o menu de opções de compilação de um port para adicionar, remover ou alterar essas opções após a compilação de um port. Um método é efetuar cd no diretório que contém o port e digitar make config. Outra opção é usar o make showconfig. Outra opção é executar make rmconfig, o que removerá todas as opções selecionadas e permitirá que você comece de novo. Todas essas opções, e outras, são explicadas detalhadamente em ports7. O sistema de ports usa o fetch1 para fazer o download dos arquivos com o código-fonte, que suportam várias variáveis de ambiente. As variáveis FTP_PASSIVE_MODE, FTP_PROXY e FTP_PASSWORD podem precisar ser definidas se o sistema FreeBSD estiver por trás de um firewall ou proxy FTP/HTTP. Veja fetch3 para a lista completa de variáveis suportadas. Para usuários que não podem estar conectados à Internet o tempo todo, o make fetch pode ser executado dentro do /usr/ports, para buscar todos os distfiles, ou dentro de uma categoria, como /usr/ports/net, ou dentro do diretório de um port especifico. Observe que, se um port tiver alguma dependência, executar este comando em uma categoria ou diretório de um port especifico não buscará os distfiles de ports de outra categoria. Em vez disso, use make fetch-recursive para também buscar os distfiles para todas as dependências de um port. Em casos raros, como quando uma organização tem um repositório local de distfiles, a variável MASTER_SITES pode ser usada para substituir os locais de download especificados no Makefile. Ao usar, especifique o local alternativo: # cd /usr/ports/directory # make MASTER_SITE_OVERRIDE= \ ftp://ftp.organization.org/pub/FreeBSD/ports/distfiles/ fetch As variáveis WRKDIRPREFIX e PREFIX podem substituir os diretórios de trabalho e de destino padrão. Por exemplo: # make WRKDIRPREFIX=/usr/home/example/ports install irá compilar o port em /usr/home/example/ports e instalar tudo sob /usr/local. # make PREFIX=/usr/home/example/local install irá compilar o port em /usr/ports e instalá-lo em /usr/home/example/local. E: # make WRKDIRPREFIX=../ports PREFIX=../local install vai combinar os dois. Estes também podem ser definidos como variáveis ambientais. Consulte a página de manual do seu shell para obter instruções sobre como definir uma variável de ambiente. Removendo Ports Instalados ports removing Ports instalados podem ser desinstalados usando pkg delete. Exemplos para usar este comando podem ser encontrados na página de manual pkg-delete8. Alternativamente, o make deinstall pode ser executado no diretório do port: # cd /usr/ports/sysutils/lsof # make deinstall ===> Deinstalling for sysutils/lsof ===> Deinstalling Deinstallation has been requested for the following 1 packages: lsof-4.88.d,8 The deinstallation will free 229 kB [1/1] Deleting lsof-4.88.d,8... done Recomenda-se ler as mensagens quando o port for desinstalado. Se o port tiver algum aplicativo que dependa dele, essas informações serão exibidas, mas a desinstalação continuará. Nesses casos, talvez seja melhor reinstalar o aplicativo para evitar dependências quebradas. Atualizando os Ports ports upgrading Com o tempo, novas versões de software ficam disponíveis na coleção de ports. Esta seção descreve como determinar qual software pode ser atualizado e como executar a atualização. Para determinar se versões mais recentes dos ports instalados estão disponíveis, verifique se a versão mais recente da árvore de ports está instalada, usando o comando de atualização descrito em ou . No FreeBSD 10 e posterior, ou se o sistema foi convertido para pkg, o seguinte comando listará os ports instalados que estão desatualizadas: # pkg version -l "<" Para o FreeBSD 9.X e menor, o seguinte comando listará os ports instalados que estão desatualizados: # pkg_version -l "<" Antes de tentar uma atualização, leia o /usr/ports/UPDATING da parte superior do arquivo até a data mais próxima da última vez em que os ports foram atualizados ou o sistema foi instalado. Este arquivo descreve vários problemas e etapas adicionais que os usuários podem encontrar e precisar executar ao atualizar um port, incluindo coisas como alterações de formato de arquivo, alterações nos locais de arquivos de configuração ou incompatibilidades com versões anteriores. Anote quaisquer instruções que correspondam a qualquer um dos ports que precisam de atualização e siga estas instruções ao executar a atualização. Ferramentas para atualizar e gerenciar ports ports upgrading-tools A coleção de ports contém vários utilitários para executar a atualização real. Cada um tem seus pontos fortes e fracos. Historicamente, a maioria das instalações usava o Portmaster ou o Portupgrade. O Synth é uma alternativa mais recente. A escolha da melhor ferramenta para um determinado sistema depende do administrador do sistema. Recomenda-se a prática de fazer backup de seus dados antes de usar qualquer uma dessas ferramentas. Atualizando Ports Usando o <application>Portmaster</application> portmaster O ports-mgmt/portmaster é um utilitário muito pequeno para atualizar os ports instalados. Ele é projetado para usar as ferramentas instaladas com o sistema base do FreeBSD sem depender de outros ports ou bancos de dados. Para instalar este utilitário como um port: # cd /usr/ports/ports-mgmt/portmaster # make install clean O Portmaster define quatro categorias de ports: Port Root: não tem dependências e não é uma dependência de outros ports. Port Trunk: não tem dependências, mas outros ports dependem dele. Port Branch: tem dependências e outros ports dependem dele. Port Leaf: tem dependências, mas nenhum outro port depende dele. Para listar essas categorias e procurar atualizações: # portmaster -L ===>>> Root ports (No dependencies, not depended on) ===>>> ispell-3.2.06_18 ===>>> screen-4.0.3 ===>>> New version available: screen-4.0.3_1 ===>>> tcpflow-0.21_1 ===>>> 7 root ports ... ===>>> Branch ports (Have dependencies, are depended on) ===>>> apache22-2.2.3 ===>>> New version available: apache22-2.2.8 ... ===>>> Leaf ports (Have dependencies, not depended on) ===>>> automake-1.9.6_2 ===>>> bash-3.1.17 ===>>> New version available: bash-3.2.33 ... ===>>> 32 leaf ports ===>>> 137 total installed ports ===>>> 83 have new versions available Este comando é usado para atualizar todos os ports desatualizados: # portmaster -a Por padrão, o Portmaster faz um backup do pacote antes de excluir o port existente. Se a instalação da nova versão for bem-sucedida, o Portmaster excluirá o backup. O uso de instrui o Portmaster a não excluir automaticamente o backup. Adicionar inicia o Portmaster no modo interativo, solicitando a confirmação antes de atualizar cada port. Muitas outras opções estão disponíveis. Leia a página de manual para o portmaster8 para obter detalhes sobre seu uso. Se forem encontrados erros durante o processo de atualização, adicione para atualizar e recompilar todos os ports: # portmaster -af O Portmaster também pode ser usado para instalar novos ports no sistema, atualizando todas as dependências antes de compilar e instalar o novo port. Para usar essa função, especifique o local do port na coleção de ports: # portmaster shells/bash Maiores informações sobre ports-mgmt/portmaster podem ser encontradas no pkg-descr. Atualizando Ports Usando o Portupgrade portupgrade O ports-mgmt/portupgrade é outro utilitário que pode ser usado para atualizar ports. Ele instala um conjunto de aplicativos que podem ser usados para gerenciar ports. No entanto, ele depende do Ruby. Para instalar o port: # cd /usr/ports/ports-mgmt/portupgrade # make install clean Antes de executar uma atualização usando esse utilitário, é recomendável verificar a lista de ports instalados usando o pkgdb -F e corrigir todas as inconsistências relatadas. Para atualizar todos os ports desatualizados instalados no sistema, use o portupgrade -a. Como alternativa, inclua para ser solicitado da confirmação de cada atualização individual: # portupgrade -ai Para atualizar apenas um aplicativo especifico em vez de todos os ports disponíveis, use portupgrade pkgname. É muito importante incluir para primeiro atualizar todos os ports requeridos pelo aplicativo fornecido: # portupgrade -R firefox Se estiver incluído, o Portupgrade procura pacotes disponíveis nos diretórios locais listados em PKG_PATH. Se nenhum estiver disponível localmente, ele buscará pacotes de um site remoto. Se os pacotes não puderem ser encontrados localmente ou buscados remotamente, o Portupgrade utilizará os ports. Para evitar completamente o uso do ports, especifique . Este último conjunto de opções diz ao Portupgrade para cancelar se nenhum pacote estiver disponível: # portupgrade -PP gnome3 Para obter apenas os distfiles do port, ou pacotes, se for especificado, sem compilar ou instalar nada, use . Para mais informações sobre todas as opções disponíveis, consulte a página de manual do portupgrade. Maiores informações sobre o ports-mgmt/portupgrade podem ser encontradas no pkg-descr. Ports e o Espaço em Disco ports disk-space A utilização da coleção de ports irá ocupar espaço em disco ao longo do tempo. Depois de compilar e instalar um port, executar make clean dentro do diretório de um port limpará o diretório temporário de trabalho. Se o Portmaster for usado para instalar um port, ele removerá automaticamente esse diretório, a menos que seja especificado. Se o Portupgrade estiver instalado, este comando removerá todos os diretórios de trabalho encontrados na cópia local da coleção de ports: # portsclean -C Além disso, arquivos de distribuição de código-fonte desatualizados se acumulam no /usr/ports/distfiles ao longo do tempo. Para usar Portupgrade para excluir todos os distfiles que não são mais referenciados por nenhum port: # portsclean -D O Portupgrade pode remover todos os distfiles não referenciados por qualquer port atualmente instalado no sistema: # portsclean -DD Se o Portmaster estiver instalado, use: # portmaster --clean-distfiles Por padrão, esse comando é interativo e solicita que o usuário confirme se um distfile deve ser excluído. Além desses comandos, o ports-mgmt/pkg_cutleaves automatiza a tarefa de remover os ports instalados que não são mais necessários. Compilando Pacotes com o <application>Poudriere</application> O Poudriere é um utilitário licenciado sob a licença BSD para criar e testar pacotes do FreeBSD. Ele usa o jails do FreeBSD para configurar ambientes de compilação isolados. Esses jails podem ser usados para compilar pacotes para versões do FreeBSD que são diferentes do sistema no qual ele está instalado, e também para construir pacotes para o i386 se o host for um sistema amd64. Uma vez que os pacotes são compilados, eles estão em um layout idêntico aos espelhos oficiais. Esses pacotes podem ser usados pelo pkg8 e por outras ferramentas de gerenciamento de pacotes. O Poudriere é instalado usando o pacote ou port ports-mgmt/poudriere. A instalação inclui um arquivo de configuração de exemplo, /usr/local/etc/poudriere.conf.sample. Copie este arquivo para /usr/local/etc/poudriere.conf. Edite o arquivo copiado de acordo com a configuração local. Embora o ZFS não seja necessário no sistema que executa o poudriere, o seu uso é benéfico. Quando o ZFS é usado, o ZPOOL deve ser especificado em /usr/local/etc/poudriere.conf e o FREEBSD_HOST deve ser definido para um espelho próximo. A definição de CCACHE_DIR permite o uso de devel/ccache para armazenar em cache a compilação e reduzir os tempos de compilação para o código compilado com freqüência. Pode ser conveniente colocar os conjuntos de dados do poudriere em uma árvore isolada montada em /poudriere. Os valores padrões para as outras variáveis de configuração são adequados. O número de núcleos do processador detectados é usado para definir quantas compilações serão executadas em paralelo. Forneça memória virtual suficiente, seja por meio de RAM ou espaço de swap. Se a memória virtual se esgotar, as jails de compilação serão interrompidas e desativadas, resultando em mensagens de erro estranhas. Inicializar o Jails e o Port Trees Após a configuração, inicialize o poudriere para que ele instale um jail com a árvore do FreeBSD requerida e uma árvore de ports. Especifique um nome para o jail usando e a versão do FreeBSD com . Em sistemas que executam o FreeBSD/amd64, a arquitetura pode ser definida com para i386 ou amd64. O padrão é a arquitetura mostrada pelo uname. # poudriere jail -c -j 10amd64 -v 10.0-RELEASE ====>> Creating 10amd64 fs... done ====>> Fetching base.txz for FreeBSD 10.0-RELEASE amd64 /poudriere/jails/10amd64/fromftp/base.txz 100% of 59 MB 1470 kBps 00m42s ====>> Extracting base.txz... done ====>> Fetching src.txz for FreeBSD 10.0-RELEASE amd64 /poudriere/jails/10amd64/fromftp/src.txz 100% of 107 MB 1476 kBps 01m14s ====>> Extracting src.txz... done ====>> Fetching games.txz for FreeBSD 10.0-RELEASE amd64 /poudriere/jails/10amd64/fromftp/games.txz 100% of 865 kB 734 kBps 00m01s ====>> Extracting games.txz... done ====>> Fetching lib32.txz for FreeBSD 10.0-RELEASE amd64 /poudriere/jails/10amd64/fromftp/lib32.txz 100% of 14 MB 1316 kBps 00m12s ====>> Extracting lib32.txz... done ====>> Cleaning up... done ====>> Jail 10amd64 10.0-RELEASE amd64 is ready to be used # poudriere ports -c -p local ====>> Creating local fs... done ====>> Extracting portstree "local"... Looking up portsnap.FreeBSD.org mirrors... 7 mirrors found. Fetching public key from ec2-eu-west-1.portsnap.freebsd.org... done. Fetching snapshot tag from ec2-eu-west-1.portsnap.freebsd.org... done. Fetching snapshot metadata... done. Fetching snapshot generated at Tue Feb 11 01:07:15 CET 2014: 94a3431f0ce567f6452ffde4fd3d7d3c6e1da143efec76100% of 69 MB 1246 kBps 00m57s Extracting snapshot... done. Verifying snapshot integrity... done. Fetching snapshot tag from ec2-eu-west-1.portsnap.freebsd.org... done. Fetching snapshot metadata... done. Updating from Tue Feb 11 01:07:15 CET 2014 to Tue Feb 11 16:05:20 CET 2014. Fetching 4 metadata patches... done. Applying metadata patches... done. Fetching 0 metadata files... done. Fetching 48 patches. (48/48) 100.00% done. done. Applying patches... done. Fetching 1 new ports or files... done. /poudriere/ports/tester/CHANGES /poudriere/ports/tester/COPYRIGHT [...] Building new INDEX files... done. Em um único computador, o poudriere pode construir ports com várias configurações, em vários jails e de diferentes árvores de ports. Configurações customizadas para estas combinações são chamadas de sets. Veja a seção CUSTOMIZAÇÃO do poudriere8 para detalhes depois que o ports-mgmt/poudriere ou o ports-mgmt/poudriere-devel estiver instalado. A configuração básica mostrada aqui coloca um único jail-, port-, e um set específico make.conf em /usr/local/etc/poudriere.d. O nome do arquivo neste exemplo é criado combinando o nome do jail, o nome do port e o nome do set: 10amd64-local-workstation-make.conf. O sistema make.conf e este novo arquivo são combinados em tempo de compilação para criar o make.conf usado pela jail de compilação. Os pacotes a serem criados são inseridos em 10amd64-local-workstation-pkglist: editors/emacs devel/git ports-mgmt/pkg ... Opções e dependências para os ports especificados são configuradas: # poudriere options -j 10amd64 -p local -z workstation -f 10amd64-local-workstation-pkglist Finalmente, os pacotes são compilados e um repositório de pacotes é criado: # poudriere bulk -j 10amd64 -p local -z workstation -f 10amd64-local-workstation-pkglist Durante a execução, pressionar Ctrlt exibe o estado atual da compilação. O Poudriere também cria arquivos em /poudriere/logs/bulk/jailname que podem ser usados com um servidor da Web para exibir informações de compilação. Após a conclusão, os novos pacotes estão agora disponíveis para instalação a partir do repositório poudriere. Para obter maiores informações sobre o uso do poudriere, consulte poudriere8 e o site principal, . Configurando Clientes do pkg para usar um repositório de Poudriere Embora seja possível usar um repositório personalizado ao lado do repositório oficial, às vezes é útil desativar o repositório oficial. Isso é feito criando um arquivo de configuração que substitui e desativa o arquivo de configuração oficial. Crie o /usr/local/etc/pkg/repos/FreeBSD.conf que deverá conter o seguinte: FreeBSD: { enabled: no } Geralmente, é mais fácil servir um repositório poudriere para as máquinas clientes via HTTP. Configure um servidor da web para servir o diretório de pacotes, por exemplo: /usr/local/poudriere/data/packages/10amd64, onde 10amd64 é o nome da compilação. Se a URL para o repositório de pacotes for: http://pkg.example.com/10amd64, o arquivo de configuração do repositório em /usr/local/etc/pkg/repos/custom.conf ficaria assim: custom: { url: "http://pkg.example.com/10amd64", enabled: yes, } Considerações pós-instalação Independentemente do software ter sido instalado a partir de um pacote binário ou de um port, a maioria dos aplicativos de terceiros requer algum nível de configuração após a instalação. Os seguintes comandos e locais podem ser usados para ajudar a determinar o que foi instalado com o aplicativo. A maioria dos aplicativos instala pelo menos um arquivo de configuração padrão em /usr/local/etc. Nos casos em que um aplicativo possui um grande número de arquivos de configuração, um subdiretório será criado para mantê-los. Geralmente, os arquivos de configuração de exemplo são instalados e terminam com um sufixo, como .sample. Os arquivos de configuração devem ser revisados e possivelmente editados para atender às necessidades do sistema. Para editar um arquivo de amostra, primeiro copie-o sem a extensão .sample. As aplicações que fornecem documentação irão instalá-la em /usr/local/share/doc e muitos aplicativos também instalam páginas de manual. Esta documentação deve ser consultada antes de continuar. Alguns aplicativos executam serviços que devem ser adicionados ao /etc/rc.conf antes de iniciar o aplicativo. Esses aplicativos geralmente instalam um script de inicialização em /usr/local/etc/rc.d. Veja Iniciando Serviços para maiores informações. Por padrão, os aplicativos não executam o script de inicialização durante a instalação, nem executam o script de parada após a desinstalação ou atualização. Essa decisão é deixada para o administrador do sistema. Os usuários de csh1 devem executar rehash para reconstruir a lista dos binários conhecidos nos shells PATH. Use pkg info para determinar quais arquivos, páginas man e binários foram instalados com o aplicativo. Lidando com ports quebrados Quando um port não é compilado ou instalado, tente o seguinte: Procure para ver se há uma correção pendente para o port no Banco de Dados do Relatório de Problemas. Nesse caso, implementar a correção proposta pode corrigir o problema. Peça ajuda ao mantenedor do port. Digite make maintainer no diretório do port ou leia o Makefile do port para encontrar o endereço de e-mail do mantenedor. Lembre-se de incluir a linha $FreeBSD: do Makefile do port e a saída que leva ao erro no e-mail para o mantenedor. Alguns ports não são mantidos por um indivíduo, mas sim por um grupo de mantenedores representado por uma lista de discussão. Muitos, mas não todos, esses endereços se parecem com freebsd-listname@FreeBSD.org. Por favor, leve isso em consideração ao enviar um email. Em particular, os ports mantidos por ports@FreeBSD.org não são mantidos por um indivíduo específico. Em vez disso, quaisquer correções e suporte vêm da comunidade geral que se inscreve nessa lista de discussão. Mais voluntários são sempre necessários! Se não houver resposta ao email, use o Bugzilla para enviar um relatório de bug usando as instruções em Escrevendo Relatórios de Problemas do FreeBSD. Conserte-o! O Porters Handbook inclui informações detalhadas sobre a infra-estrutura da arvore de ports para que você possa corrigir possiveis erros na compilacao de um ports que quebrou ou ocasionou um erro de compilacao ou até mesmo submeta seu próprio projeto! Instale o pacote em vez do port usando as instruções em . O sistema X Window Sinopse Uma instalação padrão do FreeBSD usando o bsdinstall não irá instalar automaticamente uma interface gráfica para o usuário. Este capítulo descreve como instalar e configurar o Xorg, que fornece o sistema X Window open source usado para fornecer um ambiente gráfico. Em seguida, descreve como encontrar e instalar um ambiente de área de trabalho ou um gerenciador de janelas. Os usuários que preferem um método de instalação que configure automaticamente o Xorg e que ofereça uma grande variedade de opções de gerenciadores de janela durante a instalação devem consultar o web site . Para obter maiores informações sobre o hardware de vídeo suportado pelo Xorg, consulte o web site x.org. Depois de ler este capítulo, você saberá: Quais são os vários componentes do Sistema X Window e como eles interoperam. Como instalar e configurar o Xorg. Como instalar e configurar vários gerenciadores de janelas e ambientes de desktop. Como usar fontes TrueType no Xorg. Como configurar seu sistema para usar um sistema de login gráfico (XDM). Antes de ler este capítulo, você deve: Saber como instalar softwares adicionais de terceiros, conforme descrito em . Terminologia Embora não seja necessário entender todos os detalhes dos vários componentes do Sistema X Window e como eles interagem, algum conhecimento básico desses componentes pode ser útil. Servidor X O X foi projetado desde o início para ser centrado em rede e para adotar um modelo cliente-servidor. Neste modelo, o Servidor X é executado no computador que possui o teclado, o monitor e o mouse conectados. A responsabilidade do servidor inclui tarefas como gerenciar o monitor, manipular a entrada do teclado e do mouse e manipular a entrada ou saída de outros dispositivos, como um tablet ou um projetor de vídeo. Isso confunde algumas pessoas, porque a terminologia X é exatamente o oposto do que eles esperam. Eles esperam que o X server seja a grande máquina poderosa no final das contas, e o Ciente X seja a máquina em sua mesa. Cliente X Cada aplicativo X, como o XTerm ou o Firefox, é um cliente. Um cliente envia mensagens para o servidor, como Por favor, desenhe uma janela nessas coordenadas, e o servidor envia de volta mensagens como O usuário apenas clicou no botão OK. Em um ambiente doméstico ou de uma pequena empresa, o servidor X e os clientes X geralmente são executados no mesmo computador. Também é possível executar o servidor X em um computador menos potente e executar os aplicativos X em um sistema mais poderoso. Nesse cenário, a comunicação entre o cliente X e o servidor ocorre através da rede. Gerenciador de janelas O X não dita como as janelas devem se parecer na tela, como movê-las com o mouse, quais teclas devem ser usadas para mover-se entre as janelas, como devem ficar as barras de título em cada janela, se elas têm ou não botões para fechar nelas e assim por diante. Em vez disso, o X delega essa responsabilidade para um gerenciador de janelas separado. Existem dezenas de gerenciadores de janelas disponíveis. Cada gerenciador de janelas oferece uma aparência diferente: alguns oferecem suporte a desktops virtuais, alguns permitem pressionamentos de tecla personalizados para gerenciar a área de trabalho, alguns têm um botão Iniciar e alguns são personalizáveis, permitindo uma alteração completa da aparência da área de trabalho. Os gerenciadores de janelas estão disponíveis na categoria x11-wm da coleção de ports. Cada gerenciador de janelas usa um mecanismo de configuração diferente. Alguns esperam que o arquivo de configuração seja escrito à mão, enquanto outros fornecem ferramentas gráficas para a maioria das tarefas de configuração. Ambiente de desktop O KDE e o GNOME são considerados ambientes de desktop, pois incluem um conjunto completo de aplicativos para executar tarefas comuns de desktop. Estes podem incluir pacotes de escritório, navegadores da web e jogos. Política de foco O gerenciador de janelas é responsável pela política de foco do mouse. Essa política fornece alguns meios para escolher qual janela está recebendo ativamente as teclas digitadas e também deve indicar visivelmente qual janela está ativa no momento. Uma política de foco é chamada click-to-focus. Neste modelo, uma janela fica ativa ao receber um clique do mouse. Na política focus-follows-mouse, a janela que está sob o ponteiro do mouse tem foco e o foco é alterado apontando para outra janela. Se o mouse estiver sobre a janela raiz, esta janela estará focada. No modelo sloppy-focus, se o mouse for movido sobre a janela raiz, a janela usada mais recentemente ainda terá o foco. Com sloppy-focus, o foco só é alterado quando o cursor entra em uma nova janela, e não ao sair da janela atual. Na política de click-to-focus, a janela ativa é selecionada pelo clique do mouse. A janela pode então ser destacada para aparecer na frente de todas as outras janelas. Todas as teclas digitadas serão direcionadas para esta janela, mesmo se o cursor for movido para outra janela. Diferentes gerenciadores de janela suportam diferentes modelos de foco. Todos eles suportam click-to-focus, e a maioria deles também suporta outras políticas. Consulte a documentação do gerenciador de janelas para determinar quais modelos de foco estão disponíveis. Widgets Widget é um termo para todos os itens na interface do usuário que podem ser clicados ou manipulados de alguma forma. Isso inclui botões, caixas de seleção, botões de opção, ícones e listas. Um kit de ferramentas de widget é um conjunto de widgets usado para criar aplicativos gráficos. Existem vários toolkits de widgets populares, incluindo o Qt, usado pelo KDE, e o GTK+, usado pelo GNOME. Como resultado, os aplicativos terão uma aparência e comportamentos diferentes, dependendo de qual kit de ferramentas de widget foi usado para criar o aplicativo. Instalando o <application>Xorg</application> No FreeBSD, o Xorg pode ser instalado como um pacote ou port. O pacote binário pode ser instalado rapidamente, mas com menos opções de personalização: # pkg install xorg Para compilar e instalar a partir da Coleção de Ports: # cd /usr/ports/x11/xorg # make install clean Qualquer uma dessas instalações resulta no sistema completo do Xorg sendo instalado. Pacotes binários são a melhor opção para a maioria dos usuários. Uma versão menor do sistema X adequada para usuários experientes está disponível em x11/xorg-minimal. A maioria dos documentos, bibliotecas e aplicativos não será instalada. Algumas aplicações requerem esses componentes adicionais para funcionarem. Configuração do <application>Xorg</application> Warren Block Originalmente contribuído por Xorg Xorg Inicio Rápido O Xorg suporta as placas de vídeo, teclados e dispositivos USB mais comuns. Placas de vídeo, monitores e dispositivos de entrada são detectados automaticamente e não exigem nenhuma configuração manual. Não crie o xorg.conf ou execute o passo a menos que a configuração automática falhe. Se o Xorg tiver sido usado neste computador antes, mova ou remova qualquer arquivo de configuração existente: # mv /etc/X11/xorg.conf ~/xorg.conf.etc # mv /usr/local/etc/X11/xorg.conf ~/xorg.conf.localetc Adicione o usuário que executará o Xorg ao grupo video ou wheel para ativar a aceleração 3D quando disponível. Para adicionar o usuário jru ao grupo que estiver disponível: # pw groupmod video -m jru || pw groupmod wheel -m jru O gerenciador de janelas TWM é incluído por padrão. Ele é iniciado quando o Xorg é iniciado: % startx Em algumas versões mais antigas do FreeBSD, o console do sistema deve ser definido como vt4 antes que a volta para o console de texto funcione corretamente. Veja . Grupo de Usuários para Vídeo Acelerado O acesso ao /dev/dri é necessário para permitir a aceleração 3D nas placas de vídeo. Geralmente é mais simples adicionar o usuário que estará executando o X no grupo video ou no wheel. Aqui, o pw8 é usado para adicionar o usuário slurms ao grupo video, ou ao grupo wheel se não houver nenhum grupo video: # pw groupmod video -m slurms || pw groupmod wheel -m slurms Configuração do Modo Kernel (<acronym>KMS</acronym>) Quando o computador alterna a exibição do console para uma resolução de tela mais alta para o X, ele deve definir o modo da saída de vídeo. Versões recentes do Xorg usam um sistema dentro do kernel para fazer essas mudanças de modo mais eficiente. Versões mais antigas do FreeBSD usam o sc 4, que não tem conhecimento do sistema KMS. O resultado final é que depois de fechar o X, o console do sistema fica em branco, embora ainda esteja funcionando. O console vt 4 mais recente evita esse problema. Adicione esta linha ao /boot/loader.conf para ativar o vt 4: kern.vty=vt Arquivos de Configuração A configuração manual geralmente não é necessária. Por favor, não crie manualmente arquivos de configuração, a menos que a autoconfiguração não funcione. Diretório O Xorg procura em vários diretórios por arquivos de configuração. O /usr/local/etc/X11/ é o diretório recomendado para esses arquivos no FreeBSD. Usar esse diretório ajuda a manter os arquivos dos aplicativos separados dos arquivos do sistema operacional. Armazenar arquivos de configuração no diretório legado /etc/X11/ ainda funciona. No entanto, isso combina arquivos de aplicativos com os arquivos básicos do FreeBSD e não é recomendado. Arquivos Únicos ou Múltiplos É mais fácil usar multiplos arquivos em que cada um controla uma configuração específica ao invés do único e tradicional xorg.conf. Esses arquivos são armazenados no subdiretório xorg.conf.d/ do diretório principal do arquivo de configuração. O caminho completo é tipicamente /usr/local/etc/X11/xorg.conf.d/. Exemplos desses arquivos serão mostrados posteriormente nesta seção. O tradicional e único arquivo xorg.conf ainda funciona, mas não é tão claro e nem tão flexível quanto vários arquivos no subdiretório xorg.conf.d/. Placas de Vídeo Devido as mudanças feitas nas versões recentes do FreeBSD, agora é possível usar drivers gráficos fornecidos pelo Framework do Ports, assim como pelos pacotes. Assim sendo, os usuários podem usar um dos seguintes drivers disponíveis em graphics/drm-kmod. Intel KMS driver Radeon KMS driver AMD KMS driver A aceleração 2D e 3D é suportada na maioria das placas gráficas do driver Intel KMS fornecidas pela Intel. Nome do driver: i915kms A aceleração 2D e 3D é suportada na maioria das placas gráficas de driver Radeon KMS mais antigas fornecidas pela AMD. Nome do Driver: radeonkms A aceleração 2D e 3D é suportada nas mais recentes placas gráficas do driver AMD KMS fornecidas pela AMD. Nome do Driver: amdgpu Para referência, veja ou para uma lista das GPUs suportadas. Intel A aceleração 3D é suportada na maioria dos chipsets gráficos da Intel até o Ivy Bridge (HD Graphics 2500, 4000 e P4000), incluindo Iron Lake (HD Graphics) e Sandy Bridge (HD Graphics 2000) . Nome do driver: intel Para referência, veja . AMD Radeon Aceleração 2D e 3D é suportada em placas Radeon das mais antigas até a série HD6000. Nome do Driver: radeon Para referência, veja . NVIDIA Vários drivers da NVIDIA estão disponíveis na categoria x11 da Coleção de Ports. Instale o driver que corresponde à sua placa de vídeo. Para referência, veja . Gráficos Híbridos de Combinação Alguns notebooks adicionam unidades de processamento gráfico adicionais àquelas incorporadas ao chipset ou ao processador. O Optimus combina o hardware da Intel e da NVIDIA. O Switchable Graphics ou Hybrid Graphics são uma combinação dos processadores Intel ou AMD e uma GPU AMD Radeon. As implementações desses sistemas gráficos híbridos variam e o Xorg no FreeBSD não é capaz de controlar todas as versões deles. Alguns computadores fornecem uma opção no BIOS para desativar um dos adaptadores gráficos ou selecionar um modo discreto que pode ser usado com um dos drivers de placa de vídeo padrão. Por exemplo, às vezes é possível desativar a GPU NVIDIA em um sistema Optimus. O vídeo Intel pode então ser usado com um driver Intel. Configurações de BIOS dependem do modelo do computador. Em algumas situações, ambas GPUs podem ser deixadas ativadas, mas criar um arquivo de configuração que use apenas a GPU principal na seção Device é o suficiente para tornar esse sistema funcional. Outras placas de vídeo Drivers para algumas placas de vídeo menos comuns podem ser encontrados no diretório x11-drivers da Coleção de Ports. PLacas que não são suportadas por um driver específico ainda podem ser usadas com o driver x11-drivers/xf86-video-vesa. Este driver é instalado pelo x11/xorg. Ele também pode ser instalado manualmente como x11-drivers/xf86-video-vesa. O Xorg tenta usar este driver quando um driver específico não é encontrado para a placa de vídeo. O x11-drivers/xf86-video-scfb é um driver de vídeo não especializado similar que funciona em muitos computadores UEFI e ARM. Configurando o driver de vídeo em um arquivo Para definir o driver Intel em um arquivo de configuração: Selecione o driver de vídeo <trademark class="registered">Intel</trademark> em um arquivo /usr/local/etc/X11/xorg.conf.d/driver-intel.conf Section "Device" Identifier "Card0" Driver "intel" # BusID "PCI:1:0:0" EndSection Se mais de uma placa de vídeo estiver presente, o identificador BusID pode ser descomentado e configurado para selecionar a placa desejada. Uma lista de barramento de placa de vídeo ID pode ser exibida com pciconf -lv | grep -B3 display. Para definir o driver Radeon em um arquivo de configuração: Selecione o driver de vídeo Radeon em um arquivo /usr/local/etc/X11/xorg.conf.d/driver-radeon.conf Section "Device" Identifier "Card0" Driver "radeon" EndSection Para definir o driver VESA em um arquivo de configuração: Selecione o driver de vídeo <acronym>VESA</acronym> em um arquivo /usr/local/etc/X11/xorg.conf.d/driver-vesa.conf Section "Device" Identifier "Card0" Driver "vesa" EndSection Para definir o driver scfb para uso com um computador UEFI ou ARM: Selecione o driver de vídeo <literal>scfb</literal> em um arquivo /usr/local/etc/X11/xorg.conf.d/driver-scfb.conf Section "Device" Identifier "Card0" Driver "scfb" EndSection Monitores Quase todos os monitores suportam o padrão Extended Display Identification Data (EDID). O Xorg usa o EDID para se comunicar com o monitor e detectar as resoluções e taxas de atualização suportadas. Em seguida, seleciona a combinação mais adequada de configurações para usar com esse monitor. Outras resoluções suportadas pelo monitor podem ser escolhidas definindo a resolução desejada nos arquivos de configuração, ou após o servidor X ter sido iniciado com xrandr1 . Usando xrandr1 Execute o xrandr1 sem nenhum parâmetro para ver uma lista de saídas de vídeo e modos de monitor detectados: % xrandr Screen 0: minimum 320 x 200, current 3000 x 1920, maximum 8192 x 8192 DVI-0 connected primary 1920x1200+1080+0 (normal left inverted right x axis y axis) 495mm x 310mm 1920x1200 59.95*+ 1600x1200 60.00 1280x1024 85.02 75.02 60.02 1280x960 60.00 1152x864 75.00 1024x768 85.00 75.08 70.07 60.00 832x624 74.55 800x600 75.00 60.32 640x480 75.00 60.00 720x400 70.08 DisplayPort-0 disconnected (normal left inverted right x axis y axis) HDMI-0 disconnected (normal left inverted right x axis y axis) Isso mostra que a saída DVI-0 está sendo usada para exibir uma resolução de tela de 1920x1200 pixels a uma taxa de atualização de cerca de 60 Hz. Os monitores não estão conectados aos conectores DisplayPort-0 e HDMI-0. Qualquer um dos outros modos de exibição pode ser selecionado com xrandr 1. Por exemplo, para mudar para 1280x1024 a 60 Hz: % xrandr --mode 1280x1024 --rate 60 Uma tarefa comum é usar a saída de vídeo externa em um notebook para um projetor de vídeo. O tipo e a quantidade de conectores de saída variam entre os dispositivos, e o nome dado a cada saída varia de driver para driver. O que um driver chama de HDMI-1, outro pode chamar de HDMI1. Portanto, o primeiro passo é executar xrandr1 para listar todas as saídas disponíveis: % xrandr Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192 LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 193mm 1366x768 60.04*+ 1024x768 60.00 800x600 60.32 56.25 640x480 59.94 VGA1 connected (normal left inverted right x axis y axis) 1280x1024 60.02 + 75.02 1280x960 60.00 1152x864 75.00 1024x768 75.08 70.07 60.00 832x624 74.55 800x600 72.19 75.00 60.32 56.25 640x480 75.00 72.81 66.67 60.00 720x400 70.08 HDMI1 disconnected (normal left inverted right x axis y axis) DP1 disconnected (normal left inverted right x axis y axis) Quatro saídas foram encontradas: os conectores LVDS1 e VGA1, HDMI1 e DP1 do painel interno. O projetor foi conectado à saída VGA1. O xrandr1 agora é usado para definir essa saída para a resolução nativa do projetor e adicionar o espaço adicional à direita da área de trabalho: % xrandr --output VGA1 --auto --right-of LVDS1 A opção --auto escolhe a resolução e a taxa de atualização detectadas pelo EDID. Se a resolução não for detectada corretamente, um valor fixo pode ser fornecido com --mode em vez da instrução --auto. Por exemplo, a maioria dos projetores pode ser usada com uma resolução de 1024x768, que é definida com --mode 1024x768. O xrandr1 geralmente é executado a partir do .xinitrc para definir o modo apropriado quando o X é iniciado. Configurando a resolução do monitor em um arquivo Para definir uma resolução de tela de 1024x768 em um arquivo de configuração: Defina a resolução de tela em um arquivo /usr/local/etc/X11/xorg.conf.d/screen-resolution.conf Section "Screen" Identifier "Screen0" Device "Card0" SubSection "Display" Modes "1024x768" EndSubSection EndSection Os poucos monitores que não possuem EDID podem ser configurados setando o HorizSync e o VertRefresh para o intervalo de frequências suportado pelo monitor. Configurando Manualmente as Frequências do Monitor /usr/local/etc/X11/xorg.conf.d/monitor0-freq.conf Section "Monitor" Identifier "Monitor0" HorizSync 30-83 # kHz VertRefresh 50-76 # Hz EndSection Dispositivos de Entrada Teclados Layout do Teclado A localização padronizada das teclas em um teclado é chamada de layout. Layouts e outros parâmetros ajustáveis são listados em xkeyboard-config 7. Um layout dos Estados Unidos é o padrão. Para selecionar um layout alternativo, defina as opções XkbLayout e XkbVariant em um InputClass. Isso será aplicado a todos os dispositivos de entrada que correspondam à classe. Este exemplo seleciona um layout de teclado francês com a variante oss. Definindo um layout de teclado /usr/local/etc/X11/xorg.conf.d/keyboard-fr-oss.conf Section "InputClass" Identifier "KeyboardDefaults" Driver "keyboard" MatchIsKeyboard "on" Option "XkbLayout" "fr" Option "XkbVariant" "oss" EndSection Definindo vários layouts de teclado Define os layouts de teclado para Estados Unidos, Espanhol e Ucraniano. Alterne entre esses layouts pressionando Alt Shift . O x11/xxkb ou x11/sbxkb pode ser usado para um melhor controle da mudança de layout e dos indicadores do layout atual. /usr/local/etc/X11/xorg.conf.d/kbd-layout-multi.conf Section "InputClass" Identifier "All Keyboards" MatchIsKeyboard "yes" Option "XkbLayout" "us, es, ua" EndSection Fechando o Xorg pelo teclado X pode ser fechado com uma combinação de teclas. Por padrão, essa combinação de teclas não está definida porque entra em conflito com os comandos do teclado para alguns aplicativos. Ativar essa opção requer alterações na seção InputDevice do teclado: Ativando o fechamento de X pelo teclado /usr/local/etc/X11/xorg.conf.d/keyboard-zap.conf Section "InputClass" Identifier "KeyboardDefaults" Driver "keyboard" MatchIsKeyboard "on" Option "XkbOptions" "terminate:ctrl_alt_bksp" EndSection Mouse e Dispositivos Similares Muitos parâmetros do mouse podem ser ajustados com opções de configuração. Veja mousedrv4 para obter uma lista completa. Botões do Mouse O número de botões em um mouse pode ser definido na seção InputDevice do xorg.conf. Para definir o número de botões para 7: Definindo o número de botões do mouse /usr/local/etc/X11/xorg.conf.d/mouse0-buttons.conf Section "InputDevice" Identifier "Mouse0" Option "Buttons" "7" EndSection Configuração manual Em alguns casos, a autoconfiguração do Xorg não funciona com alguns hardwares específicos, ou uma configuração diferente é desejada. Para esses casos, um arquivo de configuração personalizado pode ser criado. Não crie arquivos de configuração manualmente, a menos que seja necessário. A configuração manual desnecessária pode impedir o funcionamento adequado. Um arquivo de configuração pode ser gerado pelo Xorg baseado no hardware detectado. Esse arquivo geralmente é um ponto de partida útil para configurações personalizadas. Gerando um arquivo xorg.conf: # Xorg -configure O arquivo de configuração é salvo em /root/xorg.conf.new. Faça as alterações desejadas e teste esse arquivo com: # Xorg -config /root/xorg.conf.new Após a nova configuração ter sido ajustada e testada, ela pode ser dividida em arquivos menores no diretorio, /usr/local/etc/X11/xorg.conf.d/. Usando fontes no <application>Xorg</application> Fontes Type1 As fontes padrões que vem com o Xorg não são adequadas para muitas aplicações desktop. As fontes grandes aparecem irregulares e com aparência não profissional, e as fontes pequenas são quase ilegíveis. Contudo existem muitas fontes Type1 (PostScript) gratuitas de alta qualidade prontas para uso no Xorg. Por exemplo, a coleção de fontes URW (x11-fonts/urwfonts) inclui versões de alta qualidade de fontes type1 padrão (Times Roman, Helvetica, Palatino e outras). A coleção Freefonts (x11-fonts/freefonts) inclui muito mais fontes, mas a maioria delas direcionadas para uso em softwares gráficos como o Gimp, e não são tão completas para servir como fontes de tela. Além disso, o Xorg pode ser configurado para usar fontes TrueType com um minimo esforço. Para maiores detalhes sobre isso veja a página de manual do X7 ou . Para instalar as coleções de fontes Type1 usando pacotes binários, execute os seguintes comandos: # pkg install urwfonts Como alternativa, para compilar a partir da coleção de Ports, execute os seguintes comandos: # cd /usr/ports/x11-fonts/urwfonts # make install clean Proceda da mesma forma com a freefont ou outras coleções. Para que o servidor X detecte essas fontes, adicione uma linha apropriada ao arquivo de configuração do servidor X (/etc/X11/xorg.conf): FontPath "/usr/local/share/fonts/urwfonts/" Alternativamente, na linha de comando de execução da sessão X: % xset fp+ /usr/local/share/fonts/urwfonts % xset fp rehash Isso funcionará, mas será perdido quando a sessão X for fechada, a menos que seja adicionada ao arquivo de inicialização (~/.xinitrc para uma sessão startx normal ou ~/.xsession ao efetuar login através de um gerenciador de login gráfico como o XDM). Uma terceira forma é usar o novo /usr/local/etc/fonts/local.conf, como demonstrado em . Fontes <trademark class="registered">TrueType</trademark> TrueType Fonts fonts TrueType O Xorg tem suporte nativo para renderizar fontes TrueType. Existem dois módulos diferentes que podem ativar essa funcionalidade. O módulo freetype é usado neste exemplo porque é mais consistente com os outros backends de renderização de fonte. Para habilitar o módulo freetype, basta adicionar a seguinte linha à seção "Module" do /etc/X11/xorg.conf. Load "freetype" Agora crie um diretório para as fontes TrueType (por exemplo, /usr/local/share/fonts/TrueType) e copie todas as fontes TrueType para este diretório. Tenha em mente que as fontes TrueType não podem ser obtidas diretamente de um Apple Mac; elas devem estar no formato UNIX/MS-DOS/Windows para uso pelo Xorg. Uma vez que os arquivos foram copiados para este diretório, use mkfontdir para criar um fonts.dir, para que o renderizador de fontes do X saiba que esses novos arquivos foram instalados. O mkfontdir pode ser instalado como um pacote binário com o comando: # pkg install mkfontdir Em seguida, crie um índice de arquivos de fontes X em um diretório: # cd /usr/local/share/fonts/TrueType # mkfontdir Agora adicione o diretório TrueType ao caminho da fonte. Isso é exatamente o mesmo descrito em : % xset fp+ /usr/local/share/fonts/TrueType % xset fp rehash ou adicione uma linha de FontPath ao xorg.conf. Agora, o Gimp, o Apache OpenOffice e todos os outros aplicativos X devem reconhecer as fontes TrueType instaladas. Fontes extremamente pequenas (como o texto em uma tela de alta resolução em uma página da Web) e fontes extremamente grandes (dentro do StarOffice ) ficarão muito melhores agora. Fontes com Anti-Alias anti-aliased fonts fonts anti-aliased Todas as fontes do Xorg que são encontradas em /usr/local/share/fonts/ e ~/.fonts/ são automaticamente disponibilizadas para anti-aliasing para aplicativos compatíveis com Xft-aware. Os aplicativos mais recentes são compatíveis com o Xft-aware, incluindo o KDE, o GNOME e o Firefox. Para controlar quais fontes são anti-aliased, ou para configurar as propriedades do anti-alias, crie (ou edite, se já existir) o arquivo /usr/local/etc/fonts/local.conf. Vários recursos avançados do sistema de fontes Xft podem ser ajustados usando este arquivo; Esta seção descreve apenas algumas possibilidades simples. Para maiores detalhes, por favor veja fonts-conf 5. XML Este arquivo deve estar no formato XML. Preste muita atenção ao uso de letras maiusculas e minusculas e certifique-se de que todas as tags estejam corretamente fechadas. O arquivo começa com o cabeçalho XML usual seguido por uma definição DOCTYPE e, em seguida, a tag <fontconfig>: <?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> Como dito anteriormente, todas as fontes em /usr/local/share/fonts/ e ~/.fonts/ já estão disponíveis para aplicativos Xft-aware. Para adicionar outro diretório fora dessas duas árvores de diretórios, adicione uma linha como essa a /usr/local/etc/fonts/local.conf: <dir>/path/to/my/fonts</dir> Depois de adicionar novas fontes e especialmente novos diretórios de fontes, reconstrua os caches de fontes: # fc-cache -f O anti-aliasing torna as bordas um pouco confusas, o que torna o texto muito pequeno mais legível e remove os serrilhados do texto grande, mas pode causar fadiga ocular se aplicado ao texto normal. Para excluir tamanhos de fonte menores que 14 pontos do anti-aliasing, inclua estas linhas: <match target="font"> <test name="size" compare="less"> <double>14</double> </test> <edit name="antialias" mode="assign"> <bool>false</bool> </edit> </match> <match target="font"> <test name="pixelsize" compare="less" qual="any"> <double>14</double> </test> <edit mode="assign" name="antialias"> <bool>false</bool> </edit> </match> fonts spacing O espaçamento para algumas fontes monoespaçadas também pode ser inadequado com o anti-aliasing. Este parece ser um problema com o KDE, em particular. Uma possível correção é forçar o espaçamento dessas fontes para que seja 100. Adicione essas linhas: <match target="pattern" name="family"> <test qual="any" name="family"> <string>fixed</string> </test> <edit name="family" mode="assign"> <string>mono</string> </edit> </match> <match target="pattern" name="family"> <test qual="any" name="family"> <string>console</string> </test> <edit name="family" mode="assign"> <string>mono</string> </edit> </match> (isto cria um apelido para outros nomes comuns para fontes fixas como "mono"), e então adicione: <match target="pattern" name="family"> <test qual="any" name="family"> <string>mono</string> </test> <edit name="spacing" mode="assign"> <int>100</int> </edit> </match> Determinadas fontes, como Helvetica, podem ter um problema com o anti-alias. Geralmente isso se manifesta como uma fonte que parece cortada ao meio na vertical. Na pior das hipóteses, pode causar falhas nos aplicativos. Para evitar isso, considere adicionar o seguinte ao local.conf: <match target="pattern" name="family"> <test qual="any" name="family"> <string>Helvetica</string> </test> <edit name="family" mode="assign"> <string>sans-serif</string> </edit> </match> Depois de editar o local.conf, certifique-se de finalizar o arquivo com a tag </fontconfig>. Não fazer isso fará com que as alterações sejam ignoradas. Os usuários podem adicionar configurações personalizadas criando seus próprios arquivos ~/.config/fontconfig/fonts.conf. Este arquivo usa o mesmo formato XML descrito acima. LCD screen Fonts LCD screen Um último ponto: com uma tela de LCD, a amostragem de sub-pixels pode ser desejada. Isso basicamente trata os componentes vermelho, verde e azul (separados horizontalmente) separadamente para melhorar a resolução horizontal; os resultados podem ser dramáticos. Para habilitar isso, adicione a linha em algum lugar do local.conf: <match target="font"> <test qual="all" name="rgba"> <const>unknown</const> </test> <edit name="rgba" mode="assign"> <const>rgb</const> </edit> </match> Dependendo do tipo de display, o rgb pode precisar ser alterado para bgr, vrgb ou vbgr: experimente e veja qual funciona melhor. O Gerenciador de Display X Seth Kingsley Contribuído Originalmente por X Display Manager O Xorg fornece um Gerenciador de Display X, o XDM, que pode ser usado para o gerenciamento de sessões de login. O XDM fornece uma interface gráfica para escolher em qual servidor de display se conectar para inserir informações de autorização, tal como uma combinação de login e senha. Esta seção demonstra como configurar o X Display Manager no FreeBSD. Alguns ambientes de desktop fornecem seu próprio gerenciador de login gráfico. Consulte para instruções sobre como configurar o GNOME Display Manager e para instruções sobre como configurar o KDE Display Manager. Configurando o <application>XDM</application> Para instalar o XDM, use o pacote ou ports x11/xdm. Uma vez instalado, o XDM pode ser configurado para ser executado quando a máquina for inicializada editando esta entrada em /etc/ttys: ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secure Altere o off para on e salve a edição. O ttyv8 nesta entrada indica que o XDM será executado no nono terminal virtual. O diretório de configuração do XDM está localizado em /usr/local/lib/X11/xdm. Esse diretório contém diversos arquivos usados para alterar o comportamento e a aparência do XDM, bem como alguns scripts e programas usados para configurar a área de trabalho quando o XDM está em execução. resume a função de cada um desses arquivos. A sintaxe exata e o uso desses arquivos são descritos em xdm1. Arquivos de Configuração do XDM Arquivo Descrição Xaccess O protocolo para conectar ao XDM é chamado de X Display Manager Connection Protocol (XDMCP). Este arquivo é um conjunto de regras de autorização do cliente para controlar conexões de XDMCP de máquinas remotas. Por padrão, esse arquivo não permite a conexão de nenhum cliente remoto. Xresources Este arquivo controla a aparência do seletor de display XDM e das telas de login. A configuração padrão é uma janela de login retangular simples com o nome do host da máquina exibido na parte superior em uma fonte grande e Login: e Senha: solicitado abaixo. O formato deste arquivo é idêntico ao arquivo app-defaults descrito na documentação do Xorg. Xservers A lista de exibições locais e remotas que o seletor deve fornecer como opções de login. Xsession Script de sessão padrão para logins que é executado pelo XDM após um usuário realizar o login. Isso aponta para um script de sessão personalizado em ~/.xsession. Xsetup_* Script para iniciar automaticamente os aplicativos antes de exibir as interfaces de seleção ou de login. Há um script para cada exibição sendo usada, denominada Xsetup_*, em que * é o número de exibição local. Geralmente, esses scripts executam um ou dois programas em segundo plano, como xconsole. xdm-config Configuração global para todos os monitores executados nesta máquina. xdm-errors Contém os erros gerados pelo programa do servidor. Se um display que o XDM está tentando iniciar travar, procure neste arquivo por mensagens de erro. Essas mensagens também são gravadas no ~/.xsession-errors do usuário. xdm-pid O ID do processo XDM em execução.
Configurando o acesso remoto Por padrão, somente usuários no mesmo sistema podem efetuar login usando o XDM. Para permitir que os usuários em outros sistemas se conectem ao servidor de Display, edite as regras de controle de acesso e ative o listener de conexão. Para configurar o XDM para escutar qualquer conexão remota, comente a linha DisplayManager.requestPort em /usr/local/etc/X11/xdm/xdm-config colocando um ! na frente dele: ! SECURITY: do not listen for XDMCP or Chooser requests ! Comment out this line if you want to manage X terminals with xdm DisplayManager.requestPort: 0 Salve as edições e reinicie o XDM. Para restringir o acesso remoto, veja as entradas de exemplo em /usr/local/lib/X11/xdm/Xaccess e consulte xdm1 para mais informações.
Ambientes de desktop Valentino Vaschetto Contribuído por Esta seção descreve como instalar três ambientes de desktop populares em um sistema FreeBSD. Um ambiente de desktop pode variar de um gerenciador de janelas simples a um conjunto completo de aplicativos de desktop. Mais de cem ambientes de área de trabalho estão disponíveis na categoria x11-wm da Coleção de Ports. GNOME GNOME O GNOME é um ambiente de área de trabalho amigável. Ele inclui um painel para iniciar aplicativos e exibir status, uma área de trabalho, um conjunto de ferramentas e aplicativos e um conjunto de convenções que facilitam a cooperação entre os aplicativos e a compatibilidade entre eles. Mais informações sobre o GNOME no FreeBSD podem ser encontradas em https://www.FreeBSD.org/gnome. Esse site contém documentação adicional sobre instalação, configuração e gerenciamento do GNOME no FreeBSD. Este ambiente de desktop pode ser instalado a partir de um pacote binario: # pkg install gnome3 Para instalar o GNOME a partir do ports, use o seguinte comando. O GNOME é um aplicativo grande e levará algum tempo para compilar, mesmo em um computador rápido. # cd /usr/ports/x11/gnome3 # make install clean O GNOME requer que o /proc seja montado. Adicione esta linha ao /etc/fstab para montar este sistema de arquivos automaticamente durante a inicialização do sistema: proc /proc procfs rw 0 0 O GNOME usa o D-Bus e o HAL para barramento de mensagens e abstração de hardware. Esses aplicativos são instalados automaticamente como dependências do GNOME. Habilite-os em /etc/rc.conf para que eles sejam iniciados quando o sistema inicializar: dbus_enable="YES" hald_enable="YES" Após a instalação, configure o Xorg para iniciar o GNOME. A maneira mais fácil de fazer isso é habilitar o Gerenciador de Display do GNOME, o GDM, que é instalado como parte do pacote ou ports do GNOME. Pode ser ativado adicionando esta linha ao /etc/rc.conf: gdm_enable="YES" Geralmente é desejável também iniciar todos os serviços do GNOME. Para conseguir isso, adicione uma segunda linha ao /etc/rc.conf: gnome_enable="YES" O GDM será iniciado automaticamente quando o sistema for inicializado. Um segundo método para iniciar o GNOME é digitar startx na linha de comando depois de configurar o ~/.xinitrc. Se este arquivo já existir, substitua a linha que inicia o gerenciador de janelas atual por uma que inicie o /usr/local/bin/gnome-session. Se este arquivo não existir, crie-o com este comando: % echo "exec /usr/local/bin/gnome-session" > ~/.xinitrc Um terceiro método é usar o XDM como o gerenciador de Display. Neste caso, crie um executável ~/.xsession: % echo "exec /usr/local/bin/gnome-session" > ~/.xsession KDE KDE O KDE é outro ambiente de trabalho fácil de usar. Essa área de trabalho fornece um conjunto de aplicativos com aparência e comportamento consistentes, um menu e barras de ferramentas padronizadas, atalhos de teclado, esquemas de cores, internacionalização e uma configuração de área de trabalho centralizada e orientada a diálogos. Mais informações sobre o KDE podem ser encontradas em http://www.kde.org/. Para informações específicas do FreeBSD, consulte http://freebsd.kde.org. Para instalar o pacote KDE, digite: # pkg install x11/kde5 Para instalar o KDE via ports, use o seguinte comando. A instalação do ports fornecerá um menu para selecionar quais componentes instalar. O KDE é um aplicativo grande e levará algum tempo para compilar, mesmo em um computador rápido. # cd /usr/ports/x11/kde5 # make install clean O KDE requer que o /proc esteja montado. Adicione esta linha ao /etc/fstab para montar este sistema de arquivos automaticamente durante a inicialização do sistema: proc /proc procfs rw 0 0 O KDE usa o D-Bus e o HAL para barramento de mensagens e abstração de hardware. Estas aplicações são automaticamente instaladas como dependências do KDE. Habilite-os em /etc/rc.conf para que eles sejam iniciados quando o sistema inicializar: dbus_enable="YES" hald_enable="YES" KDE display manager Desde o KDE Plasma 5, o Gerenciador de Display do KDE, KDM, não é mais desenvolvido. Uma possível substituição é o SDDM. Para instalá-lo, digite: # pkg install x11/sddm Adicione esta linha em /etc/rc.conf: sddm_enable="YES" Um segundo método para iniciar o KDE Plasma é digitar startx na linha de comando. Para que isso funcione, a seguinte linha é necessária em ~/.xinitrc: exec ck-launch-session startplasma-x11 Um terceiro método para iniciar o KDE Plasma é através do XDM. Para fazer isso, crie um arquivo executável ~/.xsession da seguinte maneira: % echo "exec ck-launch-session startplasma-x11" > ~/.xsession Uma vez iniciado o KDE Plasma , consulte o sistema de ajuda integrado para obter mais informações sobre como usar seus diversos menus e aplicativos. Xfce O Xfce é um ambiente de desktop baseado no kit de ferramentas GTK+ usado pelo GNOME. No entanto, é mais leve e fornece um desktop simples, eficiente e fácil de usar. É totalmente configurável, possui um painel principal com menus, applets e lançadores de aplicativos, fornece um gerenciador de arquivos e um gerenciador de som e é personalizável. Como é rápido, leve e eficiente, é ideal para máquinas mais antigas ou mais lentas com limitações de memória. Mais informações sobre o Xfce podem ser encontradas em http://www.xfce.org. Para instalar o pacote Xfce: # pkg install xfce Alternativamente , para compilar o port: # cd /usr/ports/x11-wm/xfce4 # make install clean O Xfce usa o D-Bus para barramento de mensagens. Este aplicativo é instalado automaticamente como dependência do Xfce. Habilite-o em /etc/rc.conf para que ele seja iniciado quando o sistema inicializar: dbus_enable="YES" Ao contrário do GNOME ou KDE, o Xfce não disponibiliza seu próprio gerenciador de login. Para iniciar o Xfce à partir da linha de comando digitando startx, mas primeiro adicione sua entrada ao ~/.xinitrc: % echo ". /usr/local/etc/xdg/xfce4/xinitrc" > ~/.xinitrc Um método alternativo é usar o XDM. Para configurar este método, crie um executável ~/.xsession: % echo ". /usr/local/etc/xdg/xfce4/xinitrc" > ~/.xsession Instalando o Compiz Fusion Uma maneira de tornar o uso de um computador desktop mais agradável é com bons efeitos 3D. Instalar o pacote Compiz Fusion é fácil, mas a configuração requer alguns passos que não estão descritos na documentação do ports. Configurando o Driver nVidia no FreeBSD Os efeitos da área de trabalho podem causar uma carga considerável na placa gráfica. Para uma placa gráfica baseada na nVidia, o driver proprietário é necessário para um bom desempenho. Usuários de outras placas gráficas podem pular esta seção e continuar com a configuração do xorg.conf. Para determinar qual o driver nVidia é necessário, consulte a Perguntas frequentes sobre o assunto. Tendo determinado o driver correto para usar em sua placa gráfica, a instalação é tão simples quanto instalar qualquer outro pacote. Por exemplo, para instalar o driver mais recente: # pkg install x11/nvidia-driver O driver irá criar um módulo do kernel, que precisa ser carregado na inicialização do sistema. Adicione a seguinte linha ao /boot/loader.conf: nvidia_load="YES" Para carregar imediatamente o módulo no kernel em execução, você pode executar o comando kldload nvidia. No entanto, foi observado que algumas versões do Xorg não funcionarão corretamente se o driver não for carregado no momento da inicialização. Desta forma, depois de editar o /boot/loader.conf, é recomendado reiniciar o sistema. Com o módulo do kernel carregado, você normalmente só precisa alterar uma única linha no xorg.conf para habilitar o driver proprietário: Encontre a seguinte linha no /etc/X11/xorg.conf: Driver "nv" e mude para: Driver "nvidia" Inicie a GUI como de costume, e você será saudado pelo splash da nVidia. Tudo deve funcionar como de costume. Configurando o xorg.conf para Efeitos de Desktop Para ativar o Compiz Fusion, o /etc/X11/xorg.conf precisa ser modificado: Adicione a seguinte seção para habilitar os efeitos compostos: Section "Extensions" Option "Composite" "Enable" EndSection Localize a seção Screen, que deve ser semelhante à abaixo: Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" ... e adicione as duas linhas seguintes (após Monitor): DefaultDepth 24 Option "AddARGBGLXVisuals" "True" Localize a Subsection que se refere à resolução da tela que você deseja usar. Por exemplo, se você deseja usar 1280x1024, localize a seção a seguir. Se a resolução desejada não aparecer em nenhuma subseção, você pode adicionar a entrada relevante à mão: SubSection "Display" Viewport 0 0 Modes "1280x1024" EndSubSection Uma profundidade de cor de 24 bits é necessária para a composição do desktop, altere a subseção acima para: SubSection "Display" Viewport 0 0 Depth 24 Modes "1280x1024" EndSubSection Finalmente, confirme que os módulos glx e extmod estão carregados na seção Module: Section "Module" Load "extmod" Load "glx" ... A configuração acima pode ser feita automaticamente com o x11/nvidia-xconfig, executando como root: # nvidia-xconfig --add-argb-glx-visuals # nvidia-xconfig --composite # nvidia-xconfig --depth=24 Instalando e Configurando o Compiz Fusion Instalar o Compiz Fusion é tão simples quanto qualquer outro pacote: # pkg install x11-wm/compiz-fusion Quando a instalação estiver concluída, inicie o Desktop Gráfico e, em um terminal, digite os seguintes comandos (como usuário normal): % compiz --replace --sm-disable --ignore-desktop-hints ccp & % emerald --replace & Sua tela piscará por alguns segundos, pois o gerenciador de janelas (por exemplo, Metacity se você estiver usando o GNOME) será substituído pelo Compiz Fusion. O Emerald cuida das decorações da janela (isto é, botões de fechar, minimizar, maximizar, barras de título e assim por diante). Você pode converter isso em um script trivial e executá-lo na inicialização automaticamente (por exemplo, adicionando a Sessions em um Desktop do GNOME): #! /bin/sh compiz --replace --sm-disable --ignore-desktop-hints ccp & emerald --replace & Salve isso no seu diretório home como, por exemplo, start-compiz e torne-o executável: % chmod +x ~/start-compiz Em seguida, utilize a GUI para adicioná-lo a Startup Programs (localizado em System, Preferences, Sessions em um desktop GNOME). Para selecionar realmente todos os efeitos desejados e suas configurações, execute (novamente como um usuário normal) o Compiz Config Settings Manager: % ccsm No GNOME, isso também pode ser encontrado no menu System, Preferences. Se você selecionou gconf support durante a compilação, você também será capaz de ver estas configurações usando o gconf-editor sob apps/compiz. Solução de problemas Se o mouse não funcionar, você precisará primeiro configurá-lo antes de prosseguir. Em versões recentes do Xorg, as seções InputDevice em xorg.conf são ignoradas em favor dos dispositivos autodetectados. Para restaurar o comportamento antigo, adicione a seguinte linha à seção ServerLayout ou ServerFlags deste arquivo: Option "AutoAddDevices" "false" Os dispositivos de entrada podem então ser configurados como nas versões anteriores, juntamente com quaisquer outras opções necessárias (por exemplo, troca do layout de teclado). Como explicado anteriormente, o daemon hald irá, por padrão, detectar automaticamente o seu teclado. Há chances de que o layout ou modelo do teclado não esteja correto, ambientes de Desktop como o GNOME, KDE ou Xfce fornecem ferramentas para configurar o teclado. No entanto, é possível definir as propriedades do teclado diretamente com a ajuda do utilitário setxkbmap1 ou com uma regra de configuração do aplicativohald. Por exemplo, se alguém quiser usar um teclado de teclas PC 102 vindo com um layout francês, temos que criar um arquivo de configuração de teclado para o hald chamado x11-input.fdi e salva-lo no diretório /usr/local/etc/hal/fdi/policy. Este arquivo deve conter as seguintes linhas: <?xml version="1.0" encoding="iso-8859-1"?> <deviceinfo version="0.2"> <device> <match key="info.capabilities" contains="input.keyboard"> <merge key="input.x11_options.XkbModel" type="string">pc102</merge> <merge key="input.x11_options.XkbLayout" type="string">fr</merge> </match> </device> </deviceinfo> Se este arquivo já existir, apenas copie e adicione ao seu arquivo as linhas referentes à configuração do teclado. Você terá que reinicializar sua máquina para forçar o hald a ler este arquivo. É possível fazer a mesma configuração a partir de um terminal X ou um script com esta linha de comando: % setxkbmap -model pc102 -layout fr O /usr/local/share/X11/xkb/rules/base.lst lista os vários teclados, layouts e opções disponíveis. Xorg tuning O arquivo de configuração xorg.conf.new pode agora ser ajustado para o seu gosto. Abra o arquivo em um editor de texto, como emacs 1 ou o ee1. Se o monitor for um modelo antigo ou incomum que não suporta a detecção automática de frequências de sincronização, essas configurações podem ser adicionadas ao xorg.conf.new na seção "Monitor": Section "Monitor" Identifier "Monitor0" VendorName "Monitor Vendor" ModelName "Monitor Model" HorizSync 30-107 VertRefresh 48-120 EndSection A maioria dos monitores suporta autodetecção de frequência de sincronização, tornando desnecessária a entrada manual desses valores. Para os poucos monitores que não suportam a detecção automática, evite possíveis danos inserindo apenas valores fornecidos pelo fabricante. O X permite que os recursos do DPMS (Energy Star) sejam usados com monitores capazes. O programa xset1 controla os tempos limite e pode forçar os modos de espera, suspensão ou desativação. Se você deseja habilitar recursos de DPMS para o seu monitor, você deve adicionar a seguinte linha à seção do monitor: Option "DPMS" xorg.conf Enquanto o arquivo de configuração xorg.conf.new ainda estiver aberto em um editor, selecione a resolução padrão e a profundidade de cor desejada. Isso é definido na seção "Screen": Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 24 Modes "1024x768" EndSubSection EndSection A palavra-chave DefaultDepth descreve a profundidade de cor a ser executada por padrão. Isto pode ser sobrescrito com a opção de linha de comando para Xorg1. A palavra-chave Modes descreve a resolução a ser executada na profundidade de cor especificada. Observe que somente os modos padrão VESA são suportados, conforme definido pelo hardware gráfico do sistema de destino. No exemplo acima, a profundidade de cor padrão é de vinte e quatro bits por pixel. Nesta profundidade de cor, a resolução aceita é 1024 por 768 pixels. Finalmente, escreva o arquivo de configuração e teste-o usando o modo de teste dado acima. Uma das ferramentas disponíveis para ajudá-lo durante o processo de solução de problemas são os arquivos de log do Xorg, que contêm informações sobre cada dispositivo ao qual o servidor Xorg se conecta. Os nomes de arquivos de log do Xorg estão no formato /var/log/Xorg.0.log. O nome exato do log pode variar de Xorg.0.log para Xorg.8.log e assim por diante. Se tudo estiver bem, o arquivo de configuração precisa ser instalado em um local comum onde o Xorg1 possa encontrá-lo. Isto é tipicamente /etc/X11/xorg.conf ou /usr/local/etc/X11/xorg.conf. # cp xorg.conf.new /etc/X11/xorg.conf O processo de configuração do Xorg agora está completo. O Xorg pode agora ser iniciado com o utilitário startx1. O servidor Xorg também pode ser iniciado com o uso de xdm1. Configuração com Chipsets gráficos <trademark class="registered">Intel</trademark> <literal>i810</literal> Intel i810 graphic chipset A configuração com chipsets integrados i810 da Intel requer a interface de programação AGP agpgart para o Xorg para conduzir a placa. Consulte a página de manual do driver agp4 para obter maiores informações. Isso permitirá a configuração do hardware como qualquer outra placa gráfica. Observe que nos sistemas sem o driver agp4 compilado no kernel, tentar carregar o módulo com kldload8 não funcionará. Este driver tem que estar no kernel no momento da inicialização, através da compilação ou usando o /boot/loader.conf. Adicionando um Flatpanel Widescreen ao Mix widescreen flatpanel configuration Esta seção pressupõe um pouco de conhecimento avançado de configuração. Se as tentativas de usar as ferramentas de configuração padrão acima não resultaram em uma configuração funcional, há informações suficientes nos arquivos de log para serem úteis para fazer a configuração funcionar. O uso de um editor de texto será necessário. Os formatos widescreen atuais (WSXGA, WSXGA+, WUXGA, WXGA, WXGA+, etc.) suportam formatos ou proporções de formato 16:10 e 10:9 que podem ser problemáticos. Exemplos de algumas resoluções de tela comuns para proporções de 16:10 são: 2560x1600 1920x1200 1680x1050 1440x900 1280x800 Em algum momento, será tão fácil quanto adicionar uma dessas resoluções como um possível Mode na Section "Screen" como tal: Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 24 Modes "1680x1050" EndSubSection EndSection O Xorg é inteligente o suficiente para extrair as informações de resolução da tela widescreen via informações I2C/DDC, para que ele saiba o que o monitor pode suportar em termos de freqüências e resoluções. Se aqueles ModeLines não existem nos drivers, pode ser necessário dar ao Xorg uma pequena dica. Usando o /var/log/Xorg.0.log pode-se extrair informações suficientes para criar manualmente um ModeLine que funcionará. Basta procurar informações semelhantes: (II) MGA(0): Supported additional Video Mode: (II) MGA(0): clock: 146.2 MHz Image Size: 433 x 271 mm (II) MGA(0): h_active: 1680 h_sync: 1784 h_sync_end 1960 h_blank_end 2240 h_border: 0 (II) MGA(0): v_active: 1050 v_sync: 1053 v_sync_end 1059 v_blanking: 1089 v_border: 0 (II) MGA(0): Ranges: V min: 48 V max: 85 Hz, H min: 30 H max: 94 kHz, PixClock max 170 MHz Esta informação é chamada de informação EDID. Criar uma ModeLine a partir disso é apenas uma questão de colocar os números na ordem correta: ModeLine <name> <clock> <4 horiz. timings> <4 vert. timings> Assim, o ModeLine na Section "Monitor" para este exemplo ficaria assim: Section "Monitor" Identifier "Monitor1" VendorName "Bigname" ModelName "BestModel" ModeLine "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089 Option "DPMS" EndSection Agora, tendo completado estes passos simples de edição, o X deve iniciar no seu novo monitor widescreen. Solução de problemas do Compiz Fusion Eu instalei o Compiz Fusion, e depois de executar os comandos que você mencionou, minhas janelas ficaram sem barras de título e botões. O que está errado? Provavelmente está faltando alguma configuração em /etc/X11/xorg.conf. Revise este arquivo cuidadosamente e verifique especialmente as diretivas DefaultDepth e AddARGBGLXVisuals. Quando executo o comando para iniciar o Compiz Fusion, o servidor X trava e eu volto ao console. O que está errado? Se você verificar o /var/log/Xorg.0.log, você provavelmente encontrará mensagens de erro durante a inicialização do X. As mais comuns seriam: (EE) NVIDIA(0): Failed to initialize the GLX module; please check in your X (EE) NVIDIA(0): log file that the GLX module has been loaded in your X (EE) NVIDIA(0): server, and that the module is the NVIDIA GLX module. If (EE) NVIDIA(0): you continue to encounter problems, Please try (EE) NVIDIA(0): reinstalling the NVIDIA driver. Este é geralmente o caso quando você atualiza o Xorg. Você precisará reinstalar o pacote x11/nvidia-driver para que o glx seja compilado novamente.
Tarefas comuns Agora que o básico foi abordado, esta parte do livro discute alguns recursos freqüentemente usados do FreeBSD. Estes capítulos: Introduzem aplicativos de desktop populares e úteis: navegadores, ferramentas de produtividade, visualizadores de documentos e muito mais. Introduzem uma série de ferramentas multimídia disponíveis para o FreeBSD. Explicam o processo de compilação de um kernel customizado do FreeBSD para habilitar funcionalidades extras. Descrevem o sistema de impressão em detalhes, tanto configurações de impressoras conectadas em desktops quanto impressoras conectadas à rede. Mostram como executar aplicativos Linux no sistema FreeBSD. Alguns destes capítulos recomendam leituras prévias, e isso é destacado na sinopse no início de cada capítulo. Aplicações de Desktop Sinopse Embora o FreeBSD seja popular como um servidor por seu desempenho e estabilidade, ele também é adequado para o uso diário como desktop. Com mais de 24.000 aplicativos disponíveis como pacotes ou ports para o FreeBSD, é fácil construir um desktop personalizado que executa uma ampla variedade de aplicativos de desktop. Este capítulo demonstra como instalar vários aplicativos de desktop, incluindo navegadores da Web, software de produtividade, visualizadores de documentos e softwares financeiros. Os usuários que preferem instalar uma versão de desktop pré-configurada do FreeBSD em vez de configurar um do zero devem consultar o Website trueos.org. Os leitores deste capítulo devem saber como: Instalar software adicional usando pacotes ou ports, conforme descrito em . Instalar o X e um gerenciador de janelas, conforme descrito em . Para obter informações sobre como configurar um ambiente multimídia, consulte . Navegadores browsers web O FreeBSD não vem com um navegador Web pré-instalado. Em vez disso, a categoria www da Coleção de Ports contém muitos navegadores que podem ser instalados como um pacote ou compilados a partir da coleção de Ports. Os ambientes de área de trabalho KDE e GNOME incluem seu próprio navegador HTML. Consulte para mais informações sobre como configurar esses desktops completos. Alguns navegadores leves incluem o www/dillo2, o www/links e o www/w3m. Esta seção demonstra como instalar os seguintes navegadores Web populares e indica se o aplicativo é pesado em recursos, se leva tempo para compilar a partir do Ports ou se possui dependências importantes. Nome da aplicação Recursos necessários Instalação a partir do Ports Notas Firefox médio pesado FreeBSD, Linux, e versões localizadas estão disponíveis Konqueror médio pesado Requer bibliotecas do KDE Chromium médio pesado Requer Gtk+ Firefox Firefox O Firefox é um navegador de código-fonte aberto que apresenta um mecanismo de exibição HTML compatível com os padrões, navegação por guias, bloqueio de pop-up, extensões, segurança aprimorada e muito mais. O Firefox é baseado na base de código Mozilla. Para instalar o pacote da versão mais recente do Firefox, digite: # pkg install firefox Para instalar a versão ESR (Extended Support Release) do Firefox, use: # pkg install firefox-esr A Coleção de Ports pode ser usada para compilar a versão desejada do Firefox a partir do código-fonte. Este exemplo compila o www/firefox, onde o firefox pode ser substituído pelo ESR ou pela versão localizada para instalar. # cd /usr/ports/www/firefox # make install clean Konqueror Konqueror O Konqueror é mais do que um navegador Web, pois também é um gerenciador de arquivos e um visualizador de multimídia. Ele faz parte do pacote ou Port x11/kde4-baseapps. O Konqueror suporta o WebKit, assim como o seu próprio KHTML. O WebKit é um mecanismo de renderização usado por muitos navegadores modernos, incluindo o Chromium. Para usar o WebKit com o Konqueror no FreeBSD, instale o pacote ou Port www/kwebkitpart. Este exemplo instala o pacote: # pkg install kwebkitpart Para instalar a partir da Coleção de Ports: # cd /usr/ports/www/kwebkitpart # make install clean Para habilitar o WebKit no Konqueror, clique em Settings, Configure Konqueror. Na página de configurações General, clique no menu suspenso ao lado de Default web browser engine e altere KHTML para WebKit. O Konqueror também suporta Flash. Um guia sobre como obter suporte a Flash no Konqueror está disponível em http://freebsd.kde.org/howtos/konqueror-flash.php. Chromium Chromium O Chromium é um projeto de navegador de código aberto que visa criar uma experiência de navegação na Web mais segura, mais rápida e mais estável. O Chromium apresenta navegação com guias, bloqueio de pop-up, extensões e muito mais. O Chromium é o projeto de código-fonte aberto no qual o navegador Web do Google Chrome é baseado. O Chromium pode ser instalado como um pacote digitando: # pkg install chromium Alternativamente, o Chromium pode ser compilado a partir do código-fonte usando a Coleção de Ports: # cd /usr/ports/www/chromium # make install clean O executável do Chromium é /usr/local/bin/chrome, não /usr/local/bin/chromium. Produtividade Quando se trata de produtividade, os usuários geralmente procuram uma suíte de escritório ou um processador de texto fácil de usar. Embora alguns ambientes de desktop como o KDE forneçam uma suíte de escritório, não há um pacote de produtividade padrão. Várias suítes de escritório e processadores de texto gráficos estão disponíveis para o FreeBSD, independentemente do gerenciador de janelas instalado. Esta seção demonstra como instalar os seguintes softwares populares de produtividade e indica se o aplicativo é pesado em recursos, se leva tempo para compilar a partir do ports ou se possui dependências importantes. Nome da aplicação Recursos necessários Instalação a partir do Ports Principais Dependências Calligra leve pesado KDE AbiWord leve leve Gtk+ ou GNOME The Gimp leve pesado Gtk+ Apache OpenOffice pesado enorme JDK e Mozilla LibreOffice um pouco pesado enorme Gtk+, ou KDE/ GNOME, ou JDK Calligra Calligra office suite Calligra O ambiente de área de trabalho do KDE inclui uma suíte de escritório que pode ser instalada separadamente do KDE. O Calligra inclui componentes padrões que podem ser encontrados em outros pacotes de escritório. O Words é o processador de texto, Sheets é o programa de planilha eletrônica, o Stage gerencia apresentações de slides e Karbon é usado para desenhar documentos gráficos. No FreeBSD, o editors/calligra pode ser instalado como um pacote ou um port. Para instalar o pacote: # pkg install calligra Se o pacote não estiver disponível, use a Coleção de Ports: # cd /usr/ports/editors/calligra # make install clean AbiWord AbiWord O AbiWord é um programa gratuito de processamento de texto semelhante em aparência ao Microsoft Word. É rápido, contém muitos recursos e é de fácil utilização. O AbiWord pode importar ou exportar muitos formatos de arquivo, incluindo alguns formatos proprietários como o Microsoft .rtf. Para instalar o pacote do AbiWord: # pkg install abiword Se o pacote não estiver disponível, ele pode ser compilado a partir da Coleção de Ports: # cd /usr/ports/editors/abiword # make install clean O GIMP The GIMP Para autoria ou retoque de imagens, o GIMP fornece um sofisticado programa de manipulação de imagens. Ele pode ser usado como um programa de pintura simples ou como um pacote de qualidade para retoque de fotos. Ele suporta um grande número de plugins e possui uma interface de script. O GIMP pode ler e gravar uma grande variedade de formatos de arquivos e suporta interfaces com scanners e tablets. Para instalar o pacote: # pkg install gimp Como alternativa, use a Coleção de Ports: # cd /usr/ports/graphics/gimp # make install clean A categoria de programas gráficos (freebsd.org/ports/graphics.html) da Coleção de Ports contém vários plugins relacionados ao GIMP, arquivos de ajuda e manuais do usuário. Apache OpenOffice Apache OpenOffice office suite Apache OpenOffice O Apache OpenOffice é uma suíte de escritório de código-fonte aberto que é desenvolvida sob a asa da Incubadora da Apache Software Foundation. Ele inclui todos os aplicativos encontrados em um pacote completo de produtividade de escritório: um processador de texto, uma planilha eletrônica, um gerenciador de apresentação e um programa de desenho. Sua interface de usuário é semelhante a outros pacotes de escritório e pode importar e exportar em vários formatos de arquivo populares. Está disponível em vários idiomas diferentes e a internacionalização foi estendida para interfaces, corretores ortográficos e dicionários. O processador de texto do Apache OpenOffice usa um formato de arquivo XML nativo para maior portabilidade e flexibilidade. O programa de planilha eletrônica possui uma linguagem de macros que pode ser conectada a bancos de dados externos. O Apache OpenOffice é estável e roda nativamente em Windows, Solaris, Linux, FreeBSD, e Mac OS X. Maiores informações sobre o Apache OpenOffice podem ser encontradas em openoffice.org. Para informações específicas do FreeBSD, consulte porting.openoffice.org/freebsd/. Para instalar o pacote Apache OpenOffice: # pkg install apache-openoffice Depois que o pacote for instalado, digite o seguinte comando para iniciar o Apache OpenOffice: % openoffice-X.Y.Z onde X.Y.Z é o número da versão instalada do Apache OpenOffice. Na primeira vez que o Apache OpenOffice for iniciado, algumas perguntas serão feitas e uma pasta .openoffice.org será criada no diretório pessoal do usuário. Se o pacote do Apache OpenOffice desejado não estiver disponível, a compilação do port ainda será uma opção. No entanto, isso requer muito espaço em disco e um tempo bastante longo para compilar: # cd /usr/ports/editors/openoffice-4 # make install clean Para compilar uma versão localizada, substitua o comando anterior por: # make LOCALIZED_LANG=your_language install clean Substitua your_language pelo código ISO do idioma correto. Uma lista de códigos de idiomas suportados está disponível em files/Makefile.localized, localizado no diretório do port. LibreOffice LibreOffice office suite LibreOffice O LibreOffice é um pacote de software livre desenvolvido por documentfoundation.org. É compatível com outras grandes suítes de escritórios e está disponível em diversas plataformas. Ele é um fork renomeado do Apache OpenOffice e inclui aplicativos encontrados em um pacote completo de produtividade de escritório: processador de texto, planilha, gerenciador de apresentação, programa de desenho, programa de gerenciamento de banco de dados e uma ferramenta para criar e editar fórmulas matemáticas. Está disponível em vários idiomas diferentes e a internacionalização foi estendida para interfaces, corretores ortográficos e dicionários. O processador de texto do LibreOffice usa um formato de arquivo XML nativo para maior portabilidade e flexibilidade. O programa de planilha eletrônica possui uma linguagem de macros que pode ser conectada a bancos de dados externos. O LibreOffice é estável e roda nativamente em Windows, Linux, FreeBSD e Mac OS X. Maiores informações sobre o LibreOffice podem ser encontradas em libreoffice.org. Para instalar a versão em inglês do pacote LibreOffice: # pkg install libreoffice A categoria de editores de texto ( freebsd.org/ports/editors.html ) da Coleção de Ports contém várias versões versões localizadas do LibreOffice. Ao instalar um pacote localizado, substitua libreoffice pelo nome do pacote localizado. Quando o pacote estiver instalado, digite o seguinte comando para executar o LibreOffice: % libreoffice Durante a primeira execução, algumas perguntas serão feitas e uma pasta .libreoffice será criada no diretório pessoal do usuário. Se o pacote LibreOffice desejado não estiver disponível, a compilação do port ainda será uma opção. No entanto, isso requer muito espaço em disco e um tempo bastante longo para compilar. Este exemplo compila a versão em inglês: # cd /usr/ports/editors/libreoffice # make install clean Para compilar uma versão localizada, faça cd para o diretório do port do idioma desejado. Os idiomas suportados podem ser encontrados na categoria de editores (freebsd.org/ports/editors.html) da Coleção de Ports. Visualizadores de Documentos Alguns novos formatos de documentos ganharam popularidade desde o advento do UNIX e os visualizadores que eles exigem podem não estar disponíveis no sistema base. Esta seção demonstra como instalar os seguintes visualizadores de documentos: Nome da aplicação Recursos necessários Instalação a partir do Ports Principais Dependências Xpdf leve leve FreeType gv leve leve Xaw3d Geeqie leve leve Gtk+ ou GNOME ePDFView leve leve Gtk+ Okular leve pesado KDE Xpdf Xpdf PDF viewing Para os usuários que preferem um pequeno visualizador de PDF do FreeBSD, o Xpdf fornece um visualizador leve e eficiente que requer poucos recursos. Ele usa as fontes X padrão e não requer nenhum kit de ferramentas adicional. Para instalar o pacote Xpdf: # pkg install xpdf Se o pacote não estiver disponível, use a Coleção de Ports: # cd /usr/ports/graphics/xpdf # make install clean Quando a instalação estiver concluída, inicie o xpdf e use o botão direito do mouse para ativar o menu. <application>gv</application> gv PDF viewing PostScript viewing O gv é um visualizador de arquivos PostScript e PDF. Ele é baseado no ghostview, mas tem uma aparência mais agradável, pois é baseado no kit de ferramentas do widget Xaw3d. O gv possui muitos recursos configuráveis, como orientação, tamanho do papel, escala e anti-aliasing. Quase qualquer operação pode ser executada com o teclado ou com o mouse. Para instalar o gv como um pacote: # pkg install gv Se um pacote não estiver disponível, use a Coleção de Ports: # cd /usr/ports/print/gv # make install clean Geeqie Geeqie O Geeqie é um fork do projeto abandonado GQView, em um esforço para levar o desenvolvimento adiante e integrar os patches existentes. O Geeqie é um gerenciador de imagens que suporta a visualização de um arquivo com um único clique, a execução de um editor externo e a visualização de miniaturas. Ele também possui um modo de apresentação de slides e algumas operações básicas de arquivo, facilitando o gerenciamento das coleções de imagens e a localização de arquivos duplicados. O Geeqie suporta visualização em tela cheia e a internacionalização. Para instalar o pacote Geeqie: # pkg install geeqie Se o pacote não estiver disponível, use a Coleção de Ports: # cd /usr/ports/graphics/geeqie # make install clean ePDFView ePDFView PDF viewing O ePDFView é um visualizador de documentos PDF leve que usa somente as bibliotecas Gtk+ e Poppler. Ele está atualmente em desenvolvimento, mas já abre a maioria dos arquivos PDF (até os criptografados), salva cópias de documentos e tem suporte para impressão usando o CUPS. Para instalar o ePDFView como um pacote: # pkg install epdfview Se um pacote não estiver disponível, use a Coleção de Ports: # cd /usr/ports/graphics/epdfview # make install clean Okular Okular PDF viewing O Okular é um visualizador de documentos universal baseado no KPDF para KDE. Ele pode abrir muitos formatos de documentos, incluindo PDF, PostScript, DjVu, CHM, XPS e ePub. Para instalar o Okular como um pacote: # pkg install okular Se um pacote não estiver disponível, use a Coleção de Ports: # cd /usr/ports/graphics/okular # make install clean Finanças Para gerenciar finanças pessoais em um desktop FreeBSD, alguns aplicativos poderosos e fáceis de usar podem ser instalados. Alguns são compatíveis com formatos de arquivos comuns, como os formatos usados pelo Quicken e Excel. Esta seção cobre estes programas: Nome da aplicação Recursos necessários Instalação a partir do Ports Principais Dependências GnuCash leve pesado GNOME Gnumeric leve pesado GNOME KMyMoney leve pesado KDE GnuCash GnuCash O GnuCash faz parte do esforço do GNOME para fornecer aplicativos fáceis de usar, mas poderosos, para usuários finais. O GnuCash pode ser usado para acompanhar receitas e despesas, contas bancárias e ações. Ele apresenta uma interface intuitiva, mantendo-se profissional. O GnuCash fornece um registro inteligente, um sistema hierárquico de contas e muitos aceleradores de teclado e métodos de preenchimento automático. Ele pode dividir uma única transação em várias partes mais detalhadas. O GnuCash pode importar e mesclar arquivos QIF do Quicken. Ele também lida com a maioria dos formatos internacionais de data e moeda. Para instalar o pacote GnuCash: # pkg install gnucash Se o pacote não estiver disponível, use a Coleção de Ports: # cd /usr/ports/finance/gnucash # make install clean Gnumeric Gnumeric spreadsheet Gnumeric O Gnumeric é um programa de planilha eletrônica desenvolvido pela comunidade GNOME. Ele possui adivinhação automática e conveniente de entrada do usuário de acordo com o formato da célula para muitas sequências. Ele pode importar arquivos em vários formatos populares, incluindo Excel, Lotus 1-2-3 e Quattro Pro. Ele tem um grande número de funções internas e permite todos os formatos usuais de célula, como número, moeda, data, hora e muito mais. Para instalar o Gnumeric como um pacote: # pkg install gnumeric Se o pacote não estiver disponível, use a Coleção de Ports: # cd /usr/ports/math/gnumeric # make install clean KMyMoney KMyMoney spreadsheet KMyMoney O KMyMoney é uma aplicação de finanças pessoais criada pela comunidade KDE. O KMyMoney tem como objetivo fornecer os recursos importantes encontrados em aplicativos comerciais de gerenciamento de finanças pessoais. Ele também destaca a facilidade de uso e a contabilidade adequada de dupla entrada entre seus recursos. O KMyMoney importa a partir de arquivos QIF padrão do Quicken, rastreia investimentos, manipula várias moedas e fornece diversos relatórios. Para instalar o KMyMoney como um pacote: # pkg install kmymoney-kde4 Se o pacote não estiver disponível, use a Coleção de Ports: # cd /usr/ports/finance/kmymoney-kde4 # make install clean Multimídia Ross Lippert Editado por Sinopse O FreeBSD suporta uma ampla variedade de placas de som, permitindo que os usuários aproveitem a saída de alta fidelidade de um sistema FreeBSD. Isso inclui a capacidade de gravar e reproduzir áudio MPEG Layer 3 (MP3), arquivo de áudio Waveform (WAV), Ogg Vorbis e outros formatos. A coleção de Ports do FreeBSD contém muitas aplicações para editar áudio gravado, adicionar efeitos sonoros e controlar dispositivos MIDI conectados. O FreeBSD também suporta a reprodução de arquivos de vídeo e DVDs. A coleção de Ports do FreeBSD contém aplicativos para codificar, converter e reproduzir várias mídias de vídeo. Este capítulo descreve como configurar placas de som, reprodução de vídeo, placas sintonizadoras de TV e scanners no FreeBSD. Também descreve algumas das aplicações que estão disponíveis para usar esses dispositivos. Depois de ler este capítulo, você irá saber como: Configurar uma placa de som no FreeBSD. Solucionar problemas de configuração de som. Reproduzir e codificar MP3 e outros áudios. Preparar um sistema FreeBSD para reprodução de vídeo. Reproduzir DVDs, arquivos .mpg e .avi. Copiar o conteúdo de um CD ou DVD em arquivos arquivos. Configurar uma placa de TV. Instale e configure o MythTV no FreeBSD Configurar um scanner de imagem. Configurar um headset Bluetooth. Antes de ler este capítulo, você deve: Saber como instalar aplicativos conforme descrito em . Configurando a Placa de Som Moses Moore Contribuido por Marc Fonvieille Aprimorado por PCI sound cards Antes de iniciar a configuração, determine o modelo da placa de som e o chip usado. O FreeBSD suporta uma ampla variedade de placas de som. Verifique a lista de dispositivos de áudio compatíveis nas Notas de Hardware, para ver se a placa de som é suportada e quais drivers do FreeBSD que ela usa. kernel configuration Para usar um dispositivo de som, seu driver deve ser carregado. A maneira mais fácil é carregar o módulo do kernel para a placa de som com o kldload8. Este exemplo carrega o driver para um chipset de áudio integrado baseado na especificação Intel: # kldload snd_hda Para automatizar o carregamento desse driver no momento da inicialização, faça edição adicionando a seguinte linha ao arquivo /boot/loader.conf: snd_hda_load="YES" Outros módulos de som disponíveis estão listados no arquivo /boot/defaults/loader.conf. Quando não tiver certeza de qual driver usar, carregue o módulo snd_driver: # kldload snd_driver Este é um metadriver que carrega todos os drivers de som mais comuns e pode ser usado para acelerar a busca pelo driver correto. Também é possível carregar todos os drivers de som adicionando o metadriver no arquivo /boot/loader.conf. Para determinar qual driver foi selecionado para a placa de som após carregar o metadriver snd_driver, digite, cat /dev/sndstat. Configurando um kernel Personalizado com Suporte de Som Esta seção é para usuários que preferem compilar estaticamente em suporte para a placa de som em um kernel personalizado. Para mais informações sobre como recompilar um kernel, consulte . Ao usar um kernel personalizado para fornecer suporte ao som, verifique se o driver do framework de áudio existe no arquivo de configuração do kernel personalizado: device sound Em seguida, adicione suporte para a placa de som. Para continuar o exemplo do chipset de áudio integrado baseado na especificação Intel da seção anterior, use a seguinte linha no arquivo de configuração do kernel personalizado: device snd_hda Certifique-se de ler a página de manual do driver para o nome do dispositivo a ser usado pelo driver. Placas de som ISA não-PnP podem requerer que as configurações de porta IRQ e I/O da placa sejam adicionadas ao arquivo /boot/device.hints. Durante o processo de inicialização, o loader8 lê este arquivo e passa as configurações para o kernel. Por exemplo, uma placa antiga ISA não-PnP da Creative SoundBlaster usará o driver snd_sbc4 em conjunto com snd_sb16. Para esta placa, as seguintes linhas devem ser adicionadas ao arquivo de configuração do kernel: device snd_sbc device snd_sb16 Se a placa usar a porta de I/O 0x220 e a IRQ 5, essas linhas também deverão ser adicionadas ao arquivo /boot/device.hints: hint.sbc.0.at="isa" hint.sbc.0.port="0x220" hint.sbc.0.irq="5" hint.sbc.0.drq="1" hint.sbc.0.flags="0x15" A sintaxe usada no arquivo /boot/device.hints é descrita em sound4 e na página de manual do driver da placa de som. As configurações mostradas acima são os padrões. Em alguns casos, a IRQ ou outras configurações podem precisar ser alterados para corresponder à placa. Consulte snd_sbc4 para obter mais informações sobre esta placa. Testando o Som Depois de carregar o módulo necessário ou reinicializar no kernel personalizado, a placa de som deve ser detectada. Para confirmar, execute dmesg | grep pcm. Este exemplo é de um sistema com um chipset integrado Conexant CX20590: pcm0: <NVIDIA (0x001c) (HDMI/DP 8ch)> at nid 5 on hdaa0 pcm1: <NVIDIA (0x001c) (HDMI/DP 8ch)> at nid 6 on hdaa0 pcm2: <Conexant CX20590 (Analog 2.0+HP/2.0)> at nid 31,25 and 35,27 on hdaa1 O status da placa de som também pode ser verificado usando este comando: # cat /dev/sndstat FreeBSD Audio Driver (newpcm: 64bit 2009061500/amd64) Installed devices: pcm0: <NVIDIA (0x001c) (HDMI/DP 8ch)> (play) pcm1: <NVIDIA (0x001c) (HDMI/DP 8ch)> (play) pcm2: <Conexant CX20590 (Analog 2.0+HP/2.0)> (play/rec) default A saída irá variar dependendo da placa de som. Se nenhum dispositivo pcm estiver listado, verifique se o driver de dispositivo correto foi carregado ou compilado no kernel. A próxima seção lista alguns problemas comuns e suas soluções. Se tudo correr bem, a placa de som deverá funcionar no FreeBSD. Se a unidade de CD ou DVD estiver corretamente conectada à placa de som, é possível inserir um CD de áudio na unidade e reproduzi-lo com cdcontrol1: % cdcontrol -f /dev/acd0 play 1 CD de audio têm codificações especializadas, o que significa que não devem ser montados usando mount8. Várias aplicações, como audio/workman, fornecem uma interface mais amigável. O Port audio/mpg123 pode ser instalado para ouvir arquivos de áudio MP3. Outra maneira rápida de testar a placa é enviar dados para /dev/dsp: % cat filename > /dev/dsp onde filename pode ser qualquer tipo de arquivo. Este comando deve produzir algum ruído, confirmando que a placa de som está funcionando. Os nós de dispositivo /dev/dsp* serão criados automaticamente conforme necessário. Quando não estão em uso, eles não existem e não aparecerão na saída de ls1. Configurando Dispositivos de Som Bluetooth Bluetooth audio Conectar a um dispositivo Bluetooth está fora do escopo deste capítulo. Consulte a para mais informações. Para que o dispositivo Bluetooth funcione com o sistema de som do FreeBSD, os usuários precisam primeiramente instalar o audio/virtual_oss: # pkg install virtual_oss audio/virtual_oss requer cuse para ser carregado no kernel: # kldload cuse Para carregar o cuse durante a inicialização do sistema, execute o comando: # sysrc -f /boot/loader.conf cuse_load=yes Para usar fones de ouvido como reprodutor de som com audio/virtual_oss, os usuários precisam criar um dispositivo virtual depois de se conectarem a um dispositivo de áudio Bluetooth: # virtual_oss -C 2 -c 2 -r 48000 -b 16 -s 768 -R /dev/null -P /dev/bluetooth/headphones -d dsp headphones neste exemplo é o nome de host de /etc/bluetooth/hosts. BT_ADDR também poderia ser usado. Consulte virtual_oss8 para mais informações. Solução de Problemas de Som device nodes I/O port IRQ DSP lista algumas mensagens de erros comuns e suas soluções: Mensagens de Erros Comuns Erro Solução sb_dspwr(XX) timed out A porta de I/O não está configurada corretamente. bad irq XX A IRQ está definida incorretamente. Certifique-se de que a IRQ definido e a IRQ do som são as mesmas. xxx: gus pcm not attached, out of memory Não há memória disponível suficiente para usar o dispositivo. xxx: can't open /dev/dsp! Digite fstat | grep dsp para verificar se outro aplicativo está mantendo o dispositivo aberto. Os causadores de problemas notáveis são o suporte a som do esound e do KDE.
Placas gráficas modernas geralmente vêm com seu próprio driver de som para uso com HDMI. Às vezes, esse dispositivo de som é enumerado antes da placa de som, o que significa que a placa de som não será usada como o dispositivo de reprodução padrão. Para verificar se este é o caso, execute dmesg e procure por pcm. A saída é algo como isto: ... hdac0: HDA Driver Revision: 20100226_0142 hdac1: HDA Driver Revision: 20100226_0142 hdac0: HDA Codec #0: NVidia (Unknown) hdac0: HDA Codec #1: NVidia (Unknown) hdac0: HDA Codec #2: NVidia (Unknown) hdac0: HDA Codec #3: NVidia (Unknown) pcm0: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 0 nid 1 on hdac0 pcm1: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 1 nid 1 on hdac0 pcm2: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 2 nid 1 on hdac0 pcm3: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 3 nid 1 on hdac0 hdac1: HDA Codec #2: Realtek ALC889 pcm4: <HDA Realtek ALC889 PCM #0 Analog> at cad 2 nid 1 on hdac1 pcm5: <HDA Realtek ALC889 PCM #1 Analog> at cad 2 nid 1 on hdac1 pcm6: <HDA Realtek ALC889 PCM #2 Digital> at cad 2 nid 1 on hdac1 pcm7: <HDA Realtek ALC889 PCM #3 Digital> at cad 2 nid 1 on hdac1 ... Neste exemplo, a placa gráfica (NVidia) foi enumerada antes da placa de som (Realtek ALC889). Para usar a placa de som como o dispositivo de reprodução padrão, altere a variável hw.snd.default_unit para a unidade que deve ser usada para reprodução: # sysctl hw.snd.default_unit=n onde n é o número do dispositivo de som a ser usado. Neste exemplo, deve ser 4. Deixe esta mudança permanente adicionando a seguinte linha ao arquivo /etc/sysctl.conf: hw.snd.default_unit=4
Utilizando Múltiplas Fontes de Som Munish Chopra Contribuído por Muitas vezes é desejável ter várias fontes de som capazes de tocar simultaneamente. O FreeBSD usa Canais de Som Virtuais para multiplexar a reprodução da placa de som mixando o som no kernel. Três variáveis no sysctl8 estão disponíveis para configurar canais virtuais: # sysctl dev.pcm.0.play.vchans=4 # sysctl dev.pcm.0.rec.vchans=4 # sysctl hw.snd.maxautovchans=4 Este exemplo aloca quatro canais virtuais, que é um número prático para o uso diário. Ambos dev.pcm.0.play.vchans=4 e dev.pcm.0.rec.vchans=4 são configuráveis depois que um dispositivo foi anexado e representa o número de canais virtuais pcm0 para reprodução e gravação. Como o módulo pcm pode ser carregado independentemente dos drivers de hardware, hw.snd.maxautovchans indica quantos canais virtuais serão dados a um dispositivo de áudio quando ele estiver conectado. Consulte pcm4 para obter mais informações. O número de canais virtuais para um dispositivo não pode ser alterado enquanto estiver em uso. Primeiramente, feche todos os programas usando o dispositivo, como players de música ou daemons de som. O dispositivo pcm correto será automaticamente alocado de forma transparente para um programa que solicite /dev/dsp0. Configurando Valores Padrões para Canais de Mixer Josef El-Rayes Contribuído por Os valores padrões para os diferentes canais do mixer são codificados permanentemente no código-fonte do driver pcm4. Embora os níveis do mixer da placa de som possam ser alterados usando mixer8 ou aplicativos e daemons de terceiros, essa não é uma solução permanente. Para definir os valores padrões do mixer no nível do driver, defina os valores apropriados no arquivo /boot/device.hints, conforme mostrado neste exemplo: hint.pcm.0.vol="50" Isso definirá o canal de volume como um valor padrão de 50 quando o módulo pcm4 for carregado.
Áudio MP3 Chern Lee Contribuído por Esta seção descreve alguns players MP3 disponíveis para o FreeBSD, como ripar trilhas de CD de áudio e como codificar e decodificar MP3. Players de MP3 Um popular reprodutor gráfico de MP3 é o Audacious. Ele suporta skins do Winamp e plugins adicionais. A interface é intuitiva, com uma lista de reprodução, equalizador gráfico e muito mais. Para aqueles que estão familiarizados com o Winamp, acharão o Audacious simples de usar. No FreeBSD, o Audacious pode ser instalado a partir de pacotes ou coleção de Ports multimedia/audacious. Audacious é descendente do XMMS. O pacote ou Port audio/mpg123 fornece um reprodutor de MP3 alternativo em linha de comando. Uma vez instalado, especifique o arquivo MP3 para reproduzir na linha de comando. Se o sistema tiver vários dispositivos de áudio, o dispositivo de som também pode ser especificado: # mpg123 -a /dev/dsp1.0 Foobar-GreatestHits.mp3 High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3 version 1.18.1; written and copyright by Michael Hipp and others free software (LGPL) without any warranty but with best wishes Playing MPEG stream from Foobar-GreatestHits.mp3 ... MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo Outros players MP3 estão disponíveis na Coleção de Ports do FreeBSD. Copiando Trilhas de <acronym>CD</acronym> de Áudio Antes de codificar um CD ou CD para MP3, os dados de áudio no CD devem ser copiados para o disco rígido. Isso é feito copiando os dados brutos do CD Digital Audio (CDDA) como arquivos WAV. A ferramenta cdda2wav, que é instalada com o suite de programas sysutils/cdrtools, pode ser usada para extrair informações de áudio do CD. Com o CD de áudio na unidade, o seguinte comando pode ser executado como root para ripar um CD inteiro em arquivos WAV, por trilhas: # cdda2wav -D 0,1,0 -B Neste exemplo, o indica o dispositivo SCSI 0,1,0 contendo o CD para ripar. Use o comando cdrecord -scanbus para determinar os parâmetros corretos do dispositivo para o sistema. Para ripar trilhas individuais, use a opção para especificar a trilha: # cdda2wav -D 0,1,0 -t 7 Para extrair um intervalo de trilhas, como as trilhas de um a sete, especifique um intervalo: # cdda2wav -D 0,1,0 -t 1+7 Para extrair de uma unidade ATAPI(IDE) CDROM, especifique o nome do dispositivo no lugar dos números da unidade SCSI. Por exemplo, para extrair a trilha 7 de uma unidade IDE: # cdda2wav -D /dev/acd0 -t 7 Alternativamente, o comando dd pode ser usado para extrair trilhas de áudio em unidades ATAPI, conforme descrito em . Codificação e Decodificação de MP3 Lame é um codificador popular para MP3 que pode ser instalado a partir do port audio/lame. Devido a problemas de patente, o pacote não está disponível. O comando a seguir converterá o arquivo WAV audio01.wav para audio01.mp3: # lame -h -b 128 --tt "Foo Song Title" --ta "FooBar Artist" --tl "FooBar Album" \ --ty "2014" --tc "Ripped and encoded by Foo" --tg "Genre" audio01.wav audio01.mp3 Os 128 kbits especificados são uma taxa de bits padrão para MP3, enquanto as taxas de bits 160 e 192 fornecem maior qualidade. Quanto maior a taxa de bits, maior o tamanho do arquivo MP3 resultante. A opção ativa o modo de maior qualidade, mas um pouco mais lento . As opções que começam com indicam as tags ID3, que geralmente contêm informações sobre músicas, para serem incorporadas no arquivo MP3. Opções adicionais de codificação podem ser encontradas na página de manual do lame. Para gravar um CD de áudio usando arquivos MP3, primeiro estes devem ser convertidos em um formato de arquivo não compactado. O XMMS pode ser usado para converter para o formato WAV, enquanto o mpg123 pode ser usado para converter para o formato de dados de áudio bruto, Pulse Code Modulation (PCM). Para converter o arquivo audio01.mp3 usando mpg123, especifique o nome do arquivo PCM: # mpg123 -s audio01.mp3 > audio01.pcm Para usar XMMS para converter um arquivo MP3 para WAV, use esses passos: Convertendo para o Formato <acronym>WAV</acronym> no <application>XMMS</application> Inicie o XMMS. Clique com o botão direito do mouse na janela para abrir o menu XMMS. Selecione Preferences abaixo de Options. Altere o Plugin de Saída para Disk Writer Plugin. Pressione Configure. Digite ou procure um diretório para gravar os arquivos descompactados. Carregue o arquivo MP3 no XMMS como de costume, com o volume em 100% e as configurações de EQ desativadas. Pressione Play. O XMMS aparecerá como se estivesse tocando o MP3, mas nenhuma música será ouvida. Na verdade, está tocando o MP3 para um arquivo. Quando terminar, certifique-se de ajustar o Plugin de Saída padrão de volta ao que era antes para ouvir MP3 novamente. Os formatos WAV e PCM podem ser usados com cdrecord. Ao usar arquivos WAV, haverá um pequeno som no início de cada trilha. Este som é o cabeçalho do arquivo WAV. O pacote binário ou port audio/sox pode ser usado para remover o cabeçalho: % sox -t wav -r 44100 -s -w -c 2 track.wav track.raw Consulte para mais informações sobre o uso de um gravador de CD no FreeBSD. Reprodução de Vídeo Ross Lippert Contribuído por Antes de configurar a reprodução de vídeo, determine o modelo e o chipset da placa de vídeo. Embora o Xorg suporte uma ampla variedade de placas de vídeo, nem todas oferecem um bom desempenho de reprodução. Para obter uma lista de extensões suportadas pelo servidor Xorg usando a placa, execute xdpyinfo enquanto o Xorg está sendo executado. É interessante ter um arquivo de teste MPEG pequeno para avaliar vários players e opções. Como alguns aplicativos de DVD procuram por mídia DVD em /dev/dvd por padrão, ou possuem esse nome de dispositivo codificado neles, pode ser útil fazer um link simbólico para o dispositivo adequado: # ln -sf /dev/cd0 /dev/dvd Devido à natureza do devfs5, os links criados manualmente não persistirão após a reinicialização do sistema. Para recriar o link simbólico automaticamente quando o sistema inicializar, adicione a seguinte linha ao arquivo /etc/devfs.conf: link cd0 dvd A decriptografia do DVD invoca certas funções que exigem permissão de gravação para o dispositivo DVD. Para melhorar a interface de memória compartilhada do Xorg, recomenda-se aumentar os valores dessas variáveis sysctl8: kern.ipc.shmmax=67108864 kern.ipc.shmall=32768 Determinando os Recursos de Vídeo XVideo SDL DGA Existem várias maneiras possíveis de exibir vídeo no Xorg e o que funciona é, em grande parte, dependente de hardware. Cada método descrito abaixo terá qualidade variável em diferentes hardwares. Interfaces de vídeo comuns incluem: Xorg: saída normal usando memória compartilhada. XVideo: uma extensão para a interface Xorg que permite que o vídeo seja exibido diretamente em objetos que podem ser desenhados através de uma aceleração especial. Esta extensão oferece reprodução de boa qualidade, mesmo em máquinas de baixo custo. A próxima seção descreve como determinar se esta extensão está sendo executada. SDL: Simple Directmedia Layer é uma camada de portabilidade para muitos sistemas operacionais, permitindo o desenvolvimento de aplicativos multiplataforma que fazem uso eficiente de som e gráficos. O SDL fornece uma abstração de baixo nível para o hardware, que às vezes pode ser mais eficiente que a interface do Xorg. No FreeBSD, o SDL pode ser instalado usando o pacote ou port devel/sdl20. DGA: Direct Graphics Access é uma extensão do Xorg que permite que um programa contorne o servidor Xorg e altere diretamente o quadro de buffer. Como ele depende de um mapeamento de memória de baixo nível, os programas que o utilizam devem ser executados como root. A extensão DGA pode ser testada e comparada usando dga1. Quando o dga está em execução, ele altera as cores do display sempre que uma tecla é pressionada. Para sair, pressione q. SVGAlib: uma camada gráfica de console de baixo nível. XVideo Para verificar se esta extensão está em execução, use xvinfo: % xvinfo O XVideo é suportado pela placa de vídeo se o resultado for semelhante a: X-Video Extension version 2.2 screen #0 Adaptor #0: "Savage Streams Engine" number of ports: 1 port base: 43 operations supported: PutImage supported visuals: depth 16, visualID 0x22 depth 16, visualID 0x23 number of attributes: 5 "XV_COLORKEY" (range 0 to 16777215) client settable attribute client gettable attribute (current value is 2110) "XV_BRIGHTNESS" (range -128 to 127) client settable attribute client gettable attribute (current value is 0) "XV_CONTRAST" (range 0 to 255) client settable attribute client gettable attribute (current value is 128) "XV_SATURATION" (range 0 to 255) client settable attribute client gettable attribute (current value is 128) "XV_HUE" (range -180 to 180) client settable attribute client gettable attribute (current value is 0) maximum XvImage size: 1024 x 1024 Number of image formats: 7 id: 0x32595559 (YUY2) guid: 59555932-0000-0010-8000-00aa00389b71 bits per pixel: 16 number of planes: 1 type: YUV (packed) id: 0x32315659 (YV12) guid: 59563132-0000-0010-8000-00aa00389b71 bits per pixel: 12 number of planes: 3 type: YUV (planar) id: 0x30323449 (I420) guid: 49343230-0000-0010-8000-00aa00389b71 bits per pixel: 12 number of planes: 3 type: YUV (planar) id: 0x36315652 (RV16) guid: 52563135-0000-0000-0000-000000000000 bits per pixel: 16 number of planes: 1 type: RGB (packed) depth: 0 red, green, blue masks: 0x1f, 0x3e0, 0x7c00 id: 0x35315652 (RV15) guid: 52563136-0000-0000-0000-000000000000 bits per pixel: 16 number of planes: 1 type: RGB (packed) depth: 0 red, green, blue masks: 0x1f, 0x7e0, 0xf800 id: 0x31313259 (Y211) guid: 59323131-0000-0010-8000-00aa00389b71 bits per pixel: 6 number of planes: 3 type: YUV (packed) id: 0x0 guid: 00000000-0000-0000-0000-000000000000 bits per pixel: 0 number of planes: 0 type: RGB (packed) depth: 1 red, green, blue masks: 0x0, 0x0, 0x0 Os formatos listados, como YUV2 e YUV12, não estão presentes em todas as implementações do XVideo e sua ausência pode atrapalhar alguns players. Se o resultado, ao invés disso, se parecer com: X-Video Extension version 2.2 screen #0 no adaptors present O XVideo provavelmente não é compatível com a placa. Isso significa que será mais difícil para o monitor atender às demandas computacionais de renderização de vídeo, dependendo da placa de vídeo e do processador. Ports e Pacotes Lidando com Vídeo video ports video packages Esta seção apresenta alguns dos softwares disponíveis na Coleção de Ports do FreeBSD, que podem ser usados para reprodução de vídeo. <application>MPlayer</application> e <application>MEncoder</application> O MPlayer é um reprodutor de vídeo em linha de comando com uma interface gráfica opcional que visa oferecer velocidade e flexibilidade. Outros front-ends gráficos para o MPlayer estão disponíveis na Coleção de Ports do FreeBSD. MPlayer O MPlayer pode ser instalado usando o pacote ou port multimedia/mplayer. Várias opções de compilação estão disponíveis e uma variedade de verificações de hardware ocorre durante o processo de compilação. Por esses motivos, alguns usuários preferem compilar um port ao invés de instalar o pacote. Ao compilar o port, as opções do menu devem ser revisadas para determinar o tipo de suporte a ser compilado no port. Se uma opção não estiver selecionada, o MPlayer não poderá exibir esse tipo de formato de vídeo. Use as setas e a barra de espaço para selecionar os formatos necessários. Quando terminar, pressione Enter para continuar a compilação e instalação do port. Por padrão, o pacote ou port construirá o utilitário de linha de comando mplayer e o utilitário gráfico gmplayer. Para codificar vídeos, compile o port multimedia/mencoder. Devido a restrições de licenciamento, um pacote não está disponível para o MEncoder. A primeira vez que o MPlayer for executado, ele criará um arquivo ~/.mplayer no diretório pessoal do usuário. Esse subdiretório contém versões padrões dos arquivos de configurações específicos do usuário. Esta seção descreve apenas alguns usos comuns. Consulte o mplayer(1) para uma descrição completa de suas inúmeras opções. Para reproduzir o arquivo testfile.avi, especifique as interfaces de vídeo com , conforme mostrado nos exemplos a seguir: % mplayer -vo xv testfile.avi % mplayer -vo sdl testfile.avi % mplayer -vo x11 testfile.avi # mplayer -vo dga testfile.avi # mplayer -vo 'sdl:dga' testfile.avi Vale a pena tentar todas essas opções, pois seu relativo desempenho depende de muitos fatores e varia significativamente com o hardware. Para reproduzir um DVD, substitua testfile.avi por , em que N é o número do título a ser reproduzido e DEVICE é o nó do dispositivo para o DVD. Por exemplo, para reproduzir o filme 3 de /dev/dvd: # mplayer -vo xv dvd://3 -dvd-device /dev/dvd O dispositivo padrão de DVD pode ser definido durante a construção do port MPlayer incluindo a opção WITH_DVD_DEVICE=/path/to/desired/device. Por padrão, o dispositivo é /dev/cd0. Mais detalhes podem ser encontrados no Makefile.options do port. Para parar, pausar, avançar e assim por diante, use uma tecla de atalho. Para ver a lista de atalhos de teclado, execute mplayer -h ou leia o mplayer (1). Opções de reprodução adicionais incluem , que ativa o modo de tela cheia e , o que ajuda no desempenho. Cada usuário pode adicionar opções comumente usadas ao seu ~/.mplayer/config assim: vo=xv fs=yes zoom=yes O mplayer pode ser usado para copiar um filme de DVD para um arquivo .vob. Para gravar o filme em um segundo DVD: # mplayer -dumpstream -dumpfile out.vob dvd://2 -dvd-device /dev/dvd O arquivo de saída, out.vob, estará no formato MPEG. Qualquer pessoa que deseje obter um alto nível de experiência com vídeo UNIX deve consultar mplayerhq.hu/DOCS. Como é tecnicamente informativa, esta documentação deve ser considerada como leitura obrigatória antes de enviar qualquer relatório de bug. mencoder Antes de usar o mencoder, é interessante familiarizar-se com as opções descritas em mplayerhq.hu/DOCS/HTML/en/mencoder.html. Existem inúmeras maneiras de melhorar a qualidade, diminuir a taxa de bits e alterar os formatos, e algumas dessas opções podem fazer a diferença entre bom ou mau desempenho. Combinações impróprias de opções de linha de comando podem produzir arquivos de saída que não podem ser reproduzidos até mesmo por mplayer. Aqui está um exemplo de uma cópia simples: % mencoder input.avi -oac copy -ovc copy -o output.avi Para copiar para um arquivo, use com o mplayer. Para converter input.avi para o codec MPEG4 com codificação de áudio MPEG3, primeiro instale o port audio/lame. Devido a restrições de licenciamento, um pacote não está disponível. Uma vez instalado, digite: % mencoder input.avi -oac mp3lame -lameopts br=192 \ -ovc lavc -lavcopts vcodec=mpeg4:vhq -o output.avi Isso produzirá uma saída reproduzível por aplicativos como mplayer e xine. input.avi pode ser substituído por e executado como root para recodificar um filme de DVD diretamente. Como pode levar algumas tentativas para obter o resultado desejado, recomenda-se gravar o arquivo de um filme e trabalhar nele. O Player (reprodutor) de Vídeo <application>xine</application> O xine é um reprodutor de vídeo com uma biblioteca base reutilizável e um executável modular que pode ser estendido com plug-ins. Pode ser instalado usando o pacote ou port multimedia/xine. Na prática, o xine requer uma CPU rápida com uma placa de vídeo rápida ou suporte para a extensão XVideo. O player de vídeo xine apresenta melhor desempenho nas interfaces XVideo. Por padrão, o player xine inicia uma interface gráfica com o usuário. Os menus podem então ser usados para abrir um arquivo específico. Alternativamente, o xine pode ser executado a partir da linha de comando, especificando o nome do arquivo a ser reproduzido: % xine -g -p mymovie.avi Consulte xine-project.org/faq para mais informações e dicas de solução de problemas. As Utilidades do <application>Transcode</application> O Transcode fornece um conjunto de ferramentas para recodificar arquivos de vídeo e áudio. O Transcode pode ser usado para mesclar arquivos de vídeo ou reparar arquivos quebrados usando ferramentas de linha de comando com interfaces de fluxo stdin/stdout. No FreeBSD, o Transcode pode ser instalado usando o pacote ou port multimedia/transcode. Muitos usuários preferem compilar o port, pois fornece um menu de opções de compilação para especificar o suporte e os codecs a serem compilados. Se uma opção não for selecionada, o Transcode não poderá codificar esse formato. Use as setas e a barra de espaço para selecionar os formatos necessários. Quando terminar, pressione Enter para continuar a compilação e instalação do port. Este exemplo demonstra como converter um arquivo DivX em um arquivo PAL MPEG-1 (PAL VCD): % transcode -i input.avi -V --export_prof vcd-pal -o output_vcd % mplex -f 1 -o output_vcd.mpg output_vcd.m1v output_vcd.mpa O arquivo MPEG resultante, output_vcd.mpg, está pronto para ser executado com o MPlayer. O arquivo pode ser gravado em uma mídia (CD), para criar um CD de vídeo usando um utilitário como multimedia/vcdimager ou sysutils/cdrdao. Além da página de manual do transcode, consulte transcoding.org/cgi-bin/transcode para mais informações e exemplos. Placas de TV Josef El-Rayes Contribuição original por Marc Fonvieille Aprimorado e adaptado por TV cards As placas de TV podem ser usadas para assistir à transmissão ou à TV a cabo em um computador. A maioria das placas aceitam vídeo composto por meio de uma entrada RCA ou S-video e algumas placas incluem um sintonizador de rádio FM. O FreeBSD fornece suporte para placas de TV baseadas em PCI usando um chip de captura de vídeo Brooktree Bt848/849/878/879 com o driver bktr4. Este driver suporta a maioria das placas de vídeo Pinnacle PCTV. Antes de comprar uma placa de TV, consulte bktr4 para obter uma lista dos sintonizadores suportados. Carregando o Driver Para usar a placa, o driver bktr4 deve ser carregado. Para automatizar isso no momento da inicialização, adicione a seguinte linha ao arquivo /boot/loader.conf: bktr_load="YES" Como alternativa, pode-se compilar estaticamente o suporte para a placa de TV em um kernel personalizado. Nesse caso, adicione as seguintes linhas ao arquivo de configuração do kernel personalizado: device bktr device iicbus device iicbb device smbus Esses dispositivos adicionais são necessários, pois os componentes da placa são interconectados por meio de um barramento I2C. Em seguida, crie e instale um novo kernel. Para testar se o sintonizador foi detectado corretamente, reinicialize o sistema. A placa de TV deve aparecer nas mensagens de inicialização, conforme mostrado neste exemplo: bktr0: <BrookTree 848A> mem 0xd7000000-0xd7000fff irq 10 at device 10.0 on pci0 iicbb0: <I2C bit-banging driver> on bti2c0 iicbus0: <Philips I2C bus> on iicbb0 master-only iicbus1: <Philips I2C bus> on iicbb0 master-only smbus0: <System Management Bus> on bti2c0 bktr0: Pinnacle/Miro TV, Philips SECAM tuner. As mensagens serão diferentes de acordo com o hardware. Se necessário, é possível substituir alguns dos parâmetros detectados usando sysctl8 ou opções de configuração de kernel personalizadas. Por exemplo, para forçar o sintonizador a usar um sintonizador SECAM da Philips, adicione a seguinte linha a um arquivo de configuração de kernel personalizado: options OVERRIDE_TUNER=6 ou, use sysctl8: # sysctl hw.bt848.tuner=6 Consulte bktr4 para obter uma descrição disponível dos parâmetros do sysctl8 e opções do kernel. Aplicações Úteis Para usar a placa de TV, instale um dos seguintes aplicativos: multimedia/fxtv oferece recursos de captura de imagem/áudio/vídeo numa transmissão de TV no monitor do computador. O multimedia/xawtv é outro aplicativo de TV com recursos semelhantes. O audio/xmradio fornece uma aplicação para usar o sintonizador de rádio FM de uma placa de TV. Mais aplicações estão disponíveis na Coleção de Ports do FreeBSD. Solução de problemas Se forem encontrados problemas com a placa de TV, verifique se o chip de captura de vídeo e o sintonizador são compatíveis com bktr4 e que as opções corretas de configuração foram usadas. Para obter mais suporte ou para fazer perguntas sobre as placas de TV suportadas, consulte a lista de discussão freebsd-multimedia. MythTV MythTV é um popular aplicativo de gravação de vídeo pessoal (PVR). Esta seção demonstra como instalar e configurar o MythTV no FreeBSD. Consulte mythtv.org/wiki para mais informações sobre como usar o MythTV. MythTV requer um frontend e um backend. Esses componentes podem ser instalados no mesmo sistema ou em máquinas diferentes. O frontend pode ser instalado no FreeBSD usando o pacote ou port multimedia/mythtv-frontend. O Xorg também deve ser instalado e configurado conforme descrito em . Idealmente, este sistema tem uma placa de vídeo que suporta Compensação de Movimento de X-Vídeo (XvMC) e, opcionalmente, um controle remoto compatível com o Controle Remoto Infravermelho do Linux (LIRC). Para instalar o backend e o frontend no FreeBSD, use o pacote ou port multimedia/mythtv. Um servidor de banco de dados MySQL também é necessário e deve ser instalado automaticamente como uma dependência. Opcionalmente, este sistema deve ter uma placa sintonizadora e armazenamento suficiente para armazenar os dados gravados. Hardware O MythTV usa o Video for Linux (V4L) para acessar dispositivos de entrada de vídeo, como codificadores e sintonizadores. No FreeBSD, o MythTV funciona melhor com placas USB DVB-S/C/T, pois são bem suportadas pelo pacote multimedia/webcamd ou pelo port que forneça uma aplicação V4L userland. Qualquer placa de transmissão de vídeo digital (DVB) suportada pelo webcamd deve funcionar com o MythTV. Uma lista de placas suportadas conhecidas pode ser encontrada em wiki.freebsd.org/WebcamCompat. Drivers também estão disponíveis para placas Hauppauge nos ports multimedia/pvr250 e multimedia/pvrxxx, mas eles fornecem uma interface de driver não padronizados que não funcionam com versões do MythTV posteriores à 0.23. Devido a restrições de licenciamento, nenhum pacote está disponível e esses dois ports devem ser compilados. A página wiki.freebsd.org/HTPC contém uma lista de todos os drivers DVB disponíveis. Configurando o Backend MythTV Para instalar o MythTV usando pacotes binários: # pkg install mythtv Como alternativa, para instalar a partir da Coleção de Ports: # cd /usr/ports/multimedia/mythtv # make install Uma vez instalado, configure o banco de dados do MythTV: # mysql -uroot -p < /usr/local/share/mythtv/database/mc.sql Em seguida, configure o backend: # mythtv-setup Finalmente, inicie o backend: # sysrc mythbackend_enable=yes # service mythbackend start Scanners de Imagem Marc Fonvieille Escrito por image scanners No FreeBSD, o acesso aos scanners de imagens é fornecido pelo SANE (Scanner Access Now Easy), que está disponível na Coleção de Ports do FreeBSD. O SANE também usará alguns drivers de dispositivos do FreeBSD para fornecer acesso ao hardware do scanner. O FreeBSD suporta os scanners SCSI e USB. Dependendo da interface do scanner, são necessários drivers de dispositivos diferentes. Certifique-se de que o scanner seja suportado pelo SANE antes de executar qualquer configuração. Consulte http://www.sane-project.org/sane-supported-devices.html para obter mais informações sobre os scanners suportados. Este capítulo descreve como determinar se o scanner foi detectado pelo FreeBSD. Em seguida, ele fornece uma visão geral de como configurar e usar o SANE em um sistema FreeBSD. Verificando o Scanner O kernel GENERIC inclui os drivers de dispositivos necessários para suportar scanners USB. Usuários com um kernel personalizado devem garantir que as seguintes linhas estejam presentes no arquivo de configuração do kernel personalizado: device usb device uhci device ohci device ehci Para verificar se o scanner USB foi detectado, conecte-o e execute o comando dmesg, sendo então possível ver se o scanner aparece no buffer de mensagens do sistema. Em caso afirmativo, deve ser exibida uma mensagem semelhante a esta: ugen0.2: <EPSON> at usbus0 Neste exemplo, um scanner EPSON Perfection 1650 USB foi detectado em /dev/ugen0.2. Se o scanner usar uma interface SCSI, é importante saber qual placa controladora SCSI será usada. Dependendo do chipset SCSI, um arquivo de configuração do kernel personalizado pode ser necessário. O kernel GENERIC suporta os controladores SCSI mais comuns. Consulte /usr/src/sys/conf/NOTES para determinar a linha correta a ser adicionada a um arquivo de configuração de kernel personalizado. Além do driver de adaptador SCSI, as seguintes linhas são necessárias em um arquivo de configuração de kernel personalizado: device scbus device pass Verifique se o dispositivo é exibido no buffer de mensagens do sistema: pass2 at aic0 bus 0 target 2 lun 0 pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device pass2: 3.300MB/s transfers Se o scanner não foi ligado na inicialização do sistema, ainda é possível forçar manualmente a detecção executando uma varredura de barramento SCSI com o comando camcontrol: # camcontrol rescan all Re-scan of bus 0 was successful Re-scan of bus 1 was successful Re-scan of bus 2 was successful Re-scan of bus 3 was successful O scanner deve agora aparecer na lista de dispositivos SCSI: # camcontrol devlist <IBM DDRS-34560 S97B> at scbus0 target 5 lun 0 (pass0,da0) <IBM DDRS-34560 S97B> at scbus0 target 6 lun 0 (pass1,da1) <AGFA SNAPSCAN 600 1.10> at scbus1 target 2 lun 0 (pass3) <PHILIPS CDD3610 CD-R/RW 1.00> at scbus2 target 0 lun 0 (pass2,cd0) Consulte scsi4 e camcontrol8 para mais detalhes sobre dispositivos SCSI no FreeBSD. Configuração do <application>SANE</application> O SANE possui um sistema dividido em duas partes: os backends (graphics/sane-backends) e os frontends (graphics/sane-frontends ou graphics/xsane). Os backends fornecem acesso ao scanner. Consulte http://www.sane-project.org/sane-supported-devices.html para determinar qual backend suporta o scanner. Os frontends fornecem a interface de varredura gráfica. graphics/sane-frontends instala o xscanimage enquanto o graphics/xsane instala o xsane. Para instalar as duas partes de pacotes binários: # pkg install xsane sane-frontends Alternativamente, para instalar a partir da Coleção de Ports # cd /usr/ports/graphics/sane-frontends # make install clean # cd /usr/ports/graphics/xsane # make install clean Depois de instalar o pacote ou port graphics/sane-backends, use o comando sane-find-scanner para verificar a detecção do scanner pelo sistema SANE: # sane-find-scanner -q found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3 A saída deve mostrar o tipo de interface do scanner e o nó do dispositivo usado para conectar o scanner ao sistema. O fornecedor e o modelo do produto podem ou não aparecer. Alguns scanners USB exigem que o firmware seja carregado. Consulte sane-find-scanner(1) e sane(7) para mais detalhes. Em seguida, verifique se o scanner será identificado por uma interface de digitalização. Os backends SANE incluem o comando scanimage, que pode ser usado para listar os dispositivos e realizar uma aquisição de imagens. Use a opção para listar os dispositivos do scanner. O primeiro exemplo é para um scanner SCSI e o segundo é para um scanner USB: # scanimage -L device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner # scanimage -L device 'epson2:libusb:/dev/usb:/dev/ugen0.2' is a Epson GT-8200 flatbed scanner Neste segundo exemplo, 'epson2: libusb:/dev/usb:/dev/ugen0.2' é o nome do backend (epson2) e /dev/ugen0.2 é o nó do dispositivo usado pelo scanner. Se o comando scanimage não conseguir identificar o scanner, esta mensagem será exibida: # scanimage -L No scanners were identified. If you were expecting something different, check that the scanner is plugged in, turned on and detected by the sane-find-scanner tool (if appropriate). Please read the documentation which came with this software (README, FAQ, manpages). Se isso acontecer, edite o arquivo de configuração de backend em /usr/local/etc/sane.d/ e defina o dispositivo de scanner usado. Por exemplo, se o modelo de scanner não detectado for um EPSON Perfection 1650 e usar o backend epson2, edite o arquivo /usr/ local/etc/sane.d/epson2.conf. Ao editar, adicione uma linha especificando a interface e o nó do dispositivo usado. Nesse caso, adicione a seguinte linha: usb /dev/ugen0.2 Salve as edições e verifique se o scanner está identificado com o nome do back-end correto e com o nó do dispositivo: # scanimage -L device 'epson2:libusb:/dev/usb:/dev/ugen0.2' is a Epson GT-8200 flatbed scanner Depois que o comando scanimage -L identificar o scanner, a configuração estará completa e o scanner estará pronto para ser usado. Embora o scanimage possa ser usado para realizar uma digitalização de imagem a partir da linha de comando, muitas vezes é preferível usar uma interface gráfica para executar o escaneamento. O pacote ou port graphics/sane-frontends instala uma interface gráfica simples, mas eficiente, xscanimage. Alternativamente, o xsane, que é instalado com o pacote ou port graphics/xsane, é outro frontend de digitalização gráfica popular. Ele oferece recursos avançados, como vários modos de digitalização, correção de cores e digitalizações em lote. Ambos os aplicativos são utilizáveis como um plugin do GIMP. Permissões do Scanner Para ter acesso ao scanner, o usuário precisa ler e gravar as permissões no nó do dispositivo usado pelo scanner. No exemplo anterior, o scanner USB usa o nó do dispositivo /dev/ugen0.2 que é realmente um link simbólico para o nó do dispositivo real /dev/usb/0.2.0. O link simbólico e o nó do dispositivo pertencem, respectivamente, aos grupos wheel e operator. Adicionando o usuário a esses grupos, será permitido o acesso ao scanner, considera-se inseguro adicionar um usuário a wheel. Uma solução melhor é criar um grupo e tornar o dispositivo de scanner acessível aos membros desse grupo. Este exemplo cria um grupo chamado usb: # pw groupadd usb Então, crie um link simbólico para /dev/ugen0.2 e o nó do dispositivo /dev/usb/0.2.0 para ficarem acessíveis ao grupo usb com permissões de gravação 0660 ou 0664 adicionando as seguintes linhas ao /etc/devfs.rules: [system=5] add path ugen0.2 mode 0660 group usb add path usb/0.2.0 mode 0666 group usb Finalmente, adicione os usuários a usb para permitir acesso ao scanner: # pw groupmod usb -m joe Para mais detalhes, consulte pw8.
Configurando o kernel do FreeBSD Sinopse kernel building a custom kernel O kernel é o núcleo do sistema operacional do FreeBSD. Ele é responsável pelo gerenciamento de memória, aplicação de controles de segurança, rede, acesso ao disco e muito mais. Embora grande parte do FreeBSD seja configurável dinamicamente, ainda é necessário configurar e compilar um kernel personalizado ocasionalmente. Depois de ler este capítulo, você saberá: Quando compilar um kernel personalizado. Como obter um inventário do hardware. Como personalizar um arquivo de configuração do kernel. Como usar o arquivo de configuração do kernel para criar e compilar um novo kernel. Como instalar o novo kernel. Como solucionar problemas se as coisas derem errado. Todos os comandos listados nos exemplos deste capítulo devem ser executados como root. Por que compilar um kernel personalizado? Tradicionalmente, o FreeBSD usava um kernel monolítico. O kernel era um grande programa, suportava uma lista fixa de dispositivos e, para mudar o comportamento do kernel, era preciso compilar e depois reinicializar em um novo kernel. Hoje, a maior parte da funcionalidade do kernel do FreeBSD está contida em módulos que podem ser dinamicamente carregados e descarregados do kernel, conforme necessário. Isso permite que o kernel em execução se adapte imediatamente ao novo hardware e que novas funcionalidades sejam trazidas para o kernel. Isso é conhecido como um kernel modular. Ocasionalmente, ainda é necessário executar a configuração do kernel estático. Às vezes, a funcionalidade necessária é tão ligada ao kernel que não pode ser carregada dinamicamente. Alguns ambientes de segurança impedem o carregamento e descarregamento de módulos do kernel e exigem que apenas a funcionalidade necessária seja estaticamente compilada no kernel. Construir um kernel personalizado é muitas vezes um rito de passagem para usuários avançados do BSD. Este processo, embora consuma tempo, pode fornecer benefícios ao sistema FreeBSD. Ao contrário do kernel GENERIC, que deve suportar uma ampla gama de hardware, um kernel personalizado pode ser reduzido para fornecer suporte apenas para o hardware desse computador. Isso tem vários benefícios, tais como: Tempo de inicialização mais rápido. Uma vez que o kernel irá verificar apenas o hardware existente no sistema, o tempo que o sistema leva para inicializar pode diminuir. Diminuir o uso de memória. Um kernel personalizado geralmente usa menos memória que o kernel GENERIC ao omitir recursos e drivers de dispositivo que não são utilizados. Isso é importante porque o código do kernel permanece residente na memória física o tempo todo, impedindo que a memória seja usada pelos aplicativos. Por esse motivo, um kernel personalizado é útil em um sistema com uma pequena quantidade de RAM. Suporte adicional de hardware. Um kernel personalizado pode adicionar suporte para dispositivos que não estão presentes no kernel GENERIC. Antes de criar um kernel personalizado, considere a razão para isso. Se houver necessidade de suporte para um hardware específico, ele já pode existir como um módulo. Os módulos do kernel existem em /boot/kernel e podem ser dinamicamente carregados no kernel em execução usando o kldload8. A maioria dos drivers do kernel tem um módulo carregável e uma página de manual. Por exemplo, o driver Ethernet sem fio ath4 tem as seguintes informações em sua página de manual: Como alternativa, para carregar o driver como um módulo no momento da inicialização, coloque o a seguinte linha no loader.conf5:     if_ath_load="YES" Adicionar if_ath_load="YES" ao /boot/loader.conf carregará este módulo dinamicamente no momento da inicialização. Em alguns casos, não há nenhum módulo associado em /boot/kernel. Isso é verdade principalmente para certos subsistemas. Encontrando o hardware do sistema Antes de editar o arquivo de configuração do kernel, é recomendável realizar um inventário do hardware da máquina. Em um sistema de inicialização dupla, o inventário pode ser criado a partir do outro sistema operacional. Por exemplo, o Device Manager da Microsoft contém informações sobre os dispositivos instalados. Algumas versões do Microsoft Windows têm um ícone System que pode ser usado para acessar o Device Manager. Se o FreeBSD for o único sistema operacional instalado, use o dmesg8 para determinar o hardware que foi encontrado e listado durante a verificação de inicialização. A maioria dos drivers de dispositivos no FreeBSD tem uma página de manual que lista o hardware suportado pelo driver. Por exemplo, as seguintes linhas indicam que o driver psm4 encontrou um mouse: psm0: <PS/2 Mouse> irq 12 on atkbdc0 psm0: [GIANT-LOCKED] psm0: [ITHREAD] psm0: model Generic PS/2 mouse, device ID 0 Como esse hardware existe, esse driver não deve ser removido de um arquivo de configuração de kernel personalizado. Se a saída do dmesg não exibir os resultados da saída da verificação de inicialização, leia o conteúdo do /var/run/dmesg.boot. Outra ferramenta para encontrar hardware é o pciconf 8, que fornece uma saída mais detalhada. Por exemplo: % pciconf -lv ath0@pci0:3:0:0: class=0x020000 card=0x058a1014 chip=0x1014168c rev=0x01 hdr=0x00 vendor = 'Atheros Communications Inc.' device = 'AR5212 Atheros AR5212 802.11abg wireless' class = network subclass = ethernet Esta saída mostra que o driver ath localizou um dispositivo Ethernet sem fio. O sinalizador do man 1 pode ser usado para fornecer informações úteis. Por exemplo, ele pode ser usado para exibir uma lista de páginas de manual que contêm uma marca ou um nome de dispositivo específico: # man -k Atheros ath(4) - Atheros IEEE 802.11 wireless network driver ath_hal(4) - Atheros Hardware Access Layer (HAL) Depois que a lista de inventário de hardware for criada, consulte-a para garantir que os drivers para o hardware instalado não sejam removidos à medida que a configuração do kernel personalizado é editada. O Arquivo de Configuração Para criar um arquivo de configuração do kernel personalizado e compilar um kernel personalizado, a árvore de código-fonte completa do FreeBSD deve ser instalada primeira. Se o /usr/src/ não existir ou estiver vazio, o código-fonte não foi instalado. O fonte pode ser instalado usando o Subversion e as instruções em . Depois que o código-fonte for instalado, revise o conteúdo do /usr/src/sys. Este diretório contém vários subdiretórios, incluindo aqueles que representam as seguintes arquiteturas suportadas: amd64, i386, powerpc e sparc64. Tudo dentro do diretório de uma arquitetura em particular lida apenas com essa arquitetura e o restante do código é código independente de máquina comum a todas as plataformas. Cada arquitetura suportada tem um subdiretório conf que contém o arquivo de configuração do kernel GENERIC para essa arquitetura. Não faça edições no GENERIC. Em vez disso, copie o arquivo para um nome diferente e faça edições na cópia. A convenção é usar um nome do host com todas as letras maiúsculas. Ao manter várias máquinas FreeBSD com hardware diferente, é uma boa idéia nomeá-lo com o nome do host da máquina. Este exemplo cria uma cópia, denominada MYKERNEL, do arquivo de configuração GENERIC para a arquitetura amd64: # cd /usr/src/sys/amd64/conf # cp GENERIC MYKERNEL O MYKERNEL agora pode ser personalizado com qualquer editor de texto ASCII. O editor padrão é o vi, embora um editor mais fácil para iniciantes, chamado ee, também seja instalado com o FreeBSD. kernel NOTES NOTES kernel configuration file O formato do arquivo de configuração do kernel é simples. Cada linha contém uma palavra-chave que representa um dispositivo ou subsistema, um argumento e uma breve descrição. Qualquer texto depois de um # é considerado um comentário e ignorado. Para remover o suporte do kernel para um dispositivo ou subsistema, coloque um # no início da linha que representa esse dispositivo ou subsistema. Não adicione ou remova um # para qualquer linha que você não entenda. É fácil remover o suporte para um dispositivo ou opção e acabar com um kernel quebrado. Por exemplo, se o driver ata4 for removido do arquivo de configuração do kernel, um sistema usando os drivers de disco ATA pode não inicializar. Em caso de dúvida, basta deixar o suporte no kernel. Além das breves descrições fornecidas neste arquivo, descrições adicionais estão contidas no arquivo NOTES, o qual pode ser encontrado no mesmo diretório que o GENERIC para aquela arquitetura. Para opções independentes de arquitetura, consulte /usr/src/sys/conf/NOTES. Quando terminar de personalizar o arquivo de configuração do kernel, salve uma cópia de backup em um local fora do /usr/src. Como alternativa, mantenha o arquivo de configuração do kernel em outro lugar e crie um link simbólico para o arquivo: # cd /usr/src/sys/amd64/conf # mkdir /root/kernels # cp GENERIC /root/kernels/MYKERNEL # ln -s /root/kernels/MYKERNEL Uma diretiva include está disponível para uso em arquivos de configuração. Isso permite que outro arquivo de configuração seja incluído no arquivo atual, facilitando a manutenção de pequenas alterações em relação a um arquivo existente. Se apenas um pequeno número de opções ou drivers adicionais forem necessários, isso permitirá que um delta seja mantido com relação ao GENERIC, conforme mostrado neste exemplo: include GENERIC ident MYKERNEL options IPFIREWALL options DUMMYNET options IPFIREWALL_DEFAULT_TO_ACCEPT options IPDIVER Usando este método, o arquivo de configuração local expressa as diferenças locais em relação ao kernel GENERIC. Conforme as atualizações são realizadas, os novos recursos adicionados ao GENERIC também serão adicionados ao kernel local, a menos que sejam especificamente evitados usando nooptions ou nodevice. Uma lista abrangente de diretivas de configuração e suas descrições pode ser encontrada em config5. Para compilar um arquivo que contém todas as opções disponíveis, execute o seguinte comando como root: # cd /usr/src/sys/arch/conf && make LINT Criando e Instalando um Kernel Customizado Depois que as edições no arquivo de configuração personalizada forem salvas, o código-fonte do kernel poderá ser compilado usando as seguintes etapas: Compilando um Kernel kernel building / installing Mude para este diretório: # cd /usr/src Compile o novo kernel especificando o nome do arquivo de configuração do kernel personalizado: # make buildkernel KERNCONF=MYKERNEL Instale o novo kernel associado ao arquivo de configuração do kernel especificado. Este comando irá copiar o novo kernel para /boot/kernel/kernel e salvar o kernel antigo para /boot/kernel.old/kernel: # make installkernel KERNCONF=MYKERNEL Desligue o sistema e reinicie no novo kernel. Se algo der errado, consulte . Por padrão, quando um kernel personalizado é compilado, todos os módulos do kernel são reconstruídos. Para atualizar um kernel mais rapidamente ou para construir apenas módulos customizados, edite o /etc/make.conf antes de começar a construir o kernel. Por exemplo, esta variável especifica a lista de módulos para compilar em vez de usar o padrão de construir todos os módulos: MODULES_OVERRIDE = linux acpi Como alternativa, essa variável lista quais módulos excluir do processo de criação: WITHOUT_MODULES = linux acpi sound Variáveis adicionais estão disponíveis. Consulte make.conf5 para detalhes. /boot/kernel.old Se algo der errado Existem quatro categorias de problemas que podem ocorrer ao criar um kernel personalizado: falhas na config Se o config falhar, ele imprimirá o número da linha que está incorreta. Como exemplo, para a seguinte mensagem, certifique-se de que a linha 17 seja digitada corretamente, comparando-a com GENERIC ou NOTES: config: line 17: syntax error falha no make Se o make falhar, geralmente é devido a um erro no arquivo de configuração do kernel que não é grave o suficiente para o config capturar. Revise a configuração, e se o problema não for aparente, envie um email para a lista de discussão de questões gerais do FreeBSD contendo o arquivo de configuração do kernel. O kernel não inicializa Se o novo kernel não inicializar ou não reconhecer os dispositivos, não entre em pânico! Felizmente, o FreeBSD possui um excelente mecanismo para recuperação de kernels incompatíveis. Simplesmente escolha o kernel para inicializar a partir do gerenciador de inicialização do FreeBSD. Isso pode ser acessado quando o menu de inicialização do sistema aparecer, selecionando a opção Escape to a loader prompt. No prompt, digite boot kernel.old ou o nome de qualquer outro kernel que seja conhecido por inicializar corretamente. Após inicializar com um kernel correto, verifique o arquivo de configuração e tente construí-lo novamente. Um recurso útil é o /var/log/messages que registra as mensagens do kernel de cada inicialização bem-sucedida. Além disso, o dmesg8 imprimirá as mensagens do kernel a partir da inicialização atual. Ao solucionar problemas de um kernel, certifique-se de manter uma cópia do GENERIC, ou algum outro kernel que funcione, como um nome diferente que não será apagado na próxima compilação. Isto é importante porque toda vez que um novo kernel é instalado, o kernel.old é sobrescrito com o último kernel instalado, que pode ou não ser inicializável. Assim que possível, mova o kernel funcional renomeando o diretório que contém o kernel correto: # mv /boot/kernel /boot/kernel.bad # mv /boot/kernel.good /boot/kernel O kernel funciona, mas o ps1 não Se a versão do kernel for diferente daquela com a qual os utilitários do sistema foram construídos, por exemplo, um kernel compilado a partir do código-fonte do -CURRENT é instalado em um sistema -RELEASE, muitos comandos de status do sistema como ps1 e vmstat8 não funcionarão. Para corrigir isso, recompile e instale o world usando a mesma versão da árvore de código-fonte que o kernel. Nunca é uma boa ideia usar uma versão diferente do kernel do que o resto do sistema operacional. Impressão Warren Block Originalmente contribuído por Colocar informações no papel é uma função vital, apesar de muitas tentativas de eliminá-la. A impressão tem dois componentes básicos. Os dados devem ser entregues à impressora e devem estar em um formato que a impressora possa entender. Inicio Rápido A impressão básica pode ser configurada rapidamente. A impressora deve ser capaz de imprimir texto simples ASCII. Para imprimir em outros tipos de arquivos, consulte . Crie um diretório para armazenar arquivos enquanto eles estão sendo impressos: # mkdir -p /var/spool/lpd/lp # chown daemon:daemon /var/spool/lpd/lp # chmod 770 /var/spool/lpd/lp Como root, crie /etc/printcap com estes conteúdos: lp:\ :lp=/dev/unlpt0:\ :sh:\ :mx#0:\ :sd=/var/spool/lpd/lp:\ :lf=/var/log/lpd-errs: Esta linha é para uma impressora conectada a uma porta USB. Para uma impressora conectada a uma porta paralela ou uma porta de impressora, use: :lp=/dev/lpt0:\ Para uma impressora conectada diretamente a uma rede, use: :lp=:rm=network-printer-name:rp=raw:\ Substitua network-printer-name pelo nome de host DNS da impressora de rede. Ative o lpd editando o /etc/rc.conf, adicionando esta linha: lpd_enable="YES" Inicie o serviço: # service lpd start Starting lpd. Imprima um teste: # printf "1. This printer can print.\n2. This is the second line.\n" | lpr Se ambas as linhas não iniciarem na borda esquerda, mas em degrau, consulte . Arquivos de texto agora podem ser impressos com lpr. Dê o nome do arquivo na linha de comando ou canalize a saída diretamente no lpr. % lpr textfile.txt % ls -lh | lpr Conexões de Impressora As impressoras são conectadas a sistemas de computadores de várias maneiras. Geralmente, as impressoras desktop pequenas são conectadas diretamente à porta USB do computador. As impressoras mais antigas são conectadas a uma porta paralela ou a porta de impressora. Algumas impressoras estão diretamente conectadas a uma rede, facilitando o compartilhamento com vários computadores. Algumas impressoras usam uma rara conexão de porta serial. O FreeBSD pode se comunicar com todos esses tipos de impressoras. USB As impressoras USB podem ser conectadas a qualquer porta USB disponível no computador. Quando o FreeBSD detecta uma impressora USB, duas entradas de dispositivos são criadas: /dev/ulpt0 e /dev/unlpt0. Os dados enviados para qualquer dispositivo serão retransmitidos para a impressora. Após cada trabalho de impressão, o ulpt0 reseta a porta USB. O reset da porta pode causar problemas em algumas impressoras, portanto, o dispositivo unlpt0 é normalmente usado em seu lugar. O unlpt0 não reseta a porta USB. Paralela (IEEE-1284) O dispositivo da porta paralela é o /dev/lpt0. Este dispositivo aparece independentemente se uma impressora está ou não conectada, ela não é autodetectada. A maior parte dos fabricantes se afastou destas portas legadas e muitos computadores não as têm mais. Adaptadores podem ser usados para conectar uma impressora paralela a uma porta USB. Com este tipo de adaptador, a impressora pode ser tratada como se fosse uma impressora USB. Dispositivos chamados servidores de impressão também podem ser usados para conectar impressoras paralelas diretamente a uma rede. Serial (RS-232) Portas seriais são outro tipo de porta legada, raramente usada para impressoras, exceto em determinadas aplicações de nicho. Os cabos, os conectores e a fiação necessária variam muito. Para portas seriais incorporadas em uma placa-mãe, o nome do dispositivo serial é /dev/cuau0 ou /dev/cuau1. Os adaptadores Seriais USB também podem ser usados, e eles aparecerão como /dev/cuaU0. Vários parâmetros de comunicação devem ser conhecidos para se comunicar com uma impressora serial. Os mais importantes são baud rate ou BPS (Bits por segundo) e paridade. Os valores variam, mas as impressoras seriais típicas usam uma taxa de transmissão de 9600 e nenhuma paridade. Rede As impressoras de rede estão conectadas diretamente à rede de computadores local. O nome de host DNS da impressora deve ser conhecido. Se a impressora tiver um endereço dinâmico atribuído por DHCP, o DNS deverá ser atualizado dinamicamente para que o nome do host tenha sempre o endereço IP correto. As impressoras de rede geralmente recebem endereços IP estáticos para evitar esse problema. A maioria das impressoras de rede entende os trabalhos de impressão enviados com o protocolo LPD. Um nome de fila de impressão também pode ser especificado. Algumas impressoras processam dados de maneira diferente, dependendo de qual fila é usada. Por exemplo, uma fila raw imprime os dados inalterados, enquanto a fila text adiciona retornos de carro aos textos simples. Muitas impressoras de rede também podem imprimir dados enviados diretamente para a porta 9100. Resumo As conexões de rede com fio geralmente são as mais fáceis de configurar e oferecem a impressão mais rápida. Para conexão direta com o computador, a conexão USB é preferida em função da velocidade e da simplicidade. As conexões paralelas funcionam, mas têm limitações no comprimento do cabo e na velocidade. Conexões seriais são mais difíceis de configurar. A configuração do cabo difere entre os modelos, e os parâmetros de comunicação, como taxa de transmissão e bits de paridade, se somam a complexidade. Felizmente, as impressoras seriais são raras. Linguagens de Descrição de Página Comuns Os dados enviados a uma impressora devem estar em um idioma que a impressora possa entender. Esses idiomas são chamados de Linguagens de Descrição de Página ou PDLs. ASCII Texto ASCII simples é a maneira mais simples de enviar dados para uma impressora. Os caracteres correspondem um a um com o que será impresso: um A nos dados imprime um A na página. Muito pouca formatação está disponível. Não há como selecionar uma fonte ou espaçamento proporcional. A simplicidade forçada do texto ASCII simples significa que o texto pode ser impresso diretamente do computador com pouca ou nenhuma codificação ou tradução. A saída impressa corresponde diretamente ao que foi enviado. Algumas impressoras baratas não conseguem imprimir texto ASCII simples. Isso as torna mais difíceis de configurar, mas geralmente ainda é possível fazê-lo. PostScript O PostScript é quase o oposto do ASCII. Em vez de um texto simples, um programa PostScript é um conjunto de instruções que desenham o documento final. Fontes e gráficos diferentes podem ser usados. No entanto, esse poder tem um preço. O programa que desenha a página deve ser escrito. Geralmente este programa é gerado pelo software aplicativo, portanto, o processo é invisível para o usuário. Impressoras baratas às vezes deixam de fora a compatibilidade com o PostScript como uma medida para economia de custos. PCL (linguagem de comando de impressora) A PCL é uma extensão do ASCII, adicionando sequências de escape para formatação, seleção de fontes e impressão de gráficos. Muitas impressoras fornecem suporte para PCL5. Algumas suportam o mais recente PCL6 ou o PCLXL. Essas versões posteriores são superconjuntos do PCL5 e podem fornecer uma impressão mais rápida. Baseado em Host Os fabricantes podem reduzir o custo de uma impressora, oferecendo um processador simples e muito pouca memória. Essas impressoras não são capazes de imprimir texto simples. Em vez disso, bitmaps de texto e gráficos são desenhados por um driver no computador host e, em seguida, enviados para a impressora. Estas são chamadas de impressoras baseadas em host. A comunicação entre o driver e uma impressora baseada em host geralmente ocorre por meio de protocolos proprietários ou não documentados, tornando-os funcionais apenas nos sistemas operacionais mais comuns. Convertendo <trademark class="registered">PostScript</trademark> para outros <acronym>PDL</acronym>s Muitas aplicações da Coleção de Ports e muitos utilitários do FreeBSD produzem uma saída em PostScript. Esta tabela mostra os utilitários disponíveis para converter o postscript em outros PDLs comuns: Saída <acronym>PDL</acronym>s Saída PDL Gerado por Notas PCL ou PCL5 print/ghostscript9 -sDEVICE=ljet4 para monocromático, e -sDEVICE=cljet5 para colorido PCLXL ou PCL6 print/ghostscript9 -sDEVICE=pxlmono para monocromático, -sDEVICE=pxlcolor para colorido ESC/P2 print/ghostscript9 -sDEVICE=uniprint XQX print/foo2zjs
Resumo Para facilitar a impressão, escolha uma impressora que suporte PostScript. Impressoras que suportam PCL são as próximas preferidas. Com o print/ghostscript, essas impressoras podem ser usadas como se entendessem nativamente PostScript. Impressoras que suportam PostScript ou PCL diretamente quase sempre suportam a impressão direta de arquivos de texto simples ASCII também. Impressoras baseadas em linha, como as jatos de tinta comuns, geralmente não suportam PostScript ou PCL. Elas geralmente podem imprimir arquivos de texto plano ASCII. O print/ghostscript suporta os PDL usados por algumas dessas impressoras. Entretanto, a impressão de uma página inteira baseada em gráficos nessas impressoras costuma ser muito lenta devido à grande quantidade de dados a serem transferidos e impressos. Geralmente, as impressoras baseadas em host são mais difíceis de configurar. Algumas não podem ser usadas por causa de PDLs proprietários. Evite essas impressoras quando possível. Descrições de muitos PDLs podem ser encontradas em . O PDL específico usado por vários modelos de impressoras pode ser encontrado em .
Impressão Direta Para impressão ocasional, os arquivos podem ser enviados diretamente para um dispositivo de impressora sem qualquer configuração. Por exemplo, um arquivo chamado exemplo.txt pode ser enviado para uma impressora USB: # cp sample.txt /dev/unlpt0 A impressão direta para impressoras de rede depende das capacidades da impressora, mas a maioria aceita trabalhos de impressão na porta 9100, e o nc 1 pode ser usado com eles. Para imprimir o mesmo arquivo em uma impressora com o nome de host DNS de netlaser: # nc netlaser 9100 < sample.txt <acronym>LPD</acronym> (Daemon de impressora de linha) A impressão de um arquivo em segundo plano é chamada de spooling. Um spooler permite que o usuário continue com outros programas no computador sem ter de esperar que a impressora conclua lentamente o trabalho de impressão. O FreeBSD inclui um spooler chamado lpd8. Os trabalhos de impressão são enviados com o comando lpr1. Configuração inicial Um diretório para armazenar trabalhos de impressão é criado, a propriedade é definida e as permissões são definidas para impedir que outros usuários visualizem o conteúdo desses arquivos: # mkdir -p /var/spool/lpd/lp # chown daemon:daemon /var/spool/lpd/lp # chmod 770 /var/spool/lpd/lp As impressoras são definidas no /etc/printcap. Uma entrada para cada impressora inclui detalhes como um nome, a porta onde ela está conectada e várias outras configurações. Crie /etc/printcap com estes conteúdos: lp:\ :lp=/dev/unlpt0:\ :sh:\ :mx#0:\ :sd=/var/spool/lpd/lp:\ :lf=/var/log/lpd-errs: O nome desta impressora. O lpr1 envia trabalhos de impressão para a impressora lp, a menos que outra impressora seja especificada com , portanto, a impressora padrão deve ser denominada lp. O dispositivo em que a impressora está conectada. Substitua esta linha pela apropriada para o tipo de conexão mostrado aqui. Tipo de conexão Entrada de Dispositivos no /etc/printcap USB :lp=/dev/unlpt0:\ Este é o dispositivo de impressora USB que não reseta. Se houver problemas, use o ulpt0, ele reseta a porta USB após cada uso. Paralelo :lp=/dev/lpt0:\ Rede Para uma impressora que suporta o protocolo LPD: :lp=:rm=network-printer-name:rp=raw:\ Para impressoras que suportam impressão na porta 9100: :lp=9100@network-printer-name:\ Para ambos os tipos, substitua network-printer-name pelo nome de host DNS da impressora na rede. Serial :lp=/dev/cuau0:br=9600:pa=none:\ Esses valores são para uma impressora serial comum conectada a uma porta serial da placa-mãe. A taxa de transmissão é 9600 e nenhuma paridade é usada. Suprimir a impressão de uma página de cabeçalho no início de um trabalho de impressão. Não limite o tamanho máximo de um trabalho de impressão. O caminho para o diretório de spooling desta impressora. Cada impressora usa seu próprio diretório de spooling. O arquivo de log no qual os erros nesta impressora serão relatados. Depois de criar o /etc/printcap, use chkprintcap8 para testar se há erros: # chkprintcap Corrija quaisquer problemas relatados antes de continuar. Ative o lpd8 no /etc/rc.conf: lpd_enable="YES" Inicie o serviço: # service lpd start Imprimindo com o <citerefentry><refentrytitle>lpr</refentrytitle><manvolnum>1</manvolnum></citerefentry> Os documentos são enviados para a impressora com o lpr. Um arquivo a ser impresso pode ser nomeado na linha de comando ou canalizado para o lpr. Esses dois comandos são equivalentes, enviando o conteúdo de doc.txt para a impressora padrão: % lpr doc.txt % cat doc.txt | lpr Impressoras podem ser selecionadas com . Para imprimir em uma impressora chamada laser: % lpr -Plaser doc.txt Filtros Os exemplos mostrados até agora enviaram o conteúdo de um arquivo de texto diretamente para a impressora. Contanto que a impressora entenda o conteúdo desses arquivos, a saída será impressa corretamente. Algumas impressoras não são capazes de imprimir texto simples, e o arquivo de entrada pode nem ser texto simples. Filtros permitem que os arquivos sejam traduzidos ou processados. O uso típico é traduzir um tipo de entrada, como texto simples, em um formato que a impressora possa entender, como PostScript ou PCL. Os filtros também podem ser usados para fornecer recursos adicionais, como adicionar números de página ou destacar o código-fonte para facilitar a leitura. Os filtros discutidos aqui são filtros de entrada ou filtros de texto. Esses filtros convertem o arquivo recebido em diferentes formatos. Use su1 para se tornar root antes de criar os arquivos. Os filtros são especificados em /etc/printcap com o identificador if=. Para usar /usr/local/libexec/lf2crlf como um filtro, modifique o /etc/printcap assim: lp:\ :lp=/dev/unlpt0:\ :sh:\ :mx#0:\ :sd=/var/spool/lpd/lp:\ :if=/usr/local/libexec/lf2crlf:\ :lf=/var/log/lpd-errs: if= identifica o filtro de entrada que será usado no texto recebido. Os caracteres backslash de continuação de linha no final das linhas nas entradas do printcap revelam que uma entrada para uma impressora é na verdade apenas uma linha longa com entradas delimitadas por dois pontos. O exemplo anterior pode ser reescrito como uma única linha menos legível: lp:lp=/dev/unlpt0:sh:mx#0:sd=/var/spool/lpd/lp:if=/usr/local/libexec/lf2crlf:lf=/var/log/lpd-errs: Impedindo degraus em impressoras de texto simples Os arquivos de texto típicos do FreeBSD contêm apenas um único caractere de feed de linha no final de cada linha. Estas linhas vão ficar em degraus em uma impressora padrão: Um arquivo impresso parece                     como os degraus de uma escada                                               espalhados pelo vento Um filtro pode converter os caracteres de nova linha em retornos de carro e novas linhas. Os retornos de carro fazem a impressora retornar para a esquerda após cada linha. Crie o /usr/local/libexec/lf2crlf com este conteúdo: #!/bin/sh CR=$'\r' /usr/bin/sed -e "s/$/${CR}/g" Defina as permissões e torne-o executável: # chmod 555 /usr/local/libexec/lf2crlf Modifique o /etc/printcap para usar o novo filtro: :if=/usr/local/libexec/lf2crlf:\ Teste o filtro imprimindo o mesmo arquivo de texto simples. O procedimento fará com que cada linha comece no lado esquerdo da página. Texto simples chique em impressoras <trademark class="registered">PostScript</trademark> com <package>print/enscript</package> O GNUEnscript converte arquivos de texto simples em arquivos formatados como PostScript para impressão em impressoras PostScript. Ele adiciona números de página, quebra as linhas longas e fornece vários outros recursos para facilitar a leitura dos arquivos de texto impressos. Dependendo do tamanho do papel local, instale o print/enscript-letter ou o print/enscript-a4 da coleção Ports. Crie o /usr/local/libexec/enscript com este conteúdo: #!/bin/sh /usr/local/bin/enscript -o - Defina as permissões e torne-o executável: # chmod 555 /usr/local/libexec/enscript Modifique o /etc/printcap para usar o novo filtro: :if=/usr/local/libexec/enscript:\ Teste o filtro imprimindo um arquivo de texto simples. Imprimindo <trademark class="registered">PostScript</trademark> em impressoras <acronym>PCL</acronym> Muitos programas produzem documentos PostScript. No entanto, impressoras baratas geralmente só entendem texto simples ou PCL. Este filtro converte os arquivos PostScript para o formato PCL antes de enviá-los para a impressora. Instale o interpretador de PostScript Ghostscript, print/ghostscript9, através da Coleção de Ports. Crie o /usr/local/libexec/ps2pcl com este conteúdo: #!/bin/sh /usr/local/bin/gs -dSAFER -dNOPAUSE -dBATCH -q -sDEVICE=ljet4 -sOutputFile=- - Defina as permissões e torne-o executável: # chmod 555 /usr/local/libexec/ps2pcl A entrada PostScript enviada para este script será processada e convertida em PCL antes de ser enviada para a impressora. Modifique o /etc/printcap para usar este novo filtro de entrada: :if=/usr/local/libexec/ps2pcl:\ Teste o filtro enviando um pequeno programa PostScript para ele: % printf "%%\!PS \n /Helvetica findfont 18 scalefont setfont \ 72 432 moveto (PostScript printing successful.) show showpage \004" | lpr Filtros Inteligentes Um filtro que detecta o tipo de entrada e converte automaticamente para o formato correto da impressora pode ser muito conveniente. Os dois primeiros caracteres de um arquivo PostScript são geralmente %!. Um filtro pode detectar esses dois caracteres. Os arquivos PostScript podem ser enviados de forma inalterada para uma impressora PostScript. Arquivos de texto podem ser convertidos para PostScript com o Enscript como mostrado anteriormente. Crie o /usr/local/libexec/psif com este conteúdo: #!/bin/sh # # psif - Print PostScript or plain text on a PostScript printer # IFS="" read -r first_line first_two_chars=`expr "$first_line" : '\(..\)'` case "$first_two_chars" in %!) # %! : PostScript job, print it. echo "$first_line" && cat && exit 0 exit 2 ;; *) # otherwise, format with enscript ( echo "$first_line"; cat ) | /usr/local/bin/enscript -o - && exit 0 exit 2 ;; esac Defina as permissões e torne-o executável: # chmod 555 /usr/local/libexec/psif Modifique o /etc/printcap para usar este novo filtro de entrada: :if=/usr/local/libexec/psif:\ Teste o filtro imprimindo PostScript e arquivos de texto simples. Outros Filtros Inteligentes Escrever um filtro que detecte muitos tipos diferentes de entrada e os formate corretamente é um desafio. O print/apsfilter da Coleção de Ports é um filtro magico inteligente que detecta dezenas de tipos de arquivos e os converte automaticamente para o PDL entendido pela impressora. Veja para mais detalhes. Múltiplas filas As entradas no /etc/printcap são na verdade definições de filas. Pode haver mais de uma fila para uma única impressora. Quando combinadas com filtros, múltiplas filas fornecem aos usuários um maior controle sobre como seus trabalhos são impressos. Por exemplo, considere uma impressora laser PostScript em rede num escritório. A maioria dos usuários deseja imprimir texto simples, mas alguns usuários avançados querem poder imprimir diretamente os arquivos PostScript. Duas entradas podem ser criadas para a mesma impressora no /etc/printcap: textprinter:\ :lp=9100@officelaser:\ :sh:\ :mx#0:\ :sd=/var/spool/lpd/textprinter:\ :if=/usr/local/libexec/enscript:\ :lf=/var/log/lpd-errs: psprinter:\ :lp=9100@officelaser:\ :sh:\ :mx#0:\ :sd=/var/spool/lpd/psprinter:\ :lf=/var/log/lpd-errs: Os documentos enviados para a fila textprinter serão formatados pelo filtro /usr/local/libexec/enscript mostrado em um exemplo anterior. Usuários avançados podem imprimir arquivos PostScript em psprinter, onde nenhuma filtragem é feita. Esta técnica de múltiplas filas pode ser usada para fornecer acesso direto a todos os tipos de recursos da impressora. Uma impressora com um duplexador pode usar duas filas, uma para impressões em apenas um lado da folha e outra com um filtro que envia a seqüência de comandos para habilitar a impressão frente e verso e, em seguida, envia o arquivo recebido. Monitoramento e controle de impressão Vários utilitários estão disponíveis para monitorar trabalhos de impressão e verificar e controlar a operação da impressora. <citerefentry><refentrytitle>lpq</refentrytitle><manvolnum>1</manvolnum></citerefentry> O lpq1 mostra o status das tarefas de impressão de um usuário. Trabalhos de impressão de outros usuários não são mostrados. Mostra os trabalhos pendentes do usuário atual em uma única impressora: % lpq -Plp Rank Owner Job Files Total Size 1st jsmith 0 (standard input) 12792 bytes Mostra os trabalhos pendentes do usuário atual em todas as impressoras: % lpq -a lp: Rank Owner Job Files Total Size 1st jsmith 1 (standard input) 27320 bytes laser: Rank Owner Job Files Total Size 1st jsmith 287 (standard input) 22443 bytes <citerefentry><refentrytitle>lprm</refentrytitle><manvolnum>1</manvolnum></citerefentry> O lprm1 é usado para remover trabalhos de impressão. Usuários normais só podem remover seus próprios trabalhos. O root pode remover qualquer um ou todos os trabalhos. Remova todos os trabalhos pendentes de uma impressora: # lprm -Plp - dfA002smithy dequeued cfA002smithy dequeued dfA003smithy dequeued cfA003smithy dequeued dfA004smithy dequeued cfA004smithy dequeued Remova um único trabalho de uma impressora. O lpq1 é usado para encontrar o número do trabalho. % lpq Rank Owner Job Files Total Size 1st jsmith 5 (standard input) 12188 bytes % lprm -Plp 5 dfA005smithy dequeued cfA005smithy dequeued <citerefentry><refentrytitle>lpc</refentrytitle><manvolnum>8</manvolnum></citerefentry> O lpc8 é usado para verificar e modificar o status da impressora. O lpc é seguido por um comando e um nome de impressora opcional. O parâmetro all pode ser usado em vez de um nome de impressora específico, e o comando será aplicado a todas as impressoras. Usuários normais podem visualizar o status com lpc8. Somente o class="username"&gt;root pode usar comandos que modificam o status da impressora. Mostrar o status de todas as impressoras: % lpc status all lp: queuing is enabled printing is enabled 1 entry in spool area printer idle laser: queuing is enabled printing is enabled 1 entry in spool area waiting for laser to come up Impedindo que uma impressora aceite novos trabalhos e fazendo com que ela comece a aceitar novos trabalhos novamente: # lpc disable lp lp: queuing disabled # lpc enable lp lp: queuing enabled Pare de imprimir, mas continue aceitando novos trabalhos. Em seguida, comece a imprimir novamente: # lpc stop lp lp: printing disabled # lpc start lp lp: printing enabled daemon started Reinicie uma impressora após alguma condição de erro: # lpc restart lp lp: no daemon to abort printing enabled daemon restarted Desative a fila de impressão e desative a impressão, com uma mensagem para explicar o problema aos usuários: # lpc down lp Repair parts will arrive on Monday lp: printer and queuing disabled status message is now: Repair parts will arrive on Monday Reative uma impressora que esteja inativa: # lpc up lp lp: printing enabled daemon started Veja lpc8 para mais comandos e opções. Impressoras Compartilhadas As impressoras costumam ser compartilhadas por vários usuários em empresas e escolas. Recursos adicionais são fornecidos para tornar as impressoras compartilhadas mais convenientes. Aliases O nome da impressora é definido na primeira linha da entrada em /etc/printcap. Nomes adicionais, ou aliases, podem ser adicionados após esse nome. Os aliases são separados do nome e um do outro por barras verticais: lp|repairsprinter|salesprinter:\ Os aliases podem ser usados no lugar do nome da impressora. Por exemplo, os usuários do departamento de vendas imprimem em sua impressora com % lpr -Psalesprinter sales-report.txt Usuários do departamento de Reparos podem imprimir na sua impressora com % lpr -Prepairsprinter repairs-report.txt Todos os documentos são impressos nessa única impressora. Quando o departamento de vendas cresce o suficiente para precisar de sua própria impressora, o alias pode ser removido da entrada da impressora compartilhada e usado como o nome de uma nova impressora. Os usuários nos dois departamentos continuam usando os mesmos comandos, mas os documentos de vendas são enviados para a nova impressora. Páginas de cabeçalho Pode ser difícil para os usuários localizarem seus documentos na pilha de páginas produzidas por uma impressora compartilhada ocupada. Páginas de cabeçalho foram criadas para resolver este problema. Uma página de cabeçalho com o nome de usuário e o nome do documento é impressa antes de cada trabalho de impressão. Estas páginas são por vezes chamadas de páginas banner ou separadoras. A ativação das páginas de cabeçalho é diferente, dependendo se a impressora está conectada diretamente ao computador com um cabo USB, paralelo ou serial, ou se está conectada remotamente por uma rede. As páginas de cabeçalho em impressoras conectadas diretamente são ativadas removendo-se a linha :sh:\ (Suprimir Cabeçalho) da entrada no /etc/printcap. Essas páginas de cabeçalho usam apenas caracteres de feed de linha para novas linhas. Algumas impressoras precisarão do filtro /usr/share/examples/printing/hpif para evitar imprimir o texto em escada. O filtro configura impressoras PCL para imprimir retornos de carro e alimentações de linha quando um feed de linha é recebido. As páginas de cabeçalho das impressoras de rede devem ser configuradas na própria impressora. Entradas de página de cabeçalho no /etc/printcap são ignoradas. As configurações geralmente estão disponíveis no painel frontal da impressora ou em uma página da web de configuração acessível com um navegador da web. Referências Arquivos de exemplo:/usr/share/examples/printing/. O Manual do Spooler de Impressora de Linha do 4.3BSD, /usr/share/doc/smm/07.lpd/paper.ascii.gz. Páginas de manual: printcap5, lpd8, lpr1, lpc8, lprm1, lpq1. Outros sistemas de impressão Vários outros sistemas de impressão estão disponíveis, além do lpd8. Esses sistemas oferecem suporte para outros protocolos ou recursos adicionais. <acronym>CUPS</acronym> (Sistema de impressão comum <trademark class="registered">UNIX</trademark>) O CUPS é um sistema de impressão popular disponível em muitos sistemas operacionais. Usar o CUPS no FreeBSD está documentado em um artigo separado: HPLIP A Hewlett Packard fornece um sistema de impressão que suporta muitas de suas impressoras a jato de tinta e laser. O port é o print/hplip. A página principal da web está em . O port lida com todos os detalhes de instalação no FreeBSD. As informações de configuração são mostradas em . LPRng O LPRng foi desenvolvido como uma alternativa aprimorada para o lpd8. O port é sysutils/LPRng. Para detalhes e documentação, veja .
<trademark class="registered">Compatibilidade binária com o Linux</trademark> Jim Mock Reestruturado e atualizado por Brian N. Handy Originalmente contribuído por Rich Murphey Sinopse Linux binary compatibility binary compatibility Linux O FreeBSD fornece compatibilidade binária com o Linux, permitindo que os usuários instalem e executem a maioria dos binários do Linux em um sistema FreeBSD sem ter que primeiro modificar o binário. Foi até relatado que, em algumas situações, os binários Linux têm melhor desempenho no FreeBSD do que no Linux. No entanto, alguns recursos do sistema operacional específicos do Linux não são suportados no FreeBSD. Por exemplo, os binários Linux não funcionarão no FreeBSD se usarem chamadas específicas i386, mesmo ativando o modo 8086 virtual. O suporte para compatibilidade binária de 64 bits com o Linux foi adicionado no FreeBSD 10.3. Depois de ler este capítulo, você saberá: Como habilitar a compatibilidade binária com o Linux em um sistema FreeBSD. Como instalar bibliotecas compartilhadas adicionais do Linux. Como instalar aplicativos Linux em um sistema FreeBSD. Os detalhes de implementação da compatibilidade com o Linux no FreeBSD. Antes de ler este capítulo, você deve: Saiber como instalar software adicional de terceiros. Configurando a compatibilidade binária com o <trademark class="registered">Linux</trademark> Ports Collection Por padrão, as bibliotecas do Linux não estão instaladas e a compatibilidade binária com o Linux não está ativada. As bibliotecas Linux podem ser instaladas manualmente ou a partir da coleção de Ports do FreeBSD. Antes de tentar compilar o port, carregue o módulo de kernel Linux, caso contrário a compilação irá falhar: # kldload linux Para compatibilidade com 64 bits: # kldload linux64 Para verificar se o módulo está carregado: % kldstat Id Refs Address Size Name 1 2 0xc0100000 16bdb8 kernel 7 1 0xc24db000 d000 linux.ko O pacote ou port emulators/linux_base-c7 é a maneira mais fácil de instalar um conjunto básico de bibliotecas e binários do Linux em um sistema FreeBSD. Para instalar o port: # pkg install emulators/linux_base-c7 Para que a compatibilidade com o Linux seja ativada durante a inicialização, adicione esta linha ao /etc/rc.conf: linux_enable="YES" Em máquinas de 64 bits, o /etc/rc.d/abi carregará automaticamente o módulo para emulação de 64 bits. kernel options COMPAT_LINUX Como a camada de compatibilidade binária do Linux ganhou suporte para a execução de binários Linux de 32 e 64 bits (em hosts x86 de 64 bits), não é mais possível vincular estaticamente a funcionalidade de emulação a um kernel personalizado. Instalando Bibliotecas Adicionais Manualmente bibliotecas compartilhadas Se um aplicativo Linux reclamar sobre a falta de bibliotecas compartilhadas após configurar a compatibilidade binária do Linux, determine quais bibliotecas compartilhadas o Linux precisa e instale-as manualmente. A partir de um sistema Linux, o ldd pode ser usado para determinar quais bibliotecas compartilhadas o aplicativo precisa. Por exemplo, para verificar quais bibliotecas compartilhadas o linuxdoom precisa, execute este comando a partir de um sistema Linux que tenha o Doom instalado: % ldd linuxdoom libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0 libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0 libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29 links simbólicos Então, copie todos os arquivos listados na última coluna da saída do comando no sistema Linux para o diretório /compat/linux no sistema FreeBSD. Depois de copiados, crie links simbólicos para os nomes na primeira coluna. Este exemplo irá resultar nos seguintes arquivos no sistema FreeBSD: /compat/linux/usr/X11/lib/libXt.so.3.1.0 /compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0 /compat/linux/usr/X11/lib/libX11.so.3.1.0 /compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0 /compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29 Se uma biblioteca compartilhada Linux já existir com um número de revisão principal correspondente à primeira coluna da saída do comando ldd, ela não precisará ser copiada para a arquivo nomeado na última coluna, pois a biblioteca existente deve funcionar. No entanto é aconselhável copiar a biblioteca compartilhada se for uma versão mais nova. O arquivo antigo pode ser removido, desde que o link simbólico aponte para o novo. Por exemplo, essas bibliotecas já existem no sistema FreeBSD: /compat/linux/lib/libc.so.4.6.27 /compat/linux/lib/libc.so.4 -> libc.so.4.6.27 e o ldd indica que um binário requer uma versão posterior: libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29 Como a biblioteca existente tem apenas uma ou duas versões desatualizadas no último dígito, o programa ainda deve funcionar com a versão um pouco mais antiga. No entanto, é seguro substituir o libc.so existente pela versão mais nova: /compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29 Geralmente, será necessário procurar as bibliotecas compartilhadas que os binários do Linux dependem apenas das primeiras vezes que um programa Linux é instalado no FreeBSD. Depois de um tempo, haverá um conjunto suficiente de bibliotecas Linux compartilhadas no sistema para poder executar binários Linux atualizados sem qualquer trabalho extra. Instalando os binários <trademark class="registered">Linux</trademark> <acronym>ELF</acronym> Linux ELF binaries Os binários ELF requerem por vezes um passo extra. Quando um binário ELF sem marca for executado, ele gerará uma mensagem de erro: % ./my-linux-elf-binary ELF binary type not known Abort Para ajudar o kernel do FreeBSD a distinguir entre um binário do FreeBSD ELF e um binário Linux, use brandelf1: % brandelf -t Linux my-linux-elf-binary GNU toolchain Como o conjunto de ferramentas GNU coloca as informações de branding apropriadas em binários ELF automaticamente, essa etapa geralmente não é necessária. Instalando um aplicativo baseado em <trademark class="registered">Linux</trademark> <acronym>RPM</acronym> Para instalar um aplicativo baseado em Linux RPM, primeiro instale o pacote ou o port archivers/rpm4. Uma vez instalado, o usuário root pode usar este comando para instalar um .rpm: # cd /compat/linux # rpm2cpio < /path/to/linux.archive.rpm | cpio -id Se necessário, use o brandelf nos binários ELF instalados . Observe que isso impedirá uma desinstalação limpa. Configurando o Resolver do Hostname Se o DNS não funcionar ou este erro aparecer: resolv+: "bind" is an invalid keyword resolv+: "hosts" is an invalid keyword configure o /compat/linux/etc/host.conf como segue: order hosts, bind multi on Isso especifica que o /etc/hosts deve ser pesquisado primeiro e o DNS deve ser pesquisado em segundo lugar. Quando o /compat/linux/etc/host.conf não existe, os aplicativos Linux usam o /etc/host.conf e avisam sobre a sintaxe incompatível do FreeBSD. Remova o bind se um servidor de nomes não estiver configurado usando o /etc/resolv.conf. Boris Hollas Updated for Mathematica 5.X by Installing &mathematica; applications Mathematica This section describes the process of installing the &linux; version of &mathematica; 9.X onto a &os; system. &mathematica; is a commercial, computational software program used in scientific, engineering, and mathematical fields. A 30 day trial version is available for download from wolfram.com/mathematica. Running the &mathematica; Installer Before installing &mathematica;, make sure that the textproc/linux-c7-aspell package or port is installed and that the &man.linprocfs.5; file system is mounted. &prompt.root; sysctl kern.fallback_elf_brand=3 &os; will now assume that unbranded ELF binaries use the &linux; ABI which should allow the installer to execute from the CDROM. The downloaded file will be saved to /tmp/Mathematica_9.0.1_LINUX.sh. Become the superuser and run this installer file: &prompt.root; sh /tmp/Mathematica_9.0.1_LINUX.sh Mathematica Secured 9.0.1 for LINUX Installer Archive Verifying archive integrity. Extracting installer. ... Wolfram Mathematica 9 Installer Copyright (c) 1988-2013 Wolfram Research, Inc. All rights reserved. WARNING: Wolfram Mathematica is protected by copyright law and international treaties. Unauthorized reproduction or distribution may result in severe civil and criminal penalties and will be prosecuted to the maximum extent possible under law. Enter the installation directory, or press ENTER to select /usr/local/Wolfram/Mathematica/9.0: > Now installing... *********************** Installation complete. Running the &mathematica; Frontend over a Network &mathematica; uses some special fonts to display characters not present in any of the standard font sets. Xorg requires these fonts to be installed locally. This means that these fonts need to be copied from the CDROM or from a host with &mathematica; installed to the local machine. These fonts are normally stored in /cdrom/Unix/Files/SystemFiles/Fonts on the CDROM, or /usr/local/mathematica/SystemFiles/Fonts on the hard drive. The actual fonts are in the subdirectories Type1 and X. There are several ways to use them, as described below. The first way is to copy the fonts into one of the existing font directories in /usr/local/lib/X11/fonts then running &man.mkfontdir.1; within the directory containing the new fonts. The second way to do this is to copy the directories to /usr/local/lib/X11/fonts: &prompt.root; cd /usr/local/lib/X11/fonts &prompt.root; mkdir X &prompt.root; mkdir MathType1 &prompt.root; cd /cdrom/Unix/Files/SystemFiles/Fonts &prompt.root; cp X/* /usr/local/lib/X11/fonts/X &prompt.root; cp Type1/* /usr/local/lib/X11/fonts/MathType1 &prompt.root; cd /usr/local/lib/X11/fonts/X &prompt.root; mkfontdir &prompt.root; cd ../MathType1 &prompt.root; mkfontdir Now add the new font directories to the font path: &prompt.root; xset fp+ /usr/local/lib/X11/fonts/X &prompt.root; xset fp+ /usr/local/lib/X11/fonts/MathType1 &prompt.root; xset fp rehash When using the &xorg; server, these font directories can be loaded automatically by adding them to /etc/X11/xorg.conf. fonts If /usr/local/lib/X11/fonts/Type1 does not already exist, change the name of the MathType1 directory in the example above to Type1. --> Configuração e Ajuste Chern Lee Escrito por Mike Smith Baseado em um tutorial escrito por Matt Dillon Também baseado em tuning (7) escrito por Sinopse system configuration system optimization Um dos aspectos importantes do FreeBSD é a configuração adequada do sistema. Este capítulo explica muito do processo de configuração do FreeBSD, incluindo alguns dos parâmetros que podem ser configurados para ajustar um sistema FreeBSD. Depois de ler este capítulo, você saberá: O básico da configuração do rc.conf e dos scripts de inicialização /usr/local/etc/rc.d. Como configurar e testar uma placa de rede. Como configurar hosts virtuais em dispositivos de rede. Como usar os vários arquivos de configuração em /etc. Como ajustar o FreeBSD usando variáveis sysctl8. Como ajustar o desempenho do disco e modificar as limitações do kernel. Antes de ler este capítulo, você deve: Entender os fundamentos do UNIX e do FreeBSD (). Estar familiarizado com os conceitos básicos de configuração e compilação do kernel (). Inicialização de Serviços Tom Rhodes Contribuído por services Muitos usuários instalam software de terceiros no FreeBSD a partir da coleção de Ports e precisam que os serviços instalados sejam iniciados durante a inicialização do sistema. Serviços como mail/postfix ou www/apache22 são apenas dois dos muitos pacotes de software que podem ser iniciados durante a inicialização do sistema. Esta seção explica os procedimentos disponíveis para iniciar o software de terceiros. No FreeBSD, a maioria dos serviços incluídos, como o cron8, são iniciados através dos scripts de inicialização do sistema. Configuração Estendida dos Aplicativos Agora que o FreeBSD inclui o rc.d, a configuração da inicialização do aplicativo é mais fácil e fornece mais recursos. Usando as palavras-chave discutidas em , os aplicativos podem ser configurados para iniciar depois de certos outros serviços e flags extras poderem ser passadas através do /etc/rc.conf no lugar de sinalizadores codificados no script de inicialização. Um script básico pode ser semelhante ao seguinte: #!/bin/sh # # PROVIDE: utility # REQUIRE: DAEMON # KEYWORD: shutdown . /etc/rc.subr name=utility rcvar=utility_enable command="/usr/local/sbin/utility" load_rc_config $name # # DO NOT CHANGE THESE DEFAULT VALUES HERE # SET THEM IN THE /etc/rc.conf FILE # utility_enable=${utility_enable-"NO"} pidfile=${utility_pidfile-"/var/run/utility.pid"} run_rc_command "$1" Este script irá garantir que o utilitário fornecido será iniciado após o pseudo-serviço DAEMON. Ele também fornece um método para definir e rastrear o ID do processo (PID). Esta aplicação poderia então ter a seguinte linha colocada no /etc/rc.conf: utility_enable="YES" Este método permite a manipulação mais fácil de argumentos de linha de comando, inclusão das funções padrões fornecidas em /etc/rc.subr, compatibilidade com o rcorder8, e fornece uma configuração mais fácil via rc.conf. Usando o Services para Inicializar Serviços Outros serviços podem ser iniciados usando o inetd8. O uso do inetd8 e sua configuração é descrita em profundidade em . Em alguns casos, pode fazer mais sentido usar o cron8 para iniciar os serviços do sistema. Esta abordagem tem várias vantagens, pois o cron8 executa estes processos como o proprietário do crontab5. Isto permite que usuários regulares iniciem e mantenham seus próprios aplicativos. O recurso @reboot do cron8 , pode ser usado no lugar da especificação de hora. Isso faz com que o job seja executado quando cron8 é iniciado, normalmente durante a inicialização do sistema. Configurando o <citerefentry><refentrytitle>cron</refentrytitle><manvolnum>8</manvolnum></citerefentry> Tom Rhodes Contribuído por cron configuration Um dos utilitários mais úteis no FreeBSD é o cron. Este utilitário é executado em segundo plano e verifica regularmente o /etc/crontab para que as tarefas sejam executadas e procura /var/cron/tabs para arquivos crontab personalizados. Estes arquivos são usados para planejar tarefas que o cron executa nos horários especificados. Cada entrada em um crontab define uma tarefa para ser executada e é conhecida como uma tarefa do cron. Dois tipos diferentes de arquivos de configuração são usados: o crontab do sistema, que não deve ser modificado, e crontabs de usuário, que podem ser criados e editados conforme necessário. O formato usado por esses arquivos está documentado em crontab5. O formato do sistema crontab, /etc/crontab inclui uma coluna who que não existe nos crontabs de usuário. No crontab do sistema , o cron executa o comando como o usuário especificado nesta coluna. Em um crontab de usuário, todos os comandos são executados como o usuário que criou o crontab. Os crontabs de usuário permitem que usuários individuais programem suas próprias tarefas. O usuário root também pode ter um crontab de usuário que pode ser usado para agendar tarefas que não existem no crontab do sistema . Aqui está uma entrada de amostra do crontab do sistema, /etc/crontab: # /etc/crontab - root's crontab for FreeBSD # # $FreeBSD$ # SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin # #minute hour mday month wday who command # */5 * * * * root /usr/libexec/atrun Linhas que começam com o caractere # são comentários. Um comentário pode ser colocado no arquivo como um lembrete do que uma ação faz e do porque a sua execução é desejada. Comentários não podem estar na mesma linha que um comando ou então serão interpretados como parte do comando; eles devem estar em uma nova linha. Linhas em branco são ignoradas. O caractere igual (=) é usado para definir qualquer configuração de ambiente. Neste exemplo, ele é usado para definir o SHELL e o PATH. Se o SHELL for omitido, o cron usará o shell Bourne padrão. Se o PATH for omitido, o caminho completo deverá ser fornecido ao comando ou script a ser executado. Esta linha define os sete campos usados em um crontab do sistema: minute, hora, mday, month, wday, who e command. O campo minute é o tempo em minutos quando o comando especificado será executado, a hour é a hora em que o comando especificado será executado, o mday é o dia do mês, month é o mês e wday é o dia da semana. Estes campos devem ser valores numéricos, representando o relógio de vinte e quatro horas, ou um *, representando todos os valores desse campo. O campo who existe somente no crontab do sistema e especifica com qual usuário o comando deve ser executado. O último campo é o comando a ser executado. Esta entrada define os valores para este trabalho do cron. O */5, seguido por vários outros caracteres *, especifica que /usr/libexec/atrun é invocado pelo root a cada cinco minutos de cada hora, de cada dia e dia da semana, de cada mês. Comandos podem incluir qualquer número de opções. No entanto, os comandos que se estendem a várias linhas precisam ser quebrados com o caractere de continuação da barra invertida \. Criando um Crontab de Usuário Para criar um crontab de usuário, invoque o crontab no modo editor: % crontab -e Isto irá abrir o crontab do usuário usando o editor de texto padrão. A primeira vez que um usuário executa este comando, ele abre um arquivo vazio. Depois que um usuário cria um crontab, esse comando abrirá este arquivo para edição. É útil adicionar estas linhas a parte superior do arquivo crontab para configurar as variáveis de ambiente e lembrar os significados dos campos no crontab: SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin # Order of crontab fields # minute hour mday month wday command Em seguida, adicione uma linha para cada comando ou script a ser executado, especificando o horário para executar o comando. Este exemplo executa o script de shell Bourne personalizado especificado todos os dias às duas da tarde. Como o caminho para o script não está especificado em PATH, o caminho completo para o script é fornecido: 0 14 * * * /usr/home/dru/bin/mycustomscript.sh Antes de usar um script personalizado, verifique se ele é executável e teste-o com o conjunto limitado de variáveis de ambiente definidas pelo cron. Para replicar o ambiente que seria usado para executar a entrada do cron acima, use: env -i SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin HOME=/home/dru LOGNAME=dru /usr/home/dru/bin/mycustomscript.sh O ambiente definido pelo cron é discutido em crontab5. Verificar se os scripts operam corretamente em um ambiente cron é especialmente importante se incluírem quaisquer comandos que excluam arquivos usando curingas. Quando terminar de editar o crontab, salve o arquivo. Ele será instalado automaticamente e o cron lerá o crontab e executará seus cron jobs nos horários especificados. Para listar as tarefas agendadas em um crontab, use este comando: % crontab -l 0 14 * * * /usr/home/dru/bin/mycustomscript.sh Para remover todas as tarefas cron em um crontab de usuário: % crontab -r remove crontab for dru? y Gerenciando Serviços no FreeBSD Tom Rhodes Contribuído por O FreeBSD usa o sistema rc8 de scripts de inicialização durante a inicialização do sistema e para gerenciar serviços. Os scripts listados em /etc/rc.d fornecem serviços básicos que podem ser controlados com , e opções para service8. Por exemplo, sshd8 pode ser reiniciado com o seguinte comando: # service sshd restart Este procedimento pode ser usado para iniciar serviços em um sistema em execução. Os serviços serão iniciados automaticamente no momento da inicialização, conforme especificado em rc.conf5. Por exemplo, para ativar o natd8 na inicialização do sistema, adicione a seguinte linha ao /etc/rc.conf: natd_enable="YES" Se uma linha já estiver presente, altere o NO para YES. Os scripts rc8 carregarão automaticamente todos os serviços dependentes durante a próxima inicialização, conforme descrito abaixo. Como o sistema rc8 é destinado principalmente a iniciar e parar serviços na inicialização do sistema e no tempo de desligamento, o , as opções e somente executarão suas ações se a variável apropriada estiver configurada no /etc/rc.conf. Por exemplo, o sshd restart só funcionará se sshd_enable estiver definido como em /etc/rc.conf. Para , ou um serviço independente das configurações em /etc/rc.conf, estes comandos deve ser prefixado com one. Por exemplo, para reiniciar sshd8 independentemente da configuração atual do /etc/rc.conf, execute o seguinte comando: # service sshd onerestart Para verificar se um serviço está habilitado em /etc/rc.conf, execute o script apropriado rc8 com . Este exemplo verifica se o sshd8 está habilitado no /etc/rc.conf: # service sshd rcvar # sshd # sshd_enable="YES" # (default: "") A linha # sshd é gerada pelo comando acima, não pelo console do root. Para determinar se um serviço está ou não em execução, use . Por exemplo, para verificar se o sshd8 está em execução: # service sshd status sshd is running as pid 433. Em alguns casos, também é possível fazer o denum serviço. Isso tenta enviar um sinal para um serviço individual, forçando o serviço a recarregar seus arquivos de configuração. Na maioria dos casos, isso significa enviar ao serviço um sinal SIGHUP. O suporte para esse recurso não está incluído para todos os serviços. O sistema rc8 é usado para serviços de rede e também contribui para a maior parte da inicialização do sistema. Por exemplo, quando o script /etc/rc.d/bgfsck é executado, ele imprime a seguinte mensagem: Starting background file system checks in 60 seconds. Esse script é usado para verificações do sistema de arquivos em segundo plano, que ocorrem apenas durante a inicialização do sistema. Muitos serviços do sistema dependem de outros serviços para funcionar corretamente. Por exemplo, o yp8 e outros serviços baseados em RPC podem falhar ao iniciar até que o rpcbind8 seja iniciado. Para resolver esse problema, informações sobre dependências e outros meta-dados são incluídas nos comentários na parte superior de cada script de inicialização. O programa rcorder8 é usado para analisar esses comentários durante a inicialização do sistema para determinar a ordem na qual os serviços do sistema devem ser invocados para satisfazer as dependências. A seguinte palavra-chave deve ser incluída em todos os scripts de inicialização, conforme exigido pelo rc.subr8 para habilitar o script de inicialização: PROVIDE: Especifica os serviços que este arquivo fornece. As seguintes palavras-chave podem ser incluídas na parte superior de cada script de inicialização. Eles não são estritamente necessárias, mas são úteis como sugestões para rcorder8: REQUIRE: lista os serviços necessários para este serviço. O script que contém esta palavra chave será executado após os serviços especificados. BEFORE: lista os serviços que dependem deste serviço. O script que contém esta palavra chave será executado antes dos serviços especificados. Ao definir cuidadosamente essas palavras-chave para cada script de inicialização, um administrador passa a ter um nível refinado de controle da ordem de inicialização dos scripts, sem a necessidade dos runlevels usados por alguns sistemas operacionais UNIX. Informações adicionais podem ser encontradas em rc8 e rc.subr8. Consulte este artigo para obter instruções sobre como criar um script rc8 personalizado. Gerenciando a configuração específica do sistema rc files rc.conf A localização principal das informações de configuração do sistema é arquivo /etc/rc.conf. Este arquivo contém uma ampla gama de informações de configuração e é lido na inicialização do sistema para configurar o sistema. Ele fornece as informações de configuração para os arquivos rc*. As entradas em /etc/rc.conf substituem as configurações padrões em /etc/defaults/rc.conf. O arquivo contendo as configurações padrões não deve ser editado. Ao invés disso, todas as alterações específicas do sistema devem ser feitas em /etc/rc.conf. Várias estratégias podem ser aplicadas em aplicativos em cluster para separar as configurações que afetam todo o site da configuração específica do sistema para reduzir a sobrecarga de administração. A abordagem recomendada é colocar a configuração específica do sistema em /etc/rc.conf.local. Por exemplo, estas entradas em /etc/rc.conf aplicam-se a todos os sistemas: sshd_enable="YES" keyrate="fast" defaultrouter="10.1.1.254" Considerando que estas entradas em /etc/rc.conf.local se aplicam somente a este sistema: hostname="node1.example.org" ifconfig_fxp0="inet 10.1.1.1/8" Distribua o /etc/rc.conf para cada sistema usando um aplicativo como o rsync ou o puppet, enquanto o /etc/rc.conf.local permanece único. A atualização do sistema não sobrescreverá o /etc/rc.conf, portanto as informações de configuração do sistema não serão perdidas. Ambos /etc/rc.conf e /etc/rc.conf.local são analisados pelo sh1. Isto permite que os operadores do sistema criem cenários de configuração complexos. Consulte rc.conf5 para obter mais informações sobre este tópico. Configurando Placas de Interface de Rede Marc Fonvieille Contribuído por placas de rede configuração Adicionar e configurar uma placa de interface de rede (NIC) é uma tarefa comum para qualquer administrador do FreeBSD. Localizando o Driver Correto placas de rede configuração Primeiro, determine o modelo da NIC e o chip utilizado. O FreeBSD suporta uma ampla variedade de NICs. Verifique a lista de compatibilidade de hardware para a release do FreeBSD para ver se a NIC é suportada. Se a NIC é suportada, determine o nome do driver do FreeBSD para a NIC. Consulte /usr/src/sys/conf/NOTES e /usr/src/sys/arch/conf/NOTES para a lista de Drivers NIC com algumas informações sobre os chipsets suportados. Em caso de dúvida, leia a página de manual do driver, pois ele fornecerá mais informações sobre o hardware suportado e quaisquer limitações conhecidas do driver. Os drivers para as NICs comuns já estão presentes no kernel GENERIC, o que significa que a NIC deve ser verificada durante a inicialização. As mensagens de inicialização do sistema podem ser visualizadas digitando more /var/run/dmesg.boot e usando a barra de espaço para percorrer o texto. Neste exemplo, duas NICs Ethernet que utilizam o driver dc4 estão presentes no sistema: dc0: <82c169 PNIC 10/100BaseTX> port 0xa000-0xa0ff mem 0xd3800000-0xd38 000ff irq 15 at device 11.0 on pci0 miibus0: <MII bus> on dc0 bmtphy0: <BCM5201 10/100baseTX PHY> PHY 1 on miibus0 bmtphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto dc0: Ethernet address: 00:a0:cc:da:da:da dc0: [ITHREAD] dc1: <82c169 PNIC 10/100BaseTX> port 0x9800-0x98ff mem 0xd3000000-0xd30 000ff irq 11 at device 12.0 on pci0 miibus1: <MII bus> on dc1 bmtphy1: <BCM5201 10/100baseTX PHY> PHY 1 on miibus1 bmtphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto dc1: Ethernet address: 00:a0:cc:da:da:db dc1: [ITHREAD] Se o driver da NIC não estiver presente em GENERIC, mas houver um driver disponível, o driver precisará ser carregado antes que a NIC possa ser configurada e usada. Isso pode ser feito de duas maneiras: A maneira mais fácil é carregar um módulo do kernel para a NIC usando o kldload8. Para carregar automaticamente o driver no momento da inicialização, adicione a linha apropriada ao /boot/loader.conf. Nem todos os drivers NIC estão disponíveis como módulos. Como alternativa, compile estaticamente o suporte para a NIC em um kernel personalizado. Consulte /usr/src/sys/conf/NOTES, /usr/src/sys/arch/conf/NOTES e a página de manual do driver para determinar qual linha adicionar ao arquivo de configuração do kernel personalizado. Para mais informações sobre como recompilar o kernel, consulte . Se a NIC foi detectada na inicialização, o kernel não precisa ser recompilado. Utilizando os Drivers <trademark class="registered">Windows</trademark> <acronym>NDIS</acronym> NDIS NDISulator Windows drivers Microsoft Windows device drivers KLD (kernel loadable object) Infelizmente, ainda existem muitos fornecedores que não fornecem esquemas para seus drivers para a comunidade de código aberto porque consideram essas informações como segredos comerciais. Consequentemente, os desenvolvedores do FreeBSD e de outros sistemas operacionais são deixados com duas opções: desenvolver os drivers por um processo longo e complexo de engenharia reversa ou usar os binários de drivers existentes disponíveis para plataforma Microsoft Windows. O FreeBSD fornece suporte nativo para a especificação de interface de driver de rede (NDIS). Ele inclui o ndisgen8 que pode ser utilizado para converter um driver Windows XP num formato que pode ser usado no FreeBSD. Como o driver ndis4 usa um binário Windows XP, ele só é executado em sistemas i386 e amd64. Dispositivos PCI, CardBus, PCMCIA e USB são suportados. Para usar o ndisgen8, três coisas são necessárias: Código-fonte do kernel do FreeBSD. Um binário do driver do Windows XP com uma extensão .SYS. Um arquivo de configuração do driver do Windows XP com uma extensão .INF. Faça o download dos arquivos .SYS e .INF para a NIC específica. Geralmente, eles podem ser encontrados no CD do driver ou no site do fornecedor. Os exemplos a seguir usam o W32DRIVER.SYS e o W32DRIVER.INF. A largura do bit do driver deve corresponder à versão do FreeBSD. Para FreeBSD/i386, use um driver de 32 bits Windows. Para o FreeBSD/amd64, é necessário um driver de 64 bits do Windows. O próximo passo é compilar o binário do driver em um módulo do kernel carregável. Como root, use ndisgen8: # ndisgen /path/to/W32DRIVER.INF /path/to/W32DRIVER.SYS Este comando é interativo e solicita qualquer informação extra necessária. Um novo módulo do kernel será gerado no diretório atual. Use kldload8 para carregar o novo módulo: # kldload ./W32DRIVER_SYS.ko Além do módulo do kernel gerado, os módulos ndis.ko e if_ndis.ko devem ser carregados. Isso deve acontecer automaticamente quando qualquer módulo que dependa do ndis4 for carregado. Caso contrário, carregue-os manualmente, usando os seguintes comandos: # kldload ndis # kldload if_ndis O primeiro comando carrega o wrapper do driver da miniporta ndis4 e o segundo carrega o driver NIC gerado. Execute o comando dmesg8 para ver se houve algum erro de carregamento. Se tudo correu bem, a saída deve ser semelhante à seguinte: ndis0: <Wireless-G PCI Adapter> mem 0xf4100000-0xf4101fff irq 3 at device 8.0 on pci1 ndis0: NDIS API version: 5.0 ndis0: Ethernet address: 0a:b1:2c:d3:4e:f5 ndis0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps ndis0: 11g rates: 6Mbps 9Mbps 12Mbps 18Mbps 36Mbps 48Mbps 54Mbps A partir daqui, o ndis0 pode ser configurado como qualquer outra NIC. Para configurar o sistema para carregar os módulos ndis4 no momento da inicialização, copie o módulo gerado, W32DRIVER_SYS.ko, para /boot/modules. Em seguida, adicione a seguinte linha ao /boot/loader.conf: W32DRIVER_SYS_load="YES" Configurando a placa de rede placas de rede configuração Quando o driver correto é carregado para a NIC, a placa precisa ser configurada. Ele pode ter sido configurado no momento da instalação por bsdinstall8. Para exibir a configuração da NIC, digite o seguinte comando: % ifconfig dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=80008<VLAN_MTU,LINKSTATE> ether 00:a0:cc:da:da:da inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255 media: Ethernet autoselect (100baseTX <full-duplex>) status: active dc1: flags=8802<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=80008<VLAN_MTU,LINKSTATE> ether 00:a0:cc:da:da:db inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255 media: Ethernet 10baseT/UTP status: no carrier lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384 options=3<RXCSUM,TXCSUM> inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4 inet6 ::1 prefixlen 128 inet 127.0.0.1 netmask 0xff000000 nd6 options=3<PERFORMNUD,ACCEPT_RTADV> Neste exemplo, os seguintes dispositivos foram exibidos: dc0: A primeira interface Ethernet. dc1: A segunda interface Ethernet. lo0: o dispositivo de loopback. O FreeBSD usa o nome do driver seguido da ordem em que a placa é detectada na inicialização para nomear a NIC. Por exemplo, sis2 é a terceira NIC no sistema usando driver sis4. Neste exemplo, o dc0 está ativo e em execução. Os principais indicadores são: UP significa que a placa está configurada e pronta. A placa tem um endereço da Internet (inet), 192.168.1.3. Ela tem uma máscara de sub-rede válida (netmask), onde 0xffffff00 é o mesmo que 255.255.255.0 . Tem um endereço de broadcast válido, 192.168.1.255. O endereço MAC da placa (ether) é 00:a0:cc:da:da:da. A seleção de mídia física está no modo de seleção automática (media:Ethernet autoselect (100baseTX <full-duplex>)). Neste exemplo, o dc1 está configurado para ser executado com a mídia 10baseT/UTP. Para obter mais informações sobre tipos de mídia disponíveis para um driver, consulte sua página de manual. O status do link (status) é active, indicando que o sinal da portadora foi detectado. Para dc1, o status status: no carrier é normal quando um cabo Ethernet não está conectado à placa. Se a saída ifconfig8 tivesse mostrado algo semelhante a: dc0: flags=8843<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=80008<VLAN_MTU,LINKSTATE> ether 00:a0:cc:da:da:da media: Ethernet autoselect (100baseTX <full-duplex>) status: active isso indicaria que a placa não foi configurada. A placa deve ser configurada como root. A configuração da NIC pode ser realizada a partir da linha de comando com o ifconfig8, mas não persistirá após uma reinicialização, a menos que a configuração também seja adicionada ao /etc/rc.conf. Se um servidor DHCP estiver presente na LAN, basta adicionar esta linha: ifconfig_dc0="DHCP" Substitua dc0 com o valor correto para o sistema. A linha adicionada, então, segue as instruções dadas em . Se a rede foi configurada durante a instalação, algumas entradas para a NIC podem já estar presentes. Verifique novamente o /etc/rc.conf antes de adicionar novas linhas. Se não existir um servidor DHCP, a NIC deve ser configurada manualmente. Adicione uma linha para cada NIC presente no sistema, conforme mostrado neste exemplo: ifconfig_dc0="inet 192.168.1.3 netmask 255.255.255.0" ifconfig_dc1="inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP" Substitua dc0 e dc1 e as informações de endereço IP com os valores corretos para o sistema. Consulte a man page do driver, ifconfig8 e rc.conf5 para maiores detalhes sobre as opções permitidas e a sintaxe de /etc/rc.conf. Se a rede não estiver usando DNS, edite o /etc/hosts para adicionar os nomes e endereços IP dos hosts na LAN, se eles ainda não estiverem lá. Para maiores informações, consulte hosts5 e /usr/share/examples/etc/hosts. Se não houver um servidor DHCP e o acesso à Internet for necessário, configure manualmente o gateway padrão e o nameserver: # echo 'defaultrouter="your_default_router"' >> /etc/rc.conf # echo 'nameserver your_DNS_server' >> /etc/resolv.conf Teste e solução de problemas Uma vez que as alterações necessárias no /etc/rc.conf sejam salvas, uma reinicialização pode ser usada para testar a configuração de rede e verificar se o sistema é reiniciado sem nenhum erro. Como alternativa, aplique as configurações ao sistema de rede com este comando: # service netif restart Se um gateway padrão foi configurado no /etc/rc.conf, também execute este comando: # service routing restart Uma vez que o sistema de rede tiver sido reiniciado, teste as NIC. Testando uma placa Ethernet network cards testing Para verificar se uma placa Ethernet está configurada corretamente, execute um ping8 na própria interface e, em seguida, ping8 outra máquina na LAN: % ping -c5 192.168.1.3 PING 192.168.1.3 (192.168.1.3): 56 data bytes 64 bytes from 192.168.1.3: icmp_seq=0 ttl=64 time=0.082 ms 64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.074 ms 64 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=0.076 ms 64 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=0.108 ms 64 bytes from 192.168.1.3: icmp_seq=4 ttl=64 time=0.076 ms --- 192.168.1.3 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.074/0.083/0.108/0.013 ms % ping -c5 192.168.1.2 PING 192.168.1.2 (192.168.1.2): 56 data bytes 64 bytes from 192.168.1.2: icmp_seq=0 ttl=64 time=0.726 ms 64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.766 ms 64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.700 ms 64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.747 ms 64 bytes from 192.168.1.2: icmp_seq=4 ttl=64 time=0.704 ms --- 192.168.1.2 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 ms Para testar a resolução da rede, use o nome do host em vez do endereço IP. Se não houver nenhum servidor DNS na rede, o /etc/hosts deve ser configurado primeiro. Para este propósito, edite o /etc/hosts para adicionar os nomes e os endereços IP dos hosts na LAN, se eles ainda não estiverem lá . Para maiores informações, consulte hosts5 e /usr/share/examples/etc/hosts. Solução de problemas network cards troubleshooting Ao solucionar problemas de configurações de hardware e software, verifique primeiro as coisas simples. O cabo de rede está conectado? Os serviços de rede estão configurados corretamente? O firewall está configurado corretamente? A NIC é suportada pelo FreeBSD? Antes de enviar um relatório de bug, sempre verifique as Notas de Hardware, atualize a versão do FreeBSD para a versão mais recente do STABLE, verifique os arquivos da lista de discussão e pesquise na Internet. Se a placa funcionar, mas o desempenho for ruim, leia tuning7. Além disso, verifique a configuração da rede, pois configurações de rede incorretas podem causar conexões lentas. Alguns usuários experimentam uma ou duas mensagens de device timeout, o que é normal para algumas placas. Se eles continuarem ou forem incômodos, verifique se o dispositivo está em conflito com outro. Verifique novamente as conexões dos cabos. Considere tentar outra placa. Para resolver erros de watchdog timeout, primeiro verifique o cabo de rede. Muitas placas requerem um slot PCI que suporte a masterização de barramento. Em algumas placas-mãe antigas, apenas um slot PCI permite, normalmente o slot 0. Verifique a NIC e a documentação da placa-mãe para determinar se esse pode ser o problema. As mensagens No route to host ocorrem se o sistema não puder rotear um pacote para o host de destino. Isso pode acontecer se nenhuma rota padrão for especificada ou se um cabo for desconectado. Verifique a saída do netstat -rn e certifique-se de que haja uma rota válida para o host. Se não houver, leia . As mensagens de erro ping: sendto: Permission denied são geralmente causadas por um firewall mal configurado. Se um firewall está habilitado no FreeBSD, mas nenhuma regra foi definida, a política padrão é negar todo o tráfego, mesmo o ping8. Consulte para maiores informações. Às vezes, o desempenho da placa é ruim ou abaixo da média. Nesses casos, tente configurar o modo de seleção de mídia de autoselect para a seleção de mídia correta. Embora isso funcione para a maioria dos hardwares, isso pode ou não resolver o problema. Novamente, verifique todas as configurações de rede e consulte tuning7. Hosts Virtuais virtual hosts IP aliases Um uso comum do FreeBSD é a hospedagem de sites virtuais, onde um servidor aparece na rede como muitos servidores. Isso é conseguido atribuindo vários endereços de rede a uma única interface. Uma determinada interface de rede tem um endereço real e pode ter qualquer número de endereços alias. Esses aliases são normalmente adicionados colocando entradas de alias no /etc/rc.conf, como mostrado neste exemplo: ifconfig_fxp0_alias0="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx" As entradas de alias devem começar com alias0 usando um número sequencial como alias0, alias1 e assim por diante. O processo de configuração será interrompido no primeiro número ausente. O cálculo de máscaras de alias é importante. Para uma determinada interface, deve haver um endereço que represente corretamente a máscara de rede da rede. Qualquer outro endereço dentro dessa rede deve ter uma máscara de rede toda de 1s, expressa como 255.255.255.255 ou 0xffffffff. Por exemplo, considere o caso em que a interface fxp0 está conectada a duas redes: 10.1.1.0 com uma máscara de rede de 255.255.255.0 e 202.0.75.16 com uma máscara de rede de 255.255.255.240. O sistema deve ser configurado para aparecer nos intervalos 10.1.1.1 até 10.1.1.5 e 202.0.75.17 até 202.0.75.20. Somente o primeiro endereço em um determinado intervalo de rede deve ter uma máscara de rede real. Todo o resto de (10.1.1.2 até 10.1.1.5 e de 202.0.75.18 até 202.0.75.20) deve ser configurado com uma máscara de rede 255.255.255.255. As seguintes entradas /etc/rc.conf configuram o adaptador corretamente para este cenário: ifconfig_fxp0="inet 10.1.1.1 netmask 255.255.255.0" ifconfig_fxp0_alias0="inet 10.1.1.2 netmask 255.255.255.255" ifconfig_fxp0_alias1="inet 10.1.1.3 netmask 255.255.255.255" ifconfig_fxp0_alias2="inet 10.1.1.4 netmask 255.255.255.255" ifconfig_fxp0_alias3="inet 10.1.1.5 netmask 255.255.255.255" ifconfig_fxp0_alias4="inet 202.0.75.17 netmask 255.255.255.240" ifconfig_fxp0_alias5="inet 202.0.75.18 netmask 255.255.255.255" ifconfig_fxp0_alias6="inet 202.0.75.19 netmask 255.255.255.255" ifconfig_fxp0_alias7="inet 202.0.75.20 netmask 255.255.255.255" Uma maneira mais simples de expressar isso é com uma lista separada por espaço de intervalos de endereços IP. O primeiro endereço receberá a máscara de sub-rede indicada e os endereços adicionais terão uma máscara de sub-rede 255.255.255.255. ifconfig_fxp0_aliases="inet 10.1.1.1-5/24 inet 202.0.75.17-20/28" Configurando o log do sistema Niclas Zeising Contribuído por system logging syslog syslogd8 Gerar e ler logs do sistema é um aspecto importante da administração do sistema. As informações nos registros do sistema podem ser usadas para detectar problemas de hardware e software, bem como erros de configuração dos aplicativos e do sistema. Essas informações também desempenham um papel importante na auditoria de segurança e na resposta a incidentes. A maioria dos daemons e aplicativos do sistema geram entradas de log. O FreeBSD fornece um registrador de sistema, o syslogd, para gerenciar o registro. Por padrão, o syslogd é iniciado quando o sistema é inicializado. Isto é controlado pela variável syslogd_enable no /etc/rc.conf. Existem vários argumentos de aplicação que podem ser definidos usando syslogd_flags no /etc/rc.conf. Consulte syslogd8 para obter maiores informações sobre os argumentos disponíveis. Esta seção descreve como configurar o criador de logs do sistema FreeBSD para log local e remoto e como executar a rotação de log e o gerenciamento de log. Configurando os logs locais syslog.conf O arquivo de configuração, /etc/syslog.conf, controla o que o syslogd faz com as entradas de log à medida que são recebidas. Existem vários parâmetros para controlar o tratamento de eventos recebidos. O facility descreve qual subsistema gerou a mensagem, como o kernel ou um daemon, e o level descreve a gravidade do evento que ocorreu. Isso possibilita configurar onde uma mensagem de log é registrada, dependendo da instalação e do nível. Também é possível executar uma ação dependendo do aplicativo que enviou a mensagem e, no caso de log remoto, o nome do host da máquina que gera o evento de log. Este arquivo de configuração contém uma linha por ação, em que a sintaxe de cada linha é um campo seletor seguido por um campo de ação. A sintaxe do campo seletor é facility.level, que corresponderá às mensagens de log de facility no nível level ou superior. Também é possível adicionar um sinalizador de comparação opcional antes do nível para especificar mais precisamente o que está registrado. Vários campos seletores podem ser usados para a mesma ação e são separados por um ponto-e-vírgula (;). Usar * irá corresponder a tudo. O campo de ação indica para onde enviar a mensagem de log, como para um arquivo ou host de log remoto. Por exemplo, aqui está o syslog.conf padrão do FreeBSD: # $FreeBSD$ # # Spaces ARE valid field separators in this file. However, # other *nix-like systems still insist on using tabs as field # separators. If you are sharing this file between systems, you # may want to use only tabs as field separators here. # Consult the syslog.conf(5) manpage. *.err;kern.warning;auth.notice;mail.crit /dev/console *.notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err /var/log/messages security.* /var/log/security auth.info;authpriv.info /var/log/auth.log mail.info /var/log/maillog lpr.info /var/log/lpd-errs ftp.info /var/log/xferlog cron.* /var/log/cron !-devd *.=debug /var/log/debug.log *.emerg * # uncomment this to log all writes to /dev/console to /var/log/console.log #console.info /var/log/console.log # uncomment this to enable logging of all log messages to /var/log/all.log # touch /var/log/all.log and chmod it to mode 600 before it will work #*.* /var/log/all.log # uncomment this to enable logging to a remote loghost named loghost #*.* @loghost # uncomment these if you're running inn # news.crit /var/log/news/news.crit # news.err /var/log/news/news.err # news.notice /var/log/news/news.notice # Uncomment this if you wish to see messages produced by devd # !devd # *.>=info !ppp *.* /var/log/ppp.log !* Neste exemplo: A linha 8 combina todas as mensagens com um nível de err ou superior, bem como kern.warning, auth.notice e mail.crit, e envia essas mensagens de log para o console (/dev/console). A linha 12 combina todas as mensagens do recurso mail no nível info ou acima e registra as mensagens em /var/log/maillog. A linha 17 usa um sinalizador de comparação (=) para corresponder apenas as mensagens no nível debug e registrá-las em /var/log/debug.log. A linha 33 é um exemplo de uso de uma especificação de programa. Isso faz com que as regras que a seguem apenas sejam válidas para o programa especificado. Neste caso, somente as mensagens geradas pelo ppp são registradas em /var/log/ppp.log. Os níveis disponíveis, na ordem dos mais para o menos críticos, são emerg, alert, crit, err, warning, notice, info, and debug. As facilities, em nenhuma ordem particular, são auth, authpriv, console, cron, daemon, ftp, kern, lpr, mail, mark, news, security, syslog, user, uucp, and local0 through local7. Esteja ciente de que outros sistemas operacionais podem ter recursos diferentes. Para registrar tudo do nível notice e superior para /var/log/daemon.log, adicione a seguinte entrada: daemon.notice /var/log/daemon.log Para obter mais informações sobre os diferentes níveis e facilities, consulte syslog3 e syslogd8. Para maiores informações sobre /etc/syslog.conf, sua sintaxe e exemplos de uso mais avançados, veja syslog.conf5. Gerenciamento de log e rotação newsyslog newsyslog.conf log rotation log management Os arquivos de log podem crescer rapidamente, ocupando espaço em disco e dificultando a localização de informações úteis. O gerenciamento de log tenta atenuar isso. No FreeBSD, o newsyslog é usado para gerenciar arquivos de log. Este programa interno rotaciona e comprime periodicamente arquivos de log e, opcionalmente, cria arquivos de log ausentes e sinaliza os programas quando os arquivos de log são movidos. Os arquivos de log podem ser gerados pelo syslogd ou por qualquer outro programa que gere arquivos de log. Enquanto o newsyslog é normalmente executado a partir do cron8, ele não é um daemon do sistema. Na configuração padrão, ele é executado a cada hora. Para saber quais ações executar, o newsyslog lê seu arquivo de configuração, /etc/newsyslog.conf. Este arquivo contém uma linha para cada arquivo de log que o newsyslog gerencia. Cada linha indica o proprietário do arquivo, suas permissões, quando rotacionar esse arquivo, flags opcionais que afetam a rotação do log, como compactação, e programas para sinalizar quando o log é rotacionado. Aqui está a configuração padrão no FreeBSD: # configuration file for newsyslog # $FreeBSD$ # # Entries which do not specify the '/pid_file' field will cause the # syslogd process to be signalled when that log file is rotated. This # action is only appropriate for log files which are written to by the # syslogd process (ie, files listed in /etc/syslog.conf). If there # is no process which needs to be signalled when a given log file is # rotated, then the entry for that file should include the 'N' flag. # # The 'flags' field is one or more of the letters: BCDGJNUXZ or a '-'. # # Note: some sites will want to select more restrictive protections than the # defaults. In particular, it may be desirable to switch many of the 644 # entries to 640 or 600. For example, some sites will consider the # contents of maillog, messages, and lpd-errs to be confidential. In the # future, these defaults may change to more conservative ones. # # logfilename [owner:group] mode count size when flags [/pid_file] [sig_num] /var/log/all.log 600 7 * @T00 J /var/log/amd.log 644 7 100 * J /var/log/auth.log 600 7 100 @0101T JC /var/log/console.log 600 5 100 * J /var/log/cron 600 3 100 * JC /var/log/daily.log 640 7 * @T00 JN /var/log/debug.log 600 7 100 * JC /var/log/kerberos.log 600 7 100 * J /var/log/lpd-errs 644 7 100 * JC /var/log/maillog 640 7 * @T00 JC /var/log/messages 644 5 100 @0101T JC /var/log/monthly.log 640 12 * $M1D0 JN /var/log/pflog 600 3 100 * JB /var/run/pflogd.pid /var/log/ppp.log root:network 640 3 100 * JC /var/log/devd.log 644 3 100 * JC /var/log/security 600 10 100 * JC /var/log/sendmail.st 640 10 * 168 B /var/log/utx.log 644 3 * @01T05 B /var/log/weekly.log 640 5 1 $W6D0 JN /var/log/xferlog 600 7 100 * JC Cada linha começa com o nome do log a ser rotacionado, seguido opcionalmente por um proprietário e um grupo para arquivos rotacionados e recém-criados. O campo mode define as permissões no arquivo de log e count indica quantos arquivos de log rotacionados devem ser mantidos. Os campos size e when informam o newsyslog quando rotacionar o arquivo. Um arquivo de log é rotacionado quando seu tamanho é maior que o campo size ou quando o tempo no campo when tiver terminado. Um asterisco (*) significa que este campo é ignorado. O campo flags fornece instruções adicionais, por exemplo, como compactar o arquivo rotacionado ou criar o arquivo de log se ele estiver ausente. Os dois últimos campos são opcionais e especificam o nome do arquivo de ID de Processo (PID) e um número de sinal para enviar a esse processo quando o arquivo é rotacionado. Para obter maiores informações sobre todos os campos, sinalizadores válidos e como sobre especificar o tempo de rotação, consulte newsyslog.conf5. Como o newsyslog é executado a partir do cron8, ele não pode rotacionar arquivos com mais frequência do que a que está planejada para ser executada no cron8. Configurando o log remoto Tom Rhodes Contribuído por Monitorar os arquivos de log de vários hosts pode se tornar difícil à medida que o número de sistemas aumenta. Configurar o log centralizado pode reduzir parte da carga administrativa da administração dos arquivos de log. No FreeBSD, a agregação, a fusão e a rotação centralizada de arquivos de log podem ser configuradas usando o syslogd e o newsyslog. Esta seção demonstra um exemplo de configuração, em que host o A, chamado logserv.example.com, coletará informações de log para a rede local. O host B, denominado logclient.example.com, será configurado para transmitir informações de log para o servidor de registro em log. Configuração do servidor de log Um servidor de log é um sistema que foi configurado para aceitar informações de log de outros hosts. Antes de configurar um servidor de log, verifique o seguinte: Se houver um firewall entre o servidor de log e qualquer cliente de log, certifique-se de que o conjunto de regras do firewall permita a porta 514 do UDP para os clientes e o servidor. O servidor de log e todas as máquinas clientes devem ter entradas de nome diretas e reversas no DNS local. Se a rede não tiver um servidor DNS, crie entradas no /etc/hosts de cada sistema. A resolução adequada de nomes é necessária para que as entradas de log não sejam rejeitadas pelo servidor de log. No servidor de log, edite o /etc/syslog.conf para especificar o nome do cliente para receber as entradas de log, o recurso de log a ser usado e o nome do log para armazenar as entradas de log do host. Este exemplo adiciona o nome do host de B, registra todos os recursos e armazena as entradas de log em /var/log/logclient.log. Configuração do servidor de log de exemplo +logclient.example.com *.* /var/log/logclient.log Ao adicionar vários clientes de log, adicione uma entrada semelhante de duas linhas para cada cliente. Maiores informações sobre os recursos disponíveis podem ser encontradas em syslog.conf5. Em seguida, configure o /etc/rc.conf: syslogd_enable="YES" syslogd_flags="-a logclient.example.com -v -v" A primeira entrada inicia o syslogd na inicialização do sistema. A segunda entrada permite entradas de log do cliente especificado. A opção aumenta a verbosidade das mensagens registradas. Isso é útil para ajustar os recursos, pois os administradores podem ver o tipo de mensagens que estão sendo registradas em cada facility. Múltiplas opções podem ser especificadas para permitir o registro de múltiplos clientes. Endereços IP e netblocks inteiros também podem ser especificados. Consulte syslogd8 para obter uma lista completa de opções possíveis. Finalmente, crie o arquivo de log: # touch /var/log/logclient.log Neste ponto, o syslogd deve ser reiniciado e verificado: # service syslogd restart # pgrep syslog Se um PID for retornado, o servidor será reiniciado com êxito e a configuração do cliente poderá ser iniciada. Se o servidor não reiniciar, consulte /var/log/messages para visualizar o erro. Configuração do cliente de log Um cliente de log envia entradas de log para um servidor de log na rede. O cliente também mantém uma cópia local de seus próprios logs. Uma vez que o servidor de log foi configurado, edite o /etc/rc.conf no cliente de registro: syslogd_enable="YES" syslogd_flags="-s -v -v" A primeira entrada ativa o syslogd na inicialização. A segunda entrada impede que os logs sejam aceitos por esse cliente de outros hosts () e aumenta a verbosidade das mensagens registradas. Em seguida, defina o servidor de log no /etc/syslog.conf do cliente. Neste exemplo, todos os facilities registrados são enviados para um sistema remoto, indicado pelo símbolo @, com o nome do host especificado: *.* @logserv.example.com Depois de salvar a edição, reinicie o syslogd para que as alterações entrem em vigor: # service syslogd restart Para testar se as mensagens de log estão sendo enviadas pela rede, use o logger1 no cliente para enviar uma mensagem para syslogd: # logger "Test message from logclient" Esta mensagem agora deve existir tanto no /var/log/messages do cliente e no /var/log/logclient.log do servidor de log. Debugando servidores de log Se nenhuma mensagem estiver sendo recebida no servidor de log, a causa provavelmente é um problema de conectividade de rede, um problema de resolução de nome de host ou um erro de digitação em um arquivo de configuração. Para isolar a causa, certifique-se de que o servidor de log e o cliente de log sejam capazes de comunicarem através do ping usando o nome do host especificado em seu /etc/rc.conf. Se isso falhar, verifique o cabeamento da rede, o conjunto de regras do firewall e as entradas de nome de host no servidor DNS ou /etc/hosts no servidor de log e nos clientes. Repita até que o ping seja bem-sucedido em ambos os hosts. Se o ping for bem-sucedido em ambos os hosts, mas as mensagens de log ainda não estiverem sendo recebidas, aumente temporariamente o detalhamento do log para diminuir o problema de configuração. No exemplo a seguir, o /var/log/logclient.log no servidor de log está vazio e o /var/log/messages no cliente de log não indica uma razão para a falha. Para aumentar a saída de debug, edite a entrada syslogd_flags no servidor de log e execute uma reinicialização: syslogd_flags="-d -a logclient.example.com -v -v" # service syslogd restart Dados de debug semelhantes aos seguintes irão aparecer no console imediatamente após a reinicialização: logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart syslogd: restarted logmsg: pri 6, flags 4, from logserv.example.com, msg syslogd: kernel boot file is /boot/kernel/kernel Logging to FILE /var/log/messages syslogd: kernel boot file is /boot/kernel/kernel cvthname(192.168.1.10) validate: dgram from IP 192.168.1.10, port 514, name logclient.example.com; rejected in rule 0 due to name mismatch. Neste exemplo, as mensagens de log estão sendo rejeitadas devido a um erro de digitação que resulta em uma incompatibilidade de nome de host. O nome do host do cliente deve ser logclient, não logclien. Corrija o erro de digitação, execute uma reinicialização e verifique os resultados: # service syslogd restart logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart syslogd: restarted logmsg: pri 6, flags 4, from logserv.example.com, msg syslogd: kernel boot file is /boot/kernel/kernel syslogd: kernel boot file is /boot/kernel/kernel logmsg: pri 166, flags 17, from logserv.example.com, msg Dec 10 20:55:02 <syslog.err> logserv.example.com syslogd: exiting on signal 2 cvthname(192.168.1.10) validate: dgram from IP 192.168.1.10, port 514, name logclient.example.com; accepted in rule 0. logmsg: pri 15, flags 0, from logclient.example.com, msg Dec 11 02:01:28 trhodes: Test message 2 Logging to FILE /var/log/logclient.log Logging to FILE /var/log/messages Neste ponto, as mensagens estão sendo recebidas e colocadas corretamente no arquivo correto. Considerações de segurança Como com qualquer serviço de rede, os requisitos de segurança devem ser considerados antes de implementar um servidor de log. Os arquivos de log podem conter dados confidenciais sobre serviços ativados no host local, contas de usuário e dados de configuração. Os dados enviados pela rede do cliente para o servidor não serão criptografados nem protegidos por senha. Se houver necessidade de criptografia, considere o uso do security/stunnel, que transmitirá os dados de log em um túnel criptografado. A segurança local também é um problema. Os arquivos de log não são criptografados durante o uso ou após a rotação do log. Usuários locais podem acessar arquivos de log para obter informações adicionais sobre a configuração do sistema. Definir permissões adequadas nos arquivos de log é crítico. O rotacionador de log integrado, newsyslog, suporta a configuração de permissões em arquivos de log recém-criados e rotacionados. A configuração de arquivos de log no modo 600 deve impedir o acesso indesejado por usuários locais. Consulte newsyslog.conf5 para obter informações adicionais. Arquivos de Configuração Layout do <filename>/etc</filename> Existem vários diretórios nos quais as informações de configuração são mantidas. Estes incluem: /etc Informações de configuração específica do sistema genérico. /etc/defaults Versões padrão dos arquivos de configuração do sistema. /etc/mail Configuração extra do sendmail 8 e outros arquivos de configuração MTA. /etc/ppp Configuração para ambos os programas, user- e kernel-ppp. /usr/local/etc Arquivos de configuração para aplicativos instalados. Pode conter subdiretórios para cada aplicativo. /usr/local/etc/rc.d scripts rc8 para os aplicativos instalados. /var/db Arquivos de banco de dados específicos do sistema gerados automaticamente, como o banco de dados de pacotes e o banco de dados locate1. Hostnames hostname DNS <filename>/etc/resolv.conf</filename> resolv.conf Como um sistema FreeBSD acessa o Sistema de Nomes de Domínio da Internet (Internet Domain Name System - DNS) é controlado por resolv.conf5. As entradas mais comuns para o /etc/resolv.conf são: nameserver O endereço IP de um servidor de nomes que o resolvedor deve consultar. Os servidores são consultados na ordem listada com um máximo de três. search Lista de pesquisa, para busca de nomes de host. Isso é normalmente determinado pelo domínio do nome do host local. domain O nome do domínio local. Um típico /etc/resolv.conf é assim: search example.com nameserver 147.11.1.11 nameserver 147.11.100.30 Apenas uma das opções search e domain deve ser usada. Ao usar o DHCP, o dhclient8 geralmente reescreve o /etc/resolv.conf com informações recebidas do servidor DHCP. <filename>/etc/hosts</filename> hosts O /etc/hosts é um banco de dados de texto simples que funciona em conjunto com o DNS e o NIS para fornecer o nome do host aos mapeamentos de endereços IP. Entradas para computadores locais conectados através de uma LAN podem ser adicionadas a este arquivo para propósitos simplistas de nomeação em vez de configurar um servidor named8. Além disso, o /etc/hosts pode ser usado para fornecer um registro local de nomes da Internet, reduzindo a necessidade de consultar servidores DNS externos para nomes comumente acessados. # $FreeBSD$ # # # Host Database # # This file should contain the addresses and aliases for local hosts that # share this file. Replace 'my.domain' below with the domainname of your # machine. # # In the presence of the domain name service or NIS, this file may # not be consulted at all; see /etc/nsswitch.conf for the resolution order. # # ::1 localhost localhost.my.domain 127.0.0.1 localhost localhost.my.domain # # Imaginary network. #10.0.0.2 myname.my.domain myname #10.0.0.3 myfriend.my.domain myfriend # # According to RFC 1918, you can use the following IP networks for # private nets which will never be connected to the Internet: # # 10.0.0.0 - 10.255.255.255 # 172.16.0.0 - 172.31.255.255 # 192.168.0.0 - 192.168.255.255 # # In case you want to be able to connect to the Internet, you need # real official assigned numbers. Do not try to invent your own network # numbers but instead get one from your network provider (if any) or # from your regional registry (ARIN, APNIC, LACNIC, RIPE NCC, or AfriNIC.) # O formato do /etc/hosts é o seguinte: [Internet address] [official hostname] [alias1] [alias2] ... Por exemplo: 10.0.0.1 myRealHostname.example.com myRealHostname foobar1 foobar2 Consulte hosts 5 para obter maiores informações. Efetuando ajustes com o <citerefentry><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry> sysctl tuning with sysctl O sysctl8 é usado para fazer mudanças em um sistema FreeBSD em execução. Isso inclui muitas opções avançadas da stack TCP/IP e do sistema de memória virtual as quais podem melhorar drasticamente o desempenho do FreeBSD para um administrador de sistema experiente. Mais de quinhentas variáveis do sistema podem ser lidas e definidas usando o sysctl8. Em sua essência, o sysctl8 serve duas funções: ler e modificar as configurações do sistema. Para ver todas as variáveis legíveis: % sysctl -a Para ler uma variável específica, especifique seu nome: % sysctl kern.maxproc kern.maxproc: 1044 Para definir uma variável específica, use a sintaxe variable=value: # sysctl kern.maxfiles=5000 kern.maxfiles: 2088 -> 5000 As configurações das variáveis sysctl são geralmente strings, números ou booleanos, onde um booleano é 1 para sim 0 para não. Para definir automaticamente algumas variáveis sempre que a máquina inicializar, adicione-as ao /etc/sysctl.conf. Para maiores informações, consulte sysctl.conf5 e . <filename>sysctl.conf</filename> sysctl.conf sysctl O arquivo de configuração para o sysctl8, /etc/sysctl.conf, se parece muito com o /etc /rc.conf. Os valores são definidos na forma variable=value. Os valores especificados são definidos após o sistema entrar no modo multiusuário. Nem todas as variáveis são configuráveis neste modo. Por exemplo, para desativar o log de saídas de sinais fatais e impedir que os usuários vejam processos iniciados por outros usuários, os seguintes ajustes podem ser configurados em /etc/sysctl.conf: # Do not log fatal signal exits (e.g., sig 11) kern.logsigexit=0 # Prevent users from seeing information about processes that # are being run under another UID. security.bsd.see_other_uids=0 Variáveis <citerefentry><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry> apenas de leitura Tom Rhodes Contribuído por Em alguns casos, pode ser desejável modificar os valores de variáveis do sysctl8 que são somente de leitura, o que exigirá uma reinicialização do sistema. Por exemplo, em alguns modelos de laptops, o dispositivo cardbus4 não examinará os intervalos de memória e falhará com erros semelhantes a: cbb0: Could not map register memory device_probe_and_attach: cbb0 attach returned 12 A correção requer a modificação de uma configuração definida por uma variável do sysctl8 que é somente de leitura. Adicione ao arquivo /boot/loader.conf e reinicie. Agora o cardbus4 deve funcionar corretamente. Otimização de Discos A seção a seguir discutirá vários mecanismos e opções de ajuste que podem ser aplicados a dispositivos de disco. Em muitos casos, discos com partes mecânicas, como unidades SCSI, serão o gargalo que reduz o desempenho geral do sistema. Embora a solução seja instalar uma unidade sem peças mecânicas, como uma unidade de estado sólido, as unidades mecânicas não irão desaparecer num futuro próximo. Quando estiver otimizando discos, é aconselhável utilizar os recursos do comando iostat8 para testar várias mudanças no sistema. Este comando permitirá ao usuário obter informações valiosas sobre o sistema IO. Variáveis Sysctl <varname>vfs.vmiodirenable</varname> vfs.vmiodirenable A variável vfs.vmiodirenable sysctl8 pode ser definida como 0 (off ) ou 1 (on). Está definida para 1 por padrão. Esta variável controla como os diretórios são armazenados em cache pelo sistema. A maioria dos diretórios é pequena, usando apenas um único fragmento (normalmente 1K) no sistema de arquivos e, normalmente, 512 bytes no cache de buffer. Com esta variável desativada, o cache de buffer armazenará apenas um número fixo de diretórios, mesmo que o sistema tenha uma quantidade enorme de memória. Quando ativado, este sysctl8 permite que o cache de buffer use o cache de página VM para armazenar em cache os diretórios, disponibilizando toda a memória para fazer cache dos diretórios. No entanto, a memória mínima no núcleo usada para armazenar em cache um diretório é o tamanho da página física (geralmente 4K) em vez de 512 bytes. Manter esta opção ativada é recomendado se o sistema estiver executando quaisquer serviços que manipulem um grande número de arquivos. Esses serviços podem incluir caches da web, grandes sistemas de correio e sistemas de notícias. Manter essa opção geralmente não reduz o desempenho, mesmo com a memória desperdiçada, mas deve-se experimentar para descobrir. <varname>vfs.write_behind</varname> vfs.write_behind A variável vfs.write_behind sysctl8 é padronizada para 1 (ligada). Isso informa ao sistema de arquivos para emitir gravações de mídia à medida que clusters completos são coletados, o que normalmente ocorre ao gravar arquivos sequenciais grandes. Isso evita saturar o cache de buffer com buffers sujos quando não beneficia o desempenho de I/O. No entanto, isso pode atrasar os processos e, sob certas circunstâncias, deve ser desativado. <varname>vfs.hirunningspace</varname> vfs.hirunningspace A variável vfs.hirunningspace sysctl8 determina quanto de I/O de gravação pendente pode ser enfileirado no sistema de controladores de disco como um todo em qualquer instância. O padrão é geralmente suficiente, mas em máquinas com muitos discos, tente aumentar para quatro ou cinco megabytes. Definir um valor muito alto, que exceda o limite de gravação do cache de buffer, pode levar a um mau desempenho de cluster. Não defina esse valor arbitrariamente alto, pois valores de gravação mais altos podem adicionar latência a leituras que ocorrem ao mesmo tempo. Há vários outros caches de buffer e valores de cache de página VM relacionados a sysctl8. Modificar esses valores não é recomendado, pois o sistema VM faz um bom trabalho de ajuste automático. <varname>vm.swap_idle_enabled</varname> vm.swap_idle_enabled A variável vm.swap_idle_enabled sysctl8 é útil em grandes sistemas multiusuários com muitos usuários ativos, e muitos processos ociosos. Tais sistemas tendem a gerar pressão contínua nas reservas de memória livre. Ativar esse recurso e aprimorar a histerese de troca (em segundos ociosos) por meio de vm.swap_idle_threshold1 e vm.swap_idle_threshold2 reduz a prioridade das páginas de memória associadas aos processos inativos mais rapidamente do que no algoritmo de pageout normal. Isso dá uma ajuda ao daemon de pageout. Apenas ative essa opção se necessário, porque a compensação é essencialmente fazer o pre-page da memoria mais cedo, o que consome mais swap e largura de banda de disco. Em um sistema pequeno, esta opção terá um efeito determinável, mas em um sistema grande que já está paginando moderadamente, esta opção permite que o sistema VM instale processos inteiros dentro e fora da memória facilmente. <varname>hw.ata.wc</varname> hw.ata.wc Desativar o cache de gravação IDE reduz a largura de banda de gravação em discos IDE, mas às vezes pode ser necessário devido a problemas de consistência de dados introduzidos por fornecedores de disco rígido. O problema é que algumas unidades IDE mentem sobre quando uma gravação é concluída. Com o cache de gravação IDE ativado, os discos rígidos IDE gravam os dados fora de ordem e às vezes atrasam a gravação de alguns blocos indefinidamente quando estão sob carga pesada de disco. Uma falha ou falha de energia pode causar corrupção séria do sistema de arquivos. Verifique o padrão no sistema observando a variável hw.ata.wc sysctl8. Se o cache de gravação IDE estiver desativado, pode-se definir essa variável somente leitura como 1 em /boot/loader.conf para ativar no momento da inicialização. Para maiores informações, consulte ata4. <literal>SCSI_DELAY</literal> (<varname>kern.cam.scsi_delay</varname>) kern.cam.scsi_delay kernel options SCSI DELAY A opção de configuração do kernel SCSI_DELAY pode ser usada para reduzir os tempos de inicialização do sistema. Os padrões são razoavelmente altos e podem ser responsáveis por 15 segundos de atraso no processo de inicialização. Reduzindo-o para 5 segundos geralmente funciona com unidades modernas. A variável de tempo de inicialização kern.cam.scsi_delay deve ser usada. A opção de configuração ajustável e a configuração do kernel aceitam valores em termos de milissegundos e não segundos. Soft Updates Soft Updates tunefs8 Para ajustar um sistema de arquivos, use tunefs8. Este programa tem muitas opções diferentes. Para ativar e desativar o Soft Updates, use: # tunefs -n enable /filesystem # tunefs -n disable /filesystem Um sistema de arquivos não pode ser modificado com tunefs8 enquanto estiver montado. Um bom momento para ativar o Soft Updates é antes que qualquer partição tenha sido montada, no modo de single-user. O Soft Updates é recomendado para sistemas de arquivos UFS, pois melhora drasticamente o desempenho de metadados, principalmente a criação e exclusão de arquivos, através do uso de um cache em memória. Há duas desvantagens no Soft Updates que você deve conhecer. Primeiro, o Soft Updates garante a consistência do sistema de arquivos no caso de uma falha, mas pode facilmente levar vários segundos ou até um minuto para atualizar o disco físico. Se o sistema falhar, os dados não gravados poderão ser perdidos. Em segundo lugar, os Soft Updates atrasam a liberação de blocos do sistema de arquivos. Se o sistema de arquivos raiz estiver quase cheio, a execução de uma atualização importante, como make installworld, poderá causar a falta de espaço do sistema de arquivos e a atualização falhará. Mais detalhes sobre soft updates Soft Updates details As atualizações de metadados são atualizações para dados que não são de conteúdo, como inodes ou diretórios. Existem duas abordagens tradicionais para gravar os metadados de um sistema de arquivos em disco. Historicamente, o comportamento padrão era gravar atualizações de metadados de forma síncrona. Se um diretório fosse alterado, o sistema aguardava até que a alteração fosse gravada no disco. Os buffers de dados do arquivo (conteúdo do arquivo) foram passados pelo cache de buffer e foram copiados para o disco posteriormente de maneira assíncrona. A vantagem dessa implementação é que ela opera com segurança. Se houver uma falha durante uma atualização, os metadados estarão sempre em um estado consistente. Um arquivo é criado completamente ou não é de todo. Se os blocos de dados de um arquivo não encontrarem saída do cache de buffer para o disco no momento da falha, o fsck8 reconhece isso e repara o sistema de arquivos definindo o comprimento do arquivo como 0. Além disso, a implementação é clara e simples. A desvantagem é que as alterações nos metadados são lentas. Por exemplo, rm -r toca todos os arquivos em um diretório sequencialmente, mas cada alteração de diretório será gravada de forma síncrona no disco. Isso inclui atualizações para o próprio diretório, para a tabela de inode e possivelmente para blocos indiretos alocados pelo arquivo. Considerações semelhantes aplicam-se ao desenrolar hierarquias grandes usando tar -x. A segunda abordagem é usar atualizações de metadados assíncronas. Este é o padrão para um sistema de arquivos UFS montado com mount -o async. Como todas as atualizações de metadados também são passadas pelo cache de buffer, elas serão mescladas com as atualizações dos dados de conteúdo do arquivo. A vantagem dessa implementação é que não há necessidade de esperar até que cada atualização de metadados seja gravada no disco, portanto, todas as operações que causam grandes quantidades de atualizações de metadados funcionam muito mais rápido do que no caso síncrono. Essa implementação ainda é clara e simples, portanto, há um baixo risco de erros se infiltrarem no código. A desvantagem é que não há garantia para um estado consistente do sistema de arquivos. Se houver uma falha durante uma operação que atualizou grandes quantidades de metadados, como uma falha de energia ou alguém pressionando o botão de reinicialização, o sistema de arquivos será deixado em um estado imprevisível. Não há oportunidade de examinar o estado do sistema de arquivos quando o sistema é reativado, pois os blocos de dados de um arquivo já podem ter sido gravados no disco enquanto as atualizações da tabela de inodes ou do diretório associado não foram. É impossível implementar um fsck8 que é capaz de limpar o caos resultante porque as informações necessárias não estão disponíveis no disco. Se o sistema de arquivos foi danificado além do reparo, a única opção é reformatá-lo e restaurá-lo a partir do backup. A solução usual para este problema é implementar dirty region logging, que também é chamado de journaling. As atualizações de metadados ainda são gravadas de forma síncrona, mas apenas em uma pequena região do disco. Mais tarde, eles são movidos para o local apropriado. Como a área de registro é uma região pequena e contígua no disco, não há longas distâncias para as cabeças de disco se moverem, mesmo durante operações pesadas, portanto, essas operações são mais rápidas do que as atualizações síncronas. Além disso, a complexidade da implementação é limitada, portanto, o risco de erros estarem presentes é baixo. Uma desvantagem é que todos os meta-dados são gravados duas vezes, uma vez na região de registro e uma vez no local apropriado, portanto, pode resultar em piora na performance. Por outro lado, em caso de falha, todas as operações de metadados pendentes podem ser rapidamente recuperadas ou concluídas a partir da área de registro depois que o sistema for ativado novamente, resultando em uma inicialização rápida do sistema de arquivos. Kirk McKusick, o desenvolvedor do Berkeley FFS, resolveu esse problema com o Soft Updates. Todas as atualizações de meta-dados pendentes são mantidas na memória e gravadas no disco em uma sequência ordenada (atualizações de metadados ordenadas). Isso tem o efeito de que, no caso de operações pesadas de meta-dados, atualizações posteriores em um item catch as anteriores que ainda estão na memória e ainda não foram gravadas no disco. Todas as operações são geralmente executadas na memória antes da atualização ser gravada no disco e os blocos de dados são classificados de acordo com sua posição, de modo que não estarão no disco antes de seus meta-dados. Se o sistema travar, um reenvio de log implícito faz com que todas as operações que não foram gravadas no disco apareçam como se nunca tivessem acontecido. Um estado consistente do sistema de arquivos é mantido e parece ser o de 30 a 60 segundos antes. O algoritmo usado garante que todos os recursos em uso sejam marcados como tal em seus blocos e inodes. Após uma falha, o único erro de alocação de recursos que ocorre é que os recursos são marcados como used, que são, na verdade, free. O fsck8 reconhece essa situação e libera os recursos que não são mais usados. É seguro ignorar o estado sujo do sistema de arquivos após uma falha forçando a montagem com mount -f. Para liberar recursos que podem não ser utilizados, O fsck8 precisa ser executado posteriormente. Esta é a idéia por trás do fsck8 em background: no momento da inicialização do sistema, apenas um snapshot do sistema de arquivos é gravado e o fsck8 é executado posteriormente. Todos os sistemas de arquivos podem ser montados sujos, para que a inicialização do sistema prossiga no modo multiusuário. Em seguida, o fsck8 em background é planejado para todos os sistemas de arquivos em que isso é necessário, para liberar recursos que podem não ser utilizados. Os sistemas de arquivos que não usam Soft Updates ainda precisam executar o fsck8 em primeiro plano de forma usual . A vantagem é que as operações de meta-dados são quase tão rápidas quanto as atualizações assíncronas e são mais rápidas que o logging, que precisa escrever os meta-dados duas vezes. As desvantagens são a complexidade do código, um maior consumo de memória e algumas idiosincrasias. Depois de uma falha, o estado do sistema de arquivos parece ser um pouco mais velho. Em situações onde a abordagem síncrona padrão teria causado a existencia de alguns arquivos de comprimento zero após o fsck8, esses arquivos sequer chegam a existir com Soft Updates porque nem os metadados e nem o conteúdo do arquivo foram gravados no disco. O espaço em disco não é liberado até que as atualizações tenham sido gravadas no disco, o que pode ocorrer algum tempo depois de executar rm1. Isso pode causar problemas ao instalar grandes quantidades de dados em um sistema de arquivos que não tenha espaço livre suficiente para armazenar todos os arquivos duas vezes. Ajustando os Limites do Kernel tuning kernel limits Limites de arquivos/processos <varname>kern.maxfiles</varname> kern.maxfiles A variável kern.maxfiles sysctl8 pode ser aumentada ou diminuída com base nos requisitos do sistema. Essa variável indica o número máximo de descritores de arquivos no sistema. Quando a tabela do descritor de arquivos estiver cheia, o erro file: table is full aparecerá repetidamente no buffer de mensagem do sistema, que pode ser visualizado usando dmesg8 . Cada arquivo aberto, socket ou fifo usa um descritor de arquivo. Um servidor de produção em larga escala pode facilmente exigir muitos milhares de descritores de arquivos, dependendo do tipo e número de serviços executados simultaneamente. Em versões mais antigas do FreeBSD, o valor padrão de kern.maxfiles é derivado do no arquivo de configuração do kernel. O kern.maxfiles cresce proporcionalmente ao valor do . Ao compilar um kernel personalizado, considere configurar esta opção de configuração do kernel de acordo com o uso do sistema. A partir desse número, o kernel recebe a maioria dos seus limites predefinidos. Mesmo que uma máquina de produção não tenha 256 usuários simultâneos, os recursos necessários podem ser semelhantes a um servidor da Web de alta escala. A variável read-only sysctl8kern.maxusers é dimensionada automaticamente na inicialização com base na quantidade de memória disponível no sistema, e pode ser determinado em tempo de execução, inspecionando o valor de kern.maxusers. Alguns sistemas requerem valores maiores ou menores de kern.maxusers e valores de 64, 128, e 256 não são incomuns. Ir acima de 256 não é recomendado, a menos que seja necessário um grande número de descritores de arquivos. Muitos dos valores ajustáveis definidos para seus padrões por kern.maxusers podem ser individualmente sobrescritos no tempo de inicialização ou em tempo de execução no /boot/loader.conf. Consulte loader.conf 5 e /boot/defaults/loader.conf para mais detalhes e algumas dicas. Em versões mais antigas, o sistema ajustará automaticamente o maxusers se ele estiver definido como 0. O algoritmo de ajuste automático define o maxusers igual à quantidade de memória no sistema, com um mínimo de 32 e um máximo de 384.. Ao configurar esta opção, configure o maxusers para pelo menos 4, especialmente se o sistema executar o Xorg ou se for usado para compilar software. A tabela mais importante definida por maxusers é o número máximo de processos, que é definido como 20 + 16 * maxusers. Se maxusers for definido como 1, só podem existir 36 processos simultâneos, incluindo 18 ou mais para que o sistema seja iniciado no boot ou 15 usado pelo Xorg. Até mesmo uma tarefa simples, como ler uma página de manual, iniciará nove processos para filtrar, descompactar e visualizar. Configurar o maxusers para 64 permite até 1044 processos simultâneos, o que deve ser suficiente para quase todos os usos. Se, no entanto, o erro proc table full for exibido ao tentar iniciar outro programa ou se um servidor estiver sendo executado com um grande número de usuários simultâneos, aumente o número e recompile. O maxusers não limita o número de usuários que podem logar na máquina. Em vez disso, ele configura vários tamanhos de tabela para valores razoáveis, considerando o número máximo de usuários no sistema e quantos processos cada usuário executará. <varname>kern.ipc.soacceptqueue</varname> kern.ipc.soacceptqueue A variável kern.ipc.soacceptqueue do sysctl8 limita o tamanho da fila de escuta para aceitar novas conexões TCP. O valor padrão de 128 é normalmente muito baixo para o manuseio robusto de novas conexões em um servidor Web com carga pesada. Para tais ambientes, recomenda-se aumentar este valor para 1024 ou superior. Um serviço como o sendmail8, ou Apache pode limitar por ele mesmo o tamanho da fila de escuta, mas frequentemente terá uma diretiva em seu arquivo de configuração para ajustar o tamanho da fila. Filas de escuta grandes fazem um trabalho melhor evitando ataques de negação de serviço (Denial of Service - DoS). Limites de rede A opção de configuração do kernel NMBCLUSTERS determina a quantidade de Mbufs de rede disponível para o sistema. Um servidor com muito tráfego e um baixo número de Mbufs prejudicará o desempenho. Cada cluster representa aproximadamente 2K de memória, portanto, um valor de 1024 representa 2 megabytes de memória do kernel reservada para buffers de rede. Um cálculo simples pode ser feito para descobrir quantos são necessários. Um servidor web que suporte um maximo de 1000 conexões simultâneas onde cada conexão usa um buffer de envio de 16K e recebe 6K, requer aproximadamente 32 MB de buffers de rede para cobrir o servidor web. Uma boa regra é multiplicar por 2, então 2x32MB / 2KB = 64MB / 2kB = 32768. Valores entre 4096 e 32768 são recomendados para máquinas com maiores quantidades de memória. Nunca especifique um valor arbitrariamente alto para este parâmetro, pois isso pode levar a uma falha no tempo de inicialização. Para observar o uso do cluster de rede, use a opção com o netstat1. A variável kern.ipc.nmbclusters deve ser usada para configurar isso no momento da inicialização. Apenas as versões mais antigas do FreeBSD irão requerer o uso da opção NMBCLUSTERS no config8 do kernel. Para servidores ocupados que fazem uso extensivo da chamada de sistema sendfile2, pode ser necessário aumentar o número de buffers sendfile2 através da opção de configuração do kernel NSFBUFS ou definindo seu valor no /boot/loader.conf (veja loader8 para detalhes). Um indicador comum de que esse parâmetro precisa ser ajustado é quando os processos são vistos no estado sfbufa. A variável sysctl8 kern.ipc.nsfbufs é somente de leitura. Este parâmetro nominalmente escala com o kern.maxusers, no entanto, pode ser necessário ajustar de acordo. Mesmo que um socket tenha sido marcado como non-blocking, chamar o sendfile2 em um socket non-blocking pode resultar no bloqueio do sendfile2 até que sejam disponibilizados struct sf_buf suficientes. <varname>net.inet.ip.portrange.*</varname> net.inet.ip.portrange.* As variáveis net.inet.ip.portrange.* do sysctl8 controlam os intervalos de números de porta automaticamente ligados a sockets TCP e UDP. Existem três intervalos: um intervalo baixo, um intervalo padrão e um intervalo alto. A maioria dos programas de rede usam o intervalo padrão que é controlado por net.inet.ip.portrange.first e net.inet.ip.portrange.last, cujo padrão é 1024 e 5000, respectivamente. Intervalos de porta ligados são usados para conexões de saída e é possível executar o sistema fora das portas sob certas circunstâncias. Isso ocorre mais comumente ao executar um proxy web com muita carga. O intervalo de portas não é um problema ao executar um servidor que lida principalmente com conexões de entrada, como um servidor Web, ou que tenha um número limitado de conexões de saída, como um mail relay. Para situações em que há falta de portas, é recomendado aumentar modestamente o net.inet.ip.portrange.last. Um valor de 10000, 20000 ou 30000 pode ser razoável. Considere os efeitos do firewall ao alterar o intervalo de portas. Alguns firewalls podem bloquear grandes intervalos de portas, geralmente portas de numeração baixa, e esperam que os sistemas usem intervalos mais altos de portas para conexões de saída. Por esta razão, não é recomendado que o valor de net.inet.ip.portrange.first seja diminuído. Produto de atraso de largura de banda <literal>TCP</literal> TCP Bandwidth Delay Product Limiting net.inet.tcp.inflight.enable A limitação do produto de atraso de largura de banda TCP pode ser ativada configurando a variável net.inet.tcp.inflight.enable do sysctl8 para 1. Isso instrui o sistema a tentar calcular o produto de atraso de largura de banda para cada conexão e a limitar a quantidade de dados na fila para envio à rede para a quantidade necessária para manter o rendimento ideal. Esse recurso é útil ao servir dados sobre modems, Gigabit Ethernet, links WAN de alta velocidade ou qualquer outro link com um produto de atraso de largura de banda alta, especialmente quando também estiver usando dimensionamento de janela ou quando uma janela de envio grande tiver sido configurado. Ao habilitar essa opção, defina também a variável net.inet.tcp.inflight.debug para 0 para desabilitar a depuração. Para uso em produção, definir a variável net.inet.tcp.inflight.min para pelo menos 6144 pode ser benéfico. Definir valores mínimos altos pode efetivamente desabilitar a limitação de largura de banda, dependendo do link. O recurso de limitação reduz a quantidade de dados acumulados nas rotas intermediárias e nas filas de pacotes de switchs e reduz a quantidade de dados acumulados na fila de interface do host local. Com menos pacotes enfileirados, as conexões interativas, especialmente os modems lentos, funcionarão com menores Round Trip Times. Esse recurso afeta apenas a transmissão de dados do lado do servidor, como o upload. Não tem efeito na recepção ou download de dados. Ajustar o valor da variável net.inet.tcp.inflight.stab não é recomendado. Este parâmetro é padronizado para 20, representando 2 pacotes máximos adicionados ao cálculo da janela de produto de atraso de largura de banda. A janela adicional é necessária para estabilizar o algoritmo e melhorar a capacidade de resposta às mudanças de condições, mas também pode resultar em um ping8 mais alto em links lentos , embora ainda muito menor do que sem o algoritmo inflight. Nesses casos, tente reduzir esse parâmetro para 15, 10 ou 5 e reduza a variável net.inet.tcp.inflight.min para um valor como 3500 para obter o efeito desejado. A redução desses parâmetros deve ser feita apenas como último recurso. Memória virtual <varname>kern.maxvnodes</varname> Um vnode é a representação interna de um arquivo ou diretório. Aumentar o número de vnodes disponíveis para o sistema operacional reduz a I/O do disco. Normalmente, isso é tratado pelo sistema operacional e não precisa ser alterado. Em alguns casos em que o I/O de disco é um gargalo e o sistema está ficando sem vnodes, essa configuração precisa ser aumentada. A quantidade de RAM inativa e livre precisará ser levada em conta. Para ver o número atual de vnodes em uso: # sysctl vfs.numvnodes vfs.numvnodes: 91349 Para ver o máximo de vnodes: # sysctl kern.maxvnodes kern.maxvnodes: 100000 Se o uso atual do vnode estiver próximo do máximo, tente aumentar o kern.maxvnodes por um valor de 1000. Fique de olho no número de vfs.numvnodes. Se subir até o máximo novamente, o kern.maxvnodes precisará ser aumentado ainda mais. Caso contrário, uma mudança no uso da memória como reportado pelo top1 deve estar visível e mais memória deve estar ativa. Adicionando Espaço de Swap Às vezes, um sistema requer mais espaço de swap. Esta seção descreve dois métodos para aumentar o espaço de troca: adicionar swap a uma partição existente ou em um novo disco rígido e criar um arquivo de swap em uma partição existente. Para obter informações sobre como criptografar o espaço de swap, quais opções existem e por que isso deve ser feito, consulte . Swap em um novo disco rígido ou partição existente Adicionar um novo disco rígido para swap resulta em um melhor desempenho do que usando uma partição em uma unidade existente. A configuração de partições e discos rígidos é explicada em enquanto discute layouts de partições e considerações sobre o tamanho de partições de swap. Use o swapon para adicionar uma partição swap ao sistema. Por exemplo: # swapon /dev/ada1s1b É possível usar qualquer partição que não esteja atualmente montada, mesmo que já contenha dados. O uso do swapon em uma partição que contém dados sobrescreverá e destruirá esses dados. Certifique-se de que a partição a ser incluída como swap seja realmente a partição pretendida antes de executar o swapon. Para adicionar automaticamente essa partição swap na inicialização, adicione uma entrada ao /etc/fstab: /dev/ada1s1b none swap sw 0 0 Veja fstab5 para uma explicação das entradas do /etc/fstab. Maiores informações sobre swapon podem ser encontradas em swapon8. Criando um arquivo de swap Esses exemplos criam um arquivo de troca de 64M chamado /usr/swap0 em vez de usar uma partição. O uso de arquivos de swap requer que o módulo necessário pelo md4 tenha sido embutido no kernel ou tenha sido carregado antes do swap ser ativado. Veja para informações sobre como compilar um kernel customizado. Criando um arquivo de swap Crie o arquivo de swap: # dd if=/dev/zero of=/usr/swap0 bs=1m count=64 Defina as permissões adequadas no novo arquivo: # chmod 0600 /usr/swap0 Informe o sistema sobre o arquivo de swap adicionando uma linha ao /etc/fstab: md99 none swap sw,file=/usr/swap0,late 0 0 O dispositivo md99 do md4 é usado, deixando números de dispositivos inferiores disponíveis para uso interativo. O espaço de swap será adicionado na inicialização do sistema. Para adicionar espaço de swap imediatamente, use o swapon8: # swapon -aL Gerenciamento de energia e recursos Hiten Pandya Escrito por Tom Rhodes É importante utilizar recursos de hardware de maneira eficiente. O gerenciamento de energia e recursos permite que o sistema operacional monitore os limites do sistema e, possivelmente, forneça um alerta se a temperatura do sistema aumentar inesperadamente. Uma especificação anterior para fornecer gerenciamento de energia foi o recurso Gerenciamento Avançado de Energia (Advanced Power Management - APM). O APM controla o uso de energia de um sistema com base em sua atividade. No entanto, era difícil e inflexível para os sistemas operacionais gerenciar o uso de energia e as propriedades térmicas de um sistema. O hardware era gerenciado pelo BIOS e o usuário tinha configuração e visibilidade limitadas nas configurações de gerenciamento de energia. O APM BIOS fornecido é específico da plataforma de hardware. Um driver APM no sistema operacional intermedia o acesso à interface do software APM, que permite o gerenciamento dos níveis de energia. Existem quatro problemas principais no APM. Primeiro, o gerenciamento de energia é feito pelo BIOS específico do fornecedor, separado do sistema operacional. Por exemplo, o usuário pode definir valores de tempo ocioso para um disco rígido no APM BIOS para que, quando excedido, o BIOS diminua o disco rígido sem o consentimento do sistema operacional. Segundo, a lógica do APM é incorporada no BIOS e opera fora do escopo do sistema operacional. Isso significa que os usuários só podem corrigir problemas no APM BIOS, fazendo o flash de um novo ROM, que é um procedimento perigoso com potencial para deixar o sistema em um estado irrecuperável se falhar. Terceiro, o APM é uma tecnologia específica do fornecedor, o que significa que há muita duplicidade de esforços e que os erros encontrados no BIOS de um fornecedor podem não serem resolvidos em outros. Por fim, o APM BIOS não tinha espaço suficiente para implementar uma política de energia sofisticada ou que pudesse se adaptar bem ao propósito da máquina. O BIOS plug and play (PNPBIOS) não era confiável em muitas situações. O PNPBIOS é uma tecnologia de 16 bits, portanto, o sistema operacional precisa usar a emulação de 16 bits para fazer interface com os métodos PNPBIOS. O FreeBSD fornece um driver APM, pois o APM ainda deve ser usado para sistemas fabricados antes do ano 2000. O driver está documentado em apm4. ACPI APM O sucessor do APM é a Interface Avançada de Configuração e Energia (Advanced Configuration and Power Interface - ACPI). O ACPI é um padrão escrito por uma aliança de fornecedores para fornecer uma interface para recursos de hardware e gerenciamento de energia. É um elemento-chave na configuração direcionada do sistema operacional e gerenciamento de energia, pois proporciona mais controle e flexibilidade ao sistema operacional. Este capítulo demonstra como configurar o ACPI no FreeBSD. Em seguida, ele oferece algumas dicas sobre como depurar o ACPI e como enviar um relatório de problemas contendo informações de depuração para que os desenvolvedores possam diagnosticar e corrigir problemas no ACPI. Configurando o <acronym>ACPI</acronym> No FreeBSD, o driver acpi4 é carregado por padrão na inicialização do sistema e não deve ser compilado no kernel. Este driver não pode ser descarregado após a inicialização porque o barramento do sistema o utiliza para várias interações de hardware. No entanto, se o sistema estiver com problemas, o ACPI pode ser desativado completamente ao reinicializar após a configurar hint.acpi.0.disabled="1" no /boot/loader.conf ou definindo esta variável no prompt do loader, como descrito em . O ACPI e o APM não podem coexistir e devem ser usados separadamente. O último a ser carregado terminará se o driver perceber que o outro já está sendo executado. O ACPI pode ser usado para colocar o sistema em modo de suspensão com o acpiconf, a opção e um número de 1 a 5. A maioria dos usuários só precisa de 1 (suspensão rápida para RAM) ou 3 (suspender para RAM). A opção 5 executa um soft-off que é o mesmo que executar halt -p. Outras opções estão disponíveis usando o sysctl. Consulte acpi4 e acpiconf8 para maiores informações. Problemas comuns ACPI O ACPI está presente em todos os computadores modernos que estão em conformidade com as arquiteturas ia32 (x86) e amd64 (AMD). O padrão completo tem muitos recursos, incluindo gerenciamento de desempenho da CPU, controle de planos de energia, zonas térmicas, vários sistemas de bateria, controladores incorporados e enumeração de barramento. A maioria dos sistemas implementa menos que o padrão completo. Por exemplo, um sistema de desktop geralmente só implementa a enumeração de barramento, enquanto um laptop também pode ter suporte a refrigeração e gerenciamento de bateria. Os laptops também têm suspensão e retomada, com sua própria complexidade associada. Um sistema compatível com ACPI possui vários componentes. Os fornecedores de BIOS e chipset fornecem várias tabelas fixas, como FADT, na memória que especificam coisas como o mapa APIC (usado para SMP), registros de configuração e valores simples de configuração. Além disso, uma tabela de bytecode, a Tabela de Descrição de Sistema Diferenciada DSDT, especifica um espaço de nome de dispositivos e métodos em forma de árvore. O driver ACPI deve analisar as tabelas fixas, implementar um interpretador para o bytecode e modificar os drivers de dispositivos e o kernel para aceitar informações do subsistema ACPI. Para o FreeBSD, a Intel forneceu um interpretador (ACPI-CA) que é compartilhado com o Linux e o NetBSD. O caminho para o código-fonte ACPI-CA é src/sys/contrib/dev/acpica. O código especifico que permite que o ACPI-CA funcione no FreeBSD está em src/sys/dev/acpica/Osd. Finalmente, drivers que implementam vários dispositivos ACPI são encontrados em src/sys/dev/acpica. ACPI problems Para que o ACPI funcione corretamente, todas as partes devem funcionar corretamente. Aqui estão alguns problemas comuns, em ordem de freqüência em que ocorrem, e algumas possíveis soluções ou correções. Se uma correção não resolver o problema, consulte para obter instruções sobre como enviar um relatório de bug. Problemas do mouse Em alguns casos, retomar a partir de uma operação de suspensão fará com que o mouse falhe. Um work around conhecido é adicionar hint.psm.0.flags="0x3000" ao /boot/loader.conf. Suspend/Resume O ACPI tem três estados de suspensão para RAM (STR), S1-S3, e um de suspensão de estado para disco (STD), chamado S4. O STD pode ser implementado de duas maneiras separadas. O S4BIOS é uma suspensão para disco auxiliada pelo BIOSe o S4OS é implementado inteiramente pelo sistema operacional. O estado normal em que o sistema se encontra quando conectado, mas não ligado, é soft off (S5). Use o sysctl hw.acpi para verificar os itens relacionados à suspensão. Estes resultados de exemplo são de um Thinkpad: hw.acpi.supported_sleep_state: S3 S4 S5 hw.acpi.s4bios: 0 Use o acpiconf -s para testar os estados S3, S4 e S5. Um de um (1) indica suporte ao S4BIOS em vez do S4 suportado pelo sistema operacional. Ao testar as ações de suspend/resume, inicie com o S1, se suportado. É mais provável que esse estado funcione, pois não requer muito suporte ao driver. Ninguém implementou S2, que é similar ao S1. Em seguida, tente o S3. Este é o estado mais profundo do STR e requer muito suporte ao driver para reinicializar corretamente o hardware. Um problema comum com suspend/resume é que muitos drivers de dispositivo não salvam, restauram ou reinicializam seu firmware, registros ou memória do dispositivo adequadamente. Como primeira tentativa de depuração do problema, tente: # sysctl debug.bootverbose=1 # sysctl debug.acpi.suspend_bounce=1 # acpiconf -s 3 Esse teste emula o ciclo de suspend/resume de todos os drivers de dispositivo sem entrar realmente no estado S3. Em alguns casos, problemas como perder o estado do firmware, tempo limite do watchdog do dispositivo e tentar novamente para sempre podem ser capturados com esse método. Note que o sistema não entrará realmente no estado S3, o que significa que os dispositivos não perderão energia, e muitos funcionarão bem mesmo se os métodos suspend/resume estiverem totalmente ausentes, ao contrário do real estado S3. Casos mais difíceis requerem hardware adicional, como uma porta serial e um cabo para depuração através de um console serial, uma porta Firewire e um cabo para o uso do dcons4 e habilidades de depuração do kernel. Para ajudar a isolar o problema, descarregue o maior número possível de drivers. Se funcionar, diminua o driver que é o problema carregando os drivers até que ele falhe novamente. Normalmente, drivers binários como nvidia.ko, drivers de exibição e USB terão mais problemas, enquanto as interfaces Ethernet normalmente funcionam bem. Se os drivers puderem ser carregados e descarregados adequadamente, automatize isso colocando os comandos apropriados em /etc/rc.suspend e /etc/rc.resume. Tente configurar o para 1 se a tela estiver desarrumada após a retomada. Tente definir valores mais longos ou mais curtos para para ver se isso ajuda. Tente carregar uma distribuição recente do Linux para ver se o suspend/resume funciona no mesmo hardware. Se funciona no Linux, é provável que seja um problema no driver do FreeBSD. Descobrir qual driver causa o problema ajudará os desenvolvedores a corrigir o problema. Como os mantenedores do ACPI raramente mantêm outros drivers, como som ou ATA, qualquer problema de driver também deve ser postado na lista freebsd-current e enviada para o mantenedor do driver. Os usuários avançados podem incluir os printf3s de debug do driver problemático para rastrear onde, em sua função de reinício, ele é interrompido. Por fim, tente desativar o ACPI e ativar o APM. Se o comando suspend/resume funcionar com APM, use o APM, especialmente em hardware mais antigo (anterior a 2000). Demorou algum tempo para que os fornecedores obtivessem suporte ACPI correto e os hardwares antigos são mais prováveis de terem problemas de BIOS com ACPI. Travamentos do sistema A maioria dos travamentos do sistema é resultado de interrupções perdidas ou de uma tempestade de interrupções. Chipsets podem ter problemas com base na inicialização, como o BIOS configura as interrupções antes da correção da tabela APIC (MADT) e o roteamento do sistema de controle de interrupções (SCI). interrupt storms Tempestades de interrupção podem ser distinguidas de interrupções perdidas, verificando a saída do vmstat -i e observando a linha que possui acpi0. Se o contador está aumentando em mais de um par por segundo, há uma tempestade de interrupção. Se o sistema parece travado, tente acessar o DDB ( CTRLALTESC no console) e digite show interrupts. APIC disabling Ao lidar com problemas de interrupção, tente desativar o suporte ao APIC com hint.apic.0.disabled="1" no /boot/loader.conf . Panics Os panics são relativamente raros para ACPI e são a prioridade máxima a ser corrigida. O primeiro passo é isolar as etapas para reproduzir o panic, se possível, e obter um backtrace. Siga as instruções para habilitar options DDB e configurar um console serial em ou configurar uma partição de despejo. Para obter um backtrace no DDB, use tr. Ao escrever o backtrace, obtenha pelo menos as cinco últimas e as cinco principais linhas do rastro. Em seguida, tente isolar o problema inicializando com ACPI desabilitado. Se isso funcionar, isole o subsistema ACPI usando vários valores de . Veja acpi4 para alguns exemplos. O sistema é ativado após a sua suspensão ou desligamento Primeiro, tente definir hw.acpi.disable_on_poweroff="0" no /boot/loader.conf. Isso impede que a ACPI desative vários eventos durante o processo de desligamento. Alguns sistemas precisam desse valor definido como 1 (o padrão) pelo mesmo motivo. Isso geralmente corrige o problema de um sistema ser ativado espontaneamente após uma suspensão ou desligamento. BIOS contém Bytecode com bugs ACPI ASL Alguns fornecedores de BIOS fornecem bytecode incorreto ou com bugs. Isso geralmente é manifestado por mensagens do console do kernel como esta: ACPI-1287: *** Error: Method execution failed [\\_SB_.PCI0.LPC0.FIGD._STA] \\ (Node 0xc3f6d160), AE_NOT_FOUND Geralmente, esses problemas podem ser resolvidos com a atualização do BIOS para a revisão mais recente. A maioria das mensagens do console é inofensiva, mas se houver outros problemas, como o status da bateria não estar funcionando, essas mensagens são um bom lugar para começar a procurar por problemas. Substituindo o padrão <acronym>AML</acronym> O bytecode do BIOS, conhecido como ACPI Machine Language (AML), é compilado de uma linguagem de origem chamada ACPI Source Language (ASL). O AML é encontrado na tabela conhecida como Tabela de Descrição do Sistema Diferenciado (Differentiated System Description Table - DSDT). ACPI ASL O objetivo do FreeBSD é que todos trabalhem com ACPI sem qualquer intervenção do usuário. Soluções alternativas ainda estão sendo desenvolvidas para erros comuns feitos pelos fornecedores de BIOS. O interpretador Microsoft (acpi.sys e acpiec.sys) não verifica rigorosamente a conformidade com o padrão e, portanto, muitos fornecedores de BIOS que testam apenas ACPI sob Windows nunca corrigem seu ASL. Os desenvolvedores do FreeBSD continuam a identificar e documentar qual comportamento não padrão é permitido pelo interpretador da Microsoft para replicá-lo para que o FreeBSD possa funcionar sem forçar os usuários a corrigir o ASL. Para ajudar a identificar o comportamento de bugs e possivelmente corrigi-lo manualmente, uma cópia pode ser feita do ASL do sistema. Para copiar o ASL do sistema para um nome de arquivo especificado, use acpidump com , para mostrar o conteúdo das tabelas fixas e , para desmontar o AML: # acpidump -td > my.asl Algumas versões de AML assumem que o usuário está executando o Windows. Para sobrescrever isto, defina hw.acpi.osname="Windows 2009" no /boot/loader.conf, usando a mais recente versão do Windows listada no ASL. Outras soluções alternativas podem exigir que o my.asl seja personalizado. Se este arquivo for editado, compile o novo ASL usando o seguinte comando. Os avisos geralmente podem ser ignorados, mas erros são bugs que geralmente impedem que o ACPI funcione corretamente. # iasl -f my.asl Incluir força a criação do AML, mesmo que haja erros durante a compilação. Alguns erros, como a falta de declarações de retorno, são automaticamente contornados pelo interpretador do FreeBSD. O nome do arquivo de saída padrão para iasl é DSDT.aml. Carregue este arquivo em vez da cópia com bugs do BIOS, que ainda está presente na memória flash, editando o /boot/loader.conf como segue: acpi_dsdt_load="YES" acpi_dsdt_name="/boot/DSDT.aml" Certifique-se de copiar o DSDT.aml para /boot e, em seguida, reinicialize o sistema. Se isso resolver o problema, envie um diff1 do antigo e novo ASL para a lista freebsd-acpi para que os desenvolvedores possam contornar o comportamento de bugs no acpica. Obtendo e enviando informações de depuração Nate Lawson Escrito por Pedro Schultz com contribuições de Tom Rhodes ACPI problems ACPI debugging O driver ACPI possui um recurso de depuração flexível. Um conjunto de subsistemas e o nível de detalhamento podem ser especificados. Os subsistemas a serem depurados são especificados como camadas e são divididos em componentes (ACPI_ALL_COMPONENTS) e suporte de hardware ACPI (ACPI_ALL_DRIVERS). O detalhamento da saída de depuração é especificado como o nível e varia de apenas erros de relatório (ACPI_LV_ERROR) para tudo (ACPI_LV_VERBOSE). O nível é uma máscara de bits, por isso, várias opções podem ser definidas de uma só vez, separadas por espaços. Na prática, um console serial deve ser usado para registrar a saída para que ela não seja perdida quando o buffer de mensagem do console for liberado. Uma lista completa das camadas e níveis individuais é encontrada em acpi4. A saída de depuração não está ativada por padrão. Para ativá-la, adicione as opções ACPI_DEBUG ao arquivo de configuração do kernel personalizado se ACPI estiver compilado no kernel. Adicione ACPI_DEBUG=1 ao /etc/make.conf para ativá-lo globalmente. Se um módulo for usado em vez de um kernel personalizado, recompile apenas o módulo acpi.ko como segue: # cd /sys/modules/acpi/acpi && make clean && make ACPI_DEBUG=1 Copie o acpi.ko compilado para /boot/kernel e adicione o nível e camada desejados ao /boot/loader.conf. As entradas neste exemplo permitem mensagens de depuração para todos os componentes e drivers de hardware ACPI e mensagens de erro de saída no nível menos detalhado: debug.acpi.layer="ACPI_ALL_COMPONENTS ACPI_ALL_DRIVERS" debug.acpi.level="ACPI_LV_ERROR" Se as informações necessárias forem acionadas por um evento específico, como suspend e resume, não modifique o /boot/loader.conf. Em vez disso, use o sysctl para especificar o layer e o nível após inicializar e preparar o sistema para o evento específico. As variáveis que podem ser definidas usando sysctl são nomeadas da mesma forma que os parâmetros no /boot/loader.conf. ACPI problems Depois que as informações de depuração forem coletadas, elas podem ser enviadas para a lista freebsd-acpi para que possam ser usadas pelos mantenedores do FreeBSD ACPI para identificar a causa raiz do problema e desenvolver uma solução. Antes de enviar as informações de depuração para esta lista, certifique-se de que a versão mais recente do BIOS esteja instalada e, se disponível, a versão do firmware do controlador incorporado. Ao enviar um relatório de problemas, inclua as seguintes informações: Descrição do comportamento de bugs, incluindo tipo de sistema, modelo e qualquer coisa que faça com que o erro apareça. Explique com a maior precisão possível quando o bug começou a ocorrer se for novo. A saída do dmesg após executar boot -v, incluindo quaisquer mensagens de erro geradas pelo bug. A saída dmesg do boot -v com o ACPI desabilitado, se a desativação do ACPI ajudar a corrigir o problema. Saída do sysctl hw.acpi. Isso lista quais recursos o sistema oferece. A URL para uma versão do ASL do sistema hospedada na web. Não envie o ASL diretamente para a lista, pois pode ser muito grande. Gere uma cópia do ASL executando este comando: # acpidump -dt > name-system.asl Substitua o nome de login para name e fabricante/modelo para system. Por exemplo, use njl-FooCo6000.asl. A maioria dos desenvolvedores do FreeBSD assina a lista de discussão FreeBSD-CURRENT, mas deve-se enviar os problemas para a lista freebsd-acpi para ter certeza de que ele será visto. Seja paciente ao esperar por uma resposta. Se o bug não for imediatamente aparente, envie um relatório de bug. Ao inserir um PR, inclua as mesmas informações solicitadas acima. Isso ajuda os desenvolvedores a rastrear o problema e resolvê-lo. Não envie um PR sem enviar primeiro um e-mail para a lista freebsd-acpi pois é provável que o problema já tenha sido relatado antes. Referências Mais informações sobre ACPI podem ser encontradas nos seguintes locais: Arquivos da lista de e-mail do FreeBSD ACPI (https://lists.freebsd.org/pipermail/freebsd-acpi/) A especificação ACPI 2.0 (http://acpi.info/spec.htm) acpi4, acpi_thermal4, acpidump8, iasl8, e acpidb8 O processo de inicialização do FreeBSD Sinopse booting bootstrap O processo de iniciar um computador e carregar o sistema operacional é chamado de processo de bootstrap, ou de inicialização. O processo de boot do FreeBSD fornece uma grande flexibilidade na personalização do que acontece quando o sistema é iniciado, incluindo a capacidade de selecionar diferentes sistemas operacionais instalados no mesmo computador, diferentes versões do mesmo sistema operacional ou um kernel instalado diferente. Este capítulo detalha as opções de configuração que podem ser definidas. Ele demonstra como personalizar o processo de inicialização do FreeBSD, incluindo tudo o que acontece até que o kernel do FreeBSD tenha iniciado, procurado por dispositivos e iniciado o init 8. Isso ocorre quando a cor do texto das mensagens de inicialização muda de branco brilhante para cinza. Depois de ler este capítulo, você reconhecerá: Os componentes do sistema de boot do FreeBSD e como eles interagem. As opções que podem ser passadas para os componentes no bootstrap do FreeBSD para controlar o processo de inicialização. Como configurar uma tela personalizada de inicialização. O básico da configuração de device hints. Como inicializar no modo de usuário único e multiusuário e como encerrar corretamente um sistema FreeBSD. Este capítulo descreve apenas o processo de inicialização do FreeBSD rodando em sistemas x86 e amd64. Processo de Inicialização do FreeBSD Ligar um computador e iniciar o sistema operacional representa um dilema interessante. Por definição, o computador não sabe como fazer nada até que o sistema operacional seja iniciado. Isso inclui executar programas a partir do disco. Se o computador não pode executar um programa a partir do disco sem o sistema operacional e os programas do sistema operacional estão no disco, como o sistema operacional é iniciado? Este problema é semelhante ao do livro As Aventuras do Barão de Munchausen. Um personagem tinha caído no meio de um bueiro, e se retirou agarrando suas botas e levantando. Nos primeiros dias da computação, o termo bootstrap era aplicado ao mecanismo usado para carregar o sistema operacional. Desde então, foi encurtado para booting. BIOS Basic Input/Output SystemBIOS No hardware x86, o Sistema Básico de Entrada/Saída (BIOS) é responsável por carregar o sistema operacional. O BIOS procura no disco rígido pelo Master Boot Record (MBR), que deve estar localizado em um local específico do disco. O BIOS tem conhecimento suficiente para carregar e executar o MBR, e assume que o MBR pode então executar o restante das tarefas envolvidas no carregamento do sistema operacional, possivelmente com a ajuda do BIOS. O FreeBSD permite inicializar a partir do padrão mais antigo do MBR e da nova Tabela de Partição GUID (GPT). O particionamento GPT geralmente é encontrado em computadores com a Interface de Firmware Unificada e Extensivel (UEFI). No entanto, o FreeBSD pode inicializar a partir de partições de GPT mesmo em máquinas com apenas BIOS legado com o gptboot 8. O trabalho está em andamento para fornecer a inicialização direta a partir do UEFI. Master Boot Record (MBR) Boot Manager Boot Loader O código dentro do MBR é normalmente chamado de gerenciador de inicialização, especialmente quando ele interage com o usuário. O gerenciador de inicialização geralmente tem mais código na primeira faixa do disco ou dentro do sistema de arquivos. Exemplos de gerenciadores de inicialização incluem o gerenciador de boot padrão do FreeBSD boot0, também chamado Boot Easy, e o Grub, que é usado por muitas distribuições Linux. Se apenas um sistema operacional estiver instalado, o MBR procura pelo primeiro slice inicializável (ativo) no disco e, em seguida, executa o código nesse slice para carregar o restante do sistema operacional. Quando vários sistemas operacionais estão presentes, um gerenciador de inicialização diferente pode ser instalado para exibir uma lista de sistemas operacionais para que o usuário possa selecionar um para inicializar. O restante do sistema de boot do FreeBSD é dividido em três estágios. O primeiro estágio sabe apenas o suficiente para colocar o computador em um estado específico e executar o segundo estágio. O segundo estágio pode fazer um pouco mais, antes de executar o terceiro estágio. O terceiro estágio termina a tarefa de carregar o sistema operacional. O trabalho é dividido em três etapas porque o MBR coloca limites no tamanho dos programas que podem ser executados nos estágios um e dois. Encadear as tarefas juntas permite que o FreeBSD forneça um carregador mais flexível. kernel init8 O kernel é então iniciado e começa a sondar os dispositivos e inicializá-los para uso. Quando o processo de inicialização do kernel é finalizado, o kernel passa o controle para o processo de usuário init8, que garante que os discos estejam em estado utilizável, inicia a configuração de recursos no nível de usuário que monta sistemas de arquivos, configura placas de rede para se comunicar na rede e inicia os processos que foram configurados para serem executados na inicialização. Esta seção descreve esses estágios em mais detalhes e demonstra como interagir com o processo de inicialização do FreeBSD. O gerenciador de inicialização Boot Manager Master Boot Record (MBR) O código do gerenciador de inicialização no MBR é às vezes chamado de estágio zero do processo de inicialização. Por padrão, o FreeBSD usa o gerenciador de boot boot0. O MBR instalado pelo instalador do FreeBSD é baseado no /boot/boot0. O tamanho e a capacidade do boot0 são restritos a 446 bytes devido à tabela de slices e ao identificador 0x55AA no final do MBR. Se o boot0 e vários sistemas operacionais estiverem instalados, uma mensagem semelhante a este exemplo será exibida no momento da inicialização: Captura de tela do <filename>boot0</filename> F1 Win F2 FreeBSD Default: F2 Outros sistemas operacionais sobrescreverão um MBR existente se forem instalados após o FreeBSD. Se isto acontecer, ou para substituir o MBR existente com o MBR do FreeBSD, use o seguinte comando: # fdisk -B -b /boot/boot0 device onde device é o disco de inicialização, como ad0 para o primeiro disco IDE, ad2 para o primeiro disco IDE em um segundo controlador IDE, ou da0 para o primeiro disco SCSI. Para criar uma configuração personalizada do MBR, consulte boot0cfg8. Estágio Um e Estágio Dois Conceitualmente, o primeiro e o segundo estágios fazem parte do mesmo programa na mesma área do disco. Por causa das restrições de espaço, eles foram divididos em dois, mas são sempre instalados juntos. Eles são copiados do combinado /boot/boot pelo instalador do FreeBSD ou pelo bsdlabel. Estes dois estágios estão localizados fora do sistema de arquivos, na primeira trilha do slice de inicialização, começando pelo primeiro setor. É ali onde o boot0, ou qualquer outro gerenciador de inicialização, espera encontrar um programa para executar, o qual continuará o processo de inicialização. O primeiro estágio, boot1, é muito simples, pois pode ter apenas 512 bytes de tamanho. Ele sabe o suficiente sobre o FreeBSD bsdlabel, que armazena informações sobre o slice, para localizar e executar o boot2. O estágio dois, boot2, é um pouco mais sofisticado, e entende o sistema de arquivos do FreeBSD o suficiente para encontrar arquivos. Ele pode fornecer uma interface simples para escolher o kernel ou loader para ser executado. Ele executa o loader, que é muito mais sofisticado e fornece um arquivo de configuração de inicialização. Se o processo de inicialização for interrompido no estágio dois, a seguinte tela interativa será exibida: Captura de tela do <filename>boot2</filename> >> FreeBSD/i386 BOOT Default: 0:ad(0,a)/boot/loader boot: Para substituir o boot1 e boot2 instalados, use o bsdlabel, onde diskslice é o disco e o slice para inicializar, como ad0s1 para o primeiro slice no primeiro disco IDE: # bsdlabel -B diskslice Se apenas o nome do disco for usado, como ad0, o bsdlabel criará o disco no modo perigosamente dedicado, sem slices. Esta provavelmente não é a ação desejada, então verifique novamente o diskslice antes de pressionar Return. Estágio três boot-loader O loader é o estágio final do processo de bootstrap de três estágios. Ele está localizado no sistema de arquivos, geralmente como /boot/loader. O loader é projetado como um método interativo para configuração, usando um conjunto de comandos embutidos, auxiliado por um interpretador mais poderoso que possui um conjunto de comandos mais complexo. Durante a inicialização, o loader procurará por um console e por discos, e descobrirá de qual disco está sendo inicializado. Ele irá definir as variáveis de acordo, e um interpretador é iniciado onde os comandos do usuário podem ser passados a partir de um script ou usados interativamente. loader loader configuration O loader então lerá o /boot/loader.rc, que por padrão lê o /boot/defaults/loader.conf que define padrões razoáveis para variáveis e lê o /boot/loader.conf para mudanças locais nessas variáveis. O loader.rc então age sobre essas variáveis, carregando os módulos e o kernel selecionados. Finalmente, por padrão, o loader realiza uma espera de 10 segundos por pressionamentos de teclas, e inicializa o kernel se não for interrompido. Se interrompido, o usuário é apresentado a um prompt que compreende o conjunto de comandos, no qual o usuário pode ajustar variáveis, descarregar todos os módulos, carregar módulos e finalmente inicializar ou reinicializar. lista os comandos do loader mais usados. Para uma discussão completa de todos os comandos disponíveis, consulte loader8. Comandos Internos do Loader Variável Descrição autoboot segundos Prossegue para inicializar o kernel se não for interrompido dentro do intervalo de tempo dado, em segundos. Ele exibe uma contagem regressiva e o intervalo de tempo padrão é de 10 segundos. boot -options kernelname Imediatamente prossegue a inicialização do kernel, com qualquer opção especificada ou nome do kernel. Fornecer um nome de kernel na linha de comando só é aplicável depois que um unload foi emitido. Caso contrário, o kernel previamente carregado será usado. Se o nomedokernel não estiver qualificado, ele será pesquisado em /boot/kernel e /boot/modules. boot-conf Passa pela mesma configuração automática de módulos baseada em variáveis especificadas, mais comumente kernel. Isso só faz sentido se unload for usado primeiro, antes de alterar algumas variáveis. help tópico Mostra mensagens de ajuda lidas de /boot/loader.help. Se o tópico fornecido for index, a lista de tópicos disponíveis será exibida. include nomedoarquivo Lê o arquivo especificado e interpreta-o linha por linha. Um erro interrompe imediatamente o include. load -t type filename Carrega o kernel, módulo do kernel ou arquivo do tipo especificado, com o nome de arquivo especificado. Quaisquer argumentos após o nomedoarquivo são passados para o arquivo. Se nomedoarquivo não estiver qualificado, ele será pesquisado em /boot/kernel e /boot/modules. ls -l path Exibe uma listagem de arquivos do caminho fornecido ou do diretório raiz, se o caminho não for especificado. Se for especificado, os tamanhos dos arquivos também serão mostrados. lsdev -v Lista todos os dispositivos dos quais é possível carregar módulos. Se for especificado, mais detalhes serão impressos. lsmod -v Exibe os módulos carregados. Se for especificado, mais detalhes serão mostrados. more nomedoarquivo Exibe os arquivos especificados, com uma pausa em cada LINES exibidas. reboot Reinicia imediatamente o sistema. set variable, set variable=value Define as variáveis de ambiente especificadas. unload Remove todos os módulos carregados.
Aqui estão alguns exemplos práticos de uso do loader. Para inicializar o kernel usual no modo single-user single-user mode: boot -s Para descarregar o kernel e os módulos usuais e, em seguida, carregar o kernel anterior ou outro especificado: unload load kernel.old Use o kernel.GENERIC para se referir ao kernel padrão que vem com uma instalação, ou kernel.old, para se referir ao kernel previamente instalado antes de uma atualização do sistema ou antes de configurar um kernel personalizado. Use o seguinte para carregar os módulos usuais com outro kernel: unload set kernel="kernel.old" boot-conf Para carregar um script de configuração do kernel automatizado: load -t userconfig_script /boot/kernel.conf kernel boot interaction
Último estágio init8 Quando o kernel é carregado pelo loader ou pelo boot2, que ignora o loader, ele examina qualquer flag de inicialização e ajusta seu comportamento conforme necessário. lista os flags de inicialização comumente usados. Consulte boot8 para obter mais informações sobre os outros sinalizadores de inicialização. kernel bootflags Interação do Kernel durante o Boot Opção Descrição Durante a inicialização do kernel, solicita que o dispositivo seja montado como o sistema de arquivos raiz. Inicialize o sistema de arquivos raiz a partir de um CDROM. Inicialize no modo single-user. Seja mais detalhado durante a inicialização do kernel.
Uma vez que o kernel terminou a inicialização, ele passa o controle para o processo de usuário init8, localizado em /sbin/init, ou o caminho do programa especificado na variável init_path no loader. Este é o último estágio do processo de inicialização. A sequência de inicialização garante que os sistemas de arquivos disponíveis no sistema estejam consistentes. Se um sistema de arquivos UFS não estiver e o fsck não puder corrigir as inconsistências, o init jogará o sistema no modo single-user para que o administrador do sistema possa resolver o problema diretamente. Caso contrário, o sistema é inicializado no modo multi-user. Modo Single-User single-user mode console Um usuário pode especificar este modo inicializando com ou definindo a variável boot_single no loader. Ele também pode ser alcançado executando o shutdown now do modo multi-user. O modo single-user começa com esta mensagem: Enter full pathname of shell or RETURN for /bin/sh: Se o usuário pressionar Enter, o sistema entrará no Bourne shell padrão. Para especificar um shell diferente, insira o caminho completo para o shell. O modo single-user é geralmente usado para reparar um sistema que não inicializa devido a um sistema de arquivos inconsistente ou a um erro em um arquivo de configuração de inicialização. Ele também pode ser usado para redefinir a senha do root quando ela é desconhecida. Essas ações são possíveis porque o prompt do modo single-user fornece acesso local completo ao sistema e seus arquivos de configuração. Não há rede neste modo. Embora o modo single-user seja útil para reparar um sistema, ele representa um risco de segurança, a menos que o sistema esteja em um local fisicamente seguro. Por padrão, qualquer usuário que possa obter acesso físico a um sistema terá controle total desse sistema após a inicialização no modo single-user. Se o console do sistema for alterado para insecure em /etc/ttys, o sistema solicitará primeiro a senha do root antes de iniciar o modo single-user. Isso adiciona uma medida de segurança ao remover a capacidade de redefinir a senha do root quando ela é desconhecida. Configurando um Console Inseguro em <filename>/etc/ttys</filename> # name getty type status comments # # If console is marked "insecure", then init will ask for the root password # when going to single-user mode. console none unknown off insecure Um console inseguro significa que a segurança física para o console é considerada insegura, portanto, apenas alguém que conheça a senha do root pode usar o modo single-user. Modo Multi-User multi-user mode Se o init encontrar os sistemas de arquivos em ordem, ou quando o usuário tiver concluído seus comandos no modo de usuário único e tiver digitado exit para deixar o modo single-user, o sistema entra no modo multi-user, no qual inicia a configuração de recursos do sistema. rc files O sistema de configuração de recursos lê os padrões de configuração do /etc/defaults/rc.conf e detalhes específicos do sistema a partir do /etc/rc.conf. Em seguida, ele monta os sistemas de arquivos do sistema listados em /etc/fstab. Ele inicia serviços de rede, daemons diversos do sistema e, em seguida, os scripts de inicialização dos pacotes instalados localmente. Para saber mais sobre o sistema de configuração de recursos, consulte rc8 e examine os scripts localizados em /etc/rc.d.
Configurando telas iniciais de inicialização Joseph J. Barbish Contribuído por Normalmente, quando um sistema FreeBSD inicializa, ele exibe seu progresso com uma série de mensagens no console. Uma tela inicial de inicialização cria uma tela de inicialização alternativa que oculta todo o probe de inicialização e as mensagens de inicialização de serviços. Algumas mensagens do boot loader, incluindo o menu de opções de inicialização e um prompt de contagem regressiva de espera, são exibidas no momento da inicialização, mesmo quando a tela inicial está ativada. A exibição da tela inicial pode ser desativada pressionando qualquer tecla do teclado durante o processo de inicialização. Existem dois ambientes básicos disponíveis no FreeBSD. O primeiro é o ambiente padrão de linha de comando do console virtual legado. Depois que o sistema conclui a inicialização, é exibido um prompt de login do console. O segundo ambiente é um ambiente gráfico configurado. Consulte para obter maiores informações sobre como instalar e configurar um gerenciador gráfico de tela e um gerenciador gráfico de login. Depois que o sistema inicializa, a tela inicial é definida como proteção de tela. Após um período sem uso, a tela inicial será exibida e passará por etapas de mudança de intensidade da imagem, de brilhante a muito escuro e vice-versa. A configuração do protetor de tela inicial pode ser sobrescrita, adicionando-se uma linha saver= ao /etc/rc.conf. Vários protetores de tela embutidos estão disponíveis e descritos em splash4. A opção saver= aplica-se apenas aos consoles virtuais e não tem efeito nos gerenciadores gráficos de telas. Ao instalar o pacote ou port sysutils/bsd-splash-changer, uma imagem inicial aleatória de uma coleção será exibida na inicialização. A função tela inicial suporta 256 cores nos formatos bitmap (.bmp), ZSoft PCX (.pcx), ou TheDraw (.bin). A imagem .bmp, .pcx, ou .bin tem que ser colocada na partição root, em /boot por exemplo. Os arquivos de imagens iniciais tem que ter a resolução de 320 por 200 pixels ou menos para funcionarem em adaptadores VGA padrão. Para a tela inicial padrão de 256 cores e 320 por 200 pixels ou menos, adicione as seguintes linhas ao /boot/loader.conf. Substitua splash.bmp com o nome do arquivo bitmap a ser utilizado: splash_bmp_load="YES" bitmap_load="YES" bitmap_name="/boot/splash.bmp" Para usar um arquivo PCX em vez de um arquivo bitmap: splash_pcx_load="YES" bitmap_load="YES" bitmap_name="/boot/splash.pcx" Em vez disso, use ASCII art no formato https://en.wikipedia.org/wiki/TheDraw: splash_txt="YES" bitmap_load="YES" bitmap_name="/boot/splash.bin" Outras opções interessantes do arquivo loader.conf incluem: beastie_disable="YES" Isso impedirá que o menu de opções de inicialização seja exibido, mas o prompt de contagem regressiva da espera programada ainda estará presente. Mesmo com a exibição do menu de opções de inicialização desabilitada, entrar com uma seleção de opção no prompt de contagem decrescente de tempo programado ativará a opção de inicialização correspondente. loader_logo="beastie" Isso substituirá as palavras padrão FreeBSD, que são exibidas à direita do menu de opções de inicialização, com o logotipo colorido do beastie. Para maiores informações, consulte splash4, loader.conf5, and vga4. Sugestões de dispositivos Tom Rhodes Contribuído por device.hints Durante o começo da inicialização do sistema, o boot loader8 lê o device.hints5. Este arquivo armazena informações de inicialização do kernel conhecidas como variáveis, algumas vezes referenciadas como sugestão de devices. Estas sugestões de devices são usados pelos drivers de dispositivo para configuração do dispositivo. As sugestões de dispositivos também são especificadas no estágio 3 do prompt do boot loader, conforme demonstrado em . As variáveis podem ser adicionadas usando set, removidas com unset e visualizadas show. Variáveis configuradas no arquivo /boot/device.hints também podem ser sobrescritas. As sugestões de dispositivos inseridas no boot loader não são permanentes e não serão aplicadas na próxima reinicialização. Uma vez que o sistema é inicializado, kenv1 pode ser usado para despejar todas as variáveis. A sintaxe para o arquivo /boot/device.hints é uma variável por linha, usando o hash # como marcadores de comentário. As linhas são construídas da seguinte forma: hint.driver.unit.keyword="value" A sintaxe para o estágio 3 do boot loader é: set hint.driver.unit.keyword=value onde driver é o nome do driver de dispositivo, unit é o número da unidade de driver do dispositivo, e keyword é a palavra-chave sugerida. A palavra-chave pode consistir das seguintes opções: at: especifica o barramento ao qual o dispositivo está conectado. port: especifica o endereço inicial de I/O a ser usado. irq: especifica o número da requisição de interrupção a ser usada. drq: especifica o número do canal DMA. maddr: especifica o endereço de memória física ocupado pelo dispositivo. flags: define vários bits de flags para o dispositivo. disabled: se definido como 1, o dispositivo é desativado. Como os drivers de dispositivo podem aceitar ou exigir mais sugestões não listadas aqui, é recomendável exibir uma página de manual do driver. Para obter mais informações, consulte device.hints5, kenv1, loader.conf5, e loader8. Sequência de Desligamento shutdown8 Após desligamento controlado usando shutdown8, o init8 tentará executar o script /etc/rc.shutdown e, em seguida, enviará a todos os processos o sinal TERM e, subsequentemente, o sinal KILL para qualquer um que não termine em tempo hábil. Para desligar uma máquina FreeBSD em arquiteturas e sistemas que suportam gerenciamento de energia, use o shutdown -p now para desligar a energia imediatamente. Para reinicializar um sistema FreeBSD, use o shutdown -r now. É preciso ser root ou um membro de operator para executar shutdown8. Também é possível usar halt8 e reboot8. Consulte as páginas de manual e o shutdown8 para obter mais informações. Modifique a associação ao grupo referindo-se a . O gerenciamento de energia requer que o acpi4 seja carregado como um módulo ou estaticamente compilado em um kernel personalizado.
Segurança Tom Rhodes Reescrito por Segurança Sinopse A segurança, seja física ou virtual, é um tópico tão amplo que todo um setor evoluiu em torno dele. Centenas de práticas padrão foram criadas sobre como proteger sistemas e redes e, como usuário do FreeBSD, é essencial entender como se proteger contra ataques e intrusos. Neste capítulo, vários fundamentos e técnicas serão discutidos. O sistema FreeBSD vem com múltiplas camadas de segurança, e muitos outros utilitários de terceiros podem ser adicionados para aumentar a segurança. Depois de ler este capítulo, você saberá: Conceitos básicos de segurança do sistema FreeBSD. Os vários mecanismos de criptografia disponíveis no FreeBSD. Como configurar a autenticação de senha única. Como configurar o TCP Wrapper para uso com o inetd8. Como configurar o Kerberos no FreeBSD. Como configurar o IPsec e criar uma VPN. Como configurar e usar o OpenSSH no FreeBSD. Como usar ACLs para o sistema de arquivos . Como usar o pkg para auditar pacotes de software de terceiros instalados a partir da Coleção de Ports. Como utilizar os alertas de segurança do FreeBSD. O que é Auditoria de Processos e como ativá-la no FreeBSD. Como controlar os recursos do usuário usando classes de login ou o banco de dados de limites de recursos. Antes de ler este capítulo, você deve: Entender os conceitos básicos do FreeBSD e de Internet. Tópicos de segurança adicionais são abordados em outras partes deste Manual. Por exemplo, o Controle de Acesso Obrigatório é discutido em e os firewalls da Internet são discutidos em . Introdução Segurança é responsabilidade de todos. Um ponto de entrada fraco em qualquer sistema pode permitir que intrusos obtenham acesso a informações críticas e causem estragos em toda a rede. Um dos princípios centrais da segurança da informação é a tríade CIA, que significa Confidencialidade, Integridade e Disponibilidade dos sistemas de informação. A tríade CIA é um conceito básico de segurança de computadores, pois os clientes e usuários esperam que seus dados sejam protegidos. Por exemplo, um cliente espera que as informações do cartão de crédito sejam armazenadas com segurança (confidencialidade), que os pedidos não sejam alterados nos bastidores (integridade) e que tenham acesso às informações do pedido em todos os momentos (disponibilidade). Para fornecer CIA, os profissionais de segurança aplicam uma estratégia de defesa em profundidade. A ideia de defesa em profundidade é adicionar várias camadas de segurança para evitar que uma falha em uma única camada e faça com que todo o sistema de segurança entre em colapso. Por exemplo, um administrador do sistema não pode simplesmente ativar um firewall e considerar a rede ou o sistema seguro. É preciso também auditar contas, verificar a integridade dos binários e garantir que ferramentas maliciosas não estejam instaladas. Para implementar uma estratégia de segurança eficaz, é preciso entender as ameaças e como se defender delas. O que é uma ameaça no que se refere à segurança do computador? As ameaças não se limitam a invasores remotos que tentam acessar um sistema sem permissão de um local remoto. As ameaças também incluem funcionários, softwares mal-intencionados, dispositivos de rede não autorizados, desastres naturais, vulnerabilidades de segurança e até corporações concorrentes. Sistemas e redes podem ser acessados sem permissão, às vezes por acidente, ou por atacantes remotos e, em alguns casos, por meio de espionagem corporativa ou ex-funcionários. Como usuário, é importante se preparar e admitir quando um erro levou a uma violação de segurança e relatar possíveis problemas à equipe de segurança. Como administrador, é importante conhecer as ameaças e estar preparado para mitigá-las. Ao aplicar a segurança aos sistemas, recomenda-se começar protegendo as contas básicas e a configuração do sistema e, em seguida, proteger a camada de rede de modo a aderir à política do sistema e aos procedimentos de segurança da organização. Muitas organizações já possuem uma política de segurança que abrange a configuração de dispositivos de tecnologia. A política deve incluir a configuração de segurança de estações de trabalho, desktops, dispositivos móveis, telefones, servidores de produção e servidores de desenvolvimento. Em muitos casos, procedimentos operacionais padrão (SOPs) já existem. Em caso de dúvida, pergunte à equipe de segurança. O restante desta introdução descreve como algumas dessas configurações básicas de segurança são executadas em um sistema FreeBSD. O restante deste capítulo descreve algumas ferramentas específicas que podem ser usadas ao implementar uma política de segurança em um sistema FreeBSD. Prevenindo Logins Ao garantir a segurança de um sistema, um bom ponto de partida é uma auditoria de contas. Assegure-se de que o root tenha uma senha forte e que essa senha não seja compartilhada. Desabilite todas as contas que não precisam de acesso de para logar. Para negar acesso de login a contas, existem dois métodos. O primeiro é bloquear a conta. Este exemplo bloqueia a conta toor: # pw lock toor O segundo método é impedir o acesso ao login alterando o shell para /usr/sbin/nologin. Apenas o superusuário pode alterar o shell para outros usuários: # chsh -s /usr/sbin/nologin toor O shell /usr/sbin/nologin impede que o sistema atribua um shell ao usuário quando ele tenta efetuar login. Escalonamento de Contas Permitido Em alguns casos, a administração do sistema precisa ser compartilhada com outros usuários. O FreeBSD tem dois métodos para lidar com isso. O primeiro, que não é recomendado, é uma senha de root compartilhada usada por membros do grupo wheel. Com esse método, um usuário digita su e insere a senha para wheel sempre que o acesso do superusuário for necessário. O usuário deve então digitar exit para deixar o acesso privilegiado após terminar os comandos que requereram acesso administrativo. Para adicionar um usuário a este grupo, edite /etc/group e adicione o usuário ao final da entrada wheel. O usuário deve ser separado por um caractere vírgula sem espaço. O segundo e recomendado método para permitir o escalonamento de privilégios é instalar o pacote ou port security/sudo. Este software fornece auditoria adicional, controle de usuário mais refinado e pode ser configurado para bloquear os usuários para que executem apenas os comandos privilegiados especificados. Após a instalação, use o visudo para editar o /usr/local/etc/sudoers. Este exemplo cria um novo grupo webadmin, adiciona a conta trhodes a esse grupo e configura esse acesso de grupo para reiniciar o apache24: # pw groupadd webadmin -M trhodes -g 6000 # visudo %webadmin ALL=(ALL) /usr/sbin/service apache24 * Hashes de Senhas As senhas são um mal necessário da tecnologia. Quando elas devem ser usadas, elas devem ser complexas e um poderoso mecanismo de hash deve ser usado para criptografar a versão armazenada no banco de dados de senhas. O FreeBSD suporta os algoritmos de DES, MD5, SHA256, SHA512 e Blowfish na sua biblioteca crypt(). O padrão de SHA512 não deve ser alterado para um algoritmo hash menos seguro, mas pode ser alterado para o algoritmo Blowfish mais seguro. O Blowfish não faz parte do AES e não é considerado compatível com nenhum Federal Information Processing Standard (FIPS). Seu uso pode não ser permitido em alguns ambientes. Para determinar qual algoritmo de hash é usado para criptografar a senha de um usuário, o superusuário pode visualizar o hash do usuário no banco de dados de senhas do FreeBSD. Cada hash começa com um símbolo que indica o tipo de mecanismo de hash usado para criptografar a senha. Se DES for usado, não haverá símbolo de início. Para MD5, o símbolo é $. Para SHA256 e SHA512, o símbolo é $6$. Para o Blowfish, o símbolo é $2a$. Neste exemplo, a senha para dru é criptografada usando o algoritmo SHA512 padrão quando o hash começa com $6$. Observe que o hash criptografado, não a senha em si, é armazenado no banco de dados de senhas: # grep dru /etc/master.passwd dru:$6$pzIjSvCAn.PBYQBA$PXpSeWPx3g5kscj3IMiM7tUEUSPmGexxta.8Lt9TGSi2lNQqYGKszsBPuGME0:1001:1001::0:0:dru:/usr/home/dru:/bin/csh O mecanismo de hash é definido na classe de login do usuário. Para este exemplo, o usuário está na classe de login default e o algoritmo de hash é definido com esta linha em /etc/login.conf: :passwd_format=sha512:\ Para alterar o algoritmo para Blowfish, modifique a linha para ficar assim: :passwd_format=blf:\ Em seguida, execute cap_mkdb /etc/login.conf conforme descrito em . Observe que essa alteração não afetará os hashes de senha existentes. Isso significa que todas as senhas devem ser refeitas pedindo aos usuários que executem passwd para alterar sua senha. Para logins remotos, a autenticação de dois fatores deve ser usada. Um exemplo de autenticação de dois fatores é algo que você tem, como uma chave, e algo que você conhece, como a senha para essa chave. Como o OpenSSH é parte do sistema básico do FreeBSD, todos os logins de rede devem ser sobre uma conexão criptografada e usar autenticação baseada em chave em vez de senhas. Para mais informações, consulte . Os usuários do Kerberos podem precisar fazer alterações adicionais para implementar o OpenSSH em sua rede. Essas alterações são descritas em . Aplicação de Política de Senha Aplicar uma política de senha forte para contas locais é um aspecto fundamental da segurança do sistema. No FreeBSD, o tamanho da senha, a força da senha e a complexidade da senha podem ser implementados usando os Módulos de Autenticação Conectáveis (PAM). Esta seção demonstra como configurar o tamanho mínimo e máximo da senha e a imposição de caracteres mistos usando o módulo pam_passwdqc.so. Este módulo é aplicado quando um usuário altera sua senha. Para configurar este módulo, torne-se o superusuário e remova o comentário da linha contendo pam_passwdqc.so em /etc/pam.d/passwd. Em seguida, edite essa linha para corresponder à política de senha: password requisite pam_passwdqc.so min=disabled,disabled,disabled,12,10 similar=deny retry=3 enforce=users Este exemplo define vários requisitos para novas senhas. A configuração min controla o tamanho mínimo da senha. Ele tem cinco valores porque este módulo define cinco tipos diferentes de senhas com base em sua complexidade. Complexidade é definida pelo tipo de caracteres que devem existir em uma senha, como letras, números, símbolos e maiúsculas e minúsculas. Os tipos de senhas são descritos em pam_passwdqc8. Neste exemplo, os três primeiros tipos de senha são desativados, o que significa que as senhas que atendem a esses requisitos de complexidade não serão aceitas, independentemente da sua duração. O 12 define uma política de senha mínima de pelo menos doze caracteres, se a senha também contiver caracteres com três tipos de complexidade. O 10 define a política de senha para também permitir senhas de pelo menos dez caracteres, se a senha contiver caracteres com quatro tipos de complexidade. A configuração similar nega senhas semelhantes à senha anterior do usuário. A configuração retry fornece ao usuário três oportunidades para inserir uma nova senha. Depois que este arquivo for salvo, um usuário que alterar sua senha verá uma mensagem semelhante a seguinte: % passwd Changing local password for trhodes Old Password: You can now choose the new password. A valid password should be a mix of upper and lower case letters, digits and other characters. You can use a 12 character long password with characters from at least 3 of these 4 classes, or a 10 character long password containing characters from all the classes. Characters that form a common pattern are discarded by the check. Alternatively, if no one else can see your terminal now, you can pick this as your password: "trait-useful&knob". Enter new password: Se uma senha que não corresponde à política for inserida, ela será rejeitada com um aviso e o usuário terá a oportunidade de tentar novamente, até o número configurado de novas tentativas. A maioria das políticas de senha exige que as senhas expirem depois de tantos dias. Para definir um tempo de expiração da senha no FreeBSD, defina para a classe de login do usuário em /etc/login.conf. A classe de login default contém um exemplo: # :passwordtime=90d:\ Portanto, para definir uma expiração de 90 dias para esta classe de login, remova o símbolo de comentário (#), salve a edição e execute o cap_mkdb /etc/login.conf. Para definir a expiração em usuários individuais, passe uma data de expiração ou o número de dias para expirar e um nome de usuário para o comando pw: # pw usermod -p 30-apr-2015 -n trhodes Como visto aqui, uma data de expiração é definida na forma de dia, mês e ano. Para obter maiores informações, consulte pw8. Detectando Rootkits Um rootkit é qualquer software não autorizado que tente obter acesso como root a um sistema. Uma vez instalado, esse software mal-intencionado normalmente abrirá outro caminho de entrada para um invasor. Realisticamente, uma vez que um sistema foi comprometido por um rootkit e uma investigação foi realizada, o sistema deve ser reinstalado do zero. Existe um tremendo risco de que mesmo o engenheiro de sistemas ou segurança mais prudente perca algo que um invasor deixou para trás. Um rootkit faz uma coisa útil para administradores: uma vez detectado, é um sinal de que um comprometimento aconteceu em algum momento. Mas, esses tipos de aplicativos tendem a ser muito bem ocultos. Esta seção demonstra uma ferramenta que pode ser usada para detectar rootkits, security/rkhunter. Após a instalação deste pacote ou port, o sistema pode ser verificado usando o seguinte comando. Ele produzirá muitas informações e exigirá uma entrada manual da tecla ENTER: # rkhunter -c Depois que o processo for concluído, uma mensagem de status será impressa na tela. Esta mensagem incluirá a quantidade de arquivos verificados, arquivos suspeitos, possíveis rootkits e mais. Durante a verificação, alguns avisos de segurança genéricos podem ser produzidos sobre arquivos ocultos, a seleção do protocolo OpenSSH e versões vulneráveis conhecidas do software instalado. Estes podem ser tratados agora ou após uma análise mais detalhada ter sido realizada. Todo administrador deve saber o que está sendo executado nos sistemas pelos quais é responsável. Ferramentas de terceiros como o rkhunter e o sysutils/lsof e comandos nativos como o netstat e o ps, podem mostrar uma grande quantidade de informações sobre o sistema. Faça anotações sobre o que é normal, faça perguntas quando algo parecer fora do lugar e seja paranoico. Embora evitar um comprometimento seja ideal, detectar um comprometimento é imprescindível. Verificação Binária A verificação de arquivos e binários do sistema é importante porque fornece às equipes de administração e segurança do sistema informações sobre alterações no sistema. Uma aplicação de software que monitora o sistema para alterações é chamado de Sistema de Detecção de Intrusão (IDS). O FreeBSD fornece suporte nativo para um sistema de IDS básico. Embora os emails de segurança noturnos notifiquem o administrador sobre alterações, as informações são armazenadas localmente e há uma chance de que um usuário mal-intencionado modifique essas informações para ocultar suas alterações no sistema. Como tal, recomenda-se criar um conjunto separado de assinaturas binárias e armazená-las em um diretório de read-only, propriedade do root ou, de preferência, em um disco USB removível ou servidor rsync remoto. O utilitário mtree embutido pode ser usado para gerar uma especificação do conteúdo de um diretório. Um seed, ou uma constante numérica, é usada para gerar a especificação e é necessária para verificar se a especificação não foi alterada. Isso possibilita determinar se um arquivo ou binário foi modificado. Como o valor inicial do seed é desconhecido por um invasor, disfarçar ou impossibilitar a verificação dos valores de checksum dos arquivos será difícil ou impossível. O exemplo a seguir gera um conjunto de hashes SHA256, um para cada sistema binário no diretório /bin e salva esses valores em um arquivo oculto no diretório inicial do root, /root/.bin_chksum_mtree: # mtree -s 3483151339707503 -c -K cksum,sha256digest -p /bin > /root/.bin_chksum_mtree # mtree: /bin checksum: 3427012225 O 3483151339707503 representa o seed. Este valor deve ser lembrado, mas não compartilhado. Visualizar o arquivo /root/.bin_cksum_mtree deve produzir uma saída semelhante à seguinte: # user: root # machine: dreadnaught # tree: /bin # date: Mon Feb 3 10:19:53 2014 # . /set type=file uid=0 gid=0 mode=0555 nlink=1 flags=none . type=dir mode=0755 nlink=2 size=1024 \ time=1380277977.000000000 \133 nlink=2 size=11704 time=1380277977.000000000 \ cksum=484492447 \ sha256digest=6207490fbdb5ed1904441fbfa941279055c3e24d3a4049aeb45094596400662a cat size=12096 time=1380277975.000000000 cksum=3909216944 \ sha256digest=65ea347b9418760b247ab10244f47a7ca2a569c9836d77f074e7a306900c1e69 chflags size=8168 time=1380277975.000000000 cksum=3949425175 \ sha256digest=c99eb6fc1c92cac335c08be004a0a5b4c24a0c0ef3712017b12c89a978b2dac3 chio size=18520 time=1380277975.000000000 cksum=2208263309 \ sha256digest=ddf7c8cb92a58750a675328345560d8cc7fe14fb3ccd3690c34954cbe69fc964 chmod size=8640 time=1380277975.000000000 cksum=2214429708 \ sha256digest=a435972263bf814ad8df082c0752aa2a7bdd8b74ff01431ccbd52ed1e490bbe7 O nome do host da máquina, a data e a hora em que a especificação foi criada e o nome do usuário que criou a especificação são incluídos neste relatório. Há um checksum, tamanho, hora e um digest SHA256 para cada binário no diretório. Para verificar se as assinaturas binárias não foram alteradas, compare o conteúdo atual do diretório com a especificação gerada anteriormente e salve os resultados em um arquivo. Este comando requer o seed que foi usado para gerar a especificação original: # mtree -s 3483151339707503 -p /bin < /root/.bin_chksum_mtree >> /root/.bin_chksum_output # mtree: /bin checksum: 3427012225 Isso deve produzir o mesmo checksum para /bin que foi produzido quando a especificação foi criada. Se nenhuma alteração tiver ocorrido nos binários nesse diretório, o arquivo de saída /root/.bin_chksum_output estará vazio. Para simular uma alteração, altere a data no arquivo /bin/cat usando o touch e execute o comando de verificação novamente: # touch /bin/cat # mtree -s 3483151339707503 -p /bin < /root/.bin_chksum_mtree >> /root/.bin_chksum_output # more /root/.bin_chksum_output cat changed modification time expected Fri Sep 27 06:32:55 2013 found Mon Feb 3 10:28:43 2014 Recomenda-se criar especificações para os diretórios que contêm binários e arquivos de configuração, bem como quaisquer diretórios que contenham dados sensíveis. Normalmente, as especificações são criadas para /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /etc e /usr/local/etc. Existem sistemas de IDS mais avançados, como o security/aide. Na maioria dos casos, o mtree fornece a funcionalidade que os administradores precisam. É importante manter o valor inicial e a saída do checksum oculta de usuários mal-intencionados. Maiores informações sobre o mtree podem ser encontradas em mtree8. Otimizando o Sistema para Segurança No FreeBSD, muitos recursos do sistema podem ser ajustados usando o sysctl. Alguns dos recursos de segurança que podem ser ajustados para impedir ataques de negação de serviço (DoS) serão abordados nesta seção. Mais informações sobre o uso do sysctl, incluindo como alterar temporariamente os valores e como tornar as alterações permanentes após o teste, podem ser encontradas em . Sempre que uma configuração é alterada com o sysctl, a chance de causar danos indesejados é aumentada, afetando a disponibilidade do sistema. Todas as alterações devem ser monitoradas e, se possível, testadas em um sistema de teste antes de serem usadas em um sistema de produção. Por padrão, o kernel do FreeBSD é inicializado com um nível de segurança -1 . Isso é chamado de modo inseguro porque as flags de arquivos imutáveis podem ser desativadas e todos os dispositivos podem ser lidos ou gravados. O nível de segurança permanecerá em -1, a menos que seja alterado através do sysctl ou por uma configuração nos scripts de inicialização. O nível de segurança pode ser aumentado durante a inicialização do sistema, definindo kern_securelevel_enable para YES no arquivo /etc/rc.conf, e o valor de kern_securelevel para o nível de segurança desejado. Veja security7 e init8 para maiores informações sobre essas configurações e os níveis de segurança disponíveis. Aumentar o valor da variável securelevel pode quebrar o Xorg e causar outros problemas. Esteja preparado para fazer alguma depuração. As configurações da variável net.inet.tcp.blackhole e net.inet.udp.blackhole podem ser usadas para descartar pacotes SYN de entrada em portas fechadas sem enviar uma resposta RST. O comportamento padrão é retornar um RST para mostrar que uma porta está fechada. A alteração do padrão fornece algum nível de proteção contra varreduras de portas, que são usadas para determinar quais aplicativos estão sendo executados em um sistema. Defina net.inet.tcp.blackhole para 2 e net.inet.udp.blackhole para 1. Consulte blackhole4 para obter maiores informações sobre essas configurações. As configurações das variáveis net.inet.icmp.drop_redirect e net.inet.ip.redirect ajudam a evitar ataques de redirecionamento. Um ataque de redirecionamento é um tipo de DoS que envia um grande número de pacotes ICMP tipo 5. Como esses pacotes não são necessários, configure net.inet.icmp.drop_redirect para 1 e configure net.inet.ip.redirect para 0. O roteamento de origem é um método para detectar e acessar endereços não roteáveis na rede interna. Isso deve ser desativado, pois endereços não roteáveis normalmente não são roteáveis de propósito. Para desativar este recurso, defina net.inet.ip.sourceroute e net.inet.ip.accept_sourceroute como 0. Quando uma máquina na rede precisa enviar mensagens para todos os hosts em uma sub-rede, uma mensagem de solicitação echo do ICMP é enviada para o endereço de broadcast. No entanto, não há motivo para um host externo executar essa ação. Para rejeitar todas as solicitações externas de transmissão, defina net.inet.icmp.bmcastecho como 0. Algumas configurações adicionais estão documentadas em security7. Senhas de Uso Unico one-time passwords security one-time passwords Por padrão, o FreeBSD inclui suporte para senhas de uso único em tudo (OPIE). O OPIE é projetado para evitar ataques repetidos, nos quais um atacante descobre a senha de um usuário e a usa para acessar um sistema. Como uma senha é usada apenas uma vez em OPIE, uma senha descoberta é de pouca utilidade para um invasor. O OPIE usa um hash seguro e um sistema de desafio/resposta para gerenciar senhas. A implementação do FreeBSD usa o hash MD5 por padrão. O OPIE usa três tipos diferentes de senhas. A primeira é a senha usual UNIX ou Kerberos. A segunda é a senha única que é gerada pelo opiekey. O terceiro tipo de senha é a senha secreta que é usada para gerar senhas de uso único. A senha secreta não tem nada a fazer com ela e deve ser diferente da senha UNIX. Existem duas outras partes de dados importantes para o OPIE. Uma é o seed ou chave, composta por duas letras e cinco dígitos. A outra é a contagem de iteração, um número entre 1 e 100. O OPIE cria a senha única concatenando o seed e a senha secreta, aplicando o hash MD5 quantas vezes forem especificadas pela contagem de iterações e transformando o resultado em seis palavras inglesas curtas que representam a senha de uso único. O sistema de autenticação controla a última senha descartável usada e o usuário é autenticado se o hash da senha fornecida pelo usuário for igual à senha anterior. Como um hash unidirecional é usado, é impossível gerar futuras senhas de uso único se uma senha usada com êxito for capturada. A contagem de iteração é diminuída após cada login bem-sucedido para manter o usuário e o programa de login em sincronia. Quando a contagem de iterações descer para 1, o OPIE deve ser reinicializado. Existem alguns programas envolvidos neste processo. Uma senha de uso único, ou uma lista consecutiva de senhas de uso único, é gerada passando uma contagem de iteração, um seed e uma senha secreta para o opiekey1. Além de inicializar o OPIE, o opiepasswd1 é usado para alterar senhas, contagens de iteração ou seeds. Os arquivos de credenciais relevantes em /etc/opiekeys são examinados pelo opieinfo1 o qual imprime a iteração atual e o seed do usuário solicitante atual. Esta seção descreve quatro tipos diferentes de operações. A primeira é como configurar senhas de uso único pela primeira vez em uma conexão segura. A segunda é como usar o opiepasswd em uma conexão insegura. A terceira é como efetuar login em uma conexão insegura. A quarta é como gerar um número de chaves que podem ser escritas ou impressas para uso em locais inseguros. Inicializando o <acronym>OPIE</acronym> Para inicializar o OPIE pela primeira vez, execute este comando a partir de um local seguro: % opiepasswd -c Adding unfurl: Only use this method from the console; NEVER from remote. If you are using telnet, xterm, or a dial-in, type ^C now or exit with no password. Then run opiepasswd without the -c parameter. Using MD5 to compute responses. Enter new secret pass phrase: Again new secret pass phrase: ID unfurl OTP key is 499 to4268 MOS MALL GOAT ARM AVID COED A opção define o modo de console que assume que o comando está sendo executado de um local seguro, como um computador sob o controle do usuário ou uma sessão SSH para um computador sob o controle do usuário. Quando solicitado, insira a senha secreta que será usada para gerar as chaves de login de uso único. Essa senha deve ser difícil de adivinhar e deve ser diferente da senha associada à conta de login do usuário. Deve ter entre 10 e 127 caracteres. Lembre-se desta senha. A linha ID lista o nome de login (unfurl), a contagem de iterações padrão (499) e o seed padrão (to4268). Ao efetuar o login, o sistema lembrará esses parâmetros e os exibirá, o que significa que eles não precisam ser memorizados. A última linha lista a senha única gerada que corresponde a esses parâmetros e a senha secreta. No próximo login, use essa senha única. Inicialização de uma Conexão Insegura Para inicializar ou alterar a senha secreta em um sistema inseguro, é necessária uma conexão segura em algum lugar onde o opiekey possa ser executado. Isso pode ser um prompt de shell em uma máquina confiável. Uma contagem de iteração é necessária, em que 100 é provavelmente um bom valor, e o seed pode ser especificado ou a gerado aleatoriamente. Na conexão insegura, a máquina sendo inicializada, use opiepasswd1: % opiepasswd Updating unfurl: You need the response from an OTP generator. Old secret pass phrase: otp-md5 498 to4268 ext Response: GAME GAG WELT OUT DOWN CHAT New secret pass phrase: otp-md5 499 to4269 Response: LINE PAP MILK NELL BUOY TROY ID mark OTP key is 499 gr4269 LINE PAP MILK NELL BUOY TROY Para aceitar o seed padrão, pressione Return. Antes de inserir uma senha de acesso, passe para a conexão segura e forneça os mesmos parâmetros: % opiekey 498 to4268 Using the MD5 algorithm to compute response. Reminder: Do not use opiekey from telnet or dial-in sessions. Enter secret pass phrase: GAME GAG WELT OUT DOWN CHAT Volte para a conexão insegura e copie a senha única gerada para o programa relevante. Gerando uma Senha de Uso Único Depois de inicializar o OPIE e efetuar login, um prompt como este será exibido: % telnet example.com Trying 10.0.0.1... Connected to example.com Escape character is '^]'. FreeBSD/i386 (example.com) (ttypa) login: <username> otp-md5 498 gr4269 ext Password: Os prompts do OPIE fornecem um recurso útil. Se o Enter for pressionado no prompt de senha, o prompt ativará o echo e exibirá o que foi digitado. Isso pode ser útil ao tentar digitar uma senha manualmente a partir de uma impressão. MS-DOS Windows MacOS Neste ponto, gere a senha de uso único para responder a este aviso de login. Isso deve ser feito em um sistema confiável em que seja seguro executar o opiekey1. Existem versões deste comando para Windows, Mac OS e FreeBSD. Esse comando precisa da contagem de iteração e do seed como opções da linha de comandos. Use recortar e colar no prompt de login da máquina que está sendo conectada. No sistema confiável: % opiekey 498 to4268 Using the MD5 algorithm to compute response. Reminder: Do not use opiekey from telnet or dial-in sessions. Enter secret pass phrase: GAME GAG WELT OUT DOWN CHAT Depois que a senha descartável for gerada, continue a logar. Gerando Múltiplas Senhas de Uso Único Às vezes, não há acesso a uma máquina confiável ou conexão segura. Neste caso, é possível usar o opiekey1 para gerar algumas de senhas de uso único antecipadamente. Por exemplo: % opiekey -n 5 30 zz99999 Using the MD5 algorithm to compute response. Reminder: Do not use opiekey from telnet or dial-in sessions. Enter secret pass phrase: <secret password> 26: JOAN BORE FOSS DES NAY QUIT 27: LATE BIAS SLAY FOLK MUCH TRIG 28: SALT TIN ANTI LOON NEAL USE 29: RIO ODIN GO BYE FURY TIC 30: GREW JIVE SAN GIRD BOIL PHI A opção solicita cinco chaves em seqüência e especifica qual deve ser o último número de iteração. Note que estes são impressos na ordem reversa de uso. O usuário realmente paranóico pode querer escrever os resultados manualmente; caso contrário, imprima a lista. Cada linha mostra a contagem de iteração e a senha de uso único. Risque as senhas conforme elas forem usadas. Restringindo o Uso de Senhas <trademark class="registered">UNIX</trademark> O OPIE pode restringir o uso de senhas UNIX com base no endereço IP de uma sessão de login. O arquivo relevante é o /etc/opieaccess, que está presente por padrão. Consulte opieaccess5 para obter maiores informações sobre esse arquivo e sobre quais considerações de segurança você deve estar ciente ao usá-lo. Aqui está um exemplo do arquivo opieaccess: permit 192.168.0.0 255.255.0.0 Esta linha permite que os usuários cujo endereço de origem IP (que é vulnerável a spoofing) corresponda ao valor e à máscara especificados, para usar as senhas UNIX a qualquer momento. Se nenhuma regra do arquivo opieaccess for correspondida, o padrão é negar logins que não sejam OPIE. TCP Wrapper TomRhodesEscrito por TCP Wrapper O TCP Wrapper é um sistema de controle de acesso baseado em host que estende as habilidades do . Ele pode ser configurado para fornecer suporte de registro, mensagens de retorno e restrições de conexão para os daemons do servidor sob o controle do inetd. Consulte tcpd8 para obter maiores informações sobre o TCP Wrapper e seus recursos. O TCP Wrapper não deve ser considerado um substituto para um firewall configurado adequadamente. Em vez disso, TCP Wrapper deve ser usado em conjunto com um firewall e outros aprimoramentos de segurança para fornecer outra camada de proteção na implementação de uma política de segurança. Configuração Inicial Para ativar o TCP Wrapper no FreeBSD, adicione as seguintes linhas ao arquivo /etc/rc.conf: inetd_enable="YES" inetd_flags="-Ww" Então, configure corretamente o arquivo /etc/hosts.allow. Ao contrário de outras implementações do TCP Wrapper, o uso do arquivo hosts.deny foi preterido no FreeBSD. Todas as opções de configuração devem ser colocadas no arquivo /etc/hosts.allow. Na configuração mais simples, as políticas de conexão do daemon são configuradas para permitir ou bloquear, dependendo das opções no arquivo /etc/hosts.allow. A configuração padrão no FreeBSD é permitir todas as conexões para os daemons iniciados com o inetd. A configuração básica geralmente assume a forma de daemon : address : action, onde daemon é o daemon que o inetd iniciou, address é um nome de host válido ou um endereço IP ou um endereço IPv6 entre colchetes ([]) e action é allow ou deny. O TCP Wrapper usa uma semântica de correspondência de primeira regra, o que significa que o arquivo de configuração é varrido desde o início para uma regra correspondente. Quando uma correspondência é encontrada, a regra é aplicada e o processo de pesquisa é interrompido. Por exemplo, para permitir conexões POP3 através do daemon mail/qpopper, as seguintes linhas devem ser anexadas ao arquivo hosts.allow: # This line is required for POP3 connections: qpopper : ALL : allow Sempre que este arquivo for editado, reinicie o inetd: # service inetd restart Configuração Avançada O TCP Wrapper fornece opções avançadas para permitir mais controle sobre o modo como as conexões são tratadas. Em alguns casos, pode ser apropriado retornar um comentário para determinados hosts ou conexões de daemon. Em outros casos, uma entrada de log deve ser registrada ou um email enviado ao administrador. Outras situações podem exigir o uso de um serviço apenas para conexões locais. Isso tudo é possível através do uso de opções de configuração conhecidas como wildcards, caracteres de expansão e execução de comandos externos. Suponha que uma situação ocorra onde uma conexão deva ser negada, mas uma razão deve ser enviada ao host que tentou estabelecer essa conexão. Essa ação é possível com a opção . Quando uma tentativa de conexão é feita, o executa um comando ou script shell. Existe um exemplo no arquivo hosts.allow: # The rest of the daemons are protected. ALL : ALL \ : severity auth.info \ : twist /bin/echo "You are not welcome to use %d from %h." Neste exemplo, a mensagem You are not allowed to use daemon name from hostname. será retornada para qualquer daemon não configurado no hosts.allow . Isso é útil para enviar uma resposta de volta ao inicializador de conexão logo após a conexão estabelecida ser descartada. Qualquer mensagem a ser retornada deve ser delimitada por caracteres de aspas duplas ("). Pode ser possível iniciar um ataque de negação de serviço no servidor se um invasor inunda esses daemons com solicitações de conexão. Outra possibilidade é usar a opção . Como a opção , a opção implicitamente nega a conexão e pode ser usado para executar comandos ou scripts externos do shell. Ao contrário da , a não enviará uma resposta ao host que estabeleceu a conexão. Por exemplo, considere a seguinte configuração: # We do not allow connections from example.com: ALL : .example.com \ : spawn (/bin/echo %a from %h attempted to access %d >> \ /var/log/connections.log) \ : deny Isso negará todas as tentativas de conexão de *.example.com e registrará o nome do host, endereço IP e o daemon ao qual o acesso foi tentado no arquivo /var/log/connections.log. Este exemplo usa os caracteres de substituição %a e %h. Consulte hosts_access5 para a lista completa. Para corresponder a cada instância de um daemon, domínio ou endereço IP, use ALL. Outro wildcard é o PARANOID, que pode ser usado para corresponder a qualquer host que forneça um endereço IP que possa ser forjado, porque o endereço IP difere do nome resolvido para o host. Neste exemplo, todas as solicitações de conexão para o Sendmail que possuem um endereço IP que varia de seu nome de host serão negadas: # Block possibly spoofed requests to sendmail: sendmail : PARANOID : deny Usar o wildcard PARANOID resultará em conexões negadas se o cliente ou servidor tiver uma configuração de DNS incorreta. Para saber mais sobre wildcards e sua funcionalidade associada, consulte hosts_access5. Ao adicionar novas linhas de configuração, certifique-se de que quaisquer entradas desnecessárias para esse daemon sejam comentadas no arquivo hosts.allow. <application>Kerberos</application> Tillman Hodgson Contribuído por Mark Murray Baseado em uma contribuição de O Kerberos é um protocolo de autenticação de rede que foi originalmente criado pelo Instituto de Tecnologia de Massachusetts (MIT) como uma maneira segura de fornecer autenticação em uma rede potencialmente hostil. O protocolo Kerberos usa criptografia robusta para que tanto um cliente quanto um servidor possam provar sua identidade sem enviar nenhum segredo não criptografado pela rede. O Kerberos pode ser descrito como um sistema proxy de verificação de identidade e como um sistema confiável de autenticação de terceiros. Depois que um usuário autentica com Kerberos, suas comunicações podem ser criptografadas para garantir privacidade e integridade dos dados. A única função do Kerberos é fornecer a autenticação segura de usuários e servidores na rede. Ele não fornece funções de autorização ou auditoria. Recomenda-se que o Kerberos seja usado com outros métodos de segurança que forneçam serviços de autorização e auditoria. A versão atual do protocolo é a versão 5, descrita na RFC 4120. Várias implementações gratuitas deste protocolo estão disponíveis, abrangendo uma ampla gama de sistemas operacionais. O MIT continua desenvolvendo o pacote Kerberos. É comumente usado no US como um produto de criptografia e, historicamente, está sujeito aos regulamentos de exportação dos US. No FreeBSD, o MIT Kerberos está disponível como o pacote ou port security/krb5. A implementação do Kerberos do Heimdal foi explicitamente desenvolvida fora do US para evitar regulamentações de exportação. A distribuição Kerberos do Heimdal está incluída na instalação base do FreeBSD, e outra distribuição com opções mais configuráveis está disponível como security/heimdal na Coleção de Ports. No Kerberos, os usuários e serviços são identificados como principals, que estão contidos em um agrupamento administrativo chamado de realm. Um usuário principal típico teria o formato user@REALM (os realms são tradicionalmente em caracteres maiúsculos). Esta seção fornece um guia sobre como configurar o Kerberos usando a distribuição Heimdal incluída no FreeBSD. Para fins de demonstração de uma instalação do Kerberos , os namespaces serão os seguintes: O domínio (zona) de domínio DNS será example.org. O realm Kerberos será EXAMPLE.ORG. Use nomes de domínio reais ao configurar o Kerberos, mesmo que ele seja executado internamente. Isso evita problemas de DNS e garante a interoperabilidade com outros realms do Kerberos. Configurando um <acronym>KDC</acronym> do Heimdal Kerberos5 Key Distribution Center O Centro de Distribuição de Chaves (KDC) é o serviço de autenticação centralizada que o Kerberos fornece, a a parte de terceiros confiáveis do sistema. É o computador que emite os tíquetes Kerberos, que são usados para autenticação dos clientes nos servidores. Como o KDC é considerado confiável por todos os outros computadores no realm do Kerberos, isso aumenta as preocupações com a segurança. O acesso direto ao KDC deve ser limitado. Embora a execução de um KDC exija poucos recursos de computação, uma máquina dedicada que atua apenas como um KDC é recomendada por motivos de segurança. Para começar a configurar um KDC, adicione estas linhas ao arquivo /etc/rc.conf: kdc_enable="YES" kadmind_enable="YES" Em seguida, edite o arquivo /etc/krb5.conf como a seguir: [libdefaults] default_realm = EXAMPLE.ORG [realms] EXAMPLE.ORG = { kdc = kerberos.example.org admin_server = kerberos.example.org } [domain_realm] .example.org = EXAMPLE.ORG Neste exemplo, o KDC usará o nome completo do host kerberos.example.org. O nome do host do KDC precisa ser resolvido no DNS. O Kerberos também pode usar o DNS para localizar os KDCs, em vez de uma seção [realms] no arquivo /etc/krb5.conf. Para grandes organizações que possuem seus próprios servidores DNS, o exemplo acima pode ser reduzido para: [libdefaults] default_realm = EXAMPLE.ORG [domain_realm] .example.org = EXAMPLE.ORG Com as seguintes linhas sendo incluídas no arquivo de zona do domínio example.org: _kerberos._udp IN SRV 01 00 88 kerberos.example.org. _kerberos._tcp IN SRV 01 00 88 kerberos.example.org. _kpasswd._udp IN SRV 01 00 464 kerberos.example.org. _kerberos-adm._tcp IN SRV 01 00 749 kerberos.example.org. _kerberos IN TXT EXAMPLE.ORG Para que os clientes possam encontrar os serviços Kerberos, eles devem ter um /etc/krb5.conf totalmente configurado ou um /etc/krb5.conf minimamente configurado e um servidor DNS corretamente configurado. Em seguida, crie o banco de dados do Kerberos que contém as chaves de todos os principals (usuários e hosts) criptografados com uma senha master. Não é necessário lembrar essa senha, pois ela será armazenada no arquivo /var/heimdal/m-key; Seria razoável usar uma senha aleatória de 45 caracteres para essa finalidade. Para criar a chave master, execute kstash e digite uma senha: # kstash Master key: xxxxxxxxxxxxxxxxxxxxxxx Verifying password - Master key: xxxxxxxxxxxxxxxxxxxxxxx Depois que a chave master é criada, o banco de dados deve ser inicializado. A ferramenta administrativa do Kerberos kadmin8 pode ser usada no KDC em um modo que opera diretamente no banco de dados, sem usar o serviço de rede kadmind8, como kadmin -l. Isso resolve o problema do ovo e da galinha de tentar se conectar ao banco de dados antes de criá-lo. No prompt do kadmin, use o init para criar o banco de dados inicial do realm: # kadmin -l kadmin> init EXAMPLE.ORG Realm max ticket life [unlimited]: Por fim, enquanto ainda estiver no kadmin, crie o primeiro principal usando add. Atenha-se às opções padrão para o principal por enquanto, pois elas podem ser alteradas posteriormente com modify. Digite ? no prompt para ver as opções disponíveis. kadmin> add tillman Max ticket life [unlimited]: Max renewable life [unlimited]: Attributes []: Password: xxxxxxxx Verifying password - Password: xxxxxxxx Em seguida, inicie os serviços do KDC executando service kdc start e service kadmind start. Embora não haja daemons kerberizados em execução neste momento, é possível confirmar que o KDC está funcionando obtendo um ticket para o principal que acabou de ser criado: % kinit tillman tillman@EXAMPLE.ORG's Password: Confirme se um ticket foi obtido com sucesso usando klist: % klist Credentials cache: FILE:/tmp/krb5cc_1001 Principal: tillman@EXAMPLE.ORG Issued Expires Principal Aug 27 15:37:58 2013 Aug 28 01:37:58 2013 krbtgt/EXAMPLE.ORG@EXAMPLE.ORG O ticket temporário pode ser destruído quando o teste terminar: % kdestroy Configurando um Servidor para Usar o <application>Kerberos</application> Kerberos5 enabling services A primeira etapa na configuração de um servidor para usar a autenticação Kerberos é garantir que ele tenha a configuração correta no arquivo /etc/krb5.conf. A versão do KDC pode ser usada como está, ou pode ser regenerada no novo sistema. Em seguida, crie o arquivo /etc/krb5.keytab no servidor. Esta é a parte principal de Kerberizar um serviço - ele corresponde a gerar uma chave secreta compartilhada entre o serviço e o KDC. O segredo é uma chave criptográfica, armazenada em um keytab. O keytab contém a chave do host do servidor, que permite que ele e o KDC verifiquem a identidade um do outro. Ele deve ser transmitido para o servidor de maneira segura, pois a segurança do servidor pode ser quebrada se a chave for tornada pública. Normalmente, o keytab é gerado na máquina confiável de um administrador usando o kadmin, e então transferido com segurança para o servidor, por exemplo, com scp1; Ele também pode ser criado diretamente no servidor, se isso for consistente com a política de segurança desejada. É muito importante que o keytab seja transmitido para o servidor de forma segura: se a chave for conhecida por outra parte, essa parte pode representar qualquer usuário para o servidor! Usar o kadmin diretamente no servidor é conveniente, porque a entrada para o principal do host no banco de dados do KDC também é criada usando o kadmin. Naturalmente, o kadmin é um serviço kerberizado; um tíquete Kerberos é necessário para autenticar-se no serviço de rede, mas para garantir que o usuário que está executando o kadmin esteja presente (e sua sessão não tenha sido invadida), o kadmin solicitará a senha para obter um novo ticket. O principal autenticando no serviço kadmin deve ter permissão para usar a interface kadmin, conforme especificado no arquivo kadmind.acl. Veja a seção intitulada Administração Remota em info heimdal para detalhes sobre a criação de listas de controle de acesso. Em vez de ativar o acesso remoto ao kadmin, o administrador pode conectar-se com segurança ao KDC através do console local ou por ssh e executar a administração localmente usando o kadmin -l. Depois de instalar o arquivo /etc/krb5.conf, use o add --random-key no kadmin. Isso adiciona o principal do host do servidor ao banco de dados, mas não extrai uma cópia da chave principal do host para um keytab. Para gerar o keytab, use ext para extrair a chave principal do host do servidor para seu próprio keytab: # kadmin kadmin> add --random-key host/myserver.example.org Max ticket life [unlimited]: Max renewable life [unlimited]: Principal expiration time [never]: Password expiration time [never]: Attributes []: kadmin> ext_keytab host/myserver.example.org kadmin> exit Note que o ext_keytab por padrão armazena a chave extraída no arquivo /etc/krb5.keytab. Isso é bom quando executado no servidor que está sendo kerberizado, mas o argumento --keytab path/to/file deve ser usado quando o keytab estiver sendo extraído em outro lugar: # kadmin kadmin> ext_keytab --keytab=/tmp/example.keytab host/myserver.example.org kadmin> exit O keytab pode então ser copiado com segurança para o servidor usando o scp1 ou uma mídia removível. Certifique-se de especificar um nome de keytab não padrão para evitar a inserção de chaves desnecessárias na keytab do sistema. Neste ponto, o servidor pode ler mensagens criptografadas do KDC usando sua chave compartilhada, armazenada no arquivo krb5.keytab. Agora ele está pronto para ativar os serviços de uso do Kerberos. Um dos serviços mais comuns é o sshd8, que suporta o Kerberos através do GSS-API. No arquivo /etc/ssh/sshd_config, adicione a linha: GSSAPIAuthentication yes Depois de fazer essa alteração, o sshd8 deve ser reiniciado para que a nova configuração tenha efeito: service sshd restart. Configurando um cliente para usar o <application>Kerberos</application> Kerberos5 configure clients Assim como foi no servidor, o cliente requer configuração no arquivo /etc/krb5.conf. Copie o arquivo no local (com segurança) ou insira-o novamente conforme necessário. Teste o cliente usando o kinit, klist e kdestroy a partir do cliente para obter, mostrar e excluir um ticket para um principal existente. Os aplicativos Kerberos também devem poder se conectar a servidores habilitados pelo Kerberos. Se isso não funcionar, mas a obtenção de um ticket ocorrer, provavelmente o problema está no servidor e não no cliente ou no KDC. No caso do ssh1 kerberizado, o GSS-API está desabilitado por padrão, portanto teste usando ssh -o GSSAPIAuthentication=yes hostname. Ao testar um aplicativo Kerberizado, tente usar um sniffer de pacote, como o tcpdump, para confirmar que nenhuma informação confidencial é enviada sem proteção. Várias aplicações Kerberos cliente estão disponíveis. Com o advento de uma ponte para que aplicações usando SASL para autenticação possam usar mecanismos GSS-API, grandes classes de aplicativos clientes podem usar o Kerberos para autenticação, de clientes Jabber a clientes IMAP. .k5login .k5users Os usuários em um realm geralmente têm seu principal Kerberos mapeado para uma conta de usuário local. Ocasionalmente, é necessário conceder acesso a uma conta de usuário local a alguém que não tenha um principal Kerberos correspondente. Por exemplo, tillman@EXAMPLE.ORG pode precisar de acesso à conta de usuário local webdevelopers. Outros diretores também podem precisar de acesso a essa conta local. Os arquivos .k5login e .k5users, colocados no diretório home de um usuário, podem ser usados para resolver este problema. Por exemplo, se o seguinte .k5login for colocado no diretório inicial de webdevelopers, os dois principals listados terão acesso a essa conta sem exigir uma senha compartilhada: tillman@example.org jdoe@example.org Consulte ksu1 para obter maiores informações sobre o .k5users. Diferenças com a implementação do <acronym>MIT</acronym> A principal diferença entre as implementações do MIT e a Heimdal é que o kadmin tem um conjunto de comandos diferente, mas equivalente, e usa um protocolo diferente. Se o KDC for MIT, a versão Heimdal do kadmin não poderá ser usada para administrar o KDC remotamente, e vice versa. Aplicações cliente também podem usar opções de linha de comando ligeiramente diferentes para realizar as mesmas tarefas. Seguir as instruções em http://web.mit.edu/Kerberos/www/ é recomendado. Cuidado com os problemas de caminho: o port MIT é instalado em /usr/local/ por padrão, e os aplicativos do sistema FreeBSD serão executados em vez das versões do MIT se o PATH listar os diretórios do sistema primeiro. Ao usar o MIT Kerberos como um KDC no FreeBSD, as seguintes edições também devem ser feitas no rc.conf: kerberos5_server="/usr/local/sbin/krb5kdc" kadmind5_server="/usr/local/sbin/kadmind" kerberos5_server_flags="" kerberos5_server_enable="YES" kadmind5_server_enable="YES" Dicas, Truques e Solução de Problemas do <application>Kerberos</application> Ao configurar e solucionar problemas do Kerberos, tenha em mente os seguintes pontos: Ao usar o Heimdal ou MIT Kerberos do ports, certifique-se de que o PATH liste as versões do port dos aplicativos clientes antes das versões do sistema. Se todos os computadores no realm não tiverem configurações de horário sincronizadas, a autenticação poderá falhar. descreve como sincronizar os relógios usando o NTP. Se o nome do host for alterado, o host/ principal deve ser alterado e o keytab atualizado. Isso também se aplica a entradas de keytab especiais como o HTTP/ principal usado para o www/mod_auth_kerb do Apache. Todos os hosts no realm devem ser resolvidos tanto de forma direta quanto reversa no DNS ou, no mínimo, no arquivo /etc/hosts. Os CNAMEs funcionarão, mas os registros A e PTR devem estar corretos e no lugar. A mensagem de erro para hosts não resolvidos não é intuitiva: Kerberos5 refuses authentication because Read req failed: Key table entry not found. Alguns sistemas operacionais que agem como clientes para o KDC não definem as permissões para o ksu para serem setuid root. Isso significa que o ksu não funciona. Este é um problema de permissões, não um erro do KDC. Com o MIT Kerberos, para permitir que um principal tenha uma duração de ticket maior que a duração padrão de dez horas, use modify_principal no kadmin8 para alterar o maxlife do principal em questão e do krbtgt principal. O principal pode então usar o kinit -l para solicitar um ticket com uma vida útil mais longa. Ao executar um sniffer de pacotes no KDC para auxiliar na solução de problemas enquanto executa kinit de uma estação de trabalho, o Ticket de Concessão de Tickets (TGT) é enviado imediatamente, mesmo antes da digitação da senha. Isso ocorre porque o servidor Kerberos transmite livremente um TGT para qualquer solicitação não autorizada. No entanto, cada TGT é criptografado em uma chave derivada da senha do usuário. Quando um usuário digita sua senha, ela não é enviada para o KDC, ela é usada para descriptografar o TGT que o kinit já obteve. Se o processo de descriptografia resultar em um tíquete válido com um registro de data e hora válido, o usuário terá credenciais do Kerberos válidas. Essas credenciais incluem uma chave de sessão para estabelecer comunicações seguras com o servidor Kerberos no futuro, bem como o TGT, que é criptografado com a chave do próprio servidor Kerberos. Essa segunda camada de criptografia permite que o servidor Kerberos verifique a autenticidade de cada TGT. Os principals do host podem ter uma vida útil maior do ticket. Se o usuário do principal tiver uma vida útil de uma semana, mas o host ao qual está conectado tiver uma vida útil de nove horas, o cache do usuário terá um host principal expirado e o cache do ticket não funcionará como esperado. Ao configurar o arquivo krb5.dict para evitar que senhas incorretas específicas sejam usadas, conforme descrito em kadmind8, lembre-que só se aplica a entidades que tenham uma política de senha atribuída a elas. O formato usado em krb5.dict é uma string por linha. Criar um link simbólico para /usr/share/dict/words pode ser útil. Atenuando as Limitações do <application>Kerberos</application> Kerberos5 limitations and shortcomings Uma vez que com o Kerberos a abordagem é tudo ou nada, cada serviço habilitado na rede deve ser modificado para funcionar com o Kerberos ou ser protegido contra ataques de rede. Isso impede que as credenciais do usuário sejam roubadas e reutilizadas. Um exemplo é quando o Kerberos está habilitado em todos os shells remotos, mas o servidor de email POP3 não-Kerberizado envia senhas em texto simples. O KDC é um ponto único de falha. Por design, o KDC deve ser tão seguro quanto seu banco de dados de senhas master. O KDC não deve ter absolutamente nenhum outro serviço sendo executado e deve estar fisicamente seguro. O perigo é alto porque o Kerberos armazena todas as senhas criptografadas com a mesma chave mestra que é armazenada como um arquivo no KDC. Uma chave mestra comprometida não é tão ruim quanto se pode temer. A chave mestra é usada apenas para criptografar o banco de dados do Kerberos e como um seed para o gerador de números aleatórios. Desde que o acesso ao KDC seja seguro, um invasor não poderá fazer muito com a chave mestra. Se o KDC não estiver disponível, os serviços de rede não poderão ser utilizados, pois a autenticação não poderá ser executada. Isso pode ser mitigado com um único KDC master e um ou mais slaves, e com a implementação cuidadosa da autenticação secundária ou de fallback usando PAM. O Kerberos permite que usuários, hosts e serviços se autentiquem entre si. Ele não possui um mecanismo para autenticar o KDC para os usuários, hosts ou serviços. Isso significa que um kinit infectado por um trojan pode registrar todos os nomes de usuário e senhas. As ferramentas de verificação de integridade do sistema de arquivos, como security/tripwire, podem mitigar isso. Recursos e Outras Informações Kerberos5 external resources A FAQ do Kerberos Criando um Sistema de Autenticação: um Diálogo em Quatro Cenas RFC 4120, O Serviço de Autenticação em Rede (V5) do Kerberos Página Web do Kerberos MIT Página Web do Kerberos Heimdal OpenSSL TomRhodesEscrito por security OpenSSL O OpenSSL é uma implementação de software livre dos protocolos SSL e TLS. Ele fornece uma camada de transporte de criptografia sobre a camada de comunicação normal, permitindo que ela seja entrelaçada com muitos aplicativos e serviços de rede. A versão do OpenSSL incluída no FreeBSD suporta os protocolos de segurança de redes Secure Sockets Layer 3.0 (SSLv3) e Transport Layer Security 1.0/1.1/1.2 (TLSv1/TLSv1.1/TLSv1.2) e pode ser usado como uma biblioteca de criptografia geral. No FreeBSD 12.0-RELEASE e posterior, OpenSSL também suporta Transport Layer Security 1.3 (TLSv1.3). O OpenSSL é muitas vezes usado para encriptar a autenticação de clientes de email e proteger transações baseadas na web como pagamentos com cartões de crédito. Alguns ports, como o www/apache24 e databases/postgresql11-server, incluem uma opção de compilação para inserir o OpenSSL. Se selecionado, o port vai adicionar suporte ao OpenSSL da base do sistema. Para ter o port compilado com o suporte do OpenSSL do port security/openssl, adicione o seguinte ao arquivo /etc/make.conf: DEFAULT_VERSIONS+= ssl=openssl Outro uso comum do OpenSSL é fornecer certificados para uso com aplicaçõe de software. Os certificados podem ser usados para verificar as credenciais de uma empresa ou indivíduo. Se um certificado não tiver sido assinado por uma Autoridade de Certificação externa ( CA ), como http://www.verisign.com, o aplicativo que usa o certificado produzirá um aviso. Há um custo associado à obtenção de um certificado assinado e o uso de um certificado assinado não é obrigatório, pois os certificados podem ser auto-assinados. No entanto, o u