วิธีหยุดการอัพเดตด้วงจากการสแกนไดรฟ์ทั้งหมด?


19

ทุกครั้งที่update-grubมีการเรียกใช้งานฮาร์ดไดรฟ์ทั้งหมดจะถูกสแกน แต่ละไดรฟ์ที่อยู่ในสถานะสแตนด์บายจะหมุนเพื่อไม่ทำงาน นี่คือการสูญเสียพลังงาน เราใช้ update-grub เวอร์ชั่น 1.98:

# update-grub -v
grub-mkconfig (GRUB) 1.98+20100804-14+squeeze1

การถอยหลัง

  1. มีGRUB_DISABLE_OS_PROBER=trueตัวเลือกใน/etc/default/grubไฟล์ แต่ดูเหมือนว่าจะใช้ได้เฉพาะกับรุ่น 2 ขึ้นไป อย่างน้อยก็ไม่หยุดสแกนไดรฟ์ทั้งหมดในเวอร์ชั่น 1.98 ของเรา

  2. มี/etc/grub.d/20_linux_xenสคริปต์ที่อาจทำงานเป็นส่วนหนึ่งของ update-grub หลังจากลบสิทธิ์ดำเนินการสำหรับผู้ใช้chmod a-x /etc/grub.d/20_linux_xenทั้งหมดที่มีไดรฟ์ทั้งหมดยังคงหมุน

จะหยุดupdate-grubการสแกนฮาร์ดไดรฟ์แต่ละตัวได้อย่างไร


มันเป็นเพียงเชลล์สคริปต์ ... แก้ไขหรือไม่ มันควรจะทำงานหลังจากอัพเดตเคอร์เนลเท่านั้นซึ่งไม่ได้เกิดขึ้นบ่อยนัก
จอร์แดน

/usr/sbin/grub-probe --target=device /หนึ่งในสายการรันสคริปต์ คำสั่งนั้นยังทำให้ไดรฟ์ทั้งหมดหมุน /usr/sbin/grub-probeไม่ได้เป็นเชลล์สคริปต์
Backup Pro

คุณวิ่งบ่อยแค่ไหนupdate-grub? สิ่งนี้จะเกิดขึ้นเมื่อคุณติดตั้งเคอร์เนลใหม่ดังนั้นใครจะสนใจ?
psusi

ฉันรู้ว่าการ picojoule ทั้งหมดที่ใช้นั้นเป็นของเสีย - ถ้าคุณใช้งาน update-grub 24/7 สำหรับเดือนกับคอมพิวเตอร์ 1,000 เครื่องที่มี HDD 3 ตัวแต่ละตัวมันอาจเพิ่มค่าไฟฟ้าของคุณหนึ่งหรือสองเปอร์เซ็นต์
tkbx

คำตอบ:


14

ในไฟล์/etc/grub.d/30_os-proberบรรทัด

OSPROBED="`os-prober | tr ' ' '^' | paste -s -d ' '`"

ทำให้ไดรฟ์ทั้งหมดหมุน (สแตนด์บาย -> ไม่ได้ใช้งาน) Os-proberเป็นเครื่องมือสำหรับค้นหาการติดตั้ง Linux ที่ไดรฟ์อื่น ๆ จากนั้นไดรฟ์สำหรับบูต มันเป็นสิ่งos-proberที่ต้องปิดการใช้งาน

  1. วิธีหนึ่งคือการเอาแพคเกจapt-get --purge remove os-prober :
  2. อีกวิธีหนึ่งคือการเอาสิทธิปฏิบัติการสำหรับ os-Prober แรกค้นหาตำแหน่งของ os-Prober $ which os-proberโดยใช้ /usr/bin/os-proberการส่งออกอาจมีลักษณะเช่น: การลบสิทธิ์ปฏิบัติการสำหรับผู้ใช้ทั้งหมดสำหรับไฟล์นั้น:# chmod a-x /usr/bin/os-prober
  3. อีกวิธีหนึ่งคือการเอาสิทธิปฏิบัติการสำหรับ 30_os-Prober ค้นหาสถานที่ตั้งของ 30_os-Prober $ locate /30_os-proberโดยใช้ /etc/grub.d/30_os-proberการส่งออกอาจมีลักษณะเช่น: การลบสิทธิ์ปฏิบัติการสำหรับผู้ใช้ทั้งหมดสำหรับไฟล์นั้น:# chmod a-x /etc/grub.d/30_os-prober
  4. แต่อีกทางหนึ่งคือการข้ามการดำเนินการ/etc/grub.d/30_os-proberของ ตัวอย่างเช่นการทำให้GRUB_DISABLE_OS_PROBER=trueตัวเลือกทำงานใน grub เวอร์ชั่น 1.98 ของเรา สิ่งนี้สามารถทำได้โดยการใส่/etc/grub.d/30_os-proberรหัสลงในไฟล์ด้านล่างบรรทัดset -e:

