Instalação do qemu
        
        
          A regra de udev do LFS permite somente que o(a) usuário(a)
          root, os(as) usuários(as)
          proprietários(as) de uma sessão local de login suportada pela
          dependência opcional de tempo de execução Systemd-254 ou os(as) usuários(as) no
          grupo kvm usem o dispositivo KVM.
          Como o(a) usuário(a) root, adicione
          quaisquer usuários(as) não root que
          poderiam usar o dispositivo KVM, mesmo sem o Systemd-254 instalado ou remotamente (por
          meio de uma conexão SSH), ao grupo kvm:
        
        usermod -a -G kvm <nome_de_usuário(a)>
        
          Instale o qemu executando os
          seguintes comandos:
        
        
          
          
            Nota
          
          
            O qemu é capaz de executar muitos alvos. O processo de construção
            também é capaz de construir vários alvos de uma vez em uma lista
            delimitada por vírgulas atribuída a --target-list. Execute ./configure --help para obter
            uma lista completa dos alvos disponíveis.
          
         
        if [ $(uname -m) = i686 ]; then
   QEMU_ARCH=i386-softmmu
else
   QEMU_ARCH=x86_64-softmmu
fi
mkdir -vp build &&
cd        build &&
../configure --prefix=/usr               \
             --sysconfdir=/etc           \
             --localstatedir=/var        \
             --target-list=$QEMU_ARCH    \
             --audio-drv-list=alsa       \
             --disable-pa                \
             --enable-slirp              \
             --docdir=/usr/share/doc/qemu-8.1.0 &&
unset QEMU_ARCH &&
make
        
          qemu usa ninja como um subprocesso ao
          construir. Para executar os testes, emita: ninja test. Um teste,
          bios-tables-test, é conhecido por falhar.
        
        
          Agora, como o(a) usuário(a) root:
        
        make install
        
          Mude as permissões e a propriedade de um script auxiliar, que é
          necessário ao usar o dispositivo de rede de comunicação
          “bridge”
          (veja-se abaixo). Novamente, como o(a) usuário(a) root, emita:
        
        
          
          
            Nota
          
          
            Você precisa adicionar quaisquer usuários(as) que possam usar o
            dispositivo de rede de intercomunicação “bridge” ao grupo
            kvm, mesmo se o Systemd-254 estiver instalado.
          
         
        chgrp kvm  /usr/libexec/qemu-bridge-helper &&
chmod 4750 /usr/libexec/qemu-bridge-helper
        
          
          
            Nota
          
          
            Por conveniência, você possivelmente deseje criar um link
            simbólico para executar o aplicativo instalado. Por exemplo (como
            o(a) usuário(a) root):
          
          ln -sv qemu-system-`uname -m` /usr/bin/qemu
         
       
      
        
          Usando o Qemu
        
        
          Como usar o qemu significa usar um computador virtual, as etapas
          para configurar a máquina virtual estão em estreita analogia com
          aquelas para configurar um computador real. Você precisará decidir
          a respeito de CPU, memória, disco, dispositivos USB, placa(s) de
          rede de comunicação, tamanho da tela, etc. Assim que o “hardware” estiver
          decidido, você terá, por exemplo, de escolher como conectar a
          máquina à internet e(ou) instalar um sistema operacional. A seguir,
          mostramos maneiras básicas de realizar essas etapas. Porém, o qemu
          é muito mais que isso, e é fortemente aconselhado ler-se a
          documentação do qemu em /usr/share/doc/qemu-8.1.0/qemu-doc.html.
        
        
          
          
            Nota
          
          
            É uma prática padrão nomear o computador executando qemu como
            “anfitrião”
            e a máquina emulada executando sob qemu como “convidada”. Usaremos
            essas notações a seguir.
          
         
        
          
          
            Nota
          
          
            As instruções a seguir assumem que o link simbólico opcional,
            qemu, tenha sido criado. Além
            disso, o qemu
            deveria ser executado em um ambiente gráfico. Mas é possível usar
            o qemu “sem uma parte
            superior” ou via SSH. Veja-se a documentação para
            as várias possibilidades.
          
         
        
          Disco
        
        
          Um disco virtual pode ser configurado da seguinte maneira:
        
        VDISK_SIZE=50G
