Dostaję również ten błąd i nie sądzę, że dzieje się to w chroot.
tło
Myślę, że dzieje się tak, gdy systemd nie może znaleźć ścieżki, ponieważ jest zamontowany w katalogu. Różnica polega na tym, że podczas konfigurowania chroot już konfigurujesz dostęp do sprzętu, w tym dysków.
Chociaż możesz skonfigurować ten dostęp w Systemd, nie oznacza to, że możesz skonfigurować uprawnienia dla tych dysków w ten sam sposób.
Na przykład utworzyłem ten plik:
/etc/systemd/system/systemd-nspawn@.service.d/override.conf
I zawiera te ustawienia:
[Service]
DeviceAllow=char-usb_device rwm
DeviceAllow=char-usb
[Files]
Bind=/var/cache/apt/pkgcache.bin
Bind=/var/cache/apt/srcpkgcache.bin
To nadal nie działa, gdy używasz grub-install /dev/sda
lub update-grub
na USB na Pi debootstrapped z Debian Stretch. Nawet przy użyciu grub-uboot i grub-efi-arm nadal występuje błąd, który grub-probe
nie może znaleźć ścieżki kanonicznej.
Nie tylko to, ale update-grub
zobaczy i dowie się, jakie są systemy operacyjne, ale co ciekawe grub-install
, nie rozpoznaje systemu operacyjnego Debian na USB.
Przykład
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#
Ciekawe, kiedy utworzę chroot i mogę uruchomić update-grub
, mimo że korzystam z systemu operacyjnego, który debootstrapowałem do samego USB, nie widzi on własnego systemu operacyjnego!
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:/#
Widzi tylko Raspbian. Dzieje się tak tylko wtedy, gdy próbuję zainstalować i zaktualizować GRUB wewnątrz kontenera, ale kiedy wychodzę z chroot.
Zobacz, jak to działa, ponieważ nie odmontowałem katalogów chroot:
/dev dev/
/sys sys/
/proc proc/
/dev/pts dev/pts
Z zewnątrz kontenera, proszę cię, uruchamiam to polecenie z grub-uboot
zainstalowanym na Raspbian i bez Grub na USB zawierającym Debootstrapped Debian.
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#
Nie dzieje się tak przy użyciu jednego z nieoficjalnie dostępnych obrazów dla Debian ARM , ale oczywiście jest to nadal dostosowanie, które nie jest jeszcze dostępne do debootstrapowania.
Rozwiązywanie problemów
Naprawdę są chwile, kiedy lepiej jest po prostu stworzyć ścieżkę. Jedyną następną (i prawdopodobną) możliwością jest napisanie GRUB-a. I o tym po prostu przeczytam na tej stronie.
https://www.dedoimedo.com/computers/grub-2.html
Kolejną rzeczą, którą chcę podzielić się tym problemem, jest rozwiązanie, które może działać, ale zdaj sobie sprawę, że karty microSD są bardzo wrażliwe. Budowałem własne obrazy Linuksa i nauczyłem się tego szybko. Najlepiej jest używać Qemu, kiedy tylko możesz, ale aby wyczyścić starą tablicę partycji, możesz spróbować uruchomić sgdisk --zap-all
na dysku.
sgdisk --zap-all /dev/sdd
W rzeczywistości, czasami jeśli daje błąd po raz pierwszy i to nie błąd tylko do odczytu, można go uruchomić ponownie i ostatecznie wszystkie tabele partycji nowy czy stary.
I możesz użyć Qemu do emulacji Raspberry Pi na standardowym komputerze z procesorem AMD / Intel. Poleciłbym to. Wiem, że to więcej informacji niż dotyczy oryginalnego postu, ale myślę, że prawdopodobnie jest to sposób, w jaki ten błąd jest uzyskiwany. Jest to wiek kontenera.
sda6
? Czy moja odpowiedź tutaj pomaga?