Memtest86 + 옵션을 Grub 메뉴에 다시 추가하려면 어떻게해야합니까?


34

UEFI를 사용하는 경우이 질문을 참조하십시오 . "UEFI를 사용하는 경우 memtest86 +를 부팅 할 수 있습니까?"

Lenovo B570에 64 비트 버전의 Ubuntu 12.04를 설치 한 후 11.10을 Grub과 함께 설치하여 uEFI 시스템에서 제대로 재생되지 않는 것과 같은 문제가 발생했습니다. 지난 번과 같은 기술을 사용하여 문제를 해결했습니다 (Super Grub Disc LiveCD 세션을 사용하여 Grub 복구). 내 시스템은 우분투와 Windows 7 간의 듀얼 부팅

그러나 이제는 Grub 메뉴를 부팅 할 때만 표시됩니다

  • Linux 3.2.0-24-generic을 지원하는 Ubuntu
  • Linux 3.2.0-24-generic (복구 모드)을 사용하는 Ubuntu
  • 이전 Linux 버전
  • Windows 7 (로더) (/ dev / sda1)
  • Windows 복구 환경 (로더) (/ dev / sda4)

더 이상 이전에 있었던 Memtest86 +를 사용하는 옵션이 표시되지 않습니다. 우분투 소프트웨어 센터에서 패키지가 설치되어 있는지 확인할 수 있지만 패키지를 다시 실행하는 옵션을 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+

또는 GUI 편집기

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
coversnail

1
나는 어떻게 든 20_memtest86+숨어있는 것을 발견 했다 /etc/grub.d.bak/. 그것을 제자리로 옮기고 GRUB을 업데이트하면 모든 것이 잘 작동했습니다.
Naftuli Kay

3
update-grub내가 무엇을 하든지 memtest 바이너리를 찾지 못한다 :(
expert

2
memtest의 GPL 버전이 EFI를 지원하지 않기 때문에 그렇지 않습니까? 따라서 EFI를 통해 부팅하는 경우 Ubuntu와 함께 제공된 항목을 사용하여 memtest를 작동시킬 수있는 방법없습니다 .
Jeff Atwood

1
나는 다음과 같은 X @ ubuntu를 얻었다 : ~ $ cat /boot/grub/grub.cfg | grep memtest ### BEGIN /etc/grub.d/20_memtest86+ ### ### END /etc/grub.d/20_memtest86+ ###
user1945827

13

나는 같은 문제가 있었고, 노트북에 EFI가 있기 때문에 우분투가 제공하는 memtest86 + 버전 4.x는 작동하지 않습니다 .EFI는 버전 5 이상에서만 지원되기 때문입니다.

최신 버전은 GPL이 아니며 memtest 웹 사이트 (ISO 및 USB 이미지가 있음)에서 수동으로 다운로드해야하지만 적어도 무료입니다.



최신 버전은 GPL이 아니며 memtest 웹 사이트 (ISO 및 USB 이미지가 있음)에서 수동으로 다운로드해야하지만 적어도 무료입니다. memtest86은 GPL이 아니며 독점적이며 memtest86 +는 GPL입니다.
Ramchandra Apte 5

6
apt-get install memtest86+

그러면 grub이 자동으로 재구성되고 항목이 부팅 메뉴에 추가됩니다.

오류가 발생 memtest86+ is already the newest version하면 sudo apt-get install --reinstall memtest86+

다른 모든 방법이 실패하면 CD로 구워 부팅 할 수있는 부팅 가능한 ISO 를 얻을 수 있습니다. 물론 UEFI를 부팅하는 경우 대신 여기에 있어야합니다 .


우분투 16.04 서버의 경우 이것이 바로 해결책이었습니다. 없이 apt-get install memtest86+언급 한 파일 /etc/grub.d/20_memtest86+내 시스템에 존재하지 않았다.
mstrap

@ mstrap, 그것은 나에게도 해결책이었습니다. 내 답변이 두 번 다운 다운 된 이유를 이해할 수 없습니다.
Michael Franzl

1
이 솔루션은 저에게 효과적이지 않습니다-위의 명령이 memtest86+ is already the newest version메시지를 받았습니다 . 이 솔루션은 비 UEFI 시스템에서만 작동하는 반면 원래 질문은 UEFI 시스템에서의 memtest와 관련이 있습니다.
JayDin

1
JayDin memtest가 이미 설치된 것처럼 이것은 나에게도 효과가 없었습니다. synaptik package manager를 사용하여 memtest를 제거하고 재부팅 한 다음 다시 설치했습니다. 이것은 나를 위해 문제를 해결했습니다.
user111667

5

2 일 만에이 작업을 수행 할 수 없었고, 그럽 패키지에 대해 Synaptic을 확인했습니다 ... 패키지 grub-imageboot가 없는 것이 문제의 근원 인 것 같습니다 .

sudo apt-get install grub-imageboot

나는 이것을 시도했지만 작동하지 않았다.
Hitechcomputergeek

2
찾을 수 memdisk : / 부팅 / memdisk IMAGEPATH / 부팅 / 이미지를 찾을 수 없습니다
아론 프랑케에게

1

UEFI 부팅을위한 grub 부팅 메뉴에 최신 (무료) memtest86 +를 추가하기 위해 수행 한 작업입니다. 현재 memtest 버전은 8.2입니다. 필요한 도구 : Disk Image Mounter 및 grub-customizer, 후자는 편의를위한 것입니다. :) 파일 : memtest binary (아래 참조)

  1. https://www.memtest86.com/download.htm 에서 memtest 바이너리를 다운로드 하십시오 . 'Windows / Linux / Mac 시스템에서 부팅 가능한 USB 드라이브를 만드는 이미지'는 괜찮습니다.
  2. IMG 파일 (memtest86-usb.img)을 추출하십시오.
  3. 디스크 이미지 마운터로 img 파일 열기 (우분투에서 마우스 오른쪽 버튼)
  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. GRUB-Customizer 저장 및 종료

  2. 재부팅하고 Memtest86을 즐기십시오


다른 사람 / 나의 경우 : # 3 Disk Image Mounter = gnome-disks. # 6은 루트 여야합니다. # 8 왜 다른 타입이 memtest가 아닌가? # 9 hd0에서 부팅하는지 어떻게 알 수 있습니까? [부트 드라이브 항목에서 편집을 클릭하고 해당 setroot에 대한 항목을 복사하십시오]. 이 훌륭한 답변 btw에 감사드립니다.
dez93_2000

우분투 루트가 hd2라면 아마도 4 곳에서 0에서 2로 변경할 것입니다. inc ahci? 그럼에도 불구하고 오류가 발생하면 해당 장치 1A22-970F 및 파일 '/EFI/memtest86/BOOTX64.efi'를 찾을 수 없습니다. 파일은 / boot / efi / EFI / memtest86 /에 defo입니다. 이견있는 사람? 건배
dez93_2000

'오류 디스크 hd2, gpt2를 찾을 수 없음'이 이제 해당 장치 없음으로 나타납니다. 파일을 찾을 수 없습니다. 왜 변경 될지 잘 모르겠습니다.
dez93_2000
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.