VDISK_FILENAME=vdisk.img
qemu-img create -f qcow2 $VDISK_FILENAME $VDISK_SIZE
        
          O tamanho do disco virtual e o nome do arquivo deveriam ser
          ajustados conforme desejado. O tamanho atual do arquivo estará
          menor que o especificado, mas será expandido conforme necessário,
          de forma que é seguro colocar um valor alto.
        
        
          Sistema Operacional
        
        
          Para instalar um sistema operacional, baixe uma imagem ISO a partir
          da sua distribuição preferida Linux. Para os propósitos deste
          exemplo, usaremos Fedora-16-x86_64-Live-LXDE.iso no diretório
          atual. Execute o seguinte:
        
        qemu -enable-kvm                           \
     -drive file=$VDISK_FILENAME           \
     -cdrom Fedora-16-x86_64-Live-LXDE.iso \
     -boot d                               \
     -m 1G
        
          Siga os procedimentos normais de instalação para a distribuição
          escolhida. A opção -boot
          especifica a ordem de inicialização das unidades como uma sequência
          de caracteres de letras de unidades. As letras de unidade válidas
          são: a, b (disquete 1 e 2), c (primeiro disco rígido), d (primeiro
          CD-ROM). A opção -m é a
          quantidade de memória a usar para a máquina virtual. A escolha
          depende da carga do anfitrião. As distribuições modernas deveriam
          estar confortáveis com 1 GB. A opção -enable-kvm permite a aceleração de
          hardware. Sem essa chave, a emulação é muito mais lenta.
        
        
          Definindo o hardware virtual
        
        
          O hardware da máquina virtual é definido pela linha de comando do
          qemu. Um exemplo de comando é dado abaixo:
        
        qemu -enable-kvm                     \
     -smp 4                          \
     -cpu host                       \
     -m 1G                           \
     -drive file=$VDISK_FILENAME     \
     -cdrom grub-img.iso             \
     -boot order=c,once=d,menu=on    \
     -net nic,netdev=net0            \
     -netdev user,id=net0            \
     -device ac97                    \
     -vga std                        \
     -serial mon:stdio               \
     -name "fedora-16"
        
          Significado das opções da linha de comando
        
        
          -enable-kvm: habilita o
          suporte completo à virtualização KVM. Em alguns hardwares,
          possivelmente seja necessário adicionar a opção não documentada
          -machine smm=off para a finalidade de
          habilitar o KVM.
        
        
          -smp <N>: habilita o
          multiprocessamento simétrico com <N> CPUs.
        
        
          -cpu <model>: simula
          a CPU <model>. A lista dos modelos suportados pode ser obtida
          com -cpu help.
        
        
          -drive
          file=<nome_do_arquivo>: define um disco virtual
          cuja imagem está armazenada em <nome_de_arquivo>.
        
        
          -cdrom grub-img.iso: define
          um arquivo em formato ISO para usar como um CDROM. Aqui usamos um
          disco de resgate do GRUB, que pode ser útil quando algo der errado
          no momento da inicialização.
        
        
          -boot
          order=c,once=d,menu=on: define a ordem da inicialização
          para o BIOS virtual.
        
        
          -net
          nic,netdev=<netid>: define uma placa de rede de
          comunicação conectada ao dispositivo de rede de comunicação com id
          <netid>.
        
        
          -netdev
          user,id=<netid>: define o dispositivo do(a)
          “usuário(a)”
          da rede de comunicação. Essa é uma rede de comunicação local
          virtual com endereços 10.0.2.0/24, onde o anfitrião tem o endereço
          10.0.2.2 e atua como um gateway para a Internet; e com um servidor
          de nomes no endereço 10.0.2.3 e um servidor SMB no endereço
          10.0.2.4 . Um servidor DHCP integrado consegue alocar endereços
          entre 10.0.2.15 e 10.0.2.31.
        
        
          -soundhw <modelo>:
          define o modelo da placa de som. A lista pode ser obtida com
          -soundhw help.
        
        
          -vga <tipo>: define o
          tipo de placa VGA a emular. Para -vga
          std, se você estiver construindo um núcleo Linux para o
          convidado, é recomendado habilitar CONFIG_DRM_BOCHS (como parte do núcleo ou um módulo
          do núcleo) para controlar todos os recursos da placa VGA emulada e
          CONFIG_FB para exibir o console do
          Linux nela. Os outros valores <tipo> não estão testados pelos(as)
          editores(as) e possivelmente exijam dependências adicionais.
        
        
          -serial mon:stdio: envia a
          porta serial do convidado (/dev/ttyS0
          em convidados Linux), multiplexada com o monitor do qemu, para a
          entrada e saída padrão do processo do qemu.
        
        
          -name <nome>:
          configura o nome do convidado. Esse nome é exibido na legenda da
          janela do convidado. Possivelmente seja útil se você executar
          vários convidados ao mesmo tempo.
        
        
          -drive
          if=pflash,format=raw,readonly=on,file=/usr/share/qemu/edk2-x86_64-code.fd:
          Carrega um firmware EDK2 UEFI pré construído, em vez do BIOS padrão
          do PC. Use essa opção se você quiser inicializar o Sistema
          Operacional convidado com UEFI.
        
        
          -drive
          file=<nome_do_arquivo>,if=virtio: Fornece interface
          Virtio para o núcleo do convidado para acessar a imagem do disco,
          em vez de simular um hardware real de disco. Isso pode melhorar o
          desempenho de Entrada/Saída do disco, mas exige um controlador
          Virtio no núcleo do convidado. Use-o em vez de um -drive simples se o núcleo do convidado suportar o
          Virtio. Para construir um núcleo Linux com suporte Virtio para o
          convidado, use make defconfig
          && make kvm_guest.config para criar uma
          configuração inicial do núcleo com os controladores Virtio
          habilitados, então faça sua personalização. E, se o núcleo do
          convidado for Linux, [então] os discos virtuais usando a interface
          Virtio serão nomeados vdx no
          devtmpfs, em vez de sdx.
        
        
          -net
          nic,netdev=net0,model=virtio-net-pci: Fornece interface
          Virtio para o núcleo do convidado para acessar a interface de rede
          de comunicação, em vez de simular uma placa real de interface de
          rede de comunicação. Isso pode melhorar o desempenho de
          Entrada/Saída da rede de comunicação, mas exige um controlador
          Virtio no núcleo do convidado. Use-o em vez de um -net simples se o núcleo do convidado suportar o
          Virtio.
        
        
          Controlando a Tela Emulada
        
        
          Para configurar a resolução da tela emulada para um servidor Xorg
          executando no sistema Linux convidado, leia-se “Configurações de Ajuste
          Fino de Exibição”.
        
        
          Rede de comunicação
        
        
          A solução acima para rede de comunicação permite que o convidado
          acesse a rede local de comunicação por meio do anfitrião (e
          possivelmente acesse a Internet por meio de roteadores locais), mas
          o inverso não é verdadeiro. Nem mesmo o anfitrião consegue acessar
          o convidado, a menos que o encaminhamento de porta esteja
          habilitado. E, no caso de vários convidados estiverem executando,
          eles não conseguirão se comunicarem uns com os outros. Outros
          dispositivos de rede de comunicação podem ser usados para esse
          propósito. Por exemplo, existe o dispositivo “socket”, que permite que
          vários convidados compartilhem uma rede virtual de comunicação
          comum. A seguir, descrevemos em mais detalhes como configurar o
          dispositivo “bridge”, que permite que os convidados
          apareçam como se estivessem conectados à rede local de comunicação.
          Todos os comandos abaixo deveriam ser executados como o(a)
          usuário(a) root.
        
        
          Permite que o anfitrião encaminhe pacotes IP:
        
        sysctl -w net.ipv4.ip_forward=1
        
          Para tornar isso permanente, adicione o comando a /etc/sysctl.d/60-net-forward.conf:
        
        cat >> /etc/sysctl.d/60-net-forward.conf << EOF
net.ipv4.ip_forward=1
EOF
        
          Apronte um arquivo exigido de configuração:
        
        
install -vdm 755 /etc/qemu &&
echo allow br0 > /etc/qemu/bridge.conf
        
          Na linha de comando do qemu acima, substitua a chave -netdev user,... por -netdev bridge,....