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 / 786071
Accepted
Dair
Dair
Asked: 2024-11-04 04:58:57 +0800 CST2024-11-04 04:58:57 +0800 CST 2024-11-04 04:58:57 +0800 CST

Instalando o Alpine no DC Roma Laptop II (RISC-V): Como posso criar uma imagem de um "Mini Root Filesystem"?

  • 772

Recentemente, fiz uma pergunta no Reddit sobre como instalar o Arch no meu DC Roma Laptop II. Uma das sugestões foi usar o Alpine, pois ele tem suporte para RISC-V. Olhando a página de downloads, há de fato um RISC-V "Mini Root Filesystem" disponível para download. Depois de baixar isso, tentei convertê-lo em um iso usando (semelhante ao que descrevi no tópico do Reddit):

mkisofs -o alpine_riscv.iso ~/Downloads/alpine-minirootfs-3.20.3-riscv64

E para copiá-lo para o cartão Micro SD que pretendo inicializar, executei:

sudo dd if=alpine_riscv.img of=/dev/sdb bs=64M conv=fsync oflag=direct status=progress

Depois de tentar inicializar o computador com o Micro SD inserido, só aparece uma tela em branco. Não tenho muita certeza do que fazer com um "Mini Root Filesystem" para realmente construir uma imagem correta. (Estou acostumado a apenas fazer flash de arquivos ISO pré-construídos. Suspeito que estou fazendo algo gravemente errado.) Existe algum utilitário de linha de comando para ajudar a converter Mini Root Filesystems em imagens ISO que eu possa usar para inicializar?

boot
  • 1 1 respostas
  • 42 Views

1 respostas

  • Voted
  1. Best Answer
    grawity
    2024-11-04T15:45:17+08:002024-11-04T15:45:17+08:00

    …para imagens ISO que eu possa usar para inicializar?

    Essas imagens não são inicializáveis ​​porque são arquivos ISO – é mais como se fossem inicializáveis ​​apesar de serem arquivos ISO.

    Um verdadeiro sistema de arquivos ISO 9660 (como o que você cria com o mkisofs) teria um cabeçalho de inicialização totalmente diferente do MBR ou GPT usual – ele usaria o formato El Torito, com uma opção especial do mkisofs para isso (que funciona incorporando uma "imagem de inicialização" inteira separada que pode ter seu próprio sistema de arquivos!) – e então ele só seria inicializável como um CD/DVD.

    Em vez disso, as imagens que você estava gravando em cartões SD foram preparadas especificamente para se tornarem imagens "ISO híbridas" que têm vários cabeçalhos sobrepostos (por exemplo, a mesma partição do sistema EFI sendo referenciada simultaneamente do GPT e do El Torito) ou não eram imagens ISO 9660; na verdade, o termo "ISO" é em grande parte vestigial fora das imagens x86.

    (É verdade que a maioria das imagens de "pendrive" para PCs x86 são tradicionalmente imagens híbridas que ainda têm um sistema de arquivos ISO 9660 para gravação em um CD, mas uma imagem que foi criada para ser gravada exclusivamente em SD/USB não tem razão para ter um - por exemplo, uma imagem ARM64 criada para um cartão SD de um Raspberry Pi não tem vestígios de ser uma "ISO".)

    Então, se você não estiver gravando a imagem em um DVD, você deve ignorar o mkisofs completamente e, em vez disso, pensar nessas imagens como uma cópia literal 1:1 do que você normalmente teria no disco do sistema. Ou seja, uma tabela de partição GPT, uma "Partição de Sistema EFI" FAT32 regular (até onde eu sei, o RISC-V usa UEFI?), uma partição ext4 regular "Alpine rootfs" e, claro, algo como GRUB para torná-la inicializável.

    Para criar isso, você pode:

    1. crie um arquivo vazio de XX GB (usando fallocateou outras ferramentas),
    2. anexar usando losetup -P,
    3. particione-o usando fdisk,
    4. criar sistemas de arquivos usando mkfs.fat /dev/loop0p0e mkfs.ext4 /dev/loop0p1,
    5. monte em /mnt, descompacte o tarball, faça chroot, instale um kernel (pelo que me lembro, o miniroot do Alpine não tem kernel), instale o GRUB ou qualquer bootloader que os sistemas RISC-V possam usar. Você pode precisar usar as ferramentas de emulação de espaço de usuário do qemu para fazer chroot e executar apk.

    ...ou pule a 'imagem' e apenas particione e faça mkfs no cartão SD real, pois o resultado seria o mesmo.


    Há também outra abordagem: se o laptop já roda Ubuntu, seria possível instalar outra distribuição de dentro. Descompacte o miniroot para /new; use o cartão SD do Debian para mover todo o conteúdo antigo (ou seja, o Ubuntu [/mnt]/usr e tal) para [/mnt]/old, e troque o miniroot Alpine de /new em seu lugar; faça chroot e instale um kernel Alpine¹; certifique-se de que a configuração do bootloader ainda seja válida.

    ¹ Também deve ser possível inicializar o Alpine usando um kernel do Ubuntu, desde que o /lib/modules do Ubuntu seja copiado para o rootfs do Alpine.

    • 1

relate perguntas

  • Por que `journalctl --list-boots` não corresponde ao relatório `uptime` e `who -b`?

  • Como iniciar um programa de console na inicialização (dentro de ../openbox/autostart)

  • Sistema intacto, grub quebrado

  • "pacman -Syu" 'provavelmente' quebrou meu sistema, porque a inicialização não foi montada

  • SSD clonado não inicializa e imprime linhas estranhas

Sidebar

Stats

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

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

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

    • 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

    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
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • 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
    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

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