Package Details: memtest86-efi 1:10.7build1000-1

Git Clone URL: https://aur.archlinux.org/memtest86-efi.git (read-only, click to copy)
Package Base: memtest86-efi
Description: A free, thorough, stand alone memory test as an EFI application
Upstream URL: https://www.memtest86.com
Licenses: GPL2, custom:PassMark
Submitter: UnicornDarkness
Maintainer: UnicornDarkness
Last Packager: UnicornDarkness
Votes: 113
Popularity: 2.20
First Submitted: 2013-10-29 10:25 (UTC)
Last Updated: 2024-02-08 18:13 (UTC)

Dependencies (3)

Required by (0)

Sources (4)

Pinned Comments

UnicornDarkness commented on 2019-06-08 08:52 (UTC) (edited on 2019-06-08 08:53 (UTC) by UnicornDarkness)

As you probably know, the <https://www.memtest86.com/downloads/memtest86-usb.zip> URL is likely to cause problems, like this error:

==> Validating source files with sha512sums...
    memtest86-efi-8.2.zip ... FAILED

To avoid this problem, I prefer to reupload memtest86-usb.zip archive somewhere else, where this kind of breakage will not appear.

I can't upload this archive on AUR directly (archive is 8 MB but AUR accepts 250 KiB maximum), so I decide to put this archive on my Git repository to avoid future breakages.

I hope it suits you.

Latest Comments

« First ‹ Previous 1 2 3 4 5 6 7 .. 15 Next › Last »

UnicornDarkness commented on 2022-10-01 12:30 (UTC)

@Sven: Please provide output of ls -l /home/skoehler/aur/memtest86-efi/src/.

Sven commented on 2022-10-01 11:46 (UTC) (edited on 2022-10-02 13:07 (UTC) by Sven)

Latest version doesn't build:

$ LANG=C makepkg -sic
==> Making package: memtest86-efi 1:10.0build1000-2 (Sat Oct  1 13:46:30 2022)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
  -> Found memtest86-efi-10.0build1000.zip
  -> Found memtest86-efi
  -> Found memtest86-efi.conf
  -> Found memtest86-efi-update.hook
==> Validating source files with sha512sums...
    memtest86-efi-10.0build1000.zip ... Passed
    memtest86-efi ... Passed
    memtest86-efi.conf ... Passed
    memtest86-efi-update.hook ... Passed
==> Extracting sources...
  -> Extracting memtest86-efi-10.0build1000.zip with bsdtar
==> Starting prepare()...

ERROR: errno=2 : No such file or directory
/home/skoehler/aur/memtest86-efi/src/EFI System Partition.img

UnicornDarkness commented on 2022-10-01 09:22 (UTC) (edited on 2022-10-01 09:23 (UTC) by UnicornDarkness)

@Gadgethm: Sorry I didn't see your comment earlier. Prompting for memtest86_esp_path but ignoring the value if user selects choice #1 is not optimal anyway. I updated choice #1 to not hardcode the path in ESP in 6c4590b3a543, so it will act like your choice #5.
Old behavior of choice #1 can still feasible by giving / during memtest86_esp_path prompt. It will add a trailing / at the end but it is not an issue.

Gadgethm commented on 2022-02-06 05:22 (UTC)

@Xorg: Thank you for the fast update! I was still having issues due to the fact that I don't set entries in grub or in efibootmgr (I use refind), and option 1 was hardcoding the path to the root of the esp instead of the user specified path.

I went ahead and made some local changes to add an option to install without adding entries, but to the user specified location; let me know your thoughts.

Here's the diff:

diff --git a/memtest86-efi b/memtest86-efi
index 0e4c54b..ff6f42b 100755
--- a/memtest86-efi
+++ b/memtest86-efi
@@ -154,7 +154,8 @@ install() {
    echo -e "${CB}2${CR}: Add a new EFI boot entry (more safe)"
    echo -e "${CB}3${CR}: Add a boot entry for GRUB2 menu"
    echo -e "${CB}4${CR}: Add a boot entry for systemd-boot menu"
-   echo -e "${CB}5${CR}: Cancel"
+   echo -e "${CB}5${CR}: Copy shellx64.efi file on ESP to user specified directory (bit safe)"
+   echo -e "${CB}6${CR}: Cancel"
    choice=0
    while [[ $choice -lt 1 ]] || [[ $choice -gt 5 ]]; do
        read -r choice
@@ -211,6 +212,11 @@ install() {
            bootctl --path="$esp_mount_path" update
        ;;

+                5) # Install MemTest86 in ${esp_mount_path}${memtest86_esp_path}/
+                        memtest86_esp_bin="shell$ARCH.efi"
+                        _common_install "${esp_mount_path}${memtest86_esp_path}" "$memtest86_esp_bin"
+                ;;
+
        *) # Do nothing and quit
            echo -e "Canceled. MemTest86 will not be installed."
            exit $CODE_OK
@@ -242,7 +248,7 @@ update() {
            _common_install "$esp_mount_path" "$memtest86_esp_bin"
        ;;

-       2|3|4) # Update files in ${esp_mount_path}${memtest86_esp_path}/
+       2|3|4|5) # Update files in ${esp_mount_path}${memtest86_esp_path}/
            _common_install "${esp_mount_path}${memtest86_esp_path}" "$memtest86_esp_bin"
        ;;
    esac
