Também recebo esse erro e não acho que isso aconteça em um chroot.
fundo
Eu acho que é quando o systemd não consegue encontrar o caminho porque está montado em um diretório. Portanto, a diferença é que, quando você configura um chroot, já configura o acesso ao hardware, incluindo unidades.
Embora você possa configurar esse acesso no Systemd, isso não significa que você possa configurar as permissões para essas unidades da mesma maneira.
Por exemplo, eu criei este arquivo:
/etc/systemd/system/systemd-nspawn@.service.d/override.conf
E contém estas configurações:
[Service]
DeviceAllow=char-usb_device rwm
DeviceAllow=char-usb
[Files]
Bind=/var/cache/apt/pkgcache.bin
Bind=/var/cache/apt/srcpkgcache.bin
Isso ainda não funciona quando se usa grub-install /dev/sda
ou update-grub
para um USB no Pi desinicializado com o Debian Stretch. Mesmo usando grub-uboot e grub-efi-arm, ainda existe o erro degrub-probe
não pode encontrar o caminho canônico.
Não apenas isso, mas update-grub
também verá e saberá quais são os sistemas operacionais, mas de maneira interessantegrub-install
, não reconhece que o sistema operacional Debian está no USB.
Exemplo
root@raspixmc:/home/pi# grub-install /dev/sda
Installing for arm-uboot platform.
grub-install: warning: no hints available for your platform. Expect
reduced performance.
grub-install: warning: WARNING: no platform-specific install was
performed.
Installation finished. No error reported.
root@raspixmc:/home/pi#
Interessante, quando eu crio um chroot e posso executar update-grub
, mesmo estando no sistema operacional que iniciei a inicialização do próprio USB, ele não vê seu próprio sistema operacional!
root@raspixmc:/home/pi# mount /dev/sda1 /mnt
root@raspixmc:/home/pi# cd /mnt
root@raspixmc:/mnt# mount --bind /dev dev/
root@raspixmc:/mnt# mount --bind /sys sys/
root@raspixmc:/mnt# mount --bind /proc proc/
root@raspixmc:/mnt# mount --bind /dev/pts dev/pts
root@raspixmc:/mnt# chroot . bin/bash
root@raspixmc:/# update-grub
Generating grub configuration file ...
Found Raspbian GNU/Linux 9 (stretch) on /dev/mmcblk0p2
done
root@raspixmc:/#
Só vê Raspbian. Isso acontece apenas ao tentar instalar e atualizar o GRUB dentro do contêiner, mas quando saio do chroot.
Veja como agora funciona porque eu não desmontei os diretórios chroot:
/dev dev/
/sys sys/
/proc proc/
/dev/pts dev/pts
De fora do contêiner, lembre-se, estou executando este comando com o grub-uboot
Raspbian instalado e sem o Grub no USB que contém o Debian com desbootstrap.
root@raspixmc:/mnt# update-grub
Generating grub configuration file ...
Found Raspbian GNU/Linux 9 (stretch) on /dev/mmcblk0p2
Found Debian GNU/Linux 9 (stretch) on /dev/sda1
done
root@raspixmc:/mnt#
Isso não acontece usando uma das imagens não oficiais disponíveis para o Debian ARM , mas obviamente ainda é uma personalização ainda não disponível para desbootstrapping.
Solução de problemas
Realmente, há momentos em que é melhor apenas criar um caminho. A única possibilidade seguinte (e provável) é simplesmente escrever o GRUB. E por isso vou ler nesta página.
https://www.dedoimedo.com/computers/grub-2.html
Outra coisa que quero compartilhar sobre esse problema é uma solução que pode funcionar, mas percebe que os cartões microSD são muito sensíveis. Eu tenho construído minhas próprias imagens do Linux e aprendi isso rapidamente. A melhor coisa a fazer é usar o Qemu sempre que puder, mas para tentar limpar uma tabela de partições antiga, tente executar sgdisk --zap-all
na unidade.
sgdisk --zap-all /dev/sdd
Na verdade, por vezes, se ele dá um erro na primeira vez e é não leitura, você poderá executá-lo novamente e finalmente todas as tabelas de partição serão novas ou antigas.
E você pode usar o Qemu para emular o Raspberry Pi em um PC padrão baseado em AMD / Intel. Eu recomendaria. Eu sei que isso é mais informações do que pertence à postagem original, mas acho que é provável que esse erro seja derivado. É a idade do contêiner.
sda6
? Minha resposta aqui ajuda?