ฉันจะเพิ่มตัวเลือก Memtest86 + กลับไปที่เมนู Grub ได้อย่างไร


34

หากใช้ UEFI โปรดดูคำถามนี้"ฉันสามารถบูต memtest86 + ถ้าฉันใช้ UEFI ได้หรือไม่"

หลังจากติดตั้ง Ubuntu 12.04 รุ่น 64 บิตบน Lenovo B570 ของฉันฉันพบปัญหาเดียวกันกับที่ฉันมีเมื่อติดตั้ง 11.10 กับ Grub ที่ไม่ได้เล่นอย่างดีกับระบบ uEFI ฉันใช้เทคนิคเดียวกับครั้งสุดท้ายในการแก้ปัญหา (ใช้เซสชัน Super Grub Disc LiveCD เพื่อซ่อมแซม Grub) และระบบของฉันอย่างมีความสุขสองบู๊ตระหว่าง Ubuntu และ Windows 7

อย่างไรก็ตามตอนนี้เมื่อฉันบูทเมนู Grub จะแสดงขึ้นเท่านั้น

  • Ubuntu พร้อม Linux 3.2.0-24-generic
  • Ubuntu พร้อม Linux 3.2.0-24-generic (โหมดการกู้คืน)
  • Linux เวอร์ชันก่อนหน้า
  • Windows 7 (ตัวโหลด) (บน / dev / sda1)
  • สภาพแวดล้อมการกู้คืนของ Windows (ตัวโหลด) (บน / dev / sda4)

ฉันไม่เห็นตัวเลือกในการใช้ Memtest86 + ซึ่งอยู่ที่นั่นก่อนหน้านี้มีการตรวจสอบในศูนย์ซอฟต์แวร์ Ubuntu ฉันเห็นว่ามีการติดตั้งแพ็คเกจ แต่ฉันจะทำให้ตัวเลือกเพื่อเรียกใช้อีกครั้งปรากฏในเมนู Grub ได้อย่างไร

ฉันได้พยายาม:

sudo update-grub 

ซึ่งไม่ได้สร้างความแตกต่าง

sudo chmod +x /etc/grub.d/20_memtest86+ 

ผลลัพธ์ใน:

chmod: cannot access /etc/grub.d/20_memtest86+': No such file or directory

และเข้าสู่

ls /etc/grub.d/

ผลลัพธ์ใน:

00_header        10_linux      30_os-prober  41_custom
05_debian_theme  20_linux_xen  40_custom     README

ลองเพิ่มสคริปต์ตามรายละเอียดด้านล่างคัดลอกมาจากเครื่องของฉันทำการปรับปรุง chmod + x และ grub และดูว่าใช้งานได้หรือไม่ ฉันเห็นคุณทำ - ยินดีต้อนรับ
23 93 26 35 19 57 3 89

คำตอบ:


19

ลองเปิดเทอร์มินัลแล้วเริ่มทำงาน

sudo chmod +x /etc/grub.d/20_memtest86+
sudo update-grub

ตรวจสอบเพื่อดูว่ามันมี

grep memtest /boot/grub/grub.cfg

เพิ่งทำแบบเดียวกับที่ฉันปิดใช้งาน

hob@hob-HP-dx5150-MT:~$ cat /boot/grub/grub.cfg |grep memtest
hob@hob-HP-dx5150-MT:~$ sudo chmod +x /etc/grub.d/20_memtest86+
[sudo] password for hob: 
hob@hob-HP-dx5150-MT:~$ sudo update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.2.0-24-generic
Found initrd image: /boot/initrd.img-3.2.0-24-generic
Found linux image: /boot/vmlinuz-3.2.0-23-generic
Found initrd image: /boot/initrd.img-3.2.0-23-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Ubuntu 11.10 (11.10) on /dev/sda6
Found Trisquel 5.5 (5.5) on /dev/sda8
Found Ubuntu 12.04 LTS (12.04) on /dev/sda9
done
hob@hob-HP-dx5150-MT:~$ cat /boot/grub/grub.cfg |grep memtest
### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
    linux16 /boot/memtest86+.bin
