diff options
author | Xorg | 2015-01-08 13:54:51 +0100 |
---|---|---|
committer | Xorg | 2015-01-08 13:54:51 +0100 |
commit | edb5aa644a59eb81549f60ba662ed9b3ebd09bfd (patch) | |
tree | f3ae1d91bddd479cb08b164aadc02c93140de474 | |
download | aur-edb5aa644a59eb81549f60ba662ed9b3ebd09bfd.tar.gz |
Initial commit for memtest86-efi
-rw-r--r-- | .SRCINFO | 19 | ||||
-rw-r--r-- | .gitignore | 7 | ||||
-rw-r--r-- | PKGBUILD | 37 | ||||
-rw-r--r-- | memtest86-efi | 111 | ||||
-rw-r--r-- | memtest86-efi.conf | 9 | ||||
-rw-r--r-- | memtest86-efi.install | 13 |
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 |