ฉันได้รับข้อผิดพลาดนี้ด้วยและฉันไม่คิดว่ามันจะเกิดขึ้นใน chroot
พื้นหลัง
ฉันคิดว่านี่เป็นตอนที่ systemd ไม่สามารถหาเส้นทางได้เพราะมันถูกเมาท์ในไดเรกทอรี ดังนั้นความแตกต่างคือเมื่อคุณตั้งค่า chroot คุณได้กำหนดค่าการเข้าถึงฮาร์ดแวร์รวมถึงไดรฟ์
แม้ว่าคุณจะสามารถกำหนดค่าการเข้าถึงนี้ภายใน Systemd ซึ่งไม่ได้หมายความว่าคุณสามารถกำหนดค่าการอนุญาตสำหรับไดรฟ์เหล่านั้นได้ในลักษณะเดียวกัน
ตัวอย่างเช่นฉันสร้างไฟล์นี้:
/etc/systemd/system/systemd-nspawn@.service.d/override.conf
และประกอบด้วยการตั้งค่าเหล่านี้:
[Service]
DeviceAllow=char-usb_device rwm
DeviceAllow=char-usb
[Files]
Bind=/var/cache/apt/pkgcache.bin
Bind=/var/cache/apt/srcpkgcache.bin
สิ่งนี้ยังคงไม่ทำงานเมื่อใช้grub-install /dev/sda
หรือupdate-grub
สำหรับ USB บน Pi debootstrapped ด้วย Debian Stretch แม้การใช้ grub-uboot และ grub-efi-arm ยังมีข้อผิดพลาดที่grub-probe
ไม่สามารถหาเส้นทางที่เป็นที่ยอมรับ
ไม่เพียงแค่นั้น แต่update-grub
จะเห็นและรู้ว่าระบบปฏิบัติการคืออะไร แต่น่าสนใจที่grub-install
ไม่รู้จักระบบปฏิบัติการ Debian บน USB
ตัวอย่าง
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#
ที่น่าสนใจเมื่อฉันสร้าง chroot และสามารถทำงานupdate-grub
ได้แม้ว่าฉันจะอยู่บนระบบปฏิบัติการที่ฉัน debootstrapped ไปที่ USB ตัวมันก็ไม่เห็นระบบปฏิบัติการของตัวเอง!
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:/#
มันเห็น Raspbian เท่านั้น สิ่งนี้เกิดขึ้นเฉพาะเมื่อพยายามติดตั้งและอัปเดต GRUB ภายในคอนเทนเนอร์ แต่เมื่อฉันออกจาก chroot
ดูวิธีการใช้งานในตอนนี้เพราะฉันไม่ได้ยกเลิกการต่อเชื่อมไดเรกทอรี chroot:
/dev dev/
/sys sys/
/proc proc/
/dev/pts dev/pts
จากนอกใจคุณฉันกำลังใช้คำสั่งนี้พร้อมกับgrub-uboot
ติดตั้งบน Raspbian และไม่มี Grub บน USB ที่มี 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#
สิ่งนี้ไม่ได้เกิดขึ้นโดยใช้หนึ่งในภาพที่ไม่เป็นทางการสำหรับ Debian ARMแต่เห็นได้ชัดว่านี่ยังคงเป็นการปรับแต่งที่ยังไม่สามารถทำการ debootstrapping ได้
การแก้ไขปัญหา
จริงๆแล้วมีบางครั้งที่มันจะดีกว่าเพียงแค่สร้างเส้นทาง ความเป็นไปได้ต่อไปเท่านั้น (และโอกาสที่จะเกิดขึ้น) คือการเขียน GRUB และสำหรับสิ่งที่ฉันกำลังจะอ่านในหน้านี้
https://www.dedoimedo.com/computers/grub-2.html
อีกสิ่งหนึ่งที่ฉันต้องการแบ่งปันเกี่ยวกับปัญหานี้คือวิธีแก้ปัญหาที่อาจใช้งานได้ แต่การตระหนักถึงการ์ด microSD นั้นมีความละเอียดอ่อนมาก ฉันสร้างอิมเมจ Linux ของตัวเองแล้วเรียนรู้อย่างรวดเร็ว สิ่งที่ดีที่สุดที่ควรทำคือใช้ Qemu ทุกครั้งที่ทำได้ แต่เพื่อพยายามล้างตารางพาร์ติชั่นเก่าคุณอาจลองเรียกใช้sgdisk --zap-all
บนไดรฟ์
sgdisk --zap-all /dev/sdd
ในความเป็นจริงบางครั้งถ้ามันให้ข้อผิดพลาดในครั้งแรกและไม่ใช่ข้อผิดพลาดแบบอ่านอย่างเดียวคุณสามารถเรียกใช้อีกครั้งและในที่สุดก็จะตารางพาร์ติชันใหม่หรือเก่า
และคุณสามารถใช้ Qemu เพื่อเลียนแบบ Raspberry Piบนพีซีมาตรฐานของ AMD / Intel ฉันอยากจะแนะนำ ฉันรู้ว่านี่เป็นข้อมูลมากกว่าที่เกี่ยวข้องกับการโพสต์ต้นฉบับ แต่ฉันคิดว่าน่าจะเป็นวิธีที่ได้รับข้อผิดพลาดนี้ มันเป็นอายุของภาชนะบรรจุ
sda6
ไหน? คำตอบของฉันที่นี่ช่วยได้ไหม