AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 470210
Accepted
perror
perror
Asked: 2018-09-21 00:08:36 +0800 CST2018-09-21 00:08:36 +0800 CST 2018-09-21 00:08:36 +0800 CST

Construindo e executando uma imagem do sistema ARM com QEMU?

  • 772

Estou tentando configurar uma imagem de sistema completa para ARM ( armhf, armelou mesmo aarch64) baseada no Debian que pode ser executada com QEMU. Infelizmente, todos os exemplos que encontrei na Web iniciam a imagem passando o kernel (e possivelmente o initrdse requer alguns módulos).

Mas, eu realmente gostaria de iniciar o sistema como é feito com qemu-system-amd64o , apenas fornecendo a imagem do disco e a imagem do CD-ROM (para iniciar a instalação).

Eu posso entender que não há padrão para -machinee -cpu, mas não consigo encontrar nenhuma pista na web sobre como fazer algo como:

#> wget \
   http://cdimage.debian.org/.../armhf/iso-cd/debian-testing-armhf-netinst.iso
...
#> qemu-img create -f qcow2 debian-armhf.qcow 20G
...
#> qemu-system-arm -machine vexpress-a9 -cpu cortex-a9     \
                   -hda debian-armhf.qcow                  \
                   -cdrom debian-testing-amd64-netinst.iso \
                   -boot d
...
#> qemu-system-arm -machine vexpress-a9 -cpu cortex-a9     \
                   -hda debian-armhf.qcow                  \
                   -net nic -net user,hostfwd=tcp::2222-:22
...

Então, eu realmente me pergunto se tal coisa é possível... E se sim, como? E se não, por quê?

debian virtual-machine
  • 1 1 respostas
  • 11831 Views

1 respostas

  • Voted
  1. Best Answer
    Brian Redbeard
    2018-09-26T17:01:03+08:002018-09-26T17:01:03+08:00

    Esta é uma ótima pergunta e uma que eu escolhi para me aprofundar um tempo atrás, só que para mim estava usando MIPS/MIP64.

    Existem alguns problemas que tornam isso desafiador.

    Ao inicializar um host Linux, o Kernel precisa entender o hardware com o qual está trabalhando. Para algumas arquiteturas (como amd64), a descoberta de firmware é tratada pelo BIOS por meio de "Configuração avançada e interface de alimentação" ( ACPI ). Em outros casos isso é tratado por uma interface de firmware extensível ( EFI ) ou mesmo ATAGS como uma solução muito antiga. Na maioria dos sistemas embarcados modernos, o uso do ATAGS foi substituído por um mecanismo chamado "blob de árvore de dispositivos" ( DTB ). Uma série de usuários úteis fez um trabalho muito melhor explicando a diferença do que eu.

    O objetivo de tudo isso é ajudar o kernel quanto à configuração do hardware e geralmente funciona em conjunto com o bootloader. No seu caso, escolher entre ARM little endian ( armel), ARM hard floating point ( armhf) e ARM 64 bit ( aarch64) é uma primeira decisão crítica, pois tem ramificações para a escolha de pacotes compilados, Kernel, etc, pois tudo precisará em conformidade com a "arquitetura do conjunto de instruções" emulada ( ISA ).

    Entendo que você queira a simplicidade de um disco em branco e uma imagem de CD, mas é por isso que não existem "instaladores" dessa forma para sistemas como o Raspberry Pi*. Quando você baixa uma imagem Raspbian, ela inclui um conjunto estruturado de partições que inclui um gerenciador de inicialização (das uBoot), um blob de árvore de dispositivos para o hardware correspondente e um conjunto básico de pacotes disponíveis com os repositórios de pacotes configurados.

    Isso toca em outra curiosidade interessante... Você já olhou para o que aquela imagem ISO está fazendo quando você "instala" o Linux?

    Deixe-me usar instaladores baseados no Anaconda (Fedora, RHEL, CentOS, etc) como exemplo.

    Quando você inicia a instalação, ele inicializa um sistema ativo mínimo que automaticamente começa a executar o utilitário python Anaconda . O Anaconda então solicita ao usuário que responda a uma série de perguntas, preenche um arquivo de configuração em seu idioma específico de domínio e, em seguida, cria um chroot e executa um conjunto de instalações de pacotes dentro desse chroot.

    Isso... de uma forma pequena, é como usar aquela imagem Raspbian.

    Então o que isso quer dizer?

    Bem, primeiro há respostas que eu recomendaria, dependendo de como você deseja proceder?

    Se emular um RPi for suficiente, deixe-me sugerir: Usando QEMU para emular um Raspberry Pi

    Se você quiser emular algo mais como um sistema baseado em "nuvem", George Hawkins mantém um Gist com algumas ótimas instruções .

    Se você realmente quer ir do zero, o usuário do Debian Aurel32 mantém há anos um conjunto de imagens de base prontas para inicializar , bem como um ótimo artigo em seu blog de um processo semelhante .

    • 7

relate perguntas

  • Configuração do GRUB para reconhecer diferentes ambientes de desktop (instalações) da mesma distribuição Linux

  • astyle não altera a formatação do arquivo de origem

  • Recebendo e-mail em um novo Debian fresco

  • Debian Stretch: gnome-software segfault em libgs_plugin_systemd-updates.so

  • Como digitar ü no Pinyin IME?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve