summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorXorg2015-01-08 13:54:51 +0100
committerXorg2015-01-08 13:54:51 +0100
commitedb5aa644a59eb81549f60ba662ed9b3ebd09bfd (patch)
treef3ae1d91bddd479cb08b164aadc02c93140de474
downloadaur-edb5aa644a59eb81549f60ba662ed9b3ebd09bfd.tar.gz
Initial commit for memtest86-efi
-rw-r--r--.SRCINFO19
-rw-r--r--.gitignore7
-rw-r--r--PKGBUILD37
-rw-r--r--memtest86-efi111
-rw-r--r--memtest86-efi.conf9
-rw-r--r--memtest86-efi.install13
6 files changed, 196 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..8944298393cc
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,19 @@
+pkgbase = memtest86-efi
+ pkgdesc = A free, thorough, stand alone memory test as an EFI application
+ pkgver = 5.1.0
+ pkgrel = 1
+ url = http://www.memtest86.com
+ install = memtest86-efi.install
+ arch = i686
+ arch = x86_64
+ license = GPL2
+ backup = etc/memtest86-efi.conf
+ source = memtest86-5.1.0.iso.gz::http://www.memtest86.com/downloads/memtest86-iso.gz
+ source = memtest86-efi
+ source = memtest86-efi.conf
+ md5sums = 483b1066de1f631b3d4222b95bcbfb5e
+ md5sums = 786ecb9dd8fb1fe4cebcfebef22cc323
+ md5sums = 16cb53c7132214cdd848d83433ef6462
+
+pkgname = memtest86-efi
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000000..2ee27f800b60
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,7 @@
+*
+!.gitignore
+!.SRCINFO
+!PKGBUILD
+!memtest86-efi
+!memtest86-efi.conf
+!memtest86-efi.install
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..b0324b1e9bda
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,37 @@
+# Maintainer: X0rg
+
+_pkgbasename=memtest86
+pkgname=$_pkgbasename-efi
+pkgver=5.1.0
+pkgrel=1
+pkgdesc="A free, thorough, stand alone memory test as an EFI application"
+arch=('i686' 'x86_64')
+url="http://www.memtest86.com"
+license=('GPL2')
+backup=(etc/$pkgname.conf)
+install=$pkgname.install
+source=("$_pkgbasename-$pkgver".iso.gz::"$url/downloads/$_pkgbasename-iso.gz"
+ "$pkgname"
+ "$pkgname.conf")
+md5sums=('483b1066de1f631b3d4222b95bcbfb5e'
+ '786ecb9dd8fb1fe4cebcfebef22cc323'
+ '16cb53c7132214cdd848d83433ef6462')
+
+prepare() {
+ bsdtar -xf "$_pkgbasename-$pkgver.iso"
+
+ cd "$srcdir/EFI/BOOT/"
+ mv -f MT86.PNG mt86.png
+ [[ "${CARCH}" == "i686" ]] && rm -f BOOTX64.EFI && mv -f BOOTIA32.EFI bootia32.efi
+ [[ "${CARCH}" == "x86_64" ]] && rm -f BOOTIA32.EFI && mv -f BOOTX64.EFI bootx64.efi
+}
+
+package() {
+ install -dv "$pkgdir/etc" "$pkgdir/usr/bin" "$pkgdir/usr/share/$pkgname"
+
+ install -vm755 "$srcdir/EFI/BOOT/"boot*.efi "$pkgdir/usr/share/$pkgname"
+ install -vm755 "$srcdir/$pkgname" "$pkgdir/usr/bin/$pkgname"
+
+ install -vm644 "$srcdir/EFI/BOOT/mt86.png" "$pkgdir/usr/share/$pkgname"
+ install -vm644 "$srcdir/$pkgname.conf" "$pkgdir/etc"
+}
diff --git a/memtest86-efi b/memtest86-efi
new file mode 100644
index 000000000000..5b2381b2ebf8
--- /dev/null
+++ b/memtest86-efi
@@ -0,0 +1,111 @@
+#!/usr/bin/bash
+
+CONFFILE=/etc/memtest86-efi.conf
+source $CONFFILE
+[[ "$(uname -m)" == "i686" ]] && ARCH=ia32
+[[ "$(uname -m)" == "x86_64" ]] && ARCH=x64
+
+install() {
+ if [[ $install == 1 ]]; then
+ echo "MemTest86 is already installed in ESP." > /dev/stderr
+ exit 1
+ fi
+
+ partition=$(fdisk -l | grep "EFI System" | awk '{print $1}' | tail -n1)
+ echo -e "Welcome in $0. This script is to easily use MemTest86 with your UEFI. \033[1;31mNote: this can be dangerous! \033[0m\n"
+ echo -en "If \033[1m$partition\033[0m is your ESP partition, press Enter. Else, enter device, then press Enter: "
+ read choice
+ [[ -n $choice ]] && partition=$choice
+ esp=$(mount | grep $partition | awk '{print $3}' | tail -n1)
+ echo -e "Your choice is: \033[1m$partition\033[0m. So your ESP is mounted on: \033[1m$esp\033[0m\n"
+ [[ -z $esp ]] && echo -e "\033[1;31mNo ESP mounted found !\033[0m" && exit 1
+
+ echo "Please, how do you want to use $0 ?"
+ echo -e "\033[1m1\033[0m: from \033[1mLaunch EFI Shell\033[0m (in UEFI Setup)"
+ echo -e "\033[1m2\033[0m: add a new boot entry"
+ echo -e "\033[1m3: Cancel\033[0m"
+ choice=0; while [[ $choice < 1 ]] || [[ $choice > 3 ]]; do
+ read -n 1 choice
+ echo
+ done
+
+ if [[ $choice == 1 ]]; then
+ echo -e "MemTest86 will be installed in \033[1m$esp\033[0m."
+ [[ -f "$esp/shell$ARCH.efi" ]] && mv -v "$esp/shell$ARCH.efi" "$esp/shell$ARCH.efi.bak"
+ cp -v "$MEMTEST86_PATH/"* "$esp/"
+ mv -v "$esp/"boot*.efi "$esp/shell$ARCH.efi"
+ elif [[ $choice == 2 ]]; then
+ echo -e "MemTest86 will be installed in \033[1m$esp/EFI/memtest86\033[0m."
+ mkdir -pv "$esp/EFI/memtest86"
+ cp -v "$MEMTEST86_PATH/"* "$esp/EFI/memtest86/"
+ mv -v "$esp/EFI/memtest86/"boot*.efi "$esp/EFI/memtest86/memtest$ARCH.efi"
+ efibootmgr -c -d ${partition:0:8} -p ${partition:8} -w -L "MemTest86" -l "\EFI\memtest86\memtest$ARCH.efi"
+ elif [[ $choice == 3 ]]; then
+ echo -e "Canceled. MemTest86 will not be installed."
+ exit 1
+ fi
+
+ echo "Write configuration..."
+ sed -i "s|@PARTITION@|$partition|g" "$CONFFILE"
+ sed -i "s|@ESP@|$esp|g" "$CONFFILE"
+ sed -i "s|@CHOICE@|$choice|g" "$CONFFILE"
+ sed -i "s|install=0|install=1|g" "$CONFFILE"
+
+ echo -e "MemTest86 has been installed in ESP."
+}
+
+update() {
+ if [[ $install == 0 ]]; then
+ echo "MemTest86 is not installed in ESP: it can't be updated." > /dev/stderr
+ exit 1
+ fi
+
+ if [[ $choice == 1 ]]; then
+ echo -e "MemTest86 will be updated in \033[1m$esp\033[0m."
+ cp -fv "$MEMTEST86_PATH/"* "$esp/"
+ mv -fv "$esp/"boot*.efi "$esp/shell$ARCH.efi"
+ elif [[ $choice == 2 ]]; then
+ echo -e "MemTest86 will be updated in \033[1m$esp/EFI/memtest86\033[0m."
+ cp -fv "$MEMTEST86_PATH/"* "$esp/EFI/memtest86/"
+ mv -fv "$esp/EFI/memtest86/"boot*.efi "$esp/EFI/memtest86/memtest$ARCH.efi"
+ fi
+
+ echo -e "MemTest86 has been updated in ESP."
+}
+
+remove() {
+ if [[ $install == 0 ]]; then
+ echo "MemTest86 is not installed in ESP: it can't be removed." > /dev/stderr
+ exit 1
+ fi
+
+ if [[ $choice == 1 ]]; then
+ echo -e "MemTest86 will be removed from \033[1m$esp\033[0m."
+ rm -v "$esp/mt86.png" "$esp/shell$ARCH.efi"
+ [[ -f "$esp/shell$ARCH.efi.bak" ]] && mv -v "$esp/shell$ARCH.efi.bak" "$esp/shell$ARCH.efi"
+ elif [[ $choice == 2 ]]; then
+ echo -e "MemTest86 will be removed from \033[1m$esp/EFI/memtest86\033[0m."
+ rm -rfv "$esp/EFI/memtest86/"
+ efibootmgr -b $(efibootmgr | grep MemTest86 | cut -c 5-8) -B
+ fi
+
+ echo "Write configuration..."
+ sed -i "s|$partition|@PARTITION@|g" "/etc/memtest86-efi.conf"
+ sed -i "s|$esp|@ESP@|g" "/etc/memtest86-efi.conf"
+ sed -i "s|$choice|@CHOICE@|g" "/etc/memtest86-efi.conf"
+ sed -i "s|install=1|install=0|g" "/etc/memtest86-efi.conf"
+
+ echo -e "MemTest86 has been removed from ESP."
+}
+
+if [[ $EUID -ne 0 ]]; then
+ echo -e "You must be root" > /dev/stderr
+ exit 1
+fi
+
+case "$1" in
+ -i|--install) install; exit 0;;
+ -u|--update) update; exit 0;;
+ -r|--remove) remove; exit 0;;
+ *) echo -e "Usage: $0 [argument]\n\nArgument:\n\t-i, --install\n\t-u, --update\n\t-r, --remove"; exit 1;;
+esac
diff --git a/memtest86-efi.conf b/memtest86-efi.conf
new file mode 100644
index 000000000000..47e7fb47e7a1
--- /dev/null
+++ b/memtest86-efi.conf
@@ -0,0 +1,9 @@
+#
+# /etc/memtest86-efi.conf
+#
+
+MEMTEST86_PATH=/usr/share/memtest86-efi
+partition=@PARTITION@
+esp=@ESP@
+choice=@CHOICE@
+install=0 \ No newline at end of file
diff --git a/memtest86-efi.install b/memtest86-efi.install
new file mode 100644
index 000000000000..36669545e65a
--- /dev/null
+++ b/memtest86-efi.install
@@ -0,0 +1,13 @@
+post_install() {
+ echo -e "You can use command \033[4mmemtest86-efi --install\033[0m as root to install MemTest86 in your ESP."
+}
+
+post_upgrade() {
+ [[ "$(grep install= /etc/memtest86-efi.conf)" == *"1" ]] && /usr/bin/memtest86-efi --update
+ exit 0
+}
+
+pre_remove() {
+ [[ "$(grep install= /etc/memtest86-efi.conf)" == *"1" ]] && /usr/bin/memtest86-efi --remove
+ exit 0
+} \ No newline at end of file