LPI-Learning-Material-101-500-pt PDF
Document Details
Uploaded by AgileCornett
Tags
Summary
This document is learning material for Linux system administration, specifically covering topics like system architecture, installation, package management, and command-line tools. It includes lessons, exercises, and answers.
Full Transcript
Table of Contents TÓPICO 101: ARQUITETURA DE SISTEMA.................................................. 1 101.1 Identificar e editar configurações de hardware................................... 2 101.1 Lição 1....................................................................... 3 Intro...
Table of Contents TÓPICO 101: ARQUITETURA DE SISTEMA.................................................. 1 101.1 Identificar e editar configurações de hardware................................... 2 101.1 Lição 1....................................................................... 3 Introdução....................................................................... 3 Ativação do dispositivo.......................................................... 4 Inspeção de dispositivos no Linux................................................. 4 Arquivos de informação e de dispositivo.......................................... 11 Dispositivos de armazenamento................................................. 13 Exercícios Guiados............................................................... 14 Exercícios Exploratórios........................................................... 15 Resumo......................................................................... 16 Respostas aos Exercícios Guiados.................................................. 17 Respostas aos Exercícios Exploratórios.............................................. 18 101.2 Início (boot) do sistema........................................................ 19 101.2 Lição 1........................................................................ 21 Introdução........................................................................ 21 BIOS ou UEFI.................................................................... 22 O bootloader.................................................................... 23 Inicialização do sistema........................................................... 25 Inspeção da inicialização.......................................................... 26 Exercícios Guiados................................................................. 30 Exercícios Exploratórios............................................................. 31 Resumo........................................................................... 32 Respostas aos Exercícios Guiados.................................................... 33 Respostas aos Exercícios Exploratórios................................................ 34 101.3 Alternar runlevels/boot targets, desligar e reiniciar o sistema..................... 35 101.3 Lição 1...................................................................... 37 Introdução...................................................................... 37 SysVinit....................................................................... 38 systemd...................................................................... 41 Upstart....................................................................... 44 Desligar e reiniciar............................................................. 46 Exercícios Guiados............................................................... 48 Exercícios Exploratórios........................................................... 49 Resumo......................................................................... 50 Respostas aos Exercícios Guiados.................................................. 51 Respostas aos Exercícios Exploratórios.............................................. 52 TÓPICO 102: INSTALAÇÃO DO LINUX E ADMINISTRAÇÃO DE PACOTES...................... 53 102.1 Dimensionar partições de disco................................................. 54 102.1 Lição 1...................................................................... 55 Introdução...................................................................... 55 Pontos de montagem.......................................................... 56 Mantendo as coisas separadas.................................................. 57 Swap......................................................................... 59 LVM.......................................................................... 60 Exercícios Guiados............................................................... 62 Exercícios Exploratórios........................................................... 63 Resumo......................................................................... 64 Respostas aos Exercícios Guiados.................................................. 65 Respostas aos Exercícios Exploratórios.............................................. 66 102.2 Instalar o gerenciador de inicialização........................................... 67 102.2 Lição 1...................................................................... 68 Introdução...................................................................... 68 GRUB Legacy e GRUB 2......................................................... 69 Onde fica o gerenciador de inicialização?.......................................... 69 A partição /boot............................................................... 70 GRUB 2....................................................................... 72 GRUB Legacy.................................................................. 78 Exercícios Guiados............................................................... 82 Exercícios Exploratórios........................................................... 83 Resumo......................................................................... 84 Respostas aos Exercícios Guiados.................................................. 85 Respostas aos Exercícios Exploratórios.............................................. 86 102.3 Controle de bibliotecas compartilhadas......................................... 88 102.3 Lição 1...................................................................... 89 Introdução...................................................................... 89 O que são bibliotecas compartilhadas............................................ 89 Convenções de nomenclatura para arquivos-objeto compartilhados.................. 90 Configuração dos caminhos da biblioteca compartilhada............................ 91 Buscando pelas dependências de um executável específico......................... 94 Exercícios Guiados............................................................... 96 Exercícios Exploratórios........................................................... 97 Resumo......................................................................... 98 Respostas aos Exercícios Guiados................................................. 100 Respostas aos Exercícios Exploratórios............................................ 101 102.4 Utilização do sistema de pacotes Debian....................................... 102 102.4 Lição 1..................................................................... 103 Introdução..................................................................... 103 A ferramenta de pacotes do Debian (dpkg)....................................... 104 Ferramenta de pacotes avançada (apt)........................................... 108 Exercícios Guiados.............................................................. 118 Exercícios Exploratórios.......................................................... 119 Resumo....................................................................... 120 Respostas aos Exercícios Guiados................................................. 122 Respostas aos Exercícios Exploratórios............................................ 123 102.5 Utilização do sistema de pacotes RPM e YUM................................... 125 102.5 Lição 1..................................................................... 126 Introdução..................................................................... 126 O RPM Package Manager (rpm)................................................. 127 YellowDog Updater Modified (YUM)............................................. 132 DNF......................................................................... 137 Zypper...................................................................... 139 Exercícios Guiados.............................................................. 146 Exercícios Exploratórios.......................................................... 147 Resumo....................................................................... 148 Respostas aos Exercícios Guiados................................................. 149 Respostas aos Exercícios Exploratórios............................................ 150 102.6 Linux virtualizado............................................................ 151 102.6 Lição 1..................................................................... 152 Introdução..................................................................... 152 O que é virtualização?......................................................... 152 Tipos de máquina virtual....................................................... 153 Trabalhando com modelos de máquina virtual.................................... 161 Implementação de máquinas virtuais na nuvem.................................. 162 Contêiners..................................................................... 165 Exercícios Guiados.............................................................. 166 Exercícios Exploratórios.......................................................... 167 Resumo....................................................................... 168 Respostas aos Exercícios Guiados................................................. 169 Respostas aos Exercícios Exploratórios............................................ 170 TÓPICO 103: COMANDOS GNU E UNIX.................................................. 172 103.1 Trabalhar na linha de comando................................................ 173 103.1 Lição 1..................................................................... 175 Introdução..................................................................... 175 Obtendo informações sobre o sistema........................................... 175 Obtendo informações sobre comandos.......................................... 176 Usando o histórico de comandos............................................... 179 Exercícios Guiados.............................................................. 181 Exercícios Exploratórios.......................................................... 182 Resumo....................................................................... 183 Respostas aos Exercícios Guiados................................................. 184 Respostas aos Exercícios Exploratórios............................................ 185 103.1 Lição 2..................................................................... 186 Introdução..................................................................... 186 Encontrando suas variáveis de ambiente......................................... 186 Criando novas variáveis de ambiente............................................ 187 Removendo as variáveis de ambiente............................................ 188 Usando aspas para escapar dos caracteres especiais.............................. 189 Exercícios Guiados.............................................................. 191 Exercícios Exploratórios.......................................................... 192 Resumo....................................................................... 193 Respostas aos Exercícios Guiados................................................. 194 Respostas aos Exercícios Exploratórios............................................ 195 103.2 Processar fluxos de texto usando filtros........................................ 196 103.2 Lição 1..................................................................... 198 Introdução..................................................................... 198 Uma revisão rápida sobre redirecionamentos e pipes.............................. 198 Processando fluxos de texto.................................................... 201 Exercícios Guiados.............................................................. 213 Exercícios Exploratórios.......................................................... 215 Resumo....................................................................... 217 Respostas aos Exercícios Guiados................................................. 219 Respostas aos Exercícios Exploratórios............................................ 224 103.3 Gerenciamento básico de arquivos............................................. 230 103.3 Lição 1..................................................................... 232 Introdução..................................................................... 232 Manipulação de arquivos...................................................... 233 Criando e removendo diretórios................................................ 238 Manipulação recursiva de arquivos e diretórios................................... 240 Globbing de arquivos e caracteres curinga....................................... 242 Tipos de caracteres curinga.................................................... 243 Exercícios Guiados.............................................................. 247 Exercícios Exploratórios.......................................................... 249 Resumo....................................................................... 250 Respostas aos Exercícios Guiados................................................. 251 Respostas aos Exercícios Exploratórios............................................ 253 103.3 Lição 2..................................................................... 255 Introdução..................................................................... 255 Como encontrar arquivos...................................................... 255 Arquivos de pacote............................................................ 259 Exercícios Guiados.............................................................. 265 Exercícios Exploratórios.......................................................... 266 Resumo....................................................................... 267 Respostas aos Exercícios Guiados................................................. 268 Respostas aos Exercícios Exploratórios............................................ 269 103.4 Fluxos, pipes (canalização) e redirecionamentos de saída........................ 271 103.4 Lição 1..................................................................... 272 Introdução..................................................................... 272 Redirecionamentos........................................................... 273 Here Document e Here String.................................................. 276 Exercícios Guiados.............................................................. 278 Exercícios Exploratórios.......................................................... 279 Resumo....................................................................... 280 Respostas aos Exercícios Guiados................................................. 281 Respostas aos Exercícios Exploratórios............................................ 282 103.4 Lição 2..................................................................... 283 Introdução..................................................................... 283 Pipes........................................................................ 283 Substituição de comando...................................................... 285 Exercícios Guiados.............................................................. 288 Exercícios Exploratórios.......................................................... 289 Resumo....................................................................... 290 Respostas aos Exercícios Guiados................................................. 291 Respostas aos Exercícios Exploratórios............................................ 293 103.5 Criar, monitorar e finalizar processos.......................................... 294 103.5 Lição 1..................................................................... 296 Introdução..................................................................... 296 Controle de jobs.............................................................. 296 Monitoramento de processos.................................................. 301 Exercícios Guiados.............................................................. 313 Exercícios Exploratórios.......................................................... 315 Resumo....................................................................... 317 Respostas aos Exercícios Guiados................................................. 319 Respostas aos Exercícios Exploratórios............................................ 322 103.5 Lição 2..................................................................... 325 Introdução..................................................................... 325 Recursos dos multiplexadores de terminal....................................... 325 GNU Screen.................................................................. 326 tmux........................................................................ 333 Exercícios Guiados.............................................................. 342 Exercícios Exploratórios.......................................................... 345 Resumo....................................................................... 347 Respostas aos Exercícios Guiados................................................. 348 Respostas aos Exercícios Exploratórios............................................ 352 103.6 Modificar a prioridade de execução de um processo............................. 354 103.6 Lição 1..................................................................... 355 Introdução..................................................................... 355 O Agendador do Linux......................................................... 356 Como ler as prioridades....................................................... 357 Valor nice.................................................................... 358 Exercícios Guiados.............................................................. 360 Exercícios Exploratórios.......................................................... 362 Resumo....................................................................... 363 Respostas aos Exercícios Guiados................................................. 364 Respostas aos Exercícios Exploratórios............................................ 366 103.7 Procurar em arquivos de texto usando expressões regulares..................... 367 103.7 Lição 1..................................................................... 368 Introdução..................................................................... 368 Expressão de colchetes........................................................ 369 Quantificadores.............................................................. 371 Chaves...................................................................... 371 Alternâncias e agrupamentos.................................................. 372 Pesquisas com expressões regulares............................................ 372 Exercícios Guiados.............................................................. 374 Exercícios Exploratórios.......................................................... 375 Resumo....................................................................... 376 Respostas aos Exercícios Guiados................................................. 377 Respostas aos Exercícios Exploratórios............................................ 378 103.7 Lição 2..................................................................... 379 Introdução..................................................................... 379 O localizador de padrões: grep................................................. 379 O editor de fluxo: sed.......................................................... 383 Combinando grep e sed....................................................... 387 Exercícios Guiados.............................................................. 391 Exercícios Exploratórios.......................................................... 392 Resumo....................................................................... 394 Respostas aos Exercícios Guiados................................................. 395 Respostas aos Exercícios Exploratórios............................................ 396 103.8 Edição básica de arquivos com o vi............................................. 398 103.8 Lição 1..................................................................... 399 Introdução..................................................................... 399 Modo de inserção............................................................. 400 Modo normal................................................................. 400 Comandos de dois pontos..................................................... 403 Editores alternativos.......................................................... 404 Exercícios Guiados.............................................................. 406 Exercícios Exploratórios.......................................................... 407 Resumo....................................................................... 408 Respostas aos Exercícios Guiados................................................. 409 Respostas aos Exercícios Exploratórios............................................ 410 TÓPICO 104: DISPOSITIVOS, SISTEMAS DE ARQUIVOS LINUX E PADRÃO FHS............... 411 104.1 Criar partições e sistemas de arquivos.......................................... 412 104.1 Lição 1..................................................................... 413 Introdução..................................................................... 413 Entendendo MBR e GPT........................................................ 414 Criando sistemas de arquivos.................................................. 421 Gerenciando Partições com o GNU Parted....................................... 432 Criando partições de troca..................................................... 439 Exercícios Guiados.............................................................. 442 Exercícios Exploratórios.......................................................... 443 Resumo....................................................................... 445 Respostas aos Exercícios Guiados................................................. 446 Respostas aos Exercícios Exploratórios............................................ 447 104.2 Manutenção da integridade de sistemas de arquivos............................ 449 104.2 Lição 1..................................................................... 450 Introdução..................................................................... 450 Verificando o uso de disco..................................................... 451 Em busca de espaço livre...................................................... 453 Manutenção de sistemas de arquivos ext2, ext3 e ext4............................ 457 Exercícios Guiados.............................................................. 465 Exercícios Exploratórios.......................................................... 466 Resumo....................................................................... 467 Respostas aos Exercícios Guiados................................................. 468 Respostas aos Exercícios Exploratórios............................................ 470 104.3 Controle da montagem e desmontagem dos sistemas de arquivos................ 472 104.3 Lição 1..................................................................... 473 Introdução..................................................................... 473 Montando e desmontando sistemas de arquivos.................................. 473 Montagem de sistemas de arquivos na inicialização............................... 477 Usando UUIDs e rótulos....................................................... 479 Montando discos com Systemd................................................. 481 Exercícios Guiados.............................................................. 485 Exercícios Exploratórios.......................................................... 486 Resumo....................................................................... 487 Respostas aos Exercícios Guiados................................................. 488 Respostas aos Exercícios Exploratórios............................................ 490 104.5 Controlar permissões e propriedades de arquivos............................... 492 104.5 Lição 1..................................................................... 493 Introdução..................................................................... 493 Consulta de informações sobre arquivos e diretórios.............................. 493 E quanto aos diretórios?....................................................... 495 Exibindo arquivos ocultos...................................................... 495 Entendendo os tipos de arquivos............................................... 496 Entendendo as permissões..................................................... 497 Modificando as permissões de arquivos......................................... 499 Modificando o proprietário de um arquivo....................................... 502 Consultando os grupos........................................................ 503 Permissões padrão............................................................ 503 Permissões especiais.......................................................... 506 Exercícios Guiados.............................................................. 509 Exercícios Exploratórios.......................................................... 511 Resumo....................................................................... 512 Respostas aos Exercícios Guiados................................................. 513 Respostas aos Exercícios Exploratórios............................................ 516 104.6 Criar e alterar links simbólicos e hardlinks...................................... 519 104.6 Lição 1..................................................................... 520 Introdução..................................................................... 520 Compreendendo os links...................................................... 520 Exercícios Guiados.............................................................. 525 Exercícios Exploratórios.......................................................... 526 Resumo....................................................................... 529 Respostas aos Exercícios Guiados................................................. 530 Respostas aos Exercícios Exploratórios............................................ 531 104.7 Encontrar arquivos de sistema e conhecer sua localização correta................ 535 104.7 Lição 1..................................................................... 536 Introdução..................................................................... 536 O Filesystem Hierarchy Standard................................................ 536 Busca de arquivos............................................................ 539 Exercícios Guiados.............................................................. 548 Exercícios Exploratórios.......................................................... 549 Resumo....................................................................... 550 Respostas aos Exercícios Guiados................................................. 551 Respostas aos Exercícios Exploratórios............................................ 553 Imprint............................................................................ 555 LPIC-1 (101) (Version 5.0) | Tópico 101: Arquitetura de Sistema Version: 2024-11-28 | Licenciado sob CC BY-NC-ND 4.0. | learning.lpi.org | 1 LPIC-1 (101) (Version 5.0) | Tópico 101: Arquitetura de Sistema 101.1 Identificar e editar configurações de hardware Referência ao LPI objectivo LPIC-1 v5, Exam 101, Objective 101.1 Peso 2 Áreas chave de conhecimento Habilitar e desabilitar periféricos integrados. Diferenciar entre vários tipos de dispositivos de armazenamento. Determinar os recursos de hardware para os dispositivos. Ferramentas e utilitários para a listar várias informações de hardware (por exemplo, lsusb, lspci, etc…). Ferramentas e utilitários para manipular dispositivos USB. Compreensão conceitual de sysfs, udev e dbus. Segue uma lista parcial dos arquivos, termos e utilitários utilizados /sys/ /proc/ /dev/ modprobe lsmod lspci lsusb 2 | learning.lpi.org | Licenciado sob CC BY-NC-ND 4.0. | Version: 2024-11-28 LPIC-1 (101) (Version 5.0) | 101.1 Identificar e editar configurações de hardware 101.1 Lição 1 Certificação: LPIC-1 Versão: 5.0 Tópico: 101 Arquitetura do sistema Objetivo: 101.1 Determinar e definir configurações de hardware LIção: 1 de 1 Introdução Desde os primeiros anos da computação eletrônica, os fabricantes de computadores pessoais e empresariais vêm integrando uma série de peças de hardware em suas máquinas. Essas peças, por sua vez, devem ser suportadas pelo sistema operacional. Por isso, é preciso que existam padrões estabelecidos para os conjuntos de instruções e a comunicação dos dispositivos, semelhante à camada de abstração padronizada fornecida pelo sistema operacional a um aplicativo. Esses padrões facilitam a criação e a manutenção de um sistema operacional não vinculado a um modelo de hardware específico. No entanto, a complexidade do hardware subjacente integrado às vezes requer ajustes na maneira como os recursos devem ser expostos ao sistema operacional, para que ele possa ser instalado e funcionar corretamente. É possível realizar alguns desses ajustes mesmo sem um sistema operacional instalado. A maioria das máquinas oferece um utilitário de configuração que pode ser executado quando a máquina é ligada. Até meados dos anos 2000, o utilitário de configuração era implementado na BIOS (Basic Input/Output System), o padrão de firmware contendo as rotinas básicas de configuração para as placas-mãe x86. A partir do final da primeira década dos anos 2000, as máquinas baseadas na arquitetura x86 começaram a substituir a BIOS por uma nova implementação chamada UEFI Version: 2024-11-28 | Licenciado sob CC BY-NC-ND 4.0. | learning.lpi.org | 3 LPIC-1 (101) (Version 5.0) | Tópico 101: Arquitetura de Sistema (Unified Extensible Firmware Interface), que tem recursos mais sofisticados para identificação, teste, configuração e atualização de firmware. Apesar da mudança, não é incomum que se chame o utilitário de configuração de BIOS, já que ambas as implementações cumprem o mesmo objetivo básico. Trataremos em mais detalhes das diferenças entre a BIOS e a UEFI em uma lição NOTE posterior. Ativação do dispositivo O utilitário de configuração do sistema aparece quando pressionamos uma tecla específica ao ligar o computador. Essa tecla varia de fabricante para fabricante, mas geralmente é Del ou uma das teclas de função, como F2 ou F12. A combinação de teclas a ser usada é frequentemente exibida na tela inicial. No utilitário de configuração da BIOS, é possível ativar e desativar os periféricos integrados, ativar a proteção básica contra erros e alterar configurações de hardware como o IRQ (solicitação de interrupção) e o DMA (acesso direto à memória). Nas máquinas modernas, é raro que seja necessário alterar essas configurações, mas às vezes é preciso fazer ajustes para solucionar problemas específicos. Existem tecnologias de RAM, por exemplo, que são compatíveis com taxas de transferência de dados mais rápidas do que os valores padrão, e portanto é recomendável alterá-los para os valores especificados pelo fabricante. Algumas CPUs oferecem recursos que às vezes não são necessários para aquela instalação específica, podendo assim ser desativados. Isso reduz o consumo de energia e contribui para aumentar a proteção do sistema, já que os recursos da CPU que contenham bugs conhecidos também podem ser desativados. Se a máquina estiver equipada com vários dispositivos de armazenamento, é importante definir qual deles possui o carregador de inicialização correto e deve ser o primeiro na ordem de inicialização do dispositivo. O sistema operacional pode não carregar se o dispositivo incorreto aparecer primeiro na lista de verificações de inicialização da BIOS. Inspeção de dispositivos no Linux Uma vez que os dispositivos são corretamente identificados, cabe ao sistema operacional associar os componentes de software correspondentes exigidos por eles. Quando um recurso de hardware não está funcionando como esperado, é importante identificar onde exatamente está o problema. Quando uma peça de hardware não é detectada pelo sistema operacional, é mais provável que o defeito esteja na peça ou na porta à qual está conectada. Quando a peça é detectada, mas não funciona corretamente, pode haver um problema no lado do sistema operacional. Portanto, uma das primeiras etapas ao lidar com problemas relacionados a hardware é verificar se o sistema 4 | learning.lpi.org | Licenciado sob CC BY-NC-ND 4.0. | Version: 2024-11-28 LPIC-1 (101) (Version 5.0) | 101.1 Identificar e editar configurações de hardware operacional está detectando corretamente o dispositivo. Existem duas maneiras básicas de identificar recursos de hardware em um sistema Linux: usar comandos especializados ou consultar arquivos específicos em sistemas de arquivos especiais. Comandos para inspeção Os dois comandos essenciais para identificar dispositivos conectados em um sistema Linux são: lspci Mostra todos os dispositivos atualmente conectados ao barramento PCI (Peripheral Component Interconnect). Os dispositivos PCI podem ser um componente conectado à placa-mãe, como um controlador de disco, ou uma placa de expansão instalada em um slot PCI, como uma placa de vídeo externa. lsusb Lista os dispositivos USB (Universal Serial Bus) atualmente conectados à máquina. Embora existam dispositivos USB para praticamente qualquer finalidade imaginável, a interface USB é amplamente usada para conectar dispositivos de entrada — teclados, dispositivos apontadores — e mídias de armazenamento removíveis. A saída dos comandos lspci e lsusb consiste em uma lista de todos os dispositivos PCI e USB identificados pelo sistema operacional. No entanto, o dispositivo pode não estar totalmente operacional ainda, porque cada peça de hardware requer um componente de software para controlar o dispositivo correspondente. Esse componente de software é chamado de módulo do kernel e pode fazer parte do kernel oficial do Linux ou ser adicionado separadamente. Os módulos do kernel do Linux relacionados a dispositivos de hardware também são chamados de drivers, como em outros sistemas operacionais. Os drivers para Linux, no entanto, nem sempre são fornecidos pelo fabricante do dispositivo. Enquanto alguns fabricantes fornecem seus próprios drivers binários para serem instalados separadamente, muitos drivers são criados por desenvolvedores independentes. Historicamente, dispositivos que funcionam no Windows, por exemplo, podem não ter um módulo de kernel equivalente para Linux. Atualmente, os sistemas operacionais baseados em Linux têm um forte suporte de hardware e a maioria dos dispositivos funciona sem dar trabalho. Os comandos diretamente relacionados ao hardware geralmente requerem privilégios de root para serem executados, exibindo apenas informações limitadas quando executados por um usuário normal; portanto, pode ser necessário fazer login como root ou executar o comando com sudo. A seguinte saída do comando lspci, por exemplo, mostra alguns dispositivos identificados: $ lspci 01:00.0 VGA compatible controller: NVIDIA Corporation GM107 [GeForce GTX 750 Ti] (rev a2) Version: 2024-11-28 | Licenciado sob CC BY-NC-ND 4.0. | learning.lpi.org | 5 LPIC-1 (101) (Version 5.0) | Tópico 101: Arquitetura de Sistema 04:02.0 Network controller: Ralink corp. RT2561/RT61 802.11g PCI 04:04.0 Multimedia audio controller: VIA Technologies Inc. ICE1712 [Envy24] PCI Multi- Channel I/O Controller (rev 02) 04:0b.0 FireWire (IEEE 1394): LSI Corporation FW322/323 [TrueFire] 1394a Controller (rev 70) A saída desses comandos pode ter dezenas de linhas, de forma que o exemplo anterior e o seguinte incluem apenas as partes que nos interessam. Os números hexadecimais no início de cada linha são o endereço exclusivo do dispositivo PCI correspondente. O comando lspci mostra mais detalhes sobre um dispositivo específico se seu endereço for fornecido com a opção -s, acompanhada da opção -v: $ lspci -s 04:02.0 -v 04:02.0 Network controller: Ralink corp. RT2561/RT61 802.11g PCI Subsystem: Linksys WMP54G v4.1 Flags: bus master, slow devsel, latency 32, IRQ 21 Memory at e3100000 (32-bit, non-prefetchable) [size=32K] Capabilities: Power Management version 2 kernel driver in use: rt61pci A saída agora mostra muito mais detalhes sobre o dispositivo no endereço 04:02.0. Trata-se de um controlador de rede cujo nome interno é Ralink corp. RT2561/RT61 802.11g PCI. Subsystem está associado à marca e modelo do dispositivo — Linksys WMP54G v4.1 — e pode ser útil para fins de diagnóstico. O módulo do kernel pode ser identificado na linha kernel driver in use, que mostra o módulo rt61pci. De todas as informações coletadas, é correto supor que: 1. O dispositivo foi identificado. 2. Um módulo do kernel correspondente foi carregado. 3. O dispositivo deve estar pronto para uso. Outra maneira de verificar qual módulo do kernel está sendo usado para o dispositivo especificado seria usar a opção -k, disponível nas versões mais recentes do lspci: $ lspci -s 01:00.0 -k 01:00.0 VGA compatible controller: NVIDIA Corporation GM107 [GeForce GTX 750 Ti] (rev a2) kernel driver in use: nvidia kernel modules: nouveau, nvidia_drm, nvidia Para o dispositivo escolhido, uma placa NVIDIA GPU, lspci informa que o módulo em uso é 6 | learning.lpi.org | Licenciado sob CC BY-NC-ND 4.0. | Version: 2024-11-28 LPIC-1 (101) (Version 5.0) | 101.1 Identificar e editar configurações de hardware chamado nvidia, na linha kernel driver in use: nvidia, e todos os módulos correspondentes do kernel estão listados na linha kernel modules: nouveau, nvidia_drm, nvidia. O comando lsusb é semelhante a lspci, mas lista exclusivamente as informações relativas à USB: $ lsusb Bus 001 Device 029: ID 1781:0c9f Multiple Vendors USBtiny Bus 001 Device 028: ID 093a:2521 Pixart Imaging, Inc. Optical Mouse Bus 001 Device 020: ID 1131:1001 Integrated System Solution Corp. KY-BT100 Bluetooth Adapter Bus 001 Device 011: ID 04f2:0402 Chicony Electronics Co., Ltd Genius LuxeMate i200 Keyboard Bus 001 Device 007: ID 0424:7800 Standard Microsystems Corp. Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub O comando lsusb mostra os canais USB disponíveis e os dispositivos conectados a eles. Como no caso do lspci, a opção -v exibe uma saída mais detalhada. Um dispositivo específico pode ser selecionado para inspeção, bastando fornecer seu ID com a opção -d: $ lsusb -v -d 1781:0c9f Bus 001 Device 029: ID 1781:0c9f Multiple Vendors USBtiny Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.01 bDeviceClass 255 Vendor Specific Class bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x1781 Multiple Vendors idProduct 0x0c9f USBtiny bcdDevice 1.04 iManufacturer 0 iProduct 2 USBtiny iSerial 0 bNumConfigurations 1 Com a opção -t, o comando lsusb mostra os mapeamentos do dispositivo USB atual na forma de árvore hierárquica: $ lsusb -t Version: 2024-11-28 | Licenciado sob CC BY-NC-ND 4.0. | learning.lpi.org | 7 LPIC-1 (101) (Version 5.0) | Tópico 101: Arquitetura de Sistema /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M |__ Port 1: Dev 3, If 0, Class=Hub, Driver=hub/3p, 480M |__ Port 2: Dev 11, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 2: Dev 11, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 3: Dev 20, If 0, Class=Wireless, Driver=btusb, 12M |__ Port 3: Dev 20, If 1, Class=Wireless, Driver=btusb, 12M |__ Port 3: Dev 20, If 2, Class=Application Specific Interface, Driver=, 12M |__ Port 1: Dev 7, If 0, Class=Vendor Specific Class, Driver=lan78xx, 480M |__ Port 2: Dev 28, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 3: Dev 29, If 0, Class=Vendor Specific Class, Driver=, 1.5M É possível que nem todos os dispositivos tenham um módulo correspondente associado. A comunicação com determinados dispositivos pode ser feita diretamente pelo aplicativo, sem a intermediação de um módulo. Ainda assim, existem informações importantes na saída de lsusb -t. Quando existe um módulo correspondente, seu nome aparece no final da linha do dispositivo, como em Driver=btusb. O dispositivo Class identifica a categoria geral, como Human Interface Device, Wireless, Vendor Specific Class, Mass Storage, dentre outros. Para verificar qual dispositivo está usando o módulo btusb, presente na lista anterior, os números de Bus e Dev devem ser fornecidos à opção -s do comando lsusb: $ lsusb -s 01:20 Bus 001 Device 020: ID 1131:1001 Integrated System Solution Corp. KY-BT100 Bluetooth Adapter É comum que haja um grande conjunto de módulos de kernel carregados em um sistema Linux padrão a qualquer momento. Para interagir com eles, o melhor jeito é usar os comandos fornecidos pelo pacote kmod, um conjunto de ferramentas para realizar tarefas comuns com os módulos do kernel Linux, como inserir, remover, listar, verificar propriedades, resolver dependências e aliases. O comando lsmod, por exemplo, mostra todos os módulos carregados no momento: $ lsmod Module Size Used by kvm_intel 138528 0 kvm 421021 1 kvm_intel iTCO_wdt 13480 0 iTCO_vendor_support 13419 1 iTCO_wdt snd_usb_audio 149112 2 snd_hda_codec_realtek 51465 1 snd_ice1712 75006 3 snd_hda_intel 44075 7 8 | learning.lpi.org | Licenciado sob CC BY-NC-ND 4.0. | Version: 2024-11-28 LPIC-1 (101) (Version 5.0) | 101.1 Identificar e editar configurações de hardware arc4 12608 2 snd_cs8427 13978 1 snd_ice1712 snd_i2c 13828 2 snd_ice1712,snd_cs8427 snd_ice17xx_ak4xxx 13128 1 snd_ice1712 snd_ak4xxx_adda 18487 2 snd_ice1712,snd_ice17xx_ak4xxx microcode 23527 0 snd_usbmidi_lib 24845 1 snd_usb_audio gspca_pac7302 17481 0 gspca_main 36226 1 gspca_pac7302 videodev 132348 2 gspca_main,gspca_pac7302 rt61pci 32326 0 rt2x00pci 13083 1 rt61pci media 20840 1 videodev rt2x00mmio 13322 1 rt61pci hid_dr 12776 0 snd_mpu401_uart 13992 1 snd_ice1712 rt2x00lib 67108 3 rt61pci,rt2x00pci,rt2x00mmio snd_rawmidi 29394 2 snd_usbmidi_lib,snd_mpu401_uart A saída do comando lsmod é dividida em três colunas: Module Nome do módulo. Size Quantidade de RAM utilizada pelo módulo, em bytes. Used by Módulos dependentes. Alguns módulos exigem que outros módulos funcionem corretamente, como é o caso dos módulos para dispositivos de áudio: $ lsmod | fgrep -i snd_hda_intel snd_hda_intel 42658 5 snd_hda_codec 155748 3 snd_hda_codec_hdmi,snd_hda_codec_via,snd_hda_intel snd_pcm 81999 3 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel snd_page_alloc 13852 2 snd_pcm,snd_hda_intel snd 59132 19 snd_hwdep,snd_timer,snd_hda_codec_hdmi,snd_hda_codec_via,snd_pcm,snd_seq,snd_hda_codec,snd_h da_intel,snd_seq_device Version: 2024-11-28 | Licenciado sob CC BY-NC-ND 4.0. | learning.lpi.org | 9 LPIC-1 (101) (Version 5.0) | Tópico 101: Arquitetura de Sistema A terceira coluna, Used by, mostra os módulos que exigem que o módulo na primeira coluna funcione corretamente. Muitos módulos da arquitetura de som do Linux, prefixados por snd, são interdependentes. Ao procurar por problemas durante um diagnóstico do sistema, pode ser útil descarregar módulos específicos atualmente carregados. O comando modprobe pode ser usado para carregar e descarregar módulos do kernel: para descarregar um módulo e seus módulos relacionados, desde que não estejam sendo usados por um processo em execução, use o comando modprobe -r. Por exemplo, para descarregar o módulo snd-hda-intel (o módulo para um dispositivo de áudio HDA Intel) e outros módulos relacionados ao sistema de som: # modprobe -r snd-hda-intel Além de carregar e descarregar módulos do kernel enquanto o sistema está em execução, é possível alterar os parâmetros do módulo quando o kernel está sendo carregado, o que não é muito diferente de passar opções para os comandos. Os módulo aceitam parâmetros específicos, mas na maioria das vezes recomenda-se usar os valores padrão, não sendo necessários parâmetros extras. No entanto, em alguns casos precisamos usar parâmetros para alterar o comportamento de um módulo e fazê-lo funcionar conforme o esperado. Usando o nome do módulo como único argumento, o comando modinfo mostra uma descrição, o arquivo, o autor, a licença, a identificação, as dependências e os parâmetros disponíveis para o módulo fornecido. Para que os parâmetros personalizados de um módulo se tornem persistentes, inclua-os no arquivo /etc/modprobe.conf ou em arquivos individuais com a extensão.conf no diretório /etc/modprobe.d/`. A opção -p fará com que o comando modinfo exiba todos os parâmetros disponíveis e ignore as outras informações: # modinfo -p nouveau vram_pushbuf:Create DMA push buffers in VRAM (int) tv_norm:Default TV norm. Supported: PAL, PAL-M, PAL-N, PAL-Nc, NTSC-M, NTSC-J, hd480i, hd480p, hd576i, hd576p, hd720p, hd1080i. Default: PAL NOTE Ignored for cards with external TV encoders. (charp) nofbaccel:Disable fbcon acceleration (int) fbcon_bpp:fbcon bits-per-pixel (default: auto) (int) mst:Enable DisplayPort multi-stream (default: enabled) (int) tv_disable:Disable TV-out detection (int) ignorelid:Ignore ACPI lid status (int) duallink:Allow dual-link TMDS (default: enabled) (int) hdmimhz:Force a maximum HDMI pixel clock (in MHz) (int) config:option string to pass to driver core (charp) debug:debug string to pass to driver core (charp) 10 | learning.lpi.org | Licenciado sob CC BY-NC-ND 4.0. | Version: 2024-11-28 LPIC-1 (101) (Version 5.0) | 101.1 Identificar e editar configurações de hardware noaccel:disable kernel/abi16 acceleration (int) modeset:enable driver (default: auto, 0 = disabled, 1 = enabled, 2 = headless) (int) atomic:Expose atomic ioctl (default: disabled) (int) runpm:disable (0), force enable (1), optimus only default (-1) (int) O exemplo de saída mostra todos os parâmetros disponíveis para o módulo nouveau, um módulo do kernel fornecido pelo nouveau project como alternativa aos drivers proprietários das placas de GPU da NVIDIA. A opção modeset, por exemplo, permite controlar se a resolução e a profundidade da tela serão definidas no espaço do kernel em vez do espaço do usuário. Quando adicionamos options nouveau modeset =0 ao arquivo /etc/modprobe.d/nouveau.conf, o recurso modeset do kernel é desativado. Se um módulo estiver causando problemas, o arquivo /etc/modprobe.d/blacklist.conf pode ser usado. Por exemplo, para impedir o carregamento automático do módulo nouveau, a linha blacklist nouveau deve ser adicionada ao arquivo /etc/modprobe.d/blacklist.conf. Essa ação é necessária quando o módulo proprietário nvidia é instalado e o módulo padrão nouveau deve ser posto de lado. É possível modificar o arquivo /etc/modprobe.d/blacklist.conf que já existe no sistema por padrão. Porém, a melhor opção é criar um arquivo de configuração NOTE separado, /etc/modprobe.d/.conf, contendo ajustes específicos àquele módulo do kernel em particular. Arquivos de informação e de dispositivo Os comandos lspci, lsusb e lsmod atuam como front-ends para ler as informações de hardware armazenadas pelo sistema operacional. Este tipo de informação é mantido em arquivos especiais nos diretórios /proc e /sys. Esses diretórios são pontos de montagem para sistemas de arquivos que não estão presentes em uma partição de dispositivo, mas somente no espaço de RAM usado pelo kernel para armazenar a configuração do tempo de execução e informações sobre os processos em execução. Esses sistemas de arquivos não se destinam ao armazenamento convencional de arquivos e, portanto, são chamados de pseudosistemas de arquivos e existem apenas enquanto o sistema estiver em execução. O diretório /proc contém arquivos com informações sobre processos em execução e recursos de hardware. Alguns dos arquivos importantes em /proc para a inspeção de hardware são: /proc/cpuinfo Lista informações detalhadas sobre a(s) CPU(s) encontradas pelo sistema operacional. Version: 2024-11-28 | Licenciado sob CC BY-NC-ND 4.0. | learning.lpi.org | 11 LPIC-1 (101) (Version 5.0) | Tópico 101: Arquitetura de Sistema /proc/interrupts Uma lista de números de interrupções por dispositivo de entrada e saída em cada CPU. /proc/ioports Lista as regiões de portas de Entrada/Saída registradas atualmente e em uso. /proc/dma Lista os canais registrados de DMA (acesso direto à memória) em uso. Os arquivos dentro do diretório /sys têm funções semelhantes às do /proc. No entanto, o diretório /sys tem o objetivo específico de armazenar informações do dispositivo e dados do kernel relacionados ao hardware, ao passo que /proc também contém informações sobre diversas estruturas de dados do kernel, incluindo processos em execução e configurações. Outro diretório diretamente relacionado aos dispositivos em um sistema Linux padrão é o /dev. Cada arquivo dentro de /dev é associado a um dispositivo do sistema, particularmente dispositivos de armazenamento. Um disco rígido IDE legado, por exemplo, quando conectado ao primeiro canal IDE da placa-mãe, é representado pelo arquivo /dev/hda. Cada partição desse disco será identificada por /dev/hda1, /dev/hda2 e assim por diante, até a última partição encontrada. Os dispositivos removíveis são manipulados pelo subsistema udev, que cria os dispositivos correspondentes em /dev. O kernel do Linux captura o evento de detecção de hardware e o passa para o processo udev, que por sua vez identifica o dispositivo e cria dinamicamente os arquivos correspondentes em /dev, usando regras predefinidas. Nas distribuições Linux atuais, o udev é responsável pela identificação e configuração dos dispositivos já presentes durante a inicialização da máquina (detecção coldplug) e dos dispositivos identificados enquanto o sistema está em execução (detecção hotplug). O Udev utiliza o SysFS, o pseudosistema de arquivos montado em /sys para informações relacionadas ao hardware. Hotplug é o termo usado para se referir à detecção e configuração de um dispositivo enquanto o sistema está em execução, como quando inserimos um NOTE dispositivo USB. O kernel do Linux suporta recursos de hotplug desde a versão 2.6, permitindo que a maioria dos barramentos do sistema (PCI, USB, etc.) disparem eventos de hotplug quando um dispositivo é conectado ou desconectado. À medida que novos dispositivos são detectados, o udev pesquisa uma regra correspondente nas regras predefinidas armazenadas no diretório /etc/udev/rules.d/. As regras mais importantes são fornecidas pela distribuição, mas é possível adicionar novas para casos específicos. 12 | learning.lpi.org | Licenciado sob CC BY-NC-ND 4.0. | Version: 2024-11-28 LPIC-1 (101) (Version 5.0) | 101.1 Identificar e editar configurações de hardware Dispositivos de armazenamento No Linux, os dispositivos de armazenamento são genericamente chamados de dispositivos de bloco, porque os dados que contêm são lidos em blocos de dados armazenados em buffer com diferentes tamanhos e posições. Cada dispositivo de bloco é identificado por um arquivo no diretório /dev, sendo que o nome do arquivo depende do tipo de dispositivo (IDE, SATA, SCSI, etc.) e de suas partições. Os dispositivos de CD/DVD e de disquete, por exemplo, receberão nomes específicos em /dev: uma unidade de CD/DVD conectada ao segundo canal IDE será identificada como /dev/hdc (/dev/hda e /dev/hdb são reservados para os dispositivos mestre e escravo no primeiro canal IDE) e uma unidade de disquete antiga será identificada como /dev/fdO, /dev/fd1, etc. A partir da versão 2.4 do kernel Linux em diante, a maioria dos dispositivos de armazenamento passou a ser identificada como dispositivos SCSI, independentemente do tipo de hardware. Os dispositivos de bloco IDE, SSD e USB são prefixados com sd. Para os discos IDE, o prefixo sd é usado, mas a terceira letra é escolhida dependendo da unidade ser mestre ou escrava (no primeiro canal IDE, o mestre será sda e o escravo será sdb). As partições são listadas em ordem numérica. Os caminhos /dev/sda1, /dev/sda2, etc. são usados para a primeira e a segunda partições do dispositivo de bloco identificado primeiro e /dev/sdb1, /dev/sdb2, etc. identificam a primeira e a segunda partições do dispositivo de bloco identificado a seguir. A exceção a esse padrão ocorre com cartões de memória (cartões SD) e dispositivos NVMe (SSD conectados ao barramento PCI Express). Para os cartões SD, os caminhos /dev/mmcblk0p1, /dev/mmcblk0p2 etc. são usados para a primeira e a segunda partições do dispositivo identificado primeiro e /dev/mmcblk1p1, /dev/mmcblk1p2, etc. identificam a primeira e a segunda partições do dispositivo identificado em segundo lugar. Os dispositivos NVMe recebem o prefixo nvme, como em /dev/nvme0n1p1 e /dev/nvme0n1p2. Version: 2024-11-28 | Licenciado sob CC BY-NC-ND 4.0. | learning.lpi.org | 13 LPIC-1 (101) (Version 5.0) | Tópico 101: Arquitetura de Sistema Exercícios Guiados 1. Suponha que um sistema operacional não consegue inicializar após um segundo disco SATA ser adicionado ao sistema. Sabendo que as peças não são defeituosas, qual poderia ser a causa possível desse erro? 2. Você acaba de adquirir um novo computador de mesa e gostaria de conferir se a placa de vídeo externa conectada ao barramento PCI é realmente a anunciada pelo fabricante. Porém, se abrir o gabinete do computador, a garantia será anulada. Qual comando pode ser usado para listar as informações da placa de vídeo detectadas pelo sistema operacional? 3. A linha a seguir faz parte da saída gerada pelo comando lspci: 03:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 2208 [Thunderbolt] (rev 05) Qual comando deve ser executado para identificar o módulo do kernel em uso neste dispositivo específico? 4. Um administrador deseja experimentar parâmetros diferentes para o módulo do kernel bluetooth sem reiniciar o sistema. No entanto, qualquer tentativa de descarregar o módulo com modprobe -r bluetooth resulta no seguinte erro: modprobe: FATAL: Module bluetooth is in use. Qual a possível causa desse erro? 14 | learning.lpi.org | Licenciado sob CC BY-NC-ND 4.0. | Version: 2024-11-28 LPIC-1 (101) (Version 5.0) | 101.1 Identificar e editar configurações de hardware Exercícios Exploratórios 1. É comum encontrar máquinas legadas em ambientes de produção, por exemplo quando certos equipamentos usam uma conexão desatualizada para se comunicar com o computador controlador, sendo assim necessário estar particularmente atento a algumas peculiaridades dessas máquinas mais antigas. Certos servidores x86 com firmware BIOS mais antigo, por exemplo, não inicializam se um teclado não for detectado. Como esse problema específico pode ser evitado? 2. Os sistemas operacionais criados em torno do kernel do Linux também estão disponíveis para uma ampla variedade de arquiteturas de computadores além do x86, como os computadores de placa única baseados na arquitetura ARM. Um usuário atento notará a ausência do comando lspci nessas máquinas, como o Raspberry Pi. Que diferença em relação às máquinas x86 justifica essa ausência? 3. Muitos roteadores de rede incluem uma porta USB que permite a conexão de um dispositivo externo, como um disco rígido USB. Sabendo que a maioria deles usa um sistema operacional baseado em Linux, qual seria o nome de um disco rígido USB externo no diretório /dev/, supondo-se que não haja nenhum outro dispositivo de bloco convencional no roteador? 4. Em 2018, a vulnerabilidade de hardware conhecida como Meltdown foi descoberta. Ela afeta quase todos os processadores de diferentes arquiteturas. As versões mais recentes do kernel Linux podem informar se o sistema atual está vulnerável. Como obter essas informações? Version: 2024-11-28 | Licenciado sob CC BY-NC-ND 4.0. | learning.lpi.org | 15 LPIC-1 (101) (Version 5.0) | Tópico 101: Arquitetura de Sistema Resumo Esta lição aborda os conceitos gerais de como o kernel do Linux lida com recursos de hardware, principalmente na arquitetura x86. A lição inclui os seguintes tópicos: Como as configurações definidas nos utilitários de configuração da BIOS ou UEFI podem afetar a interação do sistema operacional com o hardware. Como usar as ferramentas fornecidas por um sistema Linux padrão para obter informações sobre o hardware. Como identificar dispositivos de armazenamento permanentes e removíveis no sistema de arquivos. Os comandos e procedimentos abordados foram: Comandos para inspecionar o hardware detectado: lspci and lsusb. Comandos para gerenciar os módulos do kernel: lsmod and modprobe. Arquivos especiais relacionados ao hardware, seja os arquivos encontrados no diretório /dev/ ou nos pseudosistemas de arquivos /proc/ e /sys/. 16 | learning.lpi.org | Licenciado sob CC BY-NC-ND 4.0. | Version: 2024-11-28 LPIC-1 (101) (Version 5.0) | 101.1 Identificar e editar configurações de hardware Respostas aos Exercícios Guiados 1. Suponha que um sistema operacional não consegue inicializar após um segundo disco SATA ser adicionado ao sistema. Sabendo que as peças não são defeituosas, qual poderia ser a causa possível desse erro? A ordem dos dispositivos de inicialização deve ser definida no utilitário de configuração da BIOS, caso contrário a BIOS pode não conseguir executar o carregador de inicialização. 2. Você acaba de adquirir um novo computador de mesa e gostaria de conferir se a placa de vídeo externa conectada ao barramento PCI é realmente a anunciada pelo fabricante. Porém, se abrir o gabinete do computador, a garantia será anulada. Qual comando pode ser usado para listar as informações da placa de vídeo detectadas pelo sistema operacional? O comando lspci lista informações detalhadas sobre todos os dispositivos atualmente conectados ao barramento PCI. 3. A linha a seguir faz parte da saída gerada pelo comando lspci: 03:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 2208 [Thunderbolt] (rev 05) Qual comando deve ser executado para identificar o módulo do kernel em uso neste dispositivo específico? O comando lspci -s 03:00.0 -v ou lspci -s 03:00.0 -k 4. Um administrador deseja experimentar parâmetros diferentes para o módulo do kernel bluetooth sem reiniciar o sistema. No entanto, qualquer tentativa de descarregar o módulo com modprobe -r bluetooth resulta no seguinte erro: modprobe: FATAL: Module bluetooth is in use. Qual a possível causa desse erro? O módulo bluetooth está sendo usado por um processo em execução. Version: 2024-11-28 | Licenciado sob CC BY-NC-ND 4.0. | learning.lpi.org | 17 LPIC-1 (101) (Version 5.0) | Tópico 101: Arquitetura de Sistema Respostas aos Exercícios Exploratórios 1. É comum encontrar máquinas legadas em ambientes de produção, por exemplo quando certos equipamentos usam uma conexão desatualizada para se comunicar com o computador controlador, sendo assim necessário estar particularmente atento a algumas peculiaridades dessas máquinas mais antigas. Certos servidores x86 com firmware BIOS mais antigo, por exemplo, não inicializam se um teclado não for detectado. Como esse problema específico pode ser evitado? O utilitário de configuração da BIOS tem uma opção para desativar o bloqueio do computador quando um teclado não é encontrado. 2. Os sistemas operacionais criados em torno do kernel do Linux também estão disponíveis para uma ampla variedade de arquiteturas de computadores além do x86, como os computadores de placa única baseados na arquitetura ARM. Um usuário atento notará a ausência do comando lspci nessas máquinas, como o Raspberry Pi. Que diferença em relação às máquinas x86 justifica essa ausência? Ao contrário da maioria das máquinas x86, um computador baseado em ARM, como o Raspberry Pi, não possui um barramento PCI; portanto, o comando lspci é inútil. 3. Muitos roteadores de rede incluem uma porta USB que permite a conexão de um dispositivo externo, como um disco rígido USB. Sabendo que a maioria deles usa um sistema operacional baseado em Linux, qual seria o nome de um disco rígido USB externo no diretório /dev/, supondo-se que não haja nenhum outro dispositivo de bloco convencional no roteador? Os kernels do Linux modernos identificam os discos rígidos USB como dispositivos SATA, de modo que o arquivo correspondente será /dev/sda, já que não existe nenhum outro dispositivo de bloco convencional no sistema. 4. Em 2018, a vulnerabilidade de hardware conhecida como Meltdown foi descoberta. Ela afeta quase todos os processadores de diferentes arquiteturas. As versões mais recentes do kernel Linux podem informar se o sistema atual está vulnerável. Como obter essas informações? O arquivo /proc/cpuinfo tem uma linha que mostra os bugs conhecidos para a CPU correspondente, como por exemplo bugs: cpu_meltdown. 18 | learning.lpi.org | Licenciado sob CC BY-NC-ND 4.0. | Version: 2024-11-28 LPIC-1 (101) (Version 5.0) | 101.2 Início (boot) do sistema 101.2 Início (boot) do sistema Referência ao LPI objectivo LPIC-1 v5, Exam 101, Objective 101.2 Peso 3 Áreas chave de conhecimento Fornecer os comandos e opções mais comuns para o gerenciador de inicialização e para o kernel durante a inicialização. Demonstrar conhecimento sobre a sequência de inicialização do BIOS/UEFI até sua conclusão. Entendimento do SysVinit e do systemd. Noções do Upstart. Conferir os arquivos de log dos eventos de inicialização. Segue uma lista parcial dos arquivos, termos e utilitários utilizados dmesg journalctl BIOS UEFI bootloader kernel initramfs init Version: 2024-11-28 | Licenciado sob CC BY-NC-ND 4.0. | learning.lpi.org | 19 LPIC-1 (101) (Version 5.0) | Tópico 101: Arquitetura de Sistema SysVinit systemd 20 | learning.lpi.org | Licenciado sob CC BY-NC-ND 4.0. | Version: 2024-11-28 LPIC-1 (101) (Version 5.0) | 101.2 Lição 1 101.2 Lição 1 Certificação: LPIC-1 Versão: 5.0 Tópico: 101 Arquitetura do sistema Objetivo: 101.2 Inicialização do sistema Lição: 1 de 1 Introdução Para controlar a máquina, o componente principal do sistema operacional — o kernel — deve ser carregado por um programa chamado bootloader (carregador de inicialização), que por sua vez é carregado por um firmware pré-instalado, como a BIOS ou a UEFI. O carregador de inicialização pode ser personalizado para passar parâmetros para o kernel, como a partição que contém o sistema de arquivos raiz ou em qual modo o sistema operacional deve ser executado. Uma vez carregado, o kernel dá seguimento ao processo de inicialização, identificando e configurando o hardware. Por fim, o kernel chama o utilitário responsável por iniciar e gerenciar os serviços do sistema. Em algumas distribuições Linux, os comandos executados nesta lição podem exigir NOTE privilégios de root. Version: 2024-11-28 | Licenciado sob CC BY-NC-ND 4.0. | learning.lpi.org | 21 LPIC-1 (101) (Version 5.0) | Tópico 101: Arquitetura de Sistema BIOS ou UEFI Os procedimentos executados pelas máquinas x86 para executar o carregador de inicialização são diferentes conforme se usa a BIOS ou a UEFI. A BIOS, abreviação de Basic Input/Output System, é um programa armazenado em um chip de memória não volátil conectado à placa-mãe, executado sempre que o computador é ligado. Esse tipo de programa é chamado firmware e seu local de armazenamento é separado dos outros dispositivos de armazenamento do sistema. A BIOS pressupõe que os primeiros 440 bytes no primeiro dispositivo de armazenamento — seguindo a ordem definida no utilitário de configuração da BIOS — são o primeiro estágio do bootloader (também chamado de bootstrap). Os primeiros 512 bytes de um dispositivo de armazenamento são o que se chama de MBR (Master Boot Record) dos dispositivos de armazenamento que usam o esquema de partição DOS padrão e, além do primeiro estágio do gerenciador de inicialização, eles contêm a tabela de partições. Se o MBR não contiver os dados corretos, o sistema não poderá inicializar, a menos que um método alternativo seja empregado. De um modo geral, as etapas pré-operacionais para inicializar um sistema equipado com BIOS são: 1. O processo POST (power-on self-test) é executado para identificar falhas simples de hardware assim que a máquina é ligada. 2. A BIOS ativa os componentes básicos para carregar o sistema, como a saída de vídeo, o teclado e as mídias de armazenamento. 3. A BIOS carrega o primeiro estágio do bootloader a partir do MBR (os primeiros 440 bytes do primeiro dispositivo, conforme definido no utilitário de configuração da BIOS). 4. O primeiro estágio do bootloader chama o segundo estágio, responsável por apresentar as opções de inicialização e carregar o kernel. A UEFI, abreviação de Unified Extensible Firmware Interface, difere da BIOS em alguns pontos- chave. Como a BIOS, a UEFI também é um firmware, mas pode identificar partições e ler muitos sistemas de arquivos nelas. A UEFI não depende do MBR, levando em consideração apenas as configurações armazenadas na memória não-volátil (NVRAM) conectada à placa-mãe. Essas definições indicam a localização dos programas compatíveis com a UEFI, chamados aplicativos EFI, que serão executados automaticamente ou chamados a partir de um menu de inicialização. Os aplicativos EFI podem ser carregadores de inicialização, seletores de sistema operacional, ferramentas para diagnóstico e reparo do sistema etc. Eles devem estar em uma partição de um dispositivo de armazenamento convencional e em um sistema de arquivos compatível. Os sistemas de arquivos compatíveis padrão são FAT12, FAT16 e FAT32 para dispositivos de bloco e ISO-9660 para mídia ótica. Essa abordagem permite a implementação de ferramentas muito mais sofisticadas do que as que seriam possíveis com a BIOS. 22 | learning.lpi.org | Licenciado sob CC BY-NC-ND 4.0. | Version: 2024-11-28 LPIC-1 (101) (Version 5.0) | 101.2 Lição 1 A partição que contém os aplicativos EFI é chamada de Partição de Sistema EFI ou apenas ESP. Essa partição não deve ser compartilhada com outros sistemas de arquivos do sistema, como o sistema de arquivos raiz ou os sistemas de arquivos de dados do usuário. O diretório EFI na partição ESP contém os aplicativos apontados pelas entradas salvas na NVRAM. De maneira geral, as etapas de inicialização do pré-sistema operacional em um sistema com UEFI são: 1. O processo POST (power-on self-test) é executado para identificar falhas simples de hardware assim que a máquina é ligada. 2. A UEFI ativa os componentes básicos para carregar o sistema, como a saída de vídeo, o teclado e as mídias de armazenamento. 3. O firmware da UEFI lê as definições armazenadas na NVRAM para executar o aplicativo EFI predefinido armazenado no arquivo de sistemas da partição ESP. Normalmente, o aplicativo EFI predefinido é um bootloader. 4. Se o aplicativo EFI predefinido for um bootloader, ele carrega o kernel para iniciar o sistema operacional. O padrão UEFI também suporta um recurso chamado Inicialização Segura, que permite apenas a execução de aplicativos EFI assinados, ou seja, aplicativos EFI autorizados pelo fabricante do hardware. Esse recurso aumenta a proteção contra software malicioso, mas pode dificultar a instalação de sistemas operacionais não cobertos pela garantia do fabricante. O bootloader O carregador de inicialização mais popular para Linux na arquitetura x86 é o GRUB (Grand Unified Bootloader). Assim que é chamado pela BIOS ou pela UEFI, o GRUB exibe uma lista de sistemas operacionais disponíveis para inicialização. Às vezes, a lista não aparece automaticamente, mas ela pode ser invocada pressionando Shift enquanto o GRUB está sendo chamado pela BIOS. Nos sistemas UEFI, a tecla a ser usada é Esc. No menu do GRUB, é possível escolher qual dos kernels instalados deve ser carregado e passar novos parâmetros para ele. A maioria dos parâmetros do kernel segue o padrão opção=valor. Alguns dos parâmetros mais úteis do kernel são: acpi Ativa/desativa o suporte a ACPI. acpi=off desabilita o suporte a ACPI. init Define um iniciador de sistema alternativo. Por exemplo, init=/bin/bash define o shell Bash Version: 2024-11-28 | Licenciado sob CC BY-NC-ND 4.0. | learning.lpi.org | 23 LPIC-1 (101) (Version 5.0) | Tópico 101: Arquitetura de Sistema como iniciador. Assim, uma sessão do shell será iniciada logo após o processo de inicialização do kernel. systemd.unit Define o destino do systemd a ser ativado. Por exemplo, systemd.unit=graphical.target. O systemd também aceita os níveis de execução numéricos definidos para SysV. Para ativar o nível de execução 1, por exemplo, é necessário apenas incluir o número 1 ou a letra S (abreviação de “single”) como parâmetro do kernel. mem Define a quantidade de RAM disponivel para o sistema. Este parâmetro é útil para limitar a RAM disponível para cada convidado em uma máquina virtual. Assim, mem=512M limita a 512 megabytes a quantidade de RAM disponível para um sistema convidado em particular. maxcpus Limita o número de processadores (ou núcleos de processador) visíveis ao sistema em máquinas multiprocessador simétricas. Também é útil para máquinas virtuais. Um valor de 0 desativa o suporte a máquinas multiprocessador e tem o mesmo efeito do parâmetro do kernel nosmp. O parâmetro maxcpus=2 limita a dois o número de processadores disponíveis para o sistema operacional. quiet Oculta a maioria das mensagens de inicialização. vga Seleciona um modo de vídeo. O parâmetro vga=ask mostra uma lista dos modos disponíveis a escolher. root Define a partição raiz, diferente da que está configurada no bootloader. Por exemplo, root=/dev/sda3. rootflags Opções de montagem para o arquivo de sistemas raiz. ro Torna somente para leitura a montagem inicial do arquivo de sistemas raiz. rw Permite escrever no arquivo de sistemas raiz durante a montagem inicial. 24 | learning.lpi.org | Licenciado sob CC BY-NC-ND 4.0. | Version: 2024-11-28 LPIC-1 (101) (Version 5.0) | 101.2 Lição 1 Geralmente não é necessário alterar os parâmetros do kernel, mas isso pode ser útil para detectar e resolver problemas relacionados ao sistema operacional. Os parâmetros do kernel devem ser adicionados ao arquivo /etc/default/grub na linha GRUB_CMDLINE_LINUX para que persistam após a inicialização. É necessário gerar um novo arquivo de configuração para o carregador de inicialização a cada vez que /etc/default/grub é alterado, o que é feito com o comando grub- mkconfig -o /boot/grub/grub.cfg. Quando o sistema operacional estiver rodando, os parâmetros do kernel usados para carregar a sessão ficam disponíveis para leitura no arquivo /proc/cmdline. NOTE A configuração do GRUB será discutida mais adiante, em outra lição. Inicialização do sistema Além do kernel, o sistema operacional depende de outros componentes que fornecem os recursos esperados. Muitos desses componentes são carregados durante o processo de inicialização do sistema e vão de simples scripts de shell a programas de serviços mais complexos. Os scripts geralmente são usados para executar tarefas de curta duração que serão finalizadas durante o processo de inicialização. Os serviços, também conhecidos como daemons, podem ficar ativos o tempo todo, pois muitas vezes são responsáveis por aspectos específicos do sistema operacional. Existe uma enorme diversidade de maneiras de incorporar scripts de inicialização e daemons com as mais diferentes características em uma distribuição Linux. Esse fato, historicamente, impediu o desenvolvimento de uma solução única que atenda às expectativas dos mantenedores e usuários de todas as distribuições Linux. No entanto, qualquer ferramenta escolhida pelos mantenedores de distribuições para executar esta função será capaz de pelo menos iniciar, interromper e reiniciar os serviços do sistema. Essas ações geralmente são executadas pelo próprio sistema após uma atualização de software, por exemplo, mas o administrador do sistema quase sempre precisa reiniciar o serviço manualmente após fazer modificações em seu arquivo de configuração. Também é conveniente que um administrador do sistema possa ativar um conjunto específico de daemons, dependendo das circunstâncias. Por exemplo, deve ser possível executar apenas um conjunto mínimo de serviços para executar tarefas de manutenção do sistema. Estritamente falando, o sistema operacional é apenas o kernel e seus componentes, que controlam o hardware e gerenciam todos os processos. É comum, no entanto, NOTE usar o termo “sistema operacional” de maneira mais vaga, para designar um grupo inteiro de programas distintos que compõem o ambiente de software onde o usuário pode executar as tarefas computacionais básicas. A inicialização do sistema operacional começa quando o carregador de inicialização carrega o kernel na RAM. Nesse momento, o kernel assume o controle da CPU e começa a detectar e Version: 2024-11-28 | Licenciado sob CC BY-NC-ND 4.0. | learning.lpi.org | 25 LPIC-1 (101) (Version 5.0) | Tópico 101: Arquitetura de Sistema configurar os aspectos fundamentais do sistema operacional, como a configuração básica de hardware e o endereçamento de memória. O kernel abre então o initramfs (initial RAM filesystem). O initramfs é um arquivo que contém um sistema de arquivos raiz temporário usado durante o processo de inicialização. O principal objetivo de um arquivo initramfs é fornecer os módulos necessários para que o kernel possa acessar o sistema de arquivos raiz “de verdade” do sistema operacional. Logo que o sistema de arquivos raiz fica disponível, o kernel monta todos os sistemas de arquivos configurados em /etc/fstab e, em seguida, executa o primeiro programa, um utilitário chamado init. O programa init é responsável por executar todos os scripts de inicialização e daemons do sistema. Existem implementações distintas desses iniciadores de sistema além do tradicional init, como o systemd e o Upstart. Depois que o programa init é carregado, o initramfs é removido da RAM. Padrão SysV Um gerenciador de serviços baseado no padrão SysVinit controla quais daemons e recursos estarão disponíveis empregando o conceito de níveis de execução. Os níveis de execução são numerados de 0 a 6 e são projetados pelos mantenedores da distribuição para atender a propósitos específicos. As únicas definições de nível de execução compartilhadas entre todas as distribuições são os níveis 0, 1 e 6. systemd O systemd é um gerenciador de sistemas e serviços moderno, com uma camada de compatibilidade para os comandos e níveis de execução do SysV. O systemd possui uma estrutura concorrente, emprega sockets e D-Bus para a ativação de serviços, execução de daemon sob demanda, monitoramento de processos com cgroups, snapshot support, recuperação da sessão do sistema, controle de ponto de montagem e um controle de serviços baseado em dependências. Nos últimos anos, a maioria das grandes distribuições Linux adotou gradualmente o systemd como seu gerenciador de sistema padrão. Upstart Como o systemd, o Upstart é um substituto para o init. O foco do Upstart é acelerar o processo de inicialização, paralelizando o processo de carregamento dos serviços do sistema. O Upstart foi usado pelas distribuições baseadas no Ubuntu em versões anteriores, mas hoje deu lugar ao systemd. Inspeção da inicialização Às vezes ocorrem erros durante o processo de inicialização, mas nem sempre eles são críticos a 26 | learning.lpi.org | Licenciado sob CC BY-NC-ND 4.0. | Version: 2024-11-28 LPIC-1 (101) (Version 5.0) | 101.2 Lição 1 ponto de interromper completamente o sistema operacional. Não obstante, esses erros podem comprometer o comportamento esperado do sistema. Todos os erros resultam em mensagens que podem ser usadas para investigações futuras, pois elas contêm informações valiosas sobre quando e como o erro ocorreu. Mesmo quando nenhuma mensagem de erro é gerada, as informações coletadas durante o processo de inicialização podem ser úteis para fins de ajuste e configuração. O espaço de memória em que o kernel armazena suas mensagens, incluindo as mensagens de inicialização, é chamado de buffer de anel do kernel. As mensagens são mantidas nesse buffer mesmo quando não são exibidas durante o processo de inicialização (por exemplo, quando uma animação é exibida em vez da mensagem). No entanto, o buffer de anel do kernel perde todas as mensagens quando o sistema é desligado ou se o comando dmesg --clear for executado. Sem opções, o comando dmesg exibe as mensagens atuais no buffer de anel do kernel: $ dmesg [ 5.262389] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null) [ 5.449712] ip_tables: (C) 2000-2006 Netfilter Core Team [ 5.460286] systemd: systemd 237 running in system mode. [ 5.480138] systemd: Detected architecture x86-64. [ 5.481767] systemd: Set hostname to. [ 5.636607] systemd: Reached target User and Group Name Lookups. [ 5.636866] systemd: Created slice System Slice. [ 5.637000] systemd: Listening on Journal Audit Socket. [ 5.637085] systemd: Listening on Journal Socket. [ 5.637827] systemd: Mounting POSIX Message Queue File System... [ 5.638639] systemd: Started Read required files in advance. [ 5.641661] systemd: Starting Load Kernel Modules... [ 5.661672] EXT4-fs (sda1): re-mounted. Opts: errors=remount-ro [ 5.694322] lp: driver loaded but no devices found [ 5.702609] ppdev: user-space parallel port driver [ 5.705384] parport_pc 00:02: reported by Plug and Play ACPI [ 5.705468] parport0: PC-style at 0x378 (0x778), irq 7, dma 3 [PCSPP,TRISTATE,COMPAT,EPP,ECP,DMA] [ 5.800146] lp0: using parport0 (interrupt-driven). [ 5.897421] systemd-journald: Received request to flush runtime journal from PID 1 A saída do dmesg pode ter centenas de linhas, portanto a listagem anterior contém apenas o trecho que mostra o kernel chamando o gerenciador de serviços systemd. Os valores no início das linhas são a quantidade de segundos desde o início do carregamento do kernel. Nos sistemas baseados em systemd, o comando journalctl mostra as mensagens de inicialização com as opções -b, --boot, -k ou --dmesg. O comando journalctl --list-boots mostra uma lista de números de inicialização relativos à inicialização atual, seu hash de identificação e os Version: 2024-11-28 | Licenciado sob CC BY-NC-ND 4.0. | learning.lpi.org | 27 LPIC-1 (101) (Version 5.0) | Tópico 101: Arquitetura de Sistema registros de data e hora da primeira e última mensagens correspondentes: $ journalctl --list-boots -4 9e5b3eb4952845208b841ad4dbefa1a6 Thu 2019-10-03 13:39:23 -03—Thu 2019-10-03 13:40:30 -03 -3 9e3d79955535430aa43baa17758f40fa Thu 2019-10-03 13:41:15 -03—Thu 2019-10-03 14:56:19 -03 -2 17672d8851694e6c9bb102df7355452c Thu 2019-10-03 14:56:57 -03—Thu 2019-10-03 19:27:16 -03 -1 55c0d9439bfb4e85a20a62776d0dbb4d Thu 2019-10-03 19:27:53 -03—Fri 2019-10-04 00:28:47 -03 0 08fbbebd9f964a74b8a02bb27b200622 Fri 2019-10-04 00:31:01 -03—Fri 2019-10-04 10:17:01 -03 Os logs de inicialização anteriores também são preservados nos sistemas baseados no systemd, sendo assim possível inspecionar as mensagens de sessões anteriores do sistema operacional. Se as opções -b 0 ou --boot=0 forem usadas, aparecem as mensagens da inicialização atual. As opções -b -1 ou --boot=-1 exibem as mensagens da inicialização anterior. As opções -b -2 ou --boot=-2 exibem as mensagens da inicialização antes da anterior e assim por diante. O trecho a seguir mostra o kernel chamando o gerenciador de serviços do systemd para o último processo de inicialização: $ journalctl -b 0 oct 04 00:31:01 ubuntu-host kernel: EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null) oct 04 00:31:01 ubuntu-host kernel: ip_tables: (C) 2000-2006 Netfilter Core Team oct 04 00:31:01 ubuntu-host systemd: systemd 237 running in system mode. oct 04 00:31:01 ubuntu-host systemd: Detected architecture x86-64. oct 04 00:31:01 ubuntu-host systemd: Set hostname to. oct 04 00:31:01 ubuntu-host systemd: Reached target User and Group Name Lookups. oct 04 00:31:01 ubuntu-host systemd: Created slice System Slice. oct 04 00:31:01 ubuntu-host systemd: Listening on Journal Audit Socket. oct 04 00:31:01 ubuntu-host systemd: Listening on Journal Socket. oct 04 00:31:01 ubuntu-host systemd: Mounting POSIX Message Queue File System... oct 04 00:31:01 ubuntu-host systemd: Started Read required files in advance. oct 04 00:31:01 ubuntu-host systemd: Starting Load Kernel Modules... oct 04 00:31:01 ubuntu-host kernel: EXT4-fs (sda1): re-mounted. Opts: commit=300,barrier=0,errors=remount-ro oct 04 00:31:01 ubuntu-host kernel: lp: driver loaded but no devices found oct 04 00:31:01 ubuntu-host kernel: ppdev: user-space parallel port driver oct 04 00:31:01 ubuntu-host kernel: parport_pc 00:02: reported by Plug and Play ACPI oct 04 00:31:01 ubuntu-host kernel: parport0: PC-style at 0x378 (0x778), irq 7, dma 3 [PCSPP,TRISTATE,COMPAT,EPP,ECP,DMA] oct 04 00:31:01 ubuntu-host kernel: lp0: using parport0 (interrupt-driven). oct 04 00:31:01 ubuntu-host systemd-journald: Journal started oct 04 00:31:01 ubuntu-host systemd-journald: Runtime journal (/run/log/journal/abb765408f3741ae9519ab3b96063a15) is 4.9M, max 39.4M, 34.5M free. 28 | learning.lpi.org | Licenciado sob CC BY-NC-ND 4.0. | Version: 2024-11-28 LPIC-1 (101) (Version 5.0) | 101.2 Lição 1 oct 04 00:31:01 ubuntu-host systemd-modules-load: Inserted module 'lp' oct 04 00:31:01 ubuntu-host systemd-modules-load: Inserted module 'ppdev' oct 04 00:31:01 ubuntu-host systemd-modules-load: Inserted module 'parport_pc' oct 04 00:31:01 ubuntu-host systemd: Starting Flush Journal to Persistent Storage... As mensagens sobre a inicialização e outras emitidas pelo sistema operacional são armazenadas em arquivos dentro do diretório /var/log/. Se ocorrer um erro crítico e o sistema operacional for incapaz de continuar o processo de inicialização depois de carregar o kernel e o initramfs, uma mídia de inicialização alternativa pode ser usada para iniciar o sistema e acessar o arquivo de sistemas correspondente. Depois disso, os arquivos em /var/log/ podem ser consultados em busca das razões causaram a interrupção do processo de inicialização. As opções -D ou --directory do comando journalctl servem para ler mensagens de log em diretórios diferentes de /var/log/journal/, que é a localização padrão para as mensagens de log do systemd. Como as mensagens de log do sistema não são armazenadas em texto puro, o comando journalctl é necessário para que fiquem legíveis. Version: 2024-11-28 | Licenciado sob CC BY-NC-ND 4.0. | learning.lpi.org | 29 LPIC-1 (101) (Version 5.0) | Tópico 101: Arquitetura de Sistema Exercícios Guiados 1. Em uma máquina equipada com firmware BIOS, onde está localizado o binário do bootstrap? 2. O firmware UEFI suporta recursos estendidos fornecidos por programas externos, chamados aplicativos EFI. Esses aplicativos, no entanto, têm seu próprio local especial. Em que lugar do sistema localizam-se os aplicativos? 3. Os gerenciadores de inicialização permitem a passagem de parâmetros personalizados do kernel antes de carregá-lo. Suponha que o sistema não possa inicializar devido a uma localização incorreta do sistema de arquivos raiz. Como o sistema de arquivos raiz correto, localizado em /dev/sda3, seria fornecido como parâmetro para o kernel? 4. O processo de inicialização de uma máquina Linux termina com a seguinte mensagem: ALERT! /dev/sda3 does not exist. Dropping to a shell! Qual a causa provável desse problema? 30 | learning.lpi.org | Licenciado sob CC BY-NC-ND 4.0. | Version: 2024-11-28 LPIC-1 (101) (Version 5.0) | 101.2 Lição 1 Exercícios Exploratórios 1. O carregador de inicialização apresenta uma lista de sistemas operacionais a escolher quando houver mais de um sistema operacional instalado na máquina. No entanto, um sistema operacional recém-instalado pode sobrescrever o MBR do disco rígido, apagando o primeiro estágio do gerenciador de inicialização e tornando o outro sistema operacional inacessível. Por que isso não aconteceria em uma máquina equipada com um firmware UEFI? 2. Qual é uma consequência comum de se instalar um kernel personalizado sem fornecer uma imagem initramfs apropriada? 3. O log de inicialização tem centenas de linhas, portanto a saída do comando dmesg é frequentemente canalizada para um comando de paginação — como o comando less — para facilitar a leitura. Qual opção do dmesg faz automaticamente a paginação da saída, eliminando a necessidade de usar explicitamente um comando de paginação? 4. Um disco rígido contendo todo o sistema de arquivos de uma máquina offline foi removido e conectado a uma máquina operacional como drive secundário. Supondo que seu ponto de montagem seja /mnt/hd, como o journalctl seria usado para inspecionar o conteúdo dos arquivos de diário localizados em /mnt/hd/var/log/journal/? Version: 2024-11-28 | Licenciado sob CC BY-NC-ND 4.0. | learning.lpi.org | 31 LPIC-1 (101) (Version 5.0) | Tópico 101: Arquitetura de Sistema Resumo Esta lição aborda a sequência de inicialização em um sistema Linux padrão. O conhecimento adequado de como funciona o processo de inicialização de um sistema Linux ajuda a evitar erros que podem tornar o sistema inacessível. A lição tratou dos seguintes tópicos: Diferença entre os métodos de inicialização da BIOS e da UEFI. Estágios típicos da inicialização do sistema. Recuperação de mensagens de inicialização. Os comandos e procedimentos abordados foram: Parâmetros comuns do kernel. Comandos para ler mensagens de inicialização: dmesg e journalctl. 32 | learning.lpi.org | Licenciado sob CC BY-NC-ND 4.0. | Version: 2024-11-28 LPIC-1 (101) (Version 5.0) | 101.2 Lição 1 Respostas aos Exercícios Guiados 1. Em uma máquina equipada com firmware BIOS, onde está localizado o binário do bootstrap? No MBR do primeiro dispositivo de armazenamento, como definido no utilitário de configuração da BIOS. 2. O firmware UEFI suporta recursos estendidos forn