ข้อความ“ ไม่อนุญาตให้ใช้ไฟล์แบบกระจาย” หลังจากติดตั้งบนระบบไฟล์ btrfs


25

ฉันติดตั้ง Ubuntu โดยไม่ต้องสร้างพาร์ติชั่น swap และติดตั้ง/บน btrfs #ตอนนี้ฉันได้รับข้อความ "ไม่อนุญาตให้ใช้ไฟล์กระจัดกระจาย" ในการบู๊ตแต่ละครั้ง ข้อความนี้ปรากฏขึ้นก่อนหน้าจอสแปลช มีวิธีฆ่าคำเตือนนี้หรือไม่


ในระบบของฉันการกดปุ่มใด ๆ ก็ไม่ทำอะไรเลยมันติดอยู่!
Michael

1
วิธีการแก้ปัญหาในปี 2016 คือการตั้งค่าGRUB_SAVEDEFAULT=falseใน/etc/default/grubและวิ่งupdate-grub
สจ๊วร์ Cardall

คำตอบ:


33

ตกลงหลังจากบิตของการค้นหารอบฉันพบวิธีกำจัดปัญหานี้อย่างน้อยก็ชั่วคราวค่อนข้างง่าย แต่ฉันไม่ได้ติดตั้งระบบของฉันด้วย btrfs ดังนั้นฉันไม่สามารถยืนยันการแก้ไขนี้ได้

แสดงความคิดเห็นหรือลบบรรทัดนี้:

if [ -n ${have_grubenv} ]; then save_env recordfail; fi

หรือ

if [ -n "\${have_grubenv}" ]; then if [ -z "\${boot_once}" ]; then save_env \
recordfail; fi; fi

ในไฟล์นี้

/etc/grub.d/00_header

จากนั้นเรียกใช้

update-grub

เหตุผลที่ไม่แก้ไข/boot/grub/grub.cfgโดยตรงก็คือมันจะถูกเขียนทับทุกครั้งที่มีการอัพเดตด้วงในกรณีนี้คุณจะต้องทำการ "แก้ไข" ซ้ำอีกครั้งหากมีการอัพเดตแพ็คเกจทั่วไปของด้วง

นี่คือบั๊กบน launchpad หากคุณต้องการเพิ่มบั๊กของตัวเอง# 736743

การอ้างอิงColin Watsonจากรายงานข้อผิดพลาด

นี่เป็นข้อความแสดงข้อผิดพลาดที่ทำให้เข้าใจผิด: สิ่งที่เกิดขึ้นคือการติดตั้ง btrfs ของ GRUB นั้นไม่ได้ใช้ส่วนต่อประสานการอ่านไฟล์สำหรับการส่งกลับรายการบล็อกไปยังรหัสโทรศัพท์ ฉันโพสต์ไปที่ grub-devel เกี่ยวกับเรื่องนี้และผู้ดูแลระบบต้นน้ำชี้ให้เห็นว่าแม้จะมีปัญหาหลายอุปกรณ์การเขียนไปยัง btrfs จาก GRUB นั้นมีความเสี่ยงพื้นฐานเพราะ:

บล็อกเดียวกันอาจถูกใช้โดยหลายสแนปชอตทุกทรีที่ใช้บล็อกที่กำหนดจะมีการตรวจสอบของมันและอื่น ๆ ซ้ำ

อย่างไรก็ตาม btrfs สงวนพื้นที่เมื่อเริ่มต้นสำหรับบูตโหลดเดอร์ พื้นที่นี้มากกว่า GRUB จำเป็นต้องฝังตัวเองและดังนั้นเราจึงสามารถใช้ 1KB สำหรับบล็อกสิ่งแวดล้อม

ไม่ว่าในกรณีใด ๆ นี่ไม่ใช่ปัญหาใหม่ที่เกิดขึ้นจากการใช้ subvolumes และไม่ป้องกันการบูท (คุณจะได้รับข้อความแจ้งว่า "กดปุ่มใด ๆ เพื่อดำเนินการต่อ" แต่ถ้าคุณไม่สนใจมันจะทำการบูตต่อไป) ลดระดับเป็นสิ่งที่ปรารถนา

