Home
nesse link - Brod Tecnologia
Contents
1. Figura 6 Alterando posi es de mem rias Uma vez completas as suas altera es tecle ESC para sair do programa e pressione uma tecla qualquer para voltar ao menu inicial Agora como mostra a figura 7 no topo da tela do MikeOS voc deve ver Aprendendo MikeOS Machine View Aprendendo Mike0S Please select a file using the cursor keys from the list below KERNEL BIN EDIT BIN FILEMAN BIN HANGMAN B IN KEYBOARD BIN MONITOR BIN SERIAL BIN UTEWER BIN ADUNTURE BAS CALC BAS CF BAS DRAW BAS EXAMPLE BAS MBPP BAS Version 4 5b1 P gina 42 de 45 Figura 7 Aprendendo MikeOS Tipicamente voc n o deve fazer altera es diretamente na mem ria de um sistema operacional em execu o Por outro lado importante a familiaridade com esse tipo de procedimento uma vez que ele pode ajudar bastante na depura o de c digos Idealmente as mudan as devem ser feitas nos arquivos fonte no caso do MikeOS nos arquivos asm e o nasm deve ser usado para a gera o dos programas em c digo bin rio Repare na pasta onde voc descompactou o MikeOS a estrutura de diret rios mikeos Is la grep d drwxr xr x 6 brod brod 4096 Mai 8 20 44 drwxr xr x 78 brod brod 36864 Jul 11 09 30 drwxr xr x 2 brod brod 4096 Mai 8 20 44 disk_images drwxr xr x 2 brod brod 4096 Mai 8 20 40 doc drwxr xr x 2 brod brod 4096 Mai 8 20 38 programs drwxr xr x 4 brod brod 4096 Mai 8 20 08 source O comando s lista
2. o a seguir ORG 0x7C00 posicao em que o codigo sera colocado na memoria Um conjunto muito grande de circuitos l gicos neste momento ser configurada para carregar no registrador AX o valor e o apontador de instruc o seguir para o endereco onde encontra se a instruc o seguinte Na execuc o do programa este endereco ser somado ao endereco que o mostra na coluna esquerda para esta instru o em base hexadecimal Como dissemos antes na linha a qual estamos agora poder amos representar 288 o n mero de setores que reservamos para nossos dados tempor rios e segmento de dados no formato hexadecimal assim que o hte mostra esta linha para n s usando o caractere x apenas para uma desambigua o visual expl cita O n mero 07c0 exibido pelo hte obviamente hexadecimal cont m o caractere c J 0120 poderia ser interpretado como n mero decimal e por isso o x usado apenas para explicitar que ele hexadecimal O valor que est no registrador AX quando o programa chega a este ponto a soma dos n meros hexadecimais 07C0h e 0120h 288 em decimal Se voc n o tem familiaridade com as nota es bin rias e hexadecimais a pr tica no mundo dos sistemas operacionais far com que voc a adquira Por algum tempo talvez voc queira usar um conversor como o que est neste link http www mathsisfun com binary decimal hexadecimal converterhtml para fazer seus c lculos sempre com os n mero
3. o recebida a partir de um dispositivo Vale tamb m ressaltar o registrador DS respons vel por armazenar o segmento de dados que acessado por seu programa Voc j deve ter notado que tudo o que sucede o ponto e v rgula n o ser interpretado pelo assembler s o apenas coment rios para a leitura por humanos com o intuito de elucidar o c digo P gina 21 de 45 Na linha seguinte adicionamos o valor 288 poder amos ter escrito 120h para a sua representa o hexadecimal ao conte do do registro AX ao qual hav amos atribu do o valor zero add ax 288 4096 512 16 bytes por paragrafo Mais adiante quando falarmos sobre gerenciamento de mem ria no cap tulo 5 isto ficar mais claro Por enquanto contente se em saber que por padr o a mem ria organizado em segmentos de 16 bytes de oito bits cada chamados de par grafos Queremos reservar um espa o ap s o nosso programa onde estar a nossa pilha stack de 512 bytes para os dados tempor rios e onde posicionaremos um segmento de dados de 4Kbytes 4096 bytes Somamos os dois e dividimos por dezesseis para saber quantos segmentos em par grafos de 16 bytes s o necess rios Vamos botar a m o na massa para entender melhor como isso funciona A partir deste momento presumimos que voc j tem uma distribuic o Linux instalada em seu computador preferencialmente a Linux Mint 17 Xfce ou mais nova que foi usada como base em todos os testes e exempl
4. lendo esta introdu o justamente porque topei a parada Sou virginiano Apesar de n o acreditar em astrologia tenho que admitir que sou a inst ncia perfeita de todos os atributos e m todos da classe que define meu signo Encaro um livro como um projeto gil com o product backlog definido na forma de seu ndice onde junto com os assuntos que domino coloco outros sobre os quais ainda tenho que aprender mais antes de ousar escrever sobre eles Desta forma desafio me com o prazer de sempre aprender algo novo intercalado com a exposi o daquilo que j sei Neste processo sempre descubro que ainda tenho que aprender muito mais sobre o que julgo saber para assim poder transmitir o conhecimento de forma simples Dizia Einstein que se n o conseguimos explicar algo de maneira simples porque n s mesmos n o entendemos direito esse algo Na constru o do ndice com o nome dos cap tulos que seriam posteriormente recheados baseei me em duas coisas ementas da disciplina de sistemas operacionais de v rios cursos de tecnologia de institui es de ensino brasileiras e na maneira como eu mesmo aprendi sobre sistemas operacionais Tive a grata oportunidade de ser exposto uma boa variedade se sistemas operacionais na minha vida profissional Os primeiros foram os das m quinas registradoras eletr nicas program veis da NCR meu primeiro emprego na rea de TI Depois conheci o OS 370 da IBM e muitos anos depois tive a oportunida
5. pr pria metodologia que fui desenvolvendo ao longo de muitos anos para a minha pr pria aprendizagem continuada Entre 1999 e 2006 trabalhei diretamente com um grupo de excelentes profissionais e simultaneamente estudantes que foram e muitos ainda s o a base da Solis Cooperativa de Solu es Livres http solis coop br Em v rias ocasi es participei com estes amigos de sess es de estudo em finais de tarde na pr pria sede da Cooperativa Ao final de uma dessas sess es o Nasair J nior da Silva e a Joice K fer que tornou se minha s cia em 2006 disseram me que simplesmente ao mostrar como um microcontrolador pensava propondo um pequeno jogo onde as pessoas representavam o ambiente de execuc o de um programa assumindo o papel de registradores e ndices substituindo ou incrementando seus valores muitas coisas ficaram claras para eles Em muitos outros momentos percebi que apresentar perspectivas pr ticas mesmo que elas possam parecer complexas a princ pio como apresentar pequenas chaves que faltavam para uma compreens o te rica que parecia estar bloqueada e com isso permitir a consolida o de conhecimentos b sicos que permitem novos passos adiante Assim respire fundo a cada nova ferramenta que este livro prop e Dentre todas as apresentadas voc descobrir quais ser o mantidas em seu cinto de utilidades e quais voc poder deixar guardadas em sua garagem sabendo que elas est o l para
6. capaz de emular uma ampla variedade de processadores e sistemas neles baseados auxiliando muito no desenvolvimento de sistemas operacionais ou quaisquer outros tipos de software que possam rodar nas mais diversas configura es Se voc executar gemu system i386 help ter uma lista da ampla variedade das op es que o programa permite Pagine esta lista encadeando a para um comando more ou less e use um pouco de seu tempo para averiguar as op es qemu system i386 help more qemu system i386 help less Quando voc encadeia a sa da para o comando more voc passa para as p ginas seguintes pressionando a barra de espacos O comando less permite mais interatividade permitindo a paginac o abaixo e acima com as teclas Page Up Page Down assim como as setas para cima e para baixo Al m disso voc pode fazer buscas textuais dentro de uma paginac o com o less teclando a barra e digitando um trecho da palavra que est procurando Use fla e tecle Enter para descobrir o que a chave fda que voc usou no comando com o qual evocou o QEMU Para sair de uma paginac o com o comando less tecle a letra q Voc usou a chave fda para carregar a imagem de disquete disquete img no primeiro disquete do sistema mas certamente observou na janela de emula o do QEMU que a primeira op o do emulador era o disco r gido o que primeiro gerou um erro fazendo com que o QEMU ent o tentasse o disquete com sucesso Experimente us
7. around the World de Jon maddog Hall uma iniciativa internacional que busca a conscientiza o e dissemina o do uso de software livre Entre os anos de 2011 e 2012 Cesar atuou como Coordenador Geral de Inova es Tecnol gicas do Minist rio do Planejamento do Brasil onde entre outras fun es esteve frente do Portal do Software P blico Brasileiro e da Infraestrutura Nacional de Dados Abertos al m de ter atuado em processos de padroniza o de solu es Desde meados dos anos 1990 Cesar passou a acompanhar o Manifesto gil e a adotar pr ticas como o Extreme Programming e o Scrum para promover equipes autogerenci veis e o desenvolvimento de projetos P gina 3 de 45 Introdu o Este livreto parte de meu livro sobre sistemas operacionais ainda em elabora o O livro sobre sistemas operacionais por sua vez resultado de uma provoca o de meu editor o Rubens Prates Enquanto trabalh vamos nos ajustes finais de Aprenda a Programar a arte de ensinar ao computador Novatec 2013 ele sugeriu me que eu usasse a mesma forma did tica para trabalhar o tema de Sistemas Operacionais tomando o Linux como base Relutei a princ pio H tantos livros bons sobre o assunto que eu n o acreditava na necessidade de mais um Ao trazer o assunto para dentro de casa minha fam lia incentivou me dizendo Simples Fa a com que o seu livro n o seja s mais um N o foi claro t o simples assim mas voc est
8. de espa o em disco crie uma nova m quina virtual no VirtualBox com no m nimo 512 Mbytes de mem ria um disco de oito gigabytes e d o boot com uma imagem de CD que voc pode baixar dos v rios sites das distribui es Linux Uma lista bastante completa destas distribui es pode ser encontrada no portal Distrowatch com Minha recomenda o pessoal o Linux Mint em sua vers o Xfce que pode ser baixada a partir do portal LinuxMint com e P gina 11 de 45 que fornece um bom meio termo entre usabilidade e economia de recursos de m quina Se sua m quina tiver pouca capacidade de mem ria dois gigabytes ou menos o melhor voc instalar o Linux ao lado do sistema operacional que voc j utiliza e escolher no momento em que a liga qual o sistema que ir usar A maioria das distribui es Linux modernas oferecem a voc esta op o de instala o a partir do boot inicializa o atrav s de um CD ou DVD Se voc tiver uma m quina antiga ou se algum parente ou amigo puder fornecer uma pra voc h muitas distribui es Linux que funcionam muito bem e m quinas mais antigas e com menos recursos O portal The Gaea Times fez uma lista muito informativa com as dez melhores distribui es minimalistas do Linux que podem rodar em m quinas com poucos recursos ou mesmo diretamente atrav s de uma pendrive http tech gaeatimes com index php archive 10 best minimal low footprint linux distros Se al m de
9. ela aparece precedida de Como o n mero depois desta sequ ncia vari vel h uma boa probabilidade que B8 seja o c digo hexadecimal que diz ao processador para carregar o valor no registrador Note que abaixo da janela h um conjunto de op es que podem ser acessadas a partir das teclas de fun o a dependendo de seu emulador de terminal pode ter alguma outra fun o designada pela janela que o cont m e n o ir surtir o efeito desejado de fechar o hte neste caso use a combina o de teclas e C ou para acessar o menu superior e escolher a op o Quit para sair do programa Use a tecla para selecionar a visualiza o no formato disassembler da arquitetura x86 e para usar o modo 16 bits A figura 3 mostra que suas suspeitas est o comprovadas P gina 23 de 45 File Edit Windows Help Local Disasm 15 26 20 06 2014 ropbox Brod Rubens Sistemas Operacionais Programas loader2 bin 2 b80000 0x0 052001 0x120 8edo bc0010 b80000 0x0 8ed8 bel87c e81100 ebfe 46 756e 63696f 6e 6f 7521 203a 244400 b40e ac 3c00 2save 3 6 7 8 9 O 4 Figura 3 A engenharia reversa do c digo bin rio do arquivo bootloader bin no hte Voc j sabe que no final das contas seu processador recebe estas instru es em c digo bin rio e que depois que o BIOS carregar este programa na mem ria o endereco conter a instru o Bs Lembre se que voc especificou esse endere o para o assembler com a instru
10. funcionam no limiar entre o hardware e o software Se voc j tem familiaridade com este assunto pode tranquilamente saltar para o pr ximo cap tulo A primeira coisa que voc deve saber que os componentes de um computador seu processador mem ria e dispositivos de entrada e sa da de dados s entendem um tipo de informa o algo est desligado ou ligado e isso representado pelos n meros 0 e 1 respectivamente por isso que voc ouve que um processador de 8 16 32 64 bits que uma mem ria tem um barramento de 16 32 bits e assim por diante No fim das Z contas cada um destes bits um sinal que pode estar ligado ou desligado Um processador que tenha oito pinos para o endere amento de mem ria pode acessar diretamente at 256 posi es de mem ria o zero conta como uma posi o tamb m Cada posi o de mem ria pode conter palavras de 8 16 32 bits e assim por diante Para facilitar nossa comunica o com os componentes do computador que s sabem contar e representar dados com os n meros 0 e 1 usamos tabelas de convers o e representa o A tabela 1 mostra a convers o entre n meros de base bin ria para os formatos hexadecimal e decimal A convers o da base bin ria para a decimal feita atrav s da soma de todos os componentes 2 onde Y a posi o do bit onde tal bit est ligado ou seja tem o valor 1 A posi o do bit contada da esquerda para a direita come ando por 0 D
11. gerado Quando encontra BITS 16 nesta linha ele gerar o c digo para a arquitetura x86 de 16 bits ORG 0x7C00 A posicao em que o codigo sera colocado na memoria Na arquitetura x86 o endere o hexadecimal 07C00 onde os programas come am a ser carregados As posi es antes deste endere o est o reservadas para o BIOS start P gina 20 de 45 As palavras que terminam com dois pontos s o marcadores que referenciam rotinas ou simplesmente trechos importantes do programa Esta linha start por exemplo identifica o in cio do programa mov ax 0 Reserva um espa o de 4Kbytes apos o bootloader Este comando move para dentro do registrador de uso geral Ax o n mero zero O coment rio voc entender a seguir Registradores s o estruturas de mem ria internas do processador Os processadores da fam lia x86 possuem os seguintes registradores Registradores de uso geral Identificados pelos nomes AX BX CX e DX cada um destes registradores pode armazenar um n mero de 16 bits ou seja n meros bin rios entre 0000000000000000 e 1111111111111111 n meros hexadecimais entre 0000 e FFFF n meros decimais entre 0 e 65535 Se necess rio cada um destes registradores pode ser tratado como dois registradores de 8 bits ent o identificados como AH e AL BH e BL e assim por diante Registradores de indice Os registradores si Source Data Index ndice de origem de dados e DI Destination Data Index ind
12. ncias Os computadores modernos t m o BIOS gravado em mem rias que podem ser reescritas permitindo a sua atualiza o Isso quer dizer que al m de escrever seu pr prio sistema operacional voc pode escrever seu pr prio BIOS O projeto Coreboot http www coreboot org por exemplo visa substituir BIOS propriet rios fornecidos pelos fabricantes de processadores por um BIOS totalmente aberto que pode ser modificado por aqueles que o desejarem Como de costume siga para a pr xima instru o no gdb e acompanhe o que acontece no QEMU qemu x i eip 0x00007c29 lods ds si al Note a instruc o de nosso programa lodsb Pega um caracter da frase Ela foi expandida para uma instru o mais completa 0x00007c29 lods ds si al P gina 35 de 45 A instru o lods usada para processar uma cadeia de caracteres um caractere por vez a partir de uma fonte a posi o de mem ria apontada pelo registrador si e um destino o registrador ds e a coloca na posi o inferior do registrador ax no caso al Lembre se o registrador iP EP armazena a instru o que ser executada Assim fa a com que o gdb avance para o pr ximo passo e acompanhe o que acontece com os registradores Ip DS SI e Ax Usei o comando info registers no QEMU e a seguir reproduzo um extrato de sua sa da a cada passo dado si no gdb qemu x i eip 0x00007c29 lods ds si al qemu info registers EAX 0000
13. o tratamento de mem ria todos est o no mesmo espa o de usu rio O HURD kemel do sistema operacional GNU o Minix e o sistema operacional do tablet Blackberry usam este tipo de arquitetura de kernel Arquitetura h brida A partir da vers o Windows NT a Microsoft passou a adotar uma arquitetura h brida de kernel misturando os conceitos das arquiteturas monol tica e h brida com alguns servi os do kernel rodando em espa o de usu rio e outros em espa o do kernel Linus Torvalds e outros defendem que esta n o uma arquitetura h brida de fato mas sim escolhas de levar para o espa o de usu rio algumas das fun es de um kernel de fato monol tico Sou da mesma opini o A escolha entre uma arquitetura ou outra quase pessoal j que ambas t m suas P gina 16 de 45 vantagens e desvantagens Um microkernel em teoria mais f cil de ser portado para diversos tipos de processadores uma vez que a por o que interage diretamente com o hardware reduzida Um kernel monol tico tem em teoria maior desempenho j que dentro dele j est o todos os componentes necess rios para a comunica o com o hardware Na pr tica mesmo com um kemel monol tico o Linux est portado para diversas plataformas P gina 17 de 45 Falando com o hardware Antes de explorar o sistema operacional Linux conveniente que voc conhe a melhor a arquitetura de seu computador para ter uma compreens o melhor de como as coisas
14. o texto Funcionou D 0 Siga para o pr ximo passo e confira no QEMU o que est acontecendo qemu x i eip 0x00007c13 call 0x7c27 P gina 34 de 45 O endere o 7C27h onde o compilador colocou a nossa rotina de impress o de caracteres na tela D mais um passo no gdb qemu x i eip 0x00007c27 mov 0xe ah Repare que da posi o de mem ria 7C13h o apontador de instru o saltou para a posi o 7C27h conforme instru do pela instru o call anterior Nessa posi o temos a instru o mov ah 0Eh que o compilador traduziu para mov 0xe ah Essa instru o chama uma subfun o dos servi os de v deo do BIOS Ela trabalha em conjunto com a instru o int 10h que est mais adiante em nosso bootloader e quem efetivamente colocar os caracteres na tela J falamos sobre o BIOS mas bom ressaltar que ele um sistema operacional b sico que existe em qualquer computador Ele est carregado antes do endere o 7C00h e j oferece uma s rie de fun es que voc pode utilizar em seu pr prio sistema operacional como a que estamos usando para imprimir caracteres na tela Conhe a todas as fun es do BIOS 8086 nesse link http www computing dcu ie ray teaching CA296 notes 8086 bios and dos interrupts html Que tal fazer por exemplo com que o emoticom D logo ap s a palavra Funcionou fique piscando em sua tela Leia a lista de interrup es apresentada no link e fa a suas experi
15. quando voc precisar Agora fecho o par ntesis e vamos adiante O QEMU assim como o VirtualBox que voc j instalou e usou um emulador de processadores e computadores Por ter suas ra zes em ambientes de apoio a experimenta o e desenvolvimento o QEMU pode n o ter uma interface muito amig vel ao usu rio final mas esta interface bastante completa e em conjunto com o depurador gdb permitir a voc a execu o passo a passo de um programa instru o por instru o permitindo que voc tire uma radiografia de todos os componentes internos importantes de sua m quina Agora que voc j tem ambos instalados vamos seguir com nossas experi ncias descobrindo se o valor no registrador AX mudou at agora de acordo com o esperado Para come ar vamos simplesmente rodar o QEMU para que ele inicie uma m quina com P gina 26 de 45 a nossa imagem de disquete Isto feito atrav s da linha de comando qemu system i386 fda disquete img Claro que neste caso o QEMU deve ser executado na mesma pasta onde est a imagem de disquete que geramos Voc deve ter visto uma janela com a sua m quina emulada abrir com a informa o exibida na figura 3 bem similar que voc viu quando usou o VirtualBox beaBIOS version 1 7 2 20130119 170942 roseapple iPXE http ipxe org 00 03 0 C900 PCIZ 10 PnP PMM 07FC4560 07F24560 C900 Booting from Hard Disk Boot failed could not read the boot disk Booti
16. 0 00 ESI 00007c18 DS 0000 00000000 0000ffff 00009300 qemu x i eip 0x00007c2a cmp 0x0 al qemu info registers EAX 00000 46 ESI 00007c19 DS 0000 00000000 0000ffff 00009300 Repare que comegamos a percorrer a cadeia de caracteres um a um armazenados nas posi es de mem ria indicados pelo apontador de pilha SI os carregamos na parte inferior do registrador AX AL ou seja preste aten o apenas aos n meros direita de EAX e comparamos com o n mero O zero Caracteres s o representados pela nota o ASCII American Standard Code for Information Interchange c digo americano padr o para a troca de informa es http www asciitable com Assim repare o que est armazenado a partir da posi o de mem ria 7C18H o c digo ASCII correspondente e o que armazenado em AL na medida em que o programa avan a preenchendo a tabela a seguir P gina 36 de 45 Mem ria hex Caractere ASCII AL 7C18 F 46 0e46 7C19 7C1A 7C1B 7C1C 7C1D 7C1E 7C1F 7C20 7C21 7C22 7C23 7C24 7C25 7C26 No passo seguinte como o que estava no registrador AL era 0e46 e n o zero 0 programa salta o endere o 7032h e mais um passo vemos que ele entrou na interrup o de impress o qemu x i eip 0x00007c2e int 0x10 Agora durante v rios passos as instru es exibidas pelo comando x i eip est o longe de corresp
17. 0000000000000000000000 XMM06 00000000000000000000000000000000 XMM07 00000000000000000000000000000000 qemu Voc consegue localizar nesse resultado os registradores que usou em seu programa Para ajudar use uma tabela para anotar os valores que est o nos registradores na medida em que executa passo a passo o seu programa Anote os valores para a posi o inicial Paused e ap s voc teclar c de continue no prompt do gdb Bootloader QEMU In cio 7C00h ax EAX 00000000 0000aa55 ss SS 0000 00000000 0000ffff 00009300 0000 00000000 0000ffff 00009300 Sp ESP 00000000 00006f20 ds DS 0000 00000000 0000ffff 00009300 0000 00000000 0000ffff 00009300 si ESI 00000000 00000000 ah EAX H 0000 0000 ip EIP 0000fffO 00007c00 A posi o dos registradores no ponto de parada 7C00h que voc definiu no QEMU a posi o em que o BIOS nos deixa antes do nosso programa ser iniciado repare no registrador ip o apontador de instru o O que vamos fazer agora anotar o que acontece com os registradores relevantes na medida em que o nosso bootloader executado No terminal onde voc est rodando o gdb execute o comando stepi step instruction d um passo para a pr xima instru o Voc deve observar algo parecido com este gdb stepi 0x00007c03 in Seu programa executou uma instru o e avan ou para a posi o de mem ria seguinte 7C03h Vamos ver o que aconteceu com os reg
18. 00007c0e in No QEMU confira o comando que acaba de ser executado e verifique o conte do do registrador que acaba de ser alterado qemu x i eip 0x00007c0e mov ax ds qemu print ds 0 Confere certo Voc havia colocado zero no registrador ax na instruc o anterior mov ax 0 e agora moveu o conte do do registrador ax para dentro do registrador ds mov ds ax Que tal voc largar esse livro agora e tentar acompanhar o resto da execuc o do programa por sua conta N o se preocupe se algo der errado Voc sempre pode comecar tudo de novo e claro a partir do par grafo seguinte continuaremos depurando em conjunto nosso programa Se voc topou a proposta de experimentar sozinho os pr ximos par grafos servir o como uma revis o N o deixe de usar a tabela para anotar a evoluc o dos conte dos de seus registradores P gina 33 de 45 Uma proposta de trabalho em grupo Em sua sala de aula ou grupo de estudos fa a com que algumas pessoas fa am os pap is de registradores incluindo a pilha e o apontador da pilha Outra pessoa ser a respons vel por executar passo a passo o programa retirando uma a uma as instru es de uma caixa Recorte quadrados de papel com todos os dados que voc utilizar Assim na primeira instru o o executor pegar um papel onde est escrito o n mero O zero e o entregar para a pessoa que representa o registrador ax Se voc est trabalhando sozinho use caixa
19. 74 04 cd 10 u D lt t eb f7 c3 00 00 00 00 00 00 00 00 00 00 00 00 00 77 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 n 25ave 33 5 6 7 8resize 9 0 j Figura 2 Tela do editor hte exibindo os conte dos do arquivo bootloader bin Note que em cada linha voc tem representado um segmento um par grafo de 16 bytes Bem esquerda voc tem o endere o inicial do segmento seguido pelos 16 bytes de conte do e terminando com a interpreta o que o tentou fazer de cada um dos bytes De imediato voc deve ter reparado na frase Funcionou D mas observando mais atentamente no segundo e no terceiro byte voc tem 00 00 Mais adiante na mesma linha a sequ ncia 00 00 se repete e em ambos os casos
20. Introdu o a depura o de sistemas com softwares livres Cesar Brod outubro de 2014 brodtec com sysvale com Sum rio SOBRE O AUTO A casais RIT RCC TRT RT DONT CELT I 3 INTO UC ir RR PRQ a E IALIA it 4 Criando um ambiente para desenvolvimento e testes i 6 A A O 10 A A O 14 TOS Na iii ilo ai 16 Argd itet ra MOMO ES alla ola 16 Arquitetura microkernel sam ass seis rr esta id ama ada 16 Arquitetura DO orador Rd a E RANA 16 Falando comio hardWarea ir A A O A i 18 A O 20 Um sistema operacional em ASSEemMDIY 39 O suprassumo do baga o do TOS Oir edi 44 P gina 2 de 45 Sobre o autor Cesar Brod atua na rea de inform tica desde 1982 Sua forma o profissional se deu em grande parte nos Estados Unidos Canad e Fran a Come ou a trabalhar com o Linux em 1993 e desde 1997 desenvolve atrav s da BrodTec servi os de consultoria gest o de projetos e cria o de modelos de neg cios que t m por base softwares de c digo aberto Presen a constante em eventos relacionados tecnologias livres no Brasil e no exterior Cesar foi respons vel entre agosto de 2006 e fevereiro de 2009 pela gest o de projetos dos Innovation Centers de Interoperabilidade e Open Source apoiados pela Microsoft na UFRGS Universidade Federal do Rio Grande do Sul e Unicamp Universidade Estadual de Campinas o idealizador e um dos fundadores da Solis Cooperativa de Solu es Livres e membro do projeto Linux
21. S Please 40 Goto Location elect an interf 50 ce OK for the 60 rogram menu Ca 70 Enter a hexdecimal memory address to ficel for command 80 go to between 0000 and FFFF line 3k8 Of 90 gt 160 IS ELO tr Ve lt ce sH ef BO NN rajlo lt u9 e CO o 2787 il DO BE 00 00 BF 00 00 E8 BZ 7D E8 AA po EO EO 02 BB 07 03 B9 2D 03 BA 00 00 Sea 308 e Fo i A O di 0123456789ABCDEF Use the arrow keys to move around G for GOTO Enter to change a value Y for page up Z for page down O to Save and L to load file into memoru Figura 5 Usando o Memory Manipulator Com cuidado substitua a express o Welcome to MikeOS por Aprendendo MikeOS Voc ter que usar uma tabela ASCII Posicione o cursor em cada letra que quiser mudar e use o novo c digo ASCII correspondente Compare com a figura 6 e tome muito cuidado para n o mudar nada que n o seja de fato um caractere De outra forma voc poder estar bagun ando o pr prio sistema operacional ainda assim n o se preocupe muito com isso Lembre que voc est em uma m quina virtual QEMU Se algo der errado basta come ar tudo de novo P gina 41 de 45 Machine View O 91 9580 fF pren dend Mike0S Ver sion 4 5b1 Thank s for trying out Mike0S t Please select an interf ace OK for the program menu Ca ncel for command line 3k073051f Sf Simt 6 E GtreVe lt e 5H e E NNN Si lt u9 e J ERES 1 d q dio 30 7 B7 v7 0
22. a se em um constante desafio intelectual apresentando caminhos para aprofundamentos diversos que n o cabem nos limites pr ticos de um nico livro O conte do que disponibilizo agora s o as partes do livro relativas a uma introdu o linguagem assembly e depura o de programas nessa linguagem usando o emulador QEMU e o depurador gdb Fa o isso como incentivo queles que querem participar do concurso de porte e performance de m dulos do kernel Linux promovido pela Linaro performance linaro org Note que esse livreto n o vai ensinar tudo a voc sobre a linguagem assembly mas ele uma introdu o suave para ela e para a arquitetura de computadores Para seguir adiante recomendo a leitura das demais fontes citadas em Leitura Complementar ao final deste livreto P gina 5 de 45 Criando um ambiente para desenvolvimento e testes Voc n o vai ficar desligando e ligando o seu computador nas v rias experi ncias deste livro Voc ir trabalhar em um ambiente virtualizado uma m quina dentro da sua m quina um computador virtual Assim se algo der errado e acredite me algo dar errado voc pode simplesmente destruir seu ambiente virtual e come ar tudo de novo deixando a sua m quina real intacta Caso voc tenha chegado a este livro depois de ter lido o Aprenda a programar a arte de ensinar ao computador Novatec 2013 ou se de alguma outra forma voc tem conhecimento pr tico sobre m quinas virtuais p
23. alBox Se tudo deu certo voc deve visualizar uma janela como a mostrada na figura 1 P gina 12 de 45 M quina Visualizar Dispositivos Ajuda uncionout D CTOTa PAO RES Ctrl Direito Figura 1 Seu programa bootloader rodando na m quina virtual O nome bootloader apenas uma conven o Traduzindo para o portugu s algo como carregador inicial e ele tipicamente o programa respons vel por carregar todos os demais componentes do sistema operacional Nada impede como voc acabou de ver que escrevamos um programa que n o fa a nada Ele ser executado a partir de uma imagem de disquete desde que a ltima palavra do primeiro setor de 512 bytes do disquete seja o que explica a ltima linha de nosso c digo Se voc conhece um pouco de Assembly os coment rios do programa adaptado de um tutorial sobre o sistema MikeOS que voc conhecer melhor no pr ximo cap tulo que escreveu Funcionou D na tela de seu computador devem ser esclarecedores o suficiente Mas n o se preocupe muito com isso agora Adiante falaremos mais sobre Assembly e linguagem de m quina Se voc tiver o esp rito aventureiro e gostou da brincadeira de interagir diretamente com seu computador a melhor fonte de informa es sobre o assunto o livro Art of Assembly Language de Randall Hyde No Starch 2010 que est dispon vel na ntegra no seguinte endere o web P gina 13 de 45 O kernel A primeira coisa que o bo
24. ama de n o ter encontrado nada para iniciar o computador Vamos dar ent o ao BIOS um motivo a menos para reclamar Voc deve ter em mente que quem ir processar as suas instru es ser um processador o c rebro de seu computador e ele s entende da chamada linguagem de m quina Assim independente da linguagem na qual voc escrever os seus programas no fim das contas o processador estar executando uma vers o dos mesmos na sua pr pria linguagem de m quina A tradu o entre uma linguagem de programa o qualquer para a linguagem de m quina chamada de compila o O exerc cio que faremos agora requer que voc instale o NASM The Netwide Assembler Verifique na p gina do projeto http www nasm us qual a vers o mais recente e instale o programa que corresponda ao seu sistema operacional Usu rios de Linux podem instalar o NASM a partir de seus reposit rios tradicionais Usu rios das distribui es baseadas no Debian como o Ubuntu o Linux Mint e v rias outras podem simplesmente instalar o NASM com um nico comando no terminal sudo apt get install nasm Sempre que voc instalar um novo software seu gerenciador de pacotes ou o programa apt get poder o apresentar uma s rie de depend ncias que precisam ser atendidas e sugerir o quais s o elas Voc deve aceit las sempre confirmando quando solicitado Use seu editor de texto preferido e digite o c digo a seguir BITS 16 Instrui ao compi
25. ar o comando grep para filtrar a ajuda do QEMU e descobrir como alterar a ordem do boot qemu system i386 help grep boot Uma solu o que far com que o sistema seja iniciado sem erros a seguinte qemu system i386 fda disquete img boot a Agora queremos que o QEMU execute nosso pequeno programa de inicializa o passo a passo para que possamos acompanhar o que acontece nos registradores Para isso vamos usar algumas chaves adicionais Se voc ainda est com a janela de emula o do QEMU aberta feche a Na p gina oficial do QEMU e com o uso da chave help voc ter muito mais informa es sobre o uso do programa Desta forma os pr ximos passos s o um resumo do que voc precisa fazer para que possamos atingir o nosso objetivo Vamos usar o monitor do QEMU para exibirmos os registradores do processador e o gdb para configurarmos o ponto a partir do qual queremos executar nosso programa passo a passo Primeiro o comando para o QEMU com suas respectivas chaves qemu system i386 fda disquete img boot a s S monitor stdio A chave s uma abreviatura conveniente para gdb tcp 1234 que instrui ao QEMU que passe informa es e receba comandos de depura o do gdb atrav s da porta TCP 1234 voc ler mais sobre protocolos de rede e portas no cap tulo 4 Rede A chave S faz com que a m quina inicie parada aguardando por um comando seu para que comece a execu o do P gina 28 de 45 sistema A chave monitor
26. by ele n o ser grande e profissional como o gnu para clones do AT 386 486 Isto vem sendo desenvolvido desde abril e est come ando a ficar pronto Gostaria de quaisquer opini es sobre o que as pessoas gostam e n o gostam no minix j que meu SO um tanto similar o mesmo leiaute f sico do sistema de arquivos por quest es pr ticas dentre outras P gina 14 de 45 coisas A hist ria do Linux por Linus Torvalds pode ser lida neste link http www cs cmu edu awb linux history html P gina 15 de 45 Tipos de kernel Em 1992 comecei a trabalhar na Tandem Computers hoje a divis o de sistemas NonStop da HP Na empresa fiz cursos sobre os sistemas operacionais Unix e Guardian Um dos livros de refer ncia recomendado pelos instrutores era o rec m lan ado Modern Operating Systems de Andrew S Tanenbaum Prentice Hall 1992 Hoje este livro j est em sua terceira edi o e tem tradu o para o portugu s Por causa deste livro conheci o grupo de not cias comp os minix e atrav s dele o Linux O Linux permitiu me que eu pudesse testar v rios softwares dispon veis para o sistema Unix comercializado pela Tandem baseado no Unix SVr4 da AT amp T em meu laptop antes de instal los nos clientes que adquiriam os computadores Na poca a nica raz o de eu ter instalado o Linux em vez do Minix em minha m quina foi a maior facilidade de instala o do primeiro A leitura das me
27. chamado bootloader bin Antes de podermos test lo lembre se que na mensagem de erro que voc recebeu do BIOS reclamava da falta de uma m dia inicializ vel bootable media Voc precisa converter este arquivo execut vel para um formato que sirva para a m quina virtual como uma m dia de disquete No Linux voc far isso com o seguinte comando dd if bootloader bin of disquete img count 1 bs 512 O dd converte o arquivo de entrada especificado pela chave if para o arquivo de sa da especificado pela chave of usando o operando bs para dizer que o arquivo ser escrito em blocos de 512 bytes copiando um byte por vez conforme define o operando count a partir do arquivo de origem Estes n meros tem a ver com a geometria do disquete virtual para o qual voc est copiando seu bootloader Caso voc n o tenha familiaridade com o comando dd n o se preocupe em entend lo integralmente agora No Windows voc deve baixar um programa como o Winlmage http www winimage com ou outra alternativa para criar a imagem do disquete Um par ntesis voc j sabe que este livro adotou o Linux como o padr o para os exemplos que ser o usados em nosso aprofundamento sobre sistemas operacionais Por que n o aproveitar a oportunidade caso voc n o tenha feito isso ainda de instalar o Linux em sua m quina H v rias op es para se fazer isso Se voc tiver no m nimo quatro gigabytes de mem ria e oito gigabytes dispon veis
28. de de traduzir para o portugu s O M tico Homem M s Elsevier 2009 de Fred Brooks Jr arquiteto chefe do sistema predecessor OS 360 Adiante conheci sistemas operacionais de processadores de comunica o e no in cio dos anos 90 comecei a trabalhar com sistemas operacionais tolerantes a falhas para ambientes de processamento paralelo massivo Em 1993 conheci o Linux o sistema operacional que passou a fazer parte da minha vida profissional e pessoal desde ent o Entre 2006 e 2009 junto com a minha s cia Joice K fer desenvolvi para a Microsoft um trabalho de gest o de desenvolvimento de softwares livres interoper veis entre as plataformas operacionais Linux e Windows Este trabalho envolvia a coordena o do trabalho de bolsistas da Universidade Federal do Rio Grande do Sul e da Universidade Estadual de Campinas Na poca participei de um treinamento sobre o ambiente de processamento paralelo do servidor Windows em um evento da Microsoft em Boston nos Estados Unidos V rios dos trabalhos desenvolvidos neste per odo est o em http ndos codeplex com Da mesma forma que em Aprenda a Programar minha inten o com este livro a de que ele seja b sico o suficiente para que um iniciante sinta se a vontade em us lo como sua primeira fonte de informa o sobre sistemas operacionais Mas ao mesmo tempo este n o um livro paternalista ou condescendente Ao contr rio minha ideia a de que ele P gina 4 de 45 constitu
29. e conferir em uma tabela que est na p gina de suporte da Apple a fabricante do Mac http support apple com kb HT3696 viewlocale pt BR amp locale pt BR Segundo esta p gina os passos para descobrir o processador s o os seguintes 1 Selecione Sobre Este Mac no menu Apple o cone da ma na barra de menus no canto superior esquerdo e em seguida clique em Mais Informa es 2 Abra a se o Hardware 3 Localize o Nome do Processador 4 Compare o nome do seu processador com as informa es abaixo para determinar se o processador do Mac de 32 bits ou de 64 bits Tabela 1 1 Correspond ncia entre processadores e arquitetura 2 Fonte http www meuwindows8 com windows 8 e 32 ou 64bits P gina 7 de 45 Nome do Processador Arquitetura Intel Core Solo 32 bits Intel Core Duo 32 bits Intel Core 2 Duo 64 bits Intel Quad Core Xeon 64 bits Dual Core Intel Xeon 64 bits Quad Core Intel Xeon 64 bits Core i3 64 bits Core i5 64 bits Core i7 64 bits P gina 8 de 45 Como saber se meu Linux est rodando em 32 ou 64 bits Se voc usa o Linux certamente sabe como abrir um terminal Fa a isso e digite o comando uname m Se a resposta indicar algo com o n mero 64 sua arquitetura de 64 bits Exemplo uname m x86 64 Para instalar e rodar o VirtualBox voc deve ter no m nimo um computador com 2Gb de mem ria mas recomend vel ter mais do que 4Gb Al m dis
30. esta forma o n mero 00010110 tem ligados os bits 1 2 e 4 o que quer dizer que em n meros decimais ele corresponde a 21 22 24 2 4 16 22 A nota o hexadecimal til j que ela agrupa quatro bits por vez usando os n meros 0 a 9 e mais os caracteres A B C D e F para representar 16 n meros 0 conta como um n mero com apenas uma posi o Voc pode usar o portal http www binary code org para converter n meros bin rios rapidamente para o formato decimal e hexadecimal P gina 18 de 45 Tabela 1 Convers o entre n meros bin rios hexadecimais e decimais 2124 29 241242428 2 Hex Dec 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 1 01 1 0 0 0 0 0 0 1 0 02 2 0 0 0 0 0 0 1 1 03 3 0 0 0 0 0 1 0 0 04 4 0 0 0 0 0 1 0 1 05 5 0 0 0 0 0 1 1 0 06 6 0 0 0 0 0 1 1 1 07 7 0 0 0 0 1 0 0 0 08 8 0 0 0 0 1 0 0 1 09 9 0 0 0 0 1 0 1 0 OA 10 0 0 0 0 1 0 1 1 OB 11 0 0 00 0 1 1 0 0 OC 12 0 0 0 0 1 1 0 1 OD 13 0 0 0 0 1 1 1 0 OE 14 0 0 0 0 1 1 1 1 OF 15 111 11 111 1 1 FF 255 gt Como voc j deve imaginar cada instru o que seu processador executa tamb m passada a ele na forma de um n mero bin rio Assim se o processador receber uma instru o 00000000 ele sabe que deve fazer uma opera o de soma ADD enquanto se receber uma instru o 00111000 ele deve comparar CMP dois n meros P gina 19 de 45 Assembly J h
31. horar sistemas operacionais voc ir se deparar com programas enormes e muito mais complexos Quando isso acontecer bom voc ter uma maior familiaridade com o QEMU e o gdb Por exemplo na medida em que voc depura o seu c digo pode ser que voc fique confuso sobre qual a instruc o que o QEMU est executando em um determinado passo No passo em que estamos agora por exemplo se executarmos no QEMU o comando x i eip confirmamos a instru o que ser executada junto com o endereco de mem ria onde ela se encontra qemu x i eip 0x00007c0b mov 0x0 ax Quando voc adquire pr tica com o que est acontecendo nos registradores voc n o precisa listar o conte do de todos eles Acabamos de alterar na instruc o anterior o P gina 32 de 45 conte do do registrador sp ESP para o QEMU assim podemos confirmar seu novo conte do com o mesmo comando x qemu x esp 00001000 0 E uma maneira conveniente de exibir o conte do do registrador no formato decimal atrav s do uso do comando print qemu print esp 4096 Este livro n o tem a m nima intenc o de cobrir todos os aspectos do QEMU e nem do gdb Vale a pena por m voc dar uma olhada no manual online do QEMU antes de seguir adiante http en wikibooks orq wiki QEMU Monitor Agora que voc j aprendeu mais algumas coisas siga para o pr ximo passo de seu bootloader No gdb digite o comando si uma abreviatura de stepi gdb si 0x
32. ice de destino de dados apontam respectivamente para posi es de mem ria onde os dados ser o buscados e armazenados Apontador da Pilha O registrador sP Stack Pointer aponta para o n mero de 16 bits que est no topo da pilha E a pilha uma mem ria tempor ria similar a uma pilha de papel no qual voc s pode ver o papel que est no topo da pilha Ela funciona como uma mem ria tempor ria e til por exemplo quando voc precisa substituir os valores dos registros de uso geral por novos valores mas quer manter os valores antigos em algum lugar necess rio lembrar por m que se voc guarda na pilha os registros que est o em AX BX CX e DX na pilha nesta ordem ao recuperar os valores voc tem que saber que eles est o na ordem reversa Como DX foi o ltimo colocado na pilha ele o que est no topo dela O registrador SS o registro de segmento da pilha ou seja ele aponta para a rea da mem ria que ser usada para o armazenamento da pilha Apontador de Instruc o O registrador P Instruction Pointer aponta para a posi o da mem ria onde est a instruc o que o processador est executando no momento Tipicamente a cada instruc o executada o processador salta para a instruc o na posic o imediatamente seguinte na mem ria mas voc pode mudar o conte do deste registrador para que ele execute instru es a partir de outras posi es como resultado de uma condi o de teste ou de uma interrup
33. istradores Voc j sabe como fazer isso no monitor do QEMU use o comando info registers P gina 30 de 45 Bootloader QEMU 7C00h Passo 1 ax EAX 0000aa55 00000000 ss SS 0000 00000000 0000ffff 00009300 0000 00000000 0000ffff 00009300 Sp ESP 00006f20 00006f20 ds DS 0000 00000000 0000ffff 00009300 0000 00000000 0000ffff 00009300 si ESI 00000000 00000000 ah EAX H 0000 0000 ip EIP 00007c00 00007c03 Repare que os nicos registradores que mudaram foram o ip que agora aponta para o endere o da pr xima instru o a ser executada 7C03 e o ax pois ele acaba de receber o valor 0 como exigimos que isso acontecesse na primeira linha real de nosso bootloader mov ax O No gdb use mais uma vez o comando stepi e verifique os registradores no QEMU Repita esse processo para os pr ximos passos Bootloader QEMU Passo 1 Passo 2 ax EAX 00000000 00000120 SS SS 0000 00000000 0000ffff 00009300 0000 00000000 0000ffff 00009300 Sp ESP 00006f20 00006f20 ds DS 0000 00000000 0000ffff 00009300 0000 00000000 0000ffff 00009300 si ESI 00000000 00000000 ah EAX H 0000 0000 ip EIP 00007c03 00007c06 Como j hav amos discutido antes agora adicionamos o valor 288 poder amos ter escrito 120h para a sua representa o hexadecimal ao conte do do registrador 2X ao qual hav amos atribu do o valor zero add ax 288 Repare que o a
34. ito em Computador e clique em Propriedades e Se Sistema Operacional de 64 bits estiver listado ao lado de Tipo de sistema voc est executando a vers o de 64 bits do Windows Vista ou do Windows 7 e Se Sistema Operacional de 32 bits estiver listado ao lado de Tipo de sistema voc est executando a vers o de 32 bits do Windows Vista ou do Windows 7 A edi o do Windows Vista ou do Windows 7 em execu o exibida em Windows 1 Fonte http windows microsoft com pt br windows7 find out 32 or 64 bit P gina 6 de 45 Edition pr ximo parte superior da janela Computadores executando o Windows 8 Para saber se o seu computador executa o Windows 8 em 32 ou 64 bits use essas instru es fornecidas pelo portal Meu Windows 8 V at a tela inicial do seu Windows 8 e digite Sistema em seguida clique em configura es para indicar o tipo conte do que pretende pesquisar neste momento voc ver entre os itens listados um atalho nomeado Sistema clique sobre ele e Na tela seguinte voc conseguir visualizar qual a vers o do Windows 8 est sendo utilizada na sua m quina se a de 32 bits ou a de 64 bits Essa informa o est na se o Sistema ao lado de Tipo de Sistema Como saber se meu Mac OS X est rodando em 32 ou 64 bits No caso do Mac a coisa um pouco mais complicada uma vez que o sistema fornece o nome do processador mas n o informa se sua arquitetura de 32 ou 64 bits o que voc pod
35. lador para gerar codigo para 16 bits ORG 0x7C00 A posicao em que o codigo sera colocado na memoria start mov ax 0 Reserva um espa o de 4Kbytes apos o bootloader add ax 288 4096 512 16 bytes por paragrafo MOV ss aX mov sp 4096 mov ax 0 Configura o segmento de dados para este programa mov ds ax mov si texto Coloca a posicao do texto em si call imprime Chama a rotina de impressao jmp Repeti o infinita texto db Funcionou D O P gina 10 de 45 imprime Coloca na tela o texto em si mov ah 0Eh int 10h funcao de impressao repeat lodsb Pega um caracter da frase cmp al 0 je done Se o caracter for 0 termina int 10h Caso contrario imprima jmp repeat done ret times 510 db 0 Preenche o restante do setor de boot com Os dw OXAA55 Assinatura padrao de boot Salve seu programa com o nome de bootloader asm em uma pasta onde voc ir guardar estes e outros programas exemplo Caso seu editor de texto permita que voc salve seu texto em m ltiplos formatos garanta que usar o formato de texto puro ANSI Texto Puro Texto ou outra op o equivalente em seu editor Agora na pasta onde est o seu programa execute o NASM para transform lo compil lo em um c digo bin rio execut vel por seu processador nasm bootloader asm f bin o bootloader bin Se voc digitou tudo corretamente agora voc deve ter como resultado em sua pasta um programa compilado
36. ma operacional completo de GNU Linux com o intuito de creditar as ineg veis contribui es do projeto GNU j mencionado anteriormente ao sistema operacional Linux H inclusive aqueles que s o extremamente vocais quanto a ado o desta nomenclatura O Linux por m al m das contribui es do projeto GNU conta com in meras outras entre elas da Berkeley Software Distribution BSD e das funda es Apache e X org mas a lista muito mais extensa Afinal Linux acabou tornando se uma marca para o sistema operacional livre e de c digo aberto constru do a partir de m ltiplas contribui es todas importantes Al m disso na mensagem original de Linus Torvalds sobre seu projeto em 1991 ele dizia que estava criando um sistema operacional n o apenas o kernel de um sistema operacional Por isso neste livro sempre que nos referirmos ao sistema operacional completo o chamaremos de Linux e quando nos referirmos ao n cleo do sistema operacional o chamaremos de kernel Linux ou simplesmente kernel A seguir um trecho da mensagem de Linus traduzida para o portugu s De torvalds klaava Helsinki FI Linus Benedict Torvalds Newsgroups comp os minix Assunto O que voc mais gostaria de ver no minix Resumo pequena pesquisa pra meu novo sistema operacional Data 25 de agosto de 1991 20 57 08 GMT Organiza o University of Helsinki Ol a todos usando o minix Estou fazendo um sistema operacional livre apenas um hob
37. menu CLI choice after CLI has ex ited Data for the above code os init msg db Welcome to MikeOS 0 os version msg db Version MIKEOS VER 0 dialog string 1 db Thanks for trying out MikeOS 0 dialog string 2 db Please select an interface OK for the 0 dialog string 3 db program menu Cancel for command line 0 P gina 39 de 45 Ou seja voc j pode por exemplo come ar a traduzir o MikeOS para o portugu s Na janela do QEMU tecle OK e tome um tempo para familiarizar se com o MikeOS Agora que voc j brincou um pouco com o sistema use a seta para baixo e encontre o programa MEMEDIT BAS como mostra a figura 4 Machine View Welcome to Mi Please select a file using the cursor keys from the list below VIEWER BIN ADUNTURE BAS CALC BAS CF BAS DRAW BAS EXAMPLE BAS MBPP BAS MEMEDIT BAS MUNCHER BAS SUDOKU BAS SAMPLE PCX FORTH BIN ARCHIVE BAS FISHER BIN Figura 4 Evocando o MEMEDIT BAS Voc abrir o Memory Manipulator Manipulador de Mem ria um programa muito similar ao hte que voc j utilizou anteriormente Repare que na parte inferior da tela h algumas instru es sobre como usar o programa Tecle G GO TO ir para e o n mero 160 como mostra a figura 5 P gina 40 de 45 Machine View Pa 2 9 p E y 0123456789ABCDEF 53 02 E9 6 i 5580 fF Welco 00 4D 69 6B me to Mike0S Ver 10 ZE 35 62 sion 4 5b1 Thank 209 74 72 79 s for trying out 30 Mike0
38. ndo o n mero decimal equivalente vai de 10 15 A pr tica torna isso rapidamente muito f cil A tabela 4 mostra a soma que representa o conte do de nosso registrador AX at o momento Tabela 4 Soma de n meros de base hexadecimal Sobe um N mero 1 0 7 C 0 N mero 2 0 1 2 0 soma 0 8 E 0 Seria bom verificar se nossos registradores est o se comportando exatamente da forma esperada Com um pouco mais de trabalho n s podemos fazer isso Voc precisar de P gina 25 de 45 duas ferramentas adicionais o depurador de c digo gdb http www sourceware org gdb e O emulador de processadores QEMU http wiki qemu org Instale os como de costume usando o gerenciador de pacotes de sua distribui o Linux ou caso esteja usando a distribui o recomendada Linux Mint 15 Xfce ou qualquer outra baseada em Debian com o seguinte comando sudo apt get install qemu gdb Como de costume aceite a instala o de quaisquer prerrequisitos Um par ntesis voc pode neste momento achar que est recebendo mais informa es do que tem capacidade de processar especialmente se n o teve uma exposi o muito grande aritm tica com outras bases num ricas eletr nica digital e programa o A forma como escrevi este livro muito calcada na experi ncia que tive com equipes de suporte desenvolvimento e estudantes com os quais tive a grata oportunidade de trabalhar Isto tudo somado
39. ng from Floppu Funcionou D_ Figura 3 O QEMU inicializado com o bootloader na imagem de disquete Primeiro repare na linha de comando que usamos para chamar o QEMU 0 que significa que estaremos emulando um sistema completo incluindo disquete disco r gido e outros componentes O programa respons vel apenas pela emula o do processador o e ele apropriadamente usado pelo Para saber quais outros processadores e sistemas o QEMU capaz de emular na linha de comando digite e sem digitar espa o ou teclar ap s o nome pressione duas vezes a tecla Voc deve observar um resultado similar ao seguinte qemu qemu ppc64abi32 qemu system mipsel qemu alpha qemu s390x qemu system or32 qemu arm qemu sh4 qemu system ppc qemu armeb qemu sh4eb qemu system ppc64 qemu cris qemu sparc qemu system ppcemb qemu i386 qemu sparc32plus qemu system s390x qemu img qemu sparc64 qemu system sh4 qemu io gemu system alpha qemu system sh4eb qemu m68k qemu system arm qemu system sparc P gina 27 de 45 qemu make debian root qemu system cris qemu system sparc64 qemu microblaze qemu system i386 qemu system unicore32 qemu microblazeel qemu system lm32 qemu system x86_64 qemu mips qemu system m68k qemu system xtensa qemu mipsel qemu system microblaze qemu system xtensaeb qemu nbd qemu system microblazeel qemu unicore32 qemu or32 qemu system mips qemu x86_64 gemu ppc qemu system mips64 qemu ppc64 qemu system mips64el O QEMU
40. nsagens deste grupo provou ser de grande utilidade complementar aos meus estudos de sistemas operacionais na Tandem e minha compreens o do mundo Unix Um marco hist rico foi o debate entre o jovem Linus Torvalds e o ent o j consagrado Andrew Tanenbaum sobre qual deveria ser o tipo ideal de arquitetura de um n cleo de sistema operacional A Wikipedia traz uma p gina muito boa em portugu s sobre este debate em http pt wikipedia org wiki Debate entre Tanenbaum e Torvalds Andrew Tanenbaum obviamente defendia o microkernel a arquitetura usada no Minix enquanto Linus Torvalds tamb m obviamente defendia a arquitetura monol tica usada no Linux Arquitetura monol tica A arquitetura monol tica mais simples j que todas as fun es do kernel est o dentro do pr prio espa o do kernel Mais adiante quando voc for personalizar o kernel do Linux isto ficar bem evidenciado Al m do Linux sistemas operacionais como o BSD o Solaris e as vers es antigas do Windows usam este tipo de arquitetura Arquitetura microkernel Na arquitetura microkernel as fun es do kernel s o reduzidas ao m nimo ficando todos os servi os do sistema no chamado espa o de usu rio O espa o do kernel um espa o privilegiado de contato direto com o hardware O espa o do usu rio n o tem esse contato s podendo faz lo atrav s de servi os fornecidos pelo microkemel Assim processos do sistema de arquivos de comunica
41. o quer correr o risco de corromper o sistema operacional e seus arquivos mas quer ter toda a chance de errar e aprender com os seus erros e acertos Depuradores como o gdb permitem que voc acompanhe o que est acontecendo dentro de uma m quina inspecionando sua mem ria e seus registradores P gina 44 de 45 Leitura complementar TANENBAUM Andrew S Sistemas Operacionais Modernos S o Paulo Prentice Hall 2010 TANENBAUM Andrew S WOODHULL Albert S Sistemas Operacionais Projeto e Implementa o Porto Alegre Bookman 2002 MOTA Jo o Eriberto Filho Descobrindo o Linux S o Paulo Novatec 2012 HYDE Randall Art of Assembly Language Estados Unidos No Starch 2010 BROD Cesar K FER Joice et al Redes sem Fio no Mundo em Desenvolvimento Estados Unidos Hacker Friendly 2008 dispon vel gratuitamente no endere o http wndw net SCRODER Carla Redes Linux Livro de Receitas Jacar Alta Books 2009 P gina 45 de 45
42. ode tranquilamente fazer uma leitura r pida das pr ximas p ginas Acesse a p gina de downloads do VirtualBox em https www virtualbox org wiki Downloads e escolha a vers o apropriada de acordo com o sistema operacional que utiliza e a arquitetura de sua m quina H vers es para os sistemas Windows Mac OS X Linux e Solaris nas arquiteturas de 32 ou 64 bits Tipicamente o usu rio sempre sabe qual o sistema operacional instalado na sua m quina mas nem todos sabem se a arquitetura de 32 ou 64 bits Se voc sabe qual a arquitetura de sua m quina pode pular as instru es a seguir baixar a vers o apropriada do VirtualBox e seguir adiante Como saber se meu Windows est rodando em 32 ou 64 bits Segundo informa es fornecidas pela Microsoft fabricante do Windows voc deve seguir esses passos dependendo da sua vers o do Windows Computadores executando o Windows XP e Clique em Iniciar clique com o bot o direito do mouse em Meu Computador e clique em Propriedades e Se x64 Edition for listado em Sistema voc est executando a vers o de 64 bits do Windows XP Se n o ver x64 Edition listado em Sistema voc est executando a vers o de 32 bits do Windows XP A edi o do Windows XP em execu o exibida em Sistema pr ximo parte superior da janela Computadores executando o Windows Vista ou o Windows 7 Clique no bot o Iniciar Imagem do bot o Iniciar clique com o bot o dire
43. onder ao que voc escreveu em seu programa Elas s o as instru es correspondentes fun o de impress o que voc evocou atrav s da interrup o int 10h junto com v rias outras que correspondem ao trabalho normal do BIOS que independem de seu bootloader o BIOS n o deixa de ser um sistema operacional ainda que pequeno e b sico e por isso al m de rodar o seu programa ele presta aten o a outras interrup es e tarefas de manuten o para as quais foi programado Canse seus dedos um pouco e v avan ando no programa com a sequ ncia de comandos si gdb e x seip QEMU observando a janela do emulador onde at agora est escrito apenas Booting from Floppy Ap s muito muito tempo pode chegar a mais de mil passos voc ver a letra F ser impressa em sua tela Se voc tiver tempo e paci ncia verifique as interrup es que s o evocadas nesse processo P gina 37 de 45 comparando as com a lista de interrup es do BIOS encontrada nesse link http 80864beginner com 8086 interrupt list bom no desenvolvimento ou depura o de sistemas operacionais que voc tenha esses e v rios outros truques na manga Mas como voc quer evitar c ibras e seguir adiante em suas experi ncias vamos apenas ver o programa imprimindo um a um os caracteres na tela Voc j descobriu que a instru o int 10h est armazenada na posi o de mem ria 7c2h Assim use o gdb para definir um ponto de parada break
44. os arquivos de uma pasta a chave la faz com que a listagem seja feita de maneira detalhada e o comando grep d faz com que apenas as linhas que come am com a letra d indicando um diret rio sejam exibidas Se voc se interessou em seguir adiante seu aprendizado em Assembly e no MikeOS a pasta doc cont m manuais para o desenvolvimento de aplica es e modifica es para o sistema A pasta source cont m o c digo fonte do sistema operacional e a pasta programs o c digo fonte de todos os programas acess rios inclu dos no MikeOS O manipulador de mem ria que voc acabou de usar tem seu c digo em mikeos programs memedit bas P gina 43 de 45 O suprassumo do baga o do resumo H alguma chance de que essa seja a sua primeira leitura sobre sistemas operacionais e voc deve estar com os olhos inchados ao final desse texto Espero que eles estejam inchados pela curiosidade e n o por este livro estar fazendo voc chorar O importante voc saber que sua m quina s entende zeros e uns e que a representa o mais pr xima deles para humanos a linguagem Assembly e os c digos ASCII Voc pode escrever programas em qualquer linguagem de mais alto n vel mas no final da contas eles ser o traduzidos por compiladores nesses zeros e uns Nas experi ncias que voc j fez e far no restante desse livro voc usar m quinas virtuais que s o programas que simulam m quinas reais como o VirtualBox e o QEMU Afinal voc n
45. os deste livro independente de voc ter optado por utiliz la dentro de uma m quina virtual em uma instalac o com dual boot ou como o sistema operacional padr o de seu computador Se voc n o tem muita familiaridade com o Linux a editora Novatec publicou o excelente Descobrindo o Linux http www novatec com br livros linux3 de autoria de Jo o Eriberto Mota Filho O livro tem quase mil p ginas que dissecam o Linux desde seus conceitos b sicos at aspectos avancados de administrac o do sistema Uma tima fonte de informac o na web totalmente em portugu s o Guia Foca GNU Linux http www guiafoca org Voc precisar instalar o editor e visualizador de execut veis hte Isto pode ser feito com o uso do gerenciador de pacotes de sua instala o do Linux ou para as distribui es baseadas em Debian como o Linux Mint Ubuntu e outras com o seguinte comando sudo apt get install ht Sim o nome do pacote que instala o hte mesmo ht Agora use o hte para ler os conte dos do arquivo bootloader bin que voc criou no cap tulo anterior hte bootloader bin O resultado deve ser similar ao da figura 2 P gina 22 de 45 File Edit Windows Help Local Hex 15 19 20 06 2014 ropbox Brod Rubens Sistemas Operacionais Programas loader2 bin 2 b8 00 00 05 20 01 8e do bc 00 10 b8 00 00 8e da 2 be 18 7c e8 11 00 eb fe 46 75 6e 63 69 6f 6e 6f Funciono 75 21 20 3a 2d 44 00 b4 0e ac 3c 00
46. otloader far carregar o n cleo ou kernel do sistema operacional o kernel que ir fazer a interface direta com todos os componentes de hardware do sistema com o apoio de drivers espec ficos para cada tipo de dispositivo e em muitos casos interagindo com o firmware destes dispositivos Assim como no caso do BIOS v rios dispositivos modernos possuem seu pr prio pequeno sistema Placas gr ficas com acelera o gr fica tridimensional por exemplo chegam at a ter conjuntos de comandos espec ficos para o acesso a seus recursos al m de mem ria pr pria sob muitos aspectos as placas gr ficas s o de fato um outro computador dentro de seu computador responsabilidade do kernel o gerenciamento do acesso mem ria pelos programas aplicativos e tamb m o seu acesso aos dispositivos de hardware Ou seja quando voc imprime um texto o kernel quem intermedia o acesso de seu programa impressora com o uso de um driver espec fico para a mesma Ele tamb m possui fun es que garantem o melhor desempenho do processador em determinadas condi es e mesmo contando com o sistema de arquivos como o seu grande auxiliar nesta tarefa o kernel que organiza os dados que s o armazenados em discos r gidos pendrives ou outros dispositivos Um par ntesis voc j sabe que o foco deste livro o sistema operacional Linux H os que preferem identificar apenas o kernel deste sistema com o nome Linux chamando o siste
47. ouve tempos em que voc efetivamente informava manualmente o c digo bin rio de opera es atrav s de chaves liga e desliga para que um processador as executasse Hoje voc usa montadores Assemblers que convertem os mnem nicos pequenos conjuntos de letras que trazem algum significado e s o muito mais f ceis de lembrar nos c digos execut veis bin rios para o seu computador esse conjunto de mnem nicos forma o c digo Assembly Alguns Assemblers por vezes chamados de Macro Assemblers ainda permitem o uso de instru es mais completas e complexas que depois s o decompostas nas opera es que o processador executar O NASM que voc conheceu rapidamente no cap tulo anterior um Assembler A grosso modo quando voc escreve um programa em Assembly voc deve pensar em linguagem de m quina mas sem a necessidade de memorizar o c digo bin rio das instru es o Assembler far a convers o apropriada para voc Cada arquitetura de m quina possui um conjunto de instru es e componentes espec ficos e se quiser aprofundar se nesse assunto voc dever consultar as especifica es dos processadores normalmente encontradas na p gina web de seus fabricantes Um Assembly bastante popular o x86 oriundo da fam lia de processadores com o mesmo nome derivada do processador Intel 8086 cuja fabrica o teve in cio em 1978 A raz o desta popularidade foi a ado o desta fam lia de processadores nos computadores pes
48. point nessa posi o e continue executando o programa teclando c tamb m na janela do gdb e acompanhando o que acontece na janela do emulador do QEMU gdb br 0x7c2e Ponto de parada 1 at 0x7c2e gdb c Continuando Breakpoint 1 0x00007c2e in gdb c Continuando Breakpoint 1 0x00007c2e in Voc pode querer tamb m colocar um ponto de parada na posi o 7c29H voc lembra qual instru o est nessa posi o de mem ria e usar uma combina o dos comandos c e si no gdb e x i seip info registers e outras no QEMU apenas para acompanhar o que acontece dentro desta por o de seu programa repeat lodsb Pega um caracter da frase cmp al O je done Se o caracter for 0 termina int 10h Caso contrario imprima jmp repeat P gina 38 de 45 Um sistema operacional em Assembly Sistemas operacionais modernos costumam ser escritos em linguagens de programa o de alto n vel justamente para garantir a sua portabilidade entre v rias plataformas de hardware Um sistema operacional escrito na linguagem C poder rodar em qualquer arquitetura que tenha um compilador dessa linguagem N o custa lembrar mais uma vez que independente da linguagem na qual um sistema operacional escrito o c digo que o processador executar o assembly a linguagem de m quina na qual o compilador transformou o sistema operacional escrito na linguagem C O MikeOS um sistema operacional cuja inten o original
49. pontador de instru o j est com o endere o da pr xima Bootloader QEMU Passo 2 Passo 3 ax EAX 00000120 00000120 ss SS 0000 00000000 0000ffff 00009300 0120 00001200 0000ffff 00009300 P gina 31 de 45 sp ESP 00006120 00006120 ds DS 0000 00000000 0000ffff 00009300 0000 00000000 0000ffff 00009300 si ESI 00000000 00000000 ah EAX H 0000 0000 ip EIP 00007c06 00007c08 Aqui acabamos de mover o conte do do registrador geral AX para o o registrador SS Stack Segment segmento da pilha mov ss ax que aponta para a rea de mem ria reservada para ela No pr ximo passo o seguinte comando executado mov sp 4096 Veja como ficam nossos registradores Bootloader QEMU Passo 3 Passo 4 ax EAX 00000120 00000120 ss SS 0120 00001200 0000ffff 00009300 0120 00001200 0000ffff 00009300 sp ESP 00006f20 00001000 ds DS 0000 00000000 0000ffff 00009300 0000 00000000 0000ffff 00009300 si ESI 00000000 00000000 ah EAX H 0000 0000 ip EIP 00007c08 00007c0b Voc j deve ter notado que os valores dos registradores est o no formato hexadecimal por isso o registrador sp ESP guarda o valor 00001000 ou seja o equivalente hexa ao valor decimal 4096 O bootloader que estamos depurando muito pequeno mas se voc decidir que al m de aprender um pouco mais sobre sistemas operacionais com a leitura desse livro voc ir de fato escrever ou mel
50. s ou quadrados em um quadro branco para representar seus registradores e pap is ou etiquetas adesivas para ir substituindo o conte do neles Esse tipo de exerc cio bastante l dico aumenta consideravelmente a compreens o da estrutura do computador e do funcionamento de seus programas Ao menos isso foi o que comprovou minha experi ncia pr tica Voc voltou J Que bom vamos acompanhar o restante da execu o do programa Siga anotando os valores dos registradores principais com a instru o info registers do QEMU especialmente se voc est adquirindo agora experi ncia com a linguagem de m quina o Assembly e com a arquitetura de computadores Daqui em diante vamos destacar apenas os registradores instru es e posi es de mem ria relevantes continuidade da depura o de nosso bootloader V para a pr xima instru o si no gdb e confira o que aconteceu no QEMU qemu x i eip 0x00007c10 mov 0x7c18 si O registrador si como voc deve lembrar aponta o ndice da origem dos dados Use o QEMU para descobrir o que est armazenado a partir do endere o 7C18h qemu x c 0x7c18 00007c18 F u n c qemu x c 0x7c1c 00007c1c i o n o qemu x c 0x7c20 00007020 u lt tt qemu x c 0x7c24 0000724 D 4x00 xb4 Usamos a chave c para solicitar ao QEMU que exiba os conte dos da mem ria em formato de caracteres Ou seja a partir da posic o de mem ria 7C18h temos
51. s convertidos para o sistema decimal e depois vert los novamente para os n meros hexadecimais P gina 24 de 45 Dito isto n o nada t o complicado fazer somas com n meros em outras bases num ricas Lembre se das aulas de matem tica do ensino fundamental quando voc come ou a fazer contas com mais de dois ou tr s d gitos e usava a t cnica do sobe um como ilustra a tabela 2 que mostra a soma dos n meros 137 e 204 Tabela 2 Soma de n meros de base decimal Sobe um 1 N mero 1 1 3 7 N mero 2 2 0 4 Soma 3 4 1 Lembrando a t cnica dentro de cada caixa s cabe um d gito Assim cada n mero que somado a outro resulte em um n mero maior que dez sobe um na caixa que corresponde ao d gito da esquerda Com n meros bin rios exatamente a mesma coisa s que os uns sobem com mais frequ ncia j que 1 1 10 sendo 10 em bin rio o equivalente ao n mero 2 em decimal Vamos somar os n meros 14 e 9 respectivamente 1110 e 1001 em bin rio na tabela 3 Tabela 3 Soma de n meros de base bin ria Sobe um 1 N mero 1 1 1 1 0 N mero 2 1 0 0 1 soma 1 0 1 1 1 Confira o resultado convertendo a soma novamente para um n mero decimal 2 4 2 4224 2 1 2 44 4 16 23 A soma de n meros em base hexadecimal tamb m f cil Sobe um quando um n mero chega a F 15 em decimal A s contar silenciosamente de A at F qua
52. sdtio abre o monitor do QEMU atrav s do qual voc pode verificar o estado de v rios componentes internos do processador dentro do terminal atrav s do qual voc iniciou o QEMU Uma vez iniciado o QEMU ele mostra a informa o Paused pausado no topo da sua janela abra um outro terminal onde vamos conectar o QEMU ao gdb Neste novo terminal aberto digite gdb e tecle Enter para iniciar o depurador e em seguida estabele a a conex o com o QEMU com o seguinte comando digite o que est direita de gdb gdb target remote localhost 1234 O gdb deve ser informado que a m quina que est sendo depurada tem uma arquitetura de 16 bits Isto feito com o comando a seguir repare que as linhas que iniciam com gdb s o as que cont m o seu comando as demais s o a resposta do depurador gdb set architecture 8086 Assume se que a arquitetura alvo 8086 Voc lembra que seu programa come a na posi o 07COh antes desta posi o de mem ria o computador executa o conjunto de instru es que comp em o BIOS Assim vamos avisar ao depurador que queremos que o sistema interrompa a sua execu o exatamente quando o nosso programa come a a ser executado Isto feito com o seguinte comando dentro da janela onde o gdb est em execu o a segunda linha a resposta do gdb gdb br 0x7c00 Ponto de parada 1 at 0x7c00 O comando c seguido de Enter dentro da janela do gdb faz com que o QEMU entenda que deve con
53. ser uma ferramenta de aprendizagem Com o passar do tempo o sistema desenvolvido por Mike Saunders passou a ter uma s rie de contribui es e hoje conta com interpretadores para as linguagens BASIC e FORTH al m da possibilidade da execu o de programas na linguagem C Agora que voc j conhece um pouco de Assembly que tal visitar a p gina do projeto e experimentar o MikeOS http mikeos sourceforge net Navegando pela p gina voc encontrar o link para baixar um arquivo compactado contendo o c digo fonte amplamente comentado em ingl s juntamente com v rias imagens do sistema prontas para serem carregadas pelo VirtualBox ou QEMU Para come ar a experimentar descompacte o MikeOS em uma pasta apropriada e localize no sistema j descompactado a pasta disk images Nela voc encontrar a imagem de disquete mikeos fip Coloque o sistema em opera o com o comando qemu system i386 fda mikeos flp Certifique se de especificar o caminho apropriado caso voc n o esteja executando o QEMU dentro da mesma pasta onde est a imagem de disquete Imediatamente voc deve ver uma tela com a mensagem Thanks for trying out MikeOS Please select an inteface OK for the program menu Cancel for command line Na pasta sources dentro do local onde voc descompactou o MikeOS voc encontra o arquivo kernel asm Se voc procurar dentro dele por Thanks logo ir identificar as seguintes linhas jmp option screen Offer
54. so voc deve ter privil gios de administrador do sistema para isso Se voc j fez a instala o de qualquer outro programa anteriormente voc n o deve encontrar problemas para instalar o VirtualBox Ap s baixar a vers o apropriada na p gina de downloads mencionada no in cio dessa se o execute a instala o de acordo com o processo espec fico para o seu sistema operacional Caso voc j seja usu rio de alguma das distribui es Linux h uma chance muito grande do VirtualBox estar dispon vel no reposit rio de pacotes de sua distribui o Assim use o procedimento adequado para a sua pr pria distribui o para efetuar a instala o Execute o VirtualBox e crie uma nova m quina virtual clicando no bot o Novo que fica logo abaixo do menu superior esquerda Voc ser conduzido a uma s rie de telas onde fornecer os dados do sistema operacional que utilizar A t tulo de exemplo escolhemos as seguintes op es Nome Meu Sistema Operacional Tipo Linux Vers o Ubuntu Mem ria 512 MB Criar um disco r gido virtual tipo VDI dinamicamente alocado 8 GB Feito isto inicie sua m quina virtual clicando no bot o Iniciar a seta verde que aponta para direita logo abaixo do menu superior do VirtualBox Voc ser solicitado a dizer qual o dispositivo que vai usar para o boot a inicializa o de sua m quina Isto porque voc n o tem nenhum sistema operacional ainda instalado em seu disco r gido
55. soais IBM PC e seus clones a partir do in cio dos anos 1980 O Assembly x86 estendeu se para o x86 32 tamb m conhecido como lA 32 para arquiteturas de processadores de 32 bits e para o x86 64 para arquiteturas de 64 bits As extens es mais novas s o compat veis com as anteriores ou seja algo que voc escrever em x86 ir rodar no x86 32 e x86 64 O contr rio por m n o verdadeiro se voc usar instru es espec ficas de arquiteturas com mais bits de endere amento elas n o ser o compat veis com as de menos bits A seguir reproduzimos trecho a trecho o programa que usamos como bootloader no cap tulo anterior dissecando cada uma de suas fun es e come ando a ampliar no nosso cinto de utilidades com muitas ferramentas que ser o teis em nosso trabalho com sistemas operacionais e no entendimento dos mecanismos internos de um computador Na p gina web que faz companhia a esse livro voc ter referente a cada cap tulo uma se o listando as ferramentas usadas O NASM em sua vers o atual capaz de gerar c digo de m quina a partir do Assembly x86 e do x86 32 Por uma quest o de simplicidade esta r pida introdu o ao Assembly abordar apenas a vers o de 16 bits BITS 16 Instrui ao compilador para gerar codigo para 16 bits Esta n o uma instru o para o processador mas para o assembler NASM Ele ler esta primeira linha que inicia o programa para saber para qual arquitetura o c digo ser
56. tinuar sua execu o parando imediatamente antes da carga do programa que voc escreveu Antes de fazer isso por m no terminal onde voc tem rodando o monitor do QEMU digite o comando info registers e tecle Enter O resultado deve ser similar ao que exibido a seguir qemu info registers EAX 00000000 EBX 00000000 ECX 00000000 EDX 00000633 ESI 00000000 EDI 00000000 EBP 00000000 ESP 00000000 EIP 0000fff0 EFL 00000002 CPL 0 Il 0 A20 1 SMM 0 HLT 0 ES 0000 00000000 0000ffff 00009300 CS f000 ffff0000 0000ffff 00009b00 SS 0000 00000000 0000ffff 00009300 DS 0000 00000000 0000ffff 00009300 FS 0000 00000000 0000ffff 00009300 GS 0000 00000000 0000ffff 00009300 LDT 0000 00000000 0000ffff 00008200 TR 0000 00000000 0000ffff 00008b00 GDT 00000000 0000ffff IDT 00000000 0000ffff CRO 60000010 CR2 00000000 CR3 00000000 CR4 00000000 DR0 00000000 DR1 00000000 DR2 00000000 DR3 00000000 DR6 ffff0ff0 DR7 00000400 EFER 0000000000000000 FCW 037f FSW 0000 ST 0 FTW 00 MXCSR 00001f80 FPRO 0000000000000000 0000 FPR1 0000000000000000 0000 P gina 29 de 45 FPR2 0000000000000000 0000 FPR3 0000000000000000 0000 FPR4 0000000000000000 0000 FPR5 0000000000000000 0000 FPR6 0000000000000000 0000 FPR7 0000000000000000 0000 XMM00 00000000000000000000000000000000 XMM01 00000000000000000000000000000000 XMM02 00000000000000000000000000000000 XMM03 00000000000000000000000000000000 XMM04 00000000000000000000000000000000 XMM05 0000000000
57. tudo o computador mais antigo que voc conseguiu tem um BIOS que n o permite a inicializac o direta a partir de uma pendrive eu escrevi um artigo com alguns truques que permitem que voc ressuscite um computador velhinho http dicas l com br brod brod 201210261924 php Neste ponto voc deve ter o arquivo disquete img em sua pasta e deve dizer ao VirtualBox que ele deve ser usado como m dia para o boot de sua m quina virtual Desligue sua m quina virtual fechando a janela que cont m a mensagem de erro que voc j viu anteriormente FATAL No bootable medium found System halted No VirtualBox logo abaixo no menu principal clique no cone Configura es selecione Armazenamento abaixo da lista das controladoras use o cone que se parece a um quadrado com um sinal de mais e clique na op o Adicionar Controladora de Disquete Voc ver na lista das controladoras sua nova Controladora Floppy Clique no disquete com um sinal de mais ao lado desta controladora e depois em Escolher disco Navegue entre suas pastas para chegar naquela que cont m o seu rec m criado arquivo disquete img e clique em Abrir Ainda na janela de configura es clique na se o Sistema do lado esquerdo da janela e verifique se a Ordem de Boot est correta listando o Disquete como a primeira op o Se for preciso fa a os ajustes necess rios e clique em OK Agora clique na seta verde logo abaixo do menu principal do Virtu
58. virtual Opte pelo drive de CD de sua m quina hospedeira mas certifique se de que n o tem nenhuma m dia em CD ou DCD neste dispositivo Voc receber a mensagem FATAL No bootable medium found System halted Pronto Voc s tem o hardware pronto para come ar a fazer experi ncias 3 A Oracle disponibiliza um excelente manual de usu rio do VirtualBox em ingl s com o total detalhamento do processo de instalac o para as diversas plataformas operacionais nesse link http download virtualbox org virtualbox UserManual pdf P gina 9 de 45 O bootloader Bom n o totalmente verdade que voc s tem o hardware sua disposi o depois que voc liga a sua m quina H um componente que est presente em todos os computadores e que um software n o t o soft assim o firmware O firmware um programa fixo gravado em mem ria n o vol til por isso ele est presente mesmo quando o computador est desligado Tipicamente este firmware cont m rotinas bem b sicas que testam a presen a e a sa de de componentes de hardware e ficam na espera de que mais instru es sejam carregadas a partir de um dispositivo como um disco r gido um CD ou DVD ou uma pendrive USB Nos computadores pessoais este firmware tipicamente conhecido como BIOS Basic Input Output System sistema b sico de entrada e sa da Assim at agora na sua m quina virtual voc tem o equivalente ao hardware e o BIOS e o BIOS quem recl
Download Pdf Manuals
Related Search
Related Contents
Contact - eNova Upgrade - Mini Type - SH273AX WCC WCC210A subwoofer Lenovo D154W User's Manual SERVICE MANUAL - River Park, Inc. Sony Cyber-shot DSC-W80 User's Manual 44M 取付・取扱説明書 Samsung WB750 用户手册 Maksuturva Payment Services Integration Guideline as a Belkin F8Z441EAB MP3 accessory 1 - Fujifilm Copyright © All rights reserved.
Failed to retrieve file