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?
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:
fallocate
ou outras ferramentas),losetup -P
,fdisk
,mkfs.fat /dev/loop0p0
emkfs.ext4 /dev/loop0p1
,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.