menuentry "Memory test (memtest86+, serial console 115200)" {
    linux16 /boot/memtest86+.bin console=ttyS0,115200n8
### END /etc/grub.d/20_memtest86+ ###

คุณสามารถลองสร้างไฟล์ได้หากยังไม่มีโดยใช้ nano ในเทอร์มินัล

sudo nano /etc/grub.d/20_memtest86+

หรือด้วยตัวแก้ไขกุย

gksudo gedit /etc/grub.d/20_memtest86+

เติมด้วย

#!/bin/sh
set -e

if [ -f /usr/lib/grub/grub-mkconfig_lib ]; then
  . /usr/lib/grub/grub-mkconfig_lib
  LX=linux16
elif [ -f /usr/lib/grub/update-grub_lib ]; then
  . /usr/lib/grub/update-grub_lib
  LX=linux
else
  # no grub file, so we notify and exit gracefully
  echo "Cannot find grub config file, exiting." >&2
  exit 0
fi

# We can't cope with loop-mounted devices here.
case ${GRUB_DEVICE_BOOT} in
  /dev/loop/*|/dev/loop[0-9]) exit 0 ;;
esac

prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/")"

if test -e /boot/memtest86+.bin ; then
  MEMTESTPATH=$( make_system_path_relative_to_its_root "/boot/memtest86+.bin" )
  echo "Found memtest86+ image: $MEMTESTPATH" >&2
  cat << EOF
menuentry "Memory test (memtest86+)" {
EOF
  printf '%s\n' "${prepare_boot_cache}"
  cat << EOF
    $LX $MEMTESTPATH
}
menuentry "Memory test (memtest86+, serial console 115200)" {
EOF
  printf '%s\n' "${prepare_boot_cache}"
  cat << EOF
    $LX $MEMTESTPATH console=ttyS0,115200n8
}
EOF
fi

#if test -e /boot/memtest86+_multiboot.bin ; then
#  MEMTESTPATH=$( make_system_path_relative_to_its_root "/boot/memtest86+_multiboot.bin" )
#  echo "Found memtest86+ multiboot image: $MEMTESTPATH" >&2
#  cat << EOF
#menuentry "Memory test (memtest86+, experimental multiboot)" {
#EOF
#  printf '%s\n' "${prepare_boot_cache}"
#  cat << EOF
#   multiboot   $MEMTESTPATH
#}
#menuentry "Memory test (memtest86+, serial console 115200, experimental multiboot)" {
#EOF
#  printf '%s\n' "${prepare_boot_cache}"
#  cat << EOF
#   multiboot   $MEMTESTPATH console=ttyS0,115200n8
#}
#EOF
#fi

ตรวจสอบให้แน่ใจว่าได้รันคำสั่ง chmod + x บนหลังจากนั้น

ฉันค่อนข้างกังวลว่ามันจะหายไป - คุณมีทุกอย่างใน grub.d หรือไม่?

ls /etc/grub.d/


00_header        10_linux.bak       20_memtest86+  41_custom
05_debian_theme  10_linux.dpkg-old  30_os-prober   README
10_linux         20_linux_xen       40_custom

sudo chmod +x /etc/grub.d/20_memtest86+chmod: cannot access /etc/grub.d/20_memtest86+': No such file or directory
ผลลัพธ์เป็น

1
ฉันพบที่20_memtest86+ซุ่มซ่อน/etc/grub.d.bak/อย่างใด ย้ายมันเข้าที่ GRUB ที่อัปเดตและทุกอย่างทำงานได้ดีสำหรับฉัน
Naftuli Kay

3
update-grubไม่พบไบนารี memtest ไม่ว่าฉันจะทำอะไร :(
ผู้เชี่ยวชาญ

2
ไม่ใช่เพราะ memtest รุ่น GPL ไม่รองรับ EFI หรือ ดังนั้นหากคุณกำลังบูทผ่าน EFI ไม่มีวิธีใดที่จะทำให้ memtest ทำงานโดยใช้สิ่งที่มาพร้อมกับ Ubuntu ได้หรือไม่?
Jeff Atwood

1
ฉันได้รับดังต่อไปนี้ X @ ubuntu: ~ $ cat /boot/grub/grub.cfg | grep memtest ### BEGIN /etc/grub.d/20_memtest86+ ### ### END
/etc/grub.d/20_memtest86+

13

ฉันมีปัญหาเดียวกันและเนื่องจากความจริงที่ว่าฉันมี EFI บนแล็ปท็อปของฉัน memtest86 + เวอร์ชัน 4.x ที่จัดส่งโดย Ubuntu จะไม่ทำงานเนื่องจาก EFI รองรับเฉพาะรุ่นที่ 5 และใหม่กว่าเท่านั้น

เวอร์ชันล่าสุดไม่ใช่ GPL และจะต้องดาวน์โหลดด้วยตนเองจากเว็บไซต์ memtest (มีอิมเมจ ISO และ USB) แต่อย่างน้อยจะไม่มีค่าใช้จ่าย



เวอร์ชันล่าสุดไม่ใช่ GPL และจะต้องดาวน์โหลดด้วยตนเองจากเว็บไซต์ memtest (มีอิมเมจ ISO และ USB) แต่อย่างน้อยจะไม่มีค่าใช้จ่าย memtest86 ไม่ใช่ GPL และเป็นกรรมสิทธิ์และ memtest86 + เป็น GPL
Ramchandra Apte

6
apt-get install memtest86+

การดำเนินการนี้จะกำหนดค่าด้วงใหม่โดยอัตโนมัติและเพิ่มรายการในเมนูการบู๊ต

หากคุณได้รับข้อผิดพลาดให้memtest86+ is already the newest versionใช้ sudo apt-get install --reinstall memtest86+

หากสิ่งอื่นล้มเหลวคุณสามารถขอรับISOที่ใช้เริ่มระบบได้ซึ่งคุณสามารถเขียนลงซีดีและบูตได้ แน่นอนถ้าคุณกำลังบูท UEFI คุณควรมาที่นี่แทน


สำหรับเซิร์ฟเวอร์ Ubuntu 16.04 นี่เป็นการแก้ปัญหาอย่างแน่นอน หากไม่มีapt-get install memtest86+ไฟล์ที่กล่าวถึง/etc/grub.d/20_memtest86+ไม่มีอยู่ในระบบของฉัน
mstrap

@ mstrap มันเป็นทางออกสำหรับฉันด้วย ฉันไม่เข้าใจว่าทำไมคำตอบของฉันถูกลดระดับลงสองครั้ง
Michael Franzl

1
วิธีนี้ไม่ได้ผลสำหรับฉัน - คำสั่งด้านบนได้รับmemtest86+ is already the newest versionข้อความ ฉันสงสัยว่าวิธีนี้ใช้ได้กับระบบที่ไม่ใช่ UEFI เท่านั้นในขณะที่คำถามดั้งเดิมนั้นเกี่ยวกับ memtest บนระบบ UEFI โดยเฉพาะ
JayDin

1
สิ่งนี้ไม่ได้ผลสำหรับฉันเช่นเดียวกับ JayDin memtest ติดตั้งแล้ว ฉันใช้ตัวจัดการแพคเกจ synaptik เพื่อลบ memtest รีบูตแล้วติดตั้งใหม่ นี่เป็นการแก้ไขปัญหาสำหรับฉัน
111667

5

ฉันไม่สามารถทำงานนี้ได้ใน 2 วันจากนั้นฉันตรวจสอบ Synaptic เพื่อดูแพคเกจด้วง ... ดูเหมือนว่าการขาดแพ็คเกจgrub-imagebootเป็นสาเหตุของปัญหา

sudo apt-get install grub-imageboot

ฉันลองมันแล้วมันใช้งานไม่ได้
Hitechcomputergeek

2
พบ memdisk: / boot / memdisk ไม่พบ Imagepath / boot / images
Aaron Franke

1

นี่คือสิ่งที่ฉันทำเพื่อเพิ่ม memtest86 + ล่าสุด (ไม่ฟรี) ตอนนี้ไปยังเมนูการบูตด้วงสำหรับการบูท UEFI รุ่น memtest ปัจจุบันคือ 8.2 เครื่องมือที่ต้องการ: Disk Image Mounter และ grub-customizer ตัวหลังใช้เพื่อความสะดวกเท่านั้น :) ไฟล์: memtest binary (ดูด้านล่าง)

  1. ดาวน์โหลดไบนารี memtest จาก: https://www.memtest86.com/download.htm 'รูปภาพสำหรับสร้าง USB Drive ที่สามารถบู๊ตได้บนระบบ Windows / Linux / Mac' นั้นใช้ได้
  2. แตกไฟล์ IMG (memtest86-usb.img)
  3. เปิดไฟล์ img พร้อมตัวเมานต์อิมเมจดิสก์ (ปุ่มเมาส์ขวาบน Ubuntu)
  4. จากสารสกัดอิมเมจที่เมานต์ /EFI/BOOT/BOOTX64.efi
  5. ทำไดเรกทอรีบูต memtest86:
    sudo mkdir / boot / efi / EFI / memtest86
  6. คัดลอก BOOTX64.efi ไปยังโฟลเดอร์ใหม่ของคุณบนพาร์ติชันสำหรับบู๊ต (เช่น / boot / efi / EFI / memtest86)
  7. เปิดตัวปรับแต่งด้วง
  8. เพิ่มรายการเมนูตั้งชื่อเลือกประเภท: อื่น ๆ
  9. เพิ่มลำดับการบูตต่อไปนี้ (สมมติว่าคุณบูตจากhd0 ):
insmod part_gpt
insmod fat
set root='hd0,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  1A22-970F
else
  search --no-floppy --fs-uuid --set=root 1A22-970F
fi
chainloader /EFI/memtest86/BOOTX64.efi
  1. บันทึกและออกจากเครื่องมือปรับแต่งด้วง

  2. รีบูตและเพลิดเพลินกับ Memtest86


สำหรับคนอื่น ๆ / ฉัน: # 3 Disk Image Mounter = gnome-disk # 6 ต้องเป็นรูต # 8 ทำไมประเภทอื่นไม่ memtest? # 9 คุณจะรู้ได้อย่างไรว่าคุณบูตจาก hd0 [คลิกแก้ไขในรายการบูตไดรฟ์ของคุณและคัดลอกรายการสำหรับ setroot นั้น ขอบคุณสำหรับคำตอบที่ยอดเยี่ยมนี้ btw
dez93_2000

หากอูบุนตูรูทของ hd2 นั้นน่าจะเป็นคุณเปลี่ยน 0 เป็น 2 ใน 4 แห่งใช่ไหม? ไม่ว่าฉันจะได้รับข้อผิดพลาดหรือไม่พบอุปกรณ์ 1A22-970F & ไฟล์ '/EFI/memtest86/BOOTX64.efi' ไฟล์เป็น defo ใน / boot / efi / EFI / memtest86 / ความคิดใด ๆ ไชโย
dez93_2000

'error disk hd2, gpt2 not found' ปรากฏขึ้นพร้อม 'ไม่มีอุปกรณ์ดังกล่าว'; ไม่พบไฟล์ ไม่แน่ใจว่าทำไมมันถึงเปลี่ยน ...
dez93_2000
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.