หวังว่านี่จะช่วยได้


1
คุณสามารถหาคำอธิบายว่าทำไมมันพ่นข้อผิดพลาดนี้เพื่อเริ่มต้นด้วย? ขอบคุณ :)
jrg

ในไฟล์ปรับแต่งของฉันบรรทัดมีลักษณะดังนี้:if [ -n "\${have_grubenv}" ]; then if [ -z "\${boot_once}" ]; then save_env recordfail; fi; fi
FUZxxl

1
ฉันจะแสดงความคิดเห็นออก หากไม่สามารถบู๊ตได้คุณจะยังสามารถยกเลิกการใส่เครื่องหมายบรรทัดโดยใช้ดิสก์สดได้
Allan

ถูก ฉันจะลองทำดู
FUZxxl

2
ดีมันใช้งานได้!
FUZxxl

1

ฉันกำลังทำงานสาขาการพัฒนาของ Raring Ringtail
ฉันประสบปัญหาเดียวกันเกี่ยวกับข้อความที่ไม่ได้รับอนุญาต ด้วงไม่แสดงเลยและบูทเข้าสู่ Ubuntu โดยตรง

ฉันอ่านนิตยสาร Linux (LXF) ซึ่งมีบทความเกี่ยวกับการกู้คืนและซ่อมแซมพาร์ติชันไฟล์ bootloaders และสิ่งอื่น ๆ

หนึ่งในนักเขียนบทความที่กล่าวถึงเครื่องมือง่ายๆที่จะนำมาใช้ ... Boot ซ่อมแซม
เครื่องมือนี้ได้หลอกลวงสำหรับฉันและในความคิดของฉันควรได้รับสถานที่ที่โดดเด่นในที่เก็บของอูบุนตู

เพิ่ม Boot-Repair ให้กับระบบของคุณ:

  1. เปิดหน้าต่างเทอร์มินัลและคัดลอก / วาง / พิมพ์ดังต่อไปนี้:

    sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
    
  2. คัดลอก / วาง / พิมพ์สิ่งต่อไปนี้เพื่อติดตั้งและเริ่ม Boot-Repair:

    sudo apt-get install -y boot-repair && boot-repair
    
  3. GUI หลักของ Boot-Repair ปรากฏให้เห็นแล้ว

    Click on a button called 'Recommended repair'.
    

    ปล่อยให้เครื่องมือทำมันว่า 'วิเศษ'

  4. เมื่อเวทย์มนตร์สิ้นสุดลง

    create a little note of the url visible. 
    
  5. รีบูทระบบและตรวจสอบว่าคุณสามารถเข้าถึงระบบปฏิบัติการที่กู้คืนมาได้หรือไม่

  6. เมื่อไม่มีความสำเร็จให้ใช้ URL ที่แสดงเมื่อสิ้นสุดการซ่อมแซมเพื่อขอความช่วยเหลือ


ฉันไม่คิดว่าจะช่วยได้เพราะนี่เป็นข้อผิดพลาดในด้วงตัวเอง
FUZxxl

ทำไมคุณคิดอย่างนั้น ฉันทำการติดตั้งแบบเสมือนหลายครั้งที่ 13.04 ซึ่งทั้งหมดมีปัญหาเดียวกัน แก้ไข grub.cfg แล้วไม่มีผลลัพธ์ ไม่ได้แก้ปัญหาข้อความ 'ไฟล์เบาบางไม่อนุญาต' สำหรับฉันเลย ด้วงก็ไม่เห็นแม้แต่ หลังจากที่ฉันลองวิธีแก้ปัญหาที่ฉันให้ไว้ในโพสต์ของฉันก่อนหน้านี้วันนี้มันทำงานเหมือนมีเสน่ห์และยังคงเป็น
C Schilder

น่าเศร้าที่ไม่ทำงานใน 14.04 Trusty amd64
loser114491
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.