Tôi cũng nhận được lỗi này và tôi không nghĩ rằng nó xảy ra trong một chroot.
Lý lịch
Tôi nghĩ rằng đây là khi systemd không thể tìm thấy đường dẫn bởi vì nó được gắn trong một thư mục. Vì vậy, sự khác biệt là khi bạn thiết lập một chroot, bạn đã cấu hình quyền truy cập vào phần cứng, bao gồm cả ổ đĩa.
Mặc dù bạn có thể định cấu hình quyền truy cập này bên trong Systemd, điều đó không có nghĩa là bạn có thể định cấu hình quyền cho các ổ đĩa đó theo cùng một cách.
Chẳng hạn, tôi đã tạo tập tin này:
/etc/systemd/system/systemd-nspawn@.service.d/override.conf
Và nó chứa các cài đặt này:
[Service]
DeviceAllow=char-usb_device rwm
DeviceAllow=char-usb
[Files]
Bind=/var/cache/apt/pkgcache.bin
Bind=/var/cache/apt/srcpkgcache.bin
Điều này vẫn không hoạt động khi sử dụng grub-install /dev/sda
hoặc update-grub
cho USB trên Pi gỡ lỗi với Debian Stretch. Ngay cả khi sử dụng grub-uboot và grub-efi-arm vẫn có lỗi đó grub-probe
không thể tìm thấy đường dẫn chính tắc.
Không chỉ vậy mà mặc dù update-grub
sẽ thấy và biết hệ điều hành là gì, nhưng thú vị là grub-install
không nhận ra hệ điều hành Debian có trên USB.
Thí dụ
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#
Thật thú vị, khi tôi tạo một chroot và có thể chạy update-grub
, mặc dù tôi đang sử dụng hệ điều hành mà tôi đã gỡ lỗi cho chính USB nhưng nó không thấy hệ điều hành của chính nó!
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:/#
Nó chỉ thấy Raspbian. Điều này chỉ xảy ra khi cố gắng cài đặt và cập nhật GRUB bên trong container, nhưng khi tôi thoát khỏi chroot.
Xem cách nó hoạt động vì tôi đã không ngắt các thư mục chroot:
/dev dev/
/sys sys/
/proc proc/
/dev/pts dev/pts
Từ bên ngoài bộ chứa, bạn đang chạy lệnh này với grub-uboot
cài đặt trên Raspbian và không có Grub trên USB có chứa Debian gỡ lỗi.
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#
Điều này không xảy ra khi sử dụng một trong những hình ảnh có sẵn không chính thức cho Debian ARM , nhưng rõ ràng đây vẫn là một tùy chỉnh chưa có sẵn để gỡ lỗi.
Xử lý sự cố
Thực sự có những lúc tốt hơn là chỉ tạo ra một con đường. Khả năng tiếp theo duy nhất (và khả năng có thể xảy ra) là chỉ cần viết GRUB. Và vì điều đó tôi sẽ đọc trên trang này.
https://www.dedoimedo.com/computers/grub-2.html
Một điều khác tôi muốn chia sẻ về vấn đề này là một giải pháp có thể hoạt động, nhưng nhận ra thẻ nhớ microSD rất nhạy cảm. Tôi đã xây dựng hình ảnh Linux của riêng mình và học được điều này nhanh chóng. Điều tốt nhất để làm là sử dụng Qemu bất cứ khi nào bạn có thể, nhưng để cố gắng xóa bảng phân vùng cũ, bạn có thể thử chạy sgdisk --zap-all
trên ổ đĩa.
sgdisk --zap-all /dev/sdd
Trong thực tế, đôi khi nếu nó xảy ra lỗi lần đầu tiên và đó không phải là lỗi chỉ đọc, bạn có thể chạy lại và cuối cùng tất cả các bảng phân vùng mới hoặc cũ.
Và bạn có thể sử dụng Qemu để mô phỏng Raspberry Pi trên PC dựa trên AMD / Intel tiêu chuẩn. Tôi muốn giới thiệu nó. Tôi biết đây là thông tin nhiều hơn liên quan đến bài viết gốc, nhưng tôi nghĩ đó có khả năng là lỗi này xuất phát từ đâu. Đó là thời đại container.
sda6
đâu? Có câu trả lời của tôi ở đây giúp đỡ?