@@ -298,6 +304,12 @@ remove() {
            rm -v "$esp_mount_path/loader/entries/memtest86-efi.conf"
            bootctl --path="$esp_mount_path" update
        ;;
+
+                5) # Remove files in ${esp_mount_path}${memtest86_esp_path}
+                        echo -e "MemTest86 will be removed from ${CB}${esp_mount_path}${memtest86_esp_path}/${CR}."
+                        rm -rfv "${esp_mount_path:?}${memtest86_esp_path:?}"
+                ;;
+
    esac

    echo "Writting configuration..."

UnicornDarkness commented on 2022-02-05 11:49 (UTC)

@Gadgethm: Fixed in 0933d59e69d9. I improved a bit _mount_esp() function. Please note it is up to user to update configuration file if ESP mount point change after installation. In your case, I recommend a memtest86-efi -r, then update package to 1:9.4build1000-4, then reinstall like you want with memtest86-efi -i.

Gadgethm commented on 2022-02-04 04:40 (UTC) (edited on 2022-02-04 05:06 (UTC) by Gadgethm)

The latest update 600ab3bcaead broke my install setup. The auto mount feature is not really implemented well; it just blindly mounts and installs memtest to a hardcoded location, but my setup is to have my esp mounted at /boot/efi, and memtest installed at /boot/efi/EFI/tools/memtest86. As a result, the install script instead mounts my EFI directory to itself at /boot/efi/EFI/tools/memtest86, and then installs to the ESP root (since that's hardcoded in)

A better solution would be to have an option to have the script install to a specific, user specified directory. This way you're not auto mounting to whatever directory the user specified and resulting in nested mounts.

My config for reference:

#
# /etc/memtest86-efi.conf
#

MEMTEST86_PATH=/usr/share/memtest86-efi
partition=/dev/nvme0n1p1
esp=/boot/efi/EFI/tools/memtest86
choice=1
install=1

Here's an example config of a better way to implement:

#
# /etc/memtest86-efi.conf
#

MEMTEST86_PATH=/usr/share/memtest86-efi
partition=/dev/nvme0n1p1
esp=/boot/efi/
install=/boot/efi/EFI/tools/memtest86
choice=1
install=5

[EDIT] Another note: On further testing and investigation, the _mount_esp() function does not correctly detect that my EFI partition is already mounted at /boot/efi when I change the esp directory to be /boot/efi. As a result, the mount fails due to already being mounted and the script bombs out. The issue is with the way the not character is processed.

Relevant lines in the script:

if ! mount | grep "$partition" | grep -q "$esp"; then
        echo -e "ESP ${CB}$partition${CR} is not mounted, mounting..."

Should be changed to

if [! mount | grep "$partition" | grep -q "$esp"]; then
        echo -e "ESP ${CB}$partition${CR} is not mounted, mounting..."

UnicornDarkness commented on 2022-02-01 19:06 (UTC)

@mokkurkalve: Please manually edit /etc/memtest86-efi/memtest86-efi.conf configuration file to fix the issue.

mokkurkalve commented on 2022-01-31 23:40 (UTC) (edited on 2022-01-31 23:47 (UTC) by mokkurkalve)

The change in 1:9.4build1000-2 makes my update fail:

sudo memtest86-efi -s
Default MemTest86 directories:
Configuration directory: /etc/memtest86-efi/
Data directory: /usr/share/memtest86-efi/

MemTest86 is installed on your system with following parameters:
ESP device name: /dev/sdb1
ESP mount point: /boot
Type of installation: 3

sudo memtest86-efi -u 
ESP /dev/sdb1 is not mounted, mounting...
mount: /boot: special device /dev/sdb1 does not exist.
Fail to mount /dev/sdb1 on /boot. Aborted.

The EFI partition is not on /dev/sdb1, it's on /dev/nvme0n1p1. I have migrated this system (with dd, and reinstall Grub) from an older machine on which the EFI partition was on /dev/sdb1. I have however not noticed any problems with this before, and "sudo memtest86-efi -u" worked fine before this change. (Updating Grub has also worked flawlessly. Booting. And anything else.) EDIT: Can I just replace "partition=/dev/sdb1" with "partition=/dev/nvme0n1p1" in /etc/memtest86-efi/memtest86-efi.conf to solve this?

UnicornDarkness commented on 2022-01-31 18:46 (UTC)

@hamelg: Added in 600ab3bcaead, thanks.

hamelg commented on 2022-01-30 16:58 (UTC) (edited on 2022-01-30 17:00 (UTC) by hamelg)

the update hook doesn't work here because my efi partition is not permanently mounted. A check could be added in the memtest86-efi script.

diff --git a/memtest86-efi b/memtest86-efi
index 45a7fb7..4080189 100644
--- a/memtest86-efi
+++ b/memtest86-efi
@@ -211,6 +211,14 @@ update() {
                ;;

                2|3|4) # Update files in $esp/EFI/memtest86/
+            ## Check if efi partition is mounted, if not mount it
+               if ! mount | grep "$partition" | grep -q "$esp"; then
+                       echo -e "ESP ${CB}$partition${CR} is not mounted, mounting..."
+                       if ! mount "$partition" "$esp"; then
+                               echo -e "${CE}Fail to mount $partition on $esp. Aborted.${CR}" > /dev/stderr
+                               exit $CODE_FATAL
+                       fi
+               fi
                        _common_install "$esp/EFI/memtest86" "memtest$ARCH.efi"
                ;;
        esac