...

if [ "x${GRUB_DISABLE_OS_PROBER}" = "xtrue" ]; then
  exit 0
fi

5

สำหรับผู้ที่สงสัยว่ามันคุ้มค่ากับความพยายามจริง ๆ ใช่ไหม อาจไม่ใช่เพื่อการประหยัดพลังงาน แต่วันนี้ฉันพบปัญหากับ update-grub เนื่องจากต้องการสอบสวนทั้ง / dev / sda (harddisk ของฉัน) และ / dev / sdc (USB-stick) โดยไม่ต้องใส่หลังลงในแล็ปท็อปของฉัน update-grub จะหยุดทำงานแม้ว่าจริงๆแล้วจะไม่มี OS บน USB stick ของฉันติดตั้งและไม่เคยบูตจาก Stick นี้เลย ในขณะที่แท่ง USB เสียหายเมื่อเร็ว ๆ นี้ฉันต้องการวิธีอัปเดตด้วงเพื่อดำเนินการต่อ โชคดีที่GRUB_DISABLE_OS_PROBER=trueเพิ่งทำกลอุบาย :)


1
ฉันมีปัญหาผกผัน: การอัพเดตด้วงล้มเหลวหากมีแท่ง USB อยู่ อุปกรณ์ USB นั้นค่อนข้างแปลกเนื่องจากติดตั้ง Easy2Boot แล้ว แต่เนื่องจากสิ่งนี้อยู่ในคีออสก์โดยมีคำสั่ง update-grub ออกมาจากสคริปต์ที่วางไว้บนแท่ง USB ที่ติดตั้งแบบนี้โซลูชันนี้จึงยินดีเป็นอย่างยิ่ง
noamik

3

(สิ่งนี้คุ้มค่ากับเวลาและความพยายามในการแก้ไขหรือไม่)

ในขณะที่คุณกล่าวถึงแหย่อาจจะเกิดขึ้นเมื่อมีการโทรgrub-mkconfig grub-probeคุณสามารถปรับเปลี่ยนได้grub-mkconfigโดยเพียง hardcoding ผลลัพธ์ของการgrub-probeโทร มันถูกใช้เพื่อเติมเต็มGRUB_DEVICE, GRUB_DEVICE_UUID, GRUB_DEVICE_BOOT, และGRUB_DEVICE_BOOT_UUIDGRUB_FS


1

ดูวิธีการแก้ปัญหาของฉันที่นี่เพื่อเลือกปิดการใช้งานที่พาร์ทิชันจะถูกตรวจสอบโดยที่มีขนาดเล็กos-proberpatch

การกำหนดค่าของGRUB_OS_PROBER_SKIP_LIST="UUID@device_path"ใน/etc/default/grub:

  • ลดจำนวนอุปกรณ์ที่${OSPROBED}ใช้โดย/etc/grub.d/30_os-prober

  • ซึ่งหยุดการตรวจสอบด้วย ${grub_probe} --target=fs_uuid --device


0

ฉันรู้ว่านี่เป็นโพสต์เก่า แต่ฉันพบวิธีอื่นในการทำสิ่งนี้ให้สำเร็จโดยไม่เกี่ยวข้องกับการเปลี่ยนแปลงสคริปต์ ในการ/etc/grub.d/เปลี่ยนชื่อไฟล์30_os-proberไป.30_os-prober(เริ่มต้นด้วยระยะเวลา) และมันจะข้ามในระหว่างการอัพเดตแม้ว่ามันจะแสดงให้เห็นในสถานที่เดียวกันในกรณีที่คุณใช้ls-a

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