[arch-commits] Commit in refind-efi/repos (6 files)

Tobias Powalowski tpowa at archlinux.org
Wed Dec 19 14:47:56 UTC 2012


    Date: Wednesday, December 19, 2012 @ 09:47:55
  Author: tpowa
Revision: 173351

archrelease: copy trunk to testing-any

Added:
  refind-efi/repos/testing-any/
  refind-efi/repos/testing-any/PKGBUILD
    (from rev 173350, refind-efi/trunk/PKGBUILD)
  refind-efi/repos/testing-any/UDK-MdePkg-Revert-PathNodeCount.patch
    (from rev 173350, refind-efi/trunk/UDK-MdePkg-Revert-PathNodeCount.patch)
  refind-efi/repos/testing-any/refind-efi.install
    (from rev 173350, refind-efi/trunk/refind-efi.install)
  refind-efi/repos/testing-any/refind_include_more_shell_paths.patch
    (from rev 173350, refind-efi/trunk/refind_include_more_shell_paths.patch)
  refind-efi/repos/testing-any/refind_linux.conf
    (from rev 173350, refind-efi/trunk/refind_linux.conf)

---------------------------------------+
 PKGBUILD                              |  237 +++++++++++
 UDK-MdePkg-Revert-PathNodeCount.patch |  660 ++++++++++++++++++++++++++++++++
 refind-efi.install                    |   28 +
 refind_include_more_shell_paths.patch |   21 +
 refind_linux.conf                     |    5 
 5 files changed, 951 insertions(+)

Copied: refind-efi/repos/testing-any/PKGBUILD (from rev 173350, refind-efi/trunk/PKGBUILD)
===================================================================
--- testing-any/PKGBUILD	                        (rev 0)
+++ testing-any/PKGBUILD	2012-12-19 14:47:55 UTC (rev 173351)
@@ -0,0 +1,237 @@
+# $Id$
+# Maintainer: Tobias Powalowski <tpowa at archlinux.org>
+# Contributor: Keshav P R <(the.ridikulus.rat) (aatt) (gemmaeiil) (ddoott) (ccoomm)>
+
+#######
+_TIANOCORE_SVN_URL="https://edk2.svn.sourceforge.net/svnroot/edk2/branches/UDK2010.SR1"
+_TIANOCORE_PKG="Mde"
+_TIANOCORE_TARGET="RELEASE"
+_UDK_TARGET="${_TIANOCORE_PKG}Pkg/${_TIANOCORE_PKG}Pkg.dsc"
+_COMPILER="GCC46"
+#######
+
+pkgname="refind-efi"
+pkgver="0.6.0"
+pkgrel="1"
+pkgdesc="Rod Smith's fork of rEFIt UEFI Boot Manager - built with Tianocore UDK libs"
+url="http://www.rodsbooks.com/refind/index.html"
+arch=('any')
+license=('GPL3' 'custom')
+makedepends=('subversion' 'python2')
+depends=('dosfstools' 'efibootmgr')
+optdepends=('mactel-boot: For bless command in Apple Mac systems')
+conflicts=('refind-efi-x86_64' 'refind-efi-i386')
+provides=('refind-efi-x86_64' 'refind-efi-i386')
+replaces=('refind-efi-x86_64' 'refind-efi-i386')
+options=('!strip' 'docs' '!makeflags')
+install="${pkgname}.install"
+source=("http://downloads.sourceforge.net/refind/refind-src-${pkgver}.zip"
+        'UDK-MdePkg-Revert-PathNodeCount.patch'
+        'refind_include_more_shell_paths.patch'
+        'refind_linux.conf')
+
+_update_tianocore_udk_svn() {
+	
+	if [[ -d "${srcdir}/${_TIANO_DIR_}/${_DIR_}" ]]; then
+		cd "${srcdir}/${_TIANO_DIR_}/${_DIR_}"
+		svn update || true
+		echo
+	else
+		cd "${srcdir}/${_TIANO_DIR_}/"
+		svn checkout "${_TIANOCORE_SVN_URL}/${_DIR_}" "${srcdir}/${_TIANO_DIR_}/${_DIR_}"
+		echo
+	fi
+	
+	unset _DIR_
+	
+}
+
+_tianocore_udk_common() {
+	
+	_TIANO_DIR_="tianocore-udk-svn"
+	
+	mkdir -p "${srcdir}/${_TIANO_DIR_}/"
+	cd "${srcdir}/${_TIANO_DIR_}/"
+	
+	for _DIR_ in BaseTools MdePkg MdeModulePkg IntelFrameworkPkg IntelFrameworkModulePkg ; do
+		_update_tianocore_udk_svn
+	done
+	
+	unset _DIR_
+	
+	## Setup UDK Environment variables
+	export _UDK_DIR="${srcdir}/${_TIANO_DIR_}_build"
+	export EDK_TOOLS_PATH="${_UDK_DIR}/BaseTools"
+	
+	rm -rf "${_UDK_DIR}/" || true
+	cp -r "${srcdir}/${_TIANO_DIR_}" "${_UDK_DIR}"
+	
+	cd "${_UDK_DIR}/"
+	
+	patch -Np1 -R -i "${srcdir}/UDK-MdePkg-Revert-PathNodeCount.patch"
+	echo
+	
+	## Cleanup UDK config files
+	rm -rf "${_UDK_DIR}/Build/" || true
+	rm -rf "${_UDK_DIR}/Conf/" || true
+	mkdir -p "${_UDK_DIR}/Conf/"
+	mkdir -p "${_UDK_DIR}/Build/"
+	
+	## UDK BaseTools requires python2
+	sed 's|python |python2 |g' -i "${EDK_TOOLS_PATH}/BinWrappers/PosixLike"/* || true
+	sed 's|python |python2 |g' -i "${EDK_TOOLS_PATH}/Tests/GNUmakefile"
+	
+	## Fix GCC Warning as error
+	sed 's|-Werror |-Wno-error -Wno-unused-but-set-variable |g' -i "${EDK_TOOLS_PATH}/Source/C/Makefiles/header.makefile" || true
+	sed 's|-Werror |-Wno-error -Wno-unused-but-set-variable |g' -i "${EDK_TOOLS_PATH}/Conf/tools_def.template" || true
+	
+	## Fix GCC 4.7 error - gcc: error: unrecognized command line option '-melf_x86_64'
+	sed 's| -m64 --64 -melf_x86_64| -m64|g' -i "${EDK_TOOLS_PATH}/Conf/tools_def.template" || true
+	sed 's|--64 | |g' -i "${EDK_TOOLS_PATH}/Conf/tools_def.template" || true
+	sed 's| -m64 -melf_x86_64| -m64|g' -i "${EDK_TOOLS_PATH}/Conf/tools_def.template" || true
+	
+	## Remove GCC -g debug option and add -0s -mabi=ms
+	sed 's|DEFINE GCC_ALL_CC_FLAGS            = -g |DEFINE GCC_ALL_CC_FLAGS            = -Os -mabi=ms |g' -i "${EDK_TOOLS_PATH}/Conf/tools_def.template" || true
+	sed 's|DEFINE GCC44_ALL_CC_FLAGS            = -g |DEFINE GCC44_ALL_CC_FLAGS            = -Os -mabi=ms |g' -i "${EDK_TOOLS_PATH}/Conf/tools_def.template" || true
+	
+	## Fix UDK Target Platform
+	sed "s|ACTIVE_PLATFORM       = Nt32Pkg/Nt32Pkg.dsc|ACTIVE_PLATFORM       = ${_UDK_TARGET}|g" -i "${EDK_TOOLS_PATH}/Conf/target.template" || true
+	sed "s|TARGET                = DEBUG|TARGET                = ${_TIANOCORE_TARGET}|g" -i "${EDK_TOOLS_PATH}/Conf/target.template" || true
+	sed "s|TOOL_CHAIN_TAG        = MYTOOLS|TOOL_CHAIN_TAG        = ${_COMPILER}|g" -i "${EDK_TOOLS_PATH}/Conf/target.template" || true
+	
+	## Fix UDK Target ARCH
+	sed 's|IA32|X64|g' -i "${EDK_TOOLS_PATH}/Conf/target.template" || true
+	
+	## Setup UDK Environment
+	chmod +x "${_UDK_DIR}/BaseTools/BuildEnv"
+	source "${_UDK_DIR}/BaseTools/BuildEnv" BaseTools
+	echo
+	
+	## Compile UDK BaseTools
+	make -C "${EDK_TOOLS_PATH}"
+	echo
+	
+	## Compile UDK x86_64-UEFI Libraries
+	"${EDK_TOOLS_PATH}/BinWrappers/PosixLike/build" -p "${_UDK_TARGET}" -a "X64" -b "${_TIANOCORE_TARGET}" -t "${_COMPILER}"
+	echo
+	
+	## Compile UDK i386-UEFI Libraries
+	"${EDK_TOOLS_PATH}/BinWrappers/PosixLike/build" -p "${_UDK_TARGET}" -a "IA32" -b "${_TIANOCORE_TARGET}" -t "${_COMPILER}"
+	echo
+	
+}
+
+_refind_changes() {
+	
+	cd "${srcdir}/refind-${pkgver}/"
+	
+	patch -Np1 -i "${srcdir}/refind_include_more_shell_paths.patch"
+	echo
+	
+	## Use passed ARCH variable value
+	sed 's|ARCH            :=|ARCH            ?=|g' -i "${srcdir}/refind-${pkgver}/Make.tiano" || true
+	sed 's|ARCH            :=|ARCH            ?=|g' -i "${srcdir}/refind-${pkgver}/filesystems/Make.tiano" || true
+	
+	## Fix UDK Target Platform in rEFInd Makefiles
+	sed "s|EFILIB          = \$(EDK2BASE)/Build/MdeModule/|EFILIB          = \$(EDK2BASE)/Build/${_TIANOCORE_PKG}/|g" -i "${srcdir}/refind-${pkgver}/refind/Make.tiano" || true
+	sed "s|EFILIB          = \$(EDK2BASE)/Build/MdeModule/|EFILIB          = \$(EDK2BASE)/Build/${_TIANOCORE_PKG}/|g" -i "${srcdir}/refind-${pkgver}/filesystems/Make.tiano" || true
+	
+}
+
+_build_refind-efi-common() {
+	
+	rm -rf "${srcdir}/refind-${pkgver}_${_UEFI_ARCH}/" || true
+	cp -r "${srcdir}/refind-${pkgver}" "${srcdir}/refind-${pkgver}_${_UEFI_ARCH}/"
+	
+	cd "${srcdir}/refind-${pkgver}_${_UEFI_ARCH}/"
+	
+	## Fix UDK Target ARCH
+	sed "s|IA32|${_SPEC_ARCH}|g" -i "${_UDK_DIR}/Conf/target.txt" || true
+	sed "s|X64|${_SPEC_ARCH}|g" -i "${_UDK_DIR}/Conf/target.txt" || true
+	
+	## Fix UDK Path in rEFInd Makefiles
+	sed "s|EDK2BASE = /usr/local/UDK2010/MyWorkSpace|EDK2BASE = ${_UDK_DIR}|g" -i "${srcdir}/refind-${pkgver}_${_UEFI_ARCH}/Make.tiano" || true
+	sed "s|EDK2BASE = /usr/local/UDK2010/MyWorkSpace|EDK2BASE = ${_UDK_DIR}|g" -i "${srcdir}/refind-${pkgver}_${_UEFI_ARCH}/filesystems/Make.tiano" || true
+	
+	## Fix ld "-m elf_ARCH" parameter
+	sed "s|LDFLAGS         = |LDFLAGS         = -m elf_${_ARCH} |g" -i "${srcdir}/refind-${pkgver}_${_UEFI_ARCH}/Make.tiano" || true
+	sed "s|LDFLAGS         = |LDFLAGS         = -m elf_${_ARCH} |g" -i "${srcdir}/refind-${pkgver}_${_UEFI_ARCH}/filesystems/Make.tiano" || true
+	
+	ARCH="${_UEFI_ARCH}" make clean || true
+	echo
+	
+	ARCH="${_UEFI_ARCH}" make tiano
+	echo
+	
+	ARCH="${_UEFI_ARCH}" make fs
+	echo
+	
+}
+
+build() {
+	
+	if [[ "${CARCH}" != "x86_64" ]]; then
+		echo "${pkgname} package can be built only in a x86_64 system. Exiting."
+		exit 1
+	fi
+	
+	_tianocore_udk_common
+	echo
+	
+	_refind_changes
+	echo
+	
+	_UEFI_ARCH="x86_64"
+	_SPEC_ARCH="X64"
+	_ARCH="x86_64"
+	_build_refind-efi-common
+	echo
+	
+	_UEFI_ARCH="ia32"
+	_SPEC_ARCH="IA32"
+	_ARCH="i386"
+	_build_refind-efi-common
+	echo
+	
+}
+
+package() {
+	
+	## install the rEFInd UEFI applications
+	install -d "${pkgdir}/usr/lib/refind/"
+	install -D -m0644 "${srcdir}/refind-${pkgver}_x86_64/refind/refind_x64.efi" "${pkgdir}/usr/lib/refind/refindx64.efi"
+	install -D -m0644 "${srcdir}/refind-${pkgver}_ia32/refind/refind_ia32.efi" "${pkgdir}/usr/lib/refind/refindia32.efi"
+	
+	## Install UEFI drivers built from rEFInd
+	install -d "${pkgdir}/usr/lib/refind/drivers_x64/"
+	install -d "${pkgdir}/usr/lib/refind/drivers_ia32/"
+	install -D -m0644 "${srcdir}/refind-${pkgver}_x86_64/drivers_x64"/*_x64.efi "${pkgdir}/usr/lib/refind/drivers_x64/"
+	install -D -m0644 "${srcdir}/refind-${pkgver}_ia32/drivers_ia32"/*_ia32.efi "${pkgdir}/usr/lib/refind/drivers_ia32/"
+	
+	## install the rEFInd config file
+	install -d "${pkgdir}/usr/lib/refind/config/"
+	install -D -m0644 "${srcdir}/refind-${pkgver}/refind.conf-sample" "${pkgdir}/usr/lib/refind/config/refind.conf"
+	install -D -m0644 "${srcdir}/refind_linux.conf" "${pkgdir}/usr/lib/refind/config/refind_linux.conf"
+	
+	## install the rEFInd icons
+	install -d "${pkgdir}/usr/share/refind/icons/"
+	install -D -m0644 "${srcdir}/refind-${pkgver}/icons"/* "${pkgdir}/usr/share/refind/icons/"
+	
+	## install the rEFInd docs
+	install -d "${pkgdir}/usr/share/refind/docs/html/"
+	install -d "${pkgdir}/usr/share/refind/docs/Styles/"
+	install -D -m0644 "${srcdir}/refind-${pkgver}/docs/refind"/* "${pkgdir}/usr/share/refind/docs/html/"
+	install -D -m0644 "${srcdir}/refind-${pkgver}/docs/Styles"/* "${pkgdir}/usr/share/refind/docs/Styles/"
+	install -D -m0644 "${srcdir}/refind-${pkgver}/README.txt" "${pkgdir}/usr/share/refind/docs/README"
+	install -D -m0644 "${srcdir}/refind-${pkgver}/NEWS.txt" "${pkgdir}/usr/share/refind/docs/NEWS"
+	rm -f "${pkgdir}/usr/share/refind/docs/html/.DS_Store" || true
+	
+	## install the rEFIt license file, since rEFInd is a fork of rEFIt
+	install -d "${pkgdir}/usr/share/licenses/refind/"
+	install -D -m0644 "${srcdir}/refind-${pkgver}/LICENSE.txt" "${pkgdir}/usr/share/licenses/refind/LICENSE"
+	
+}
+md5sums=('a27c7a2a6bb3878b4bb0ec5e8a6d6f37'
+         '98291849f9530c8ddb71b6563c61fb24'
+         '9051a5235ec58f5448a1b58727601e98'
+         'a83e45b10d5efbca1c93a63851728712')

Copied: refind-efi/repos/testing-any/UDK-MdePkg-Revert-PathNodeCount.patch (from rev 173350, refind-efi/trunk/UDK-MdePkg-Revert-PathNodeCount.patch)
===================================================================
--- testing-any/UDK-MdePkg-Revert-PathNodeCount.patch	                        (rev 0)
+++ testing-any/UDK-MdePkg-Revert-PathNodeCount.patch	2012-12-19 14:47:55 UTC (rev 173351)
@@ -0,0 +1,660 @@
+commit 771729c77fa49cf0ff17491f371003c4f5d66f85
+Author: niruiyu <niruiyu at 6f19259b-4bc3-4df7-8a09-765794883524>
+Date:   Mon Sep 24 03:20:35 2012 +0000
+
+    Add new API IsDevicePathValid() to UefiDevicePathLib.
+    
+    Signed-off-by: Ruiyu Ni<ruiyu.ni at intel.com>
+    Reviewed-by: Liming Gao<liming.gao at intel.com>
+    Reviewed-by: Kinney Michael D<michael.d.kinney at intel.com>
+    
+    git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13737 6f19259b-4bc3-4df7-8a09-765794883524
+
+diff --git a/MdePkg/Include/Library/DevicePathLib.h b/MdePkg/Include/Library/DevicePathLib.h
+index 68b1f1b..37acd45 100644
+--- a/MdePkg/Include/Library/DevicePathLib.h
++++ b/MdePkg/Include/Library/DevicePathLib.h
+@@ -4,7 +4,7 @@
+   This library provides defines, macros, and functions to help create and parse 
+   EFI_DEVICE_PATH_PROTOCOL structures.
+ 
+-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
++Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
+ This program and the accompanying materials are licensed and made available under 
+ the terms and conditions of the BSD License that accompanies this distribution.  
+ The full text of the license may be found at
+@@ -21,6 +21,28 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+ #define END_DEVICE_PATH_LENGTH               (sizeof (EFI_DEVICE_PATH_PROTOCOL))
+ 
+ /**
++  Determine whether a given device path is valid.
++  If DevicePath is NULL, then ASSERT().
++
++  @param  DevicePath  A pointer to a device path data structure.
++  @param  MaxSize     The maximum size of the device path data structure.
++
++  @retval TRUE        DevicePath is valid.
++  @retval FALSE       The length of any node node in the DevicePath is less
++                      than sizeof (EFI_DEVICE_PATH_PROTOCOL).
++  @retval FALSE       If MaxSize is not zero, the size of the DevicePath
++                      exceeds MaxSize.
++  @retval FALSE       If PcdMaximumDevicePathNodeCount is not zero, the node
++                      count of the DevicePath exceeds PcdMaximumDevicePathNodeCount.
++**/
++BOOLEAN
++EFIAPI
++IsDevicePathValid (
++  IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
++  IN       UINTN                    MaxSize
++  );
++
++/**
+   Returns the Type field of a device path node.
+ 
+   Returns the Type field of the device path node specified by Node.
+@@ -123,7 +145,8 @@ IsDevicePathEndType (
+   Determines if a device path node is an end node of an entire device path.
+ 
+   Determines if a device path node specified by Node is an end node of an entire device path.
+-  If Node represents the end of an entire device path, then TRUE is returned.  Otherwise, FALSE is returned.
++  If Node represents the end of an entire device path, then TRUE is returned.
++  Otherwise, FALSE is returned.
+ 
+   If Node is NULL, then ASSERT().
+ 
+@@ -143,7 +166,8 @@ IsDevicePathEnd (
+   Determines if a device path node is an end node of a device path instance.
+ 
+   Determines if a device path node specified by Node is an end node of a device path instance.
+-  If Node represents the end of a device path instance, then TRUE is returned.  Otherwise, FALSE is returned.
++  If Node represents the end of a device path instance, then TRUE is returned.
++  Otherwise, FALSE is returned.
+ 
+   If Node is NULL, then ASSERT().
+ 
+@@ -169,6 +193,7 @@ IsDevicePathEndInstance (
+ 
+   If Node is NULL, then ASSERT().
+   If NodeLength >= 0x10000, then ASSERT().
++  If NodeLength < sizeof (EFI_DEVICE_PATH_PROTOCOL), then ASSERT().
+ 
+   @param  Node      A pointer to a device path node data structure.
+   @param  Length    The length, in bytes, of the device path node.
+@@ -208,13 +233,14 @@ SetDevicePathEndNode (
+ /**
+   Returns the size of a device path in bytes.
+ 
+-  This function returns the size, in bytes, of the device path data structure specified by
+-  DevicePath including the end of device path node.  If DevicePath is NULL, then 0 is returned.
++  This function returns the size, in bytes, of the device path data structure 
++  specified by DevicePath including the end of device path node.
++  If DevicePath is NULL or invalid, then 0 is returned.
+ 
+-  @param  DevicePath                 A pointer to a device path data structure.
+-  
+-  @retval 0       DevicePath is NULL.
+-  @retval Others  The size of a device path in bytes.
++  @param  DevicePath  A pointer to a device path data structure.
++
++  @retval 0           If DevicePath is NULL or invalid.
++  @retval Others      The size of a device path in bytes.
+ 
+ **/
+ UINTN
+@@ -235,7 +261,7 @@ GetDevicePathSize (
+   
+   @param  DevicePath                 A pointer to a device path data structure.
+ 
+-  @retval NULL    DevicePath is NULL.
++  @retval NULL    DevicePath is NULL or invalid.
+   @retval Others  A pointer to the duplicated device path.
+   
+ **/
+@@ -263,6 +289,7 @@ DuplicateDevicePath (
+   @param  SecondDevicePath           A pointer to a device path data structure.
+   
+   @retval NULL      If there is not enough memory for the newly allocated buffer.
++  @retval NULL      If FirstDevicePath or SecondDevicePath is invalid.
+   @retval Others    A pointer to the new device path if success.
+                     Or a copy an end-of-device-path if both FirstDevicePath and SecondDevicePath are NULL.
+ 
+@@ -316,6 +343,7 @@ AppendDevicePathNode (
+   and a new end-of-device-path-instance node is inserted between. 
+   If DevicePath is NULL, then a copy if DevicePathInstance is returned.
+   If DevicePathInstance is NULL, then NULL is returned.
++  If DevicePath or DevicePathInstance is invalid, then NULL is returned.
+   If there is not enough memory to allocate space for the new device path, then NULL is returned.  
+   The memory is allocated from EFI boot services memory. It is the responsibility of the caller to
+   free the memory allocated.
+@@ -341,6 +369,7 @@ AppendDevicePathInstance (
+   point to the next device path instance in the device path (or NULL if no more) and updates Size
+   to hold the size of the device path instance copy.
+   If DevicePath is NULL, then NULL is returned.
++  If DevicePath points to a invalid device path, then NULL is returned.
+   If there is not enough memory to allocate space for the new device path, then NULL is returned.  
+   The memory is allocated from EFI boot services memory. It is the responsibility of the caller to
+   free the memory allocated.
+@@ -394,12 +423,13 @@ CreateDeviceNode (
+   Determines if a device path is single or multi-instance.
+ 
+   This function returns TRUE if the device path specified by DevicePath is multi-instance.
+-  Otherwise, FALSE is returned.  If DevicePath is NULL, then FALSE is returned.
++  Otherwise, FALSE is returned.
++  If DevicePath is NULL or invalid, then FALSE is returned.
+ 
+   @param  DevicePath                 A pointer to a device path data structure.
+ 
+   @retval  TRUE                      DevicePath is multi-instance.
+-  @retval  FALSE                     DevicePath is not multi-instance, or DevicePath is NULL.
++  @retval  FALSE                     DevicePath is not multi-instance, or DevicePath is NULL or invalid.
+ 
+ **/
+ BOOLEAN
+diff --git a/MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.c b/MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.c
+index db065e4..a91a7a3 100644
+--- a/MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.c
++++ b/MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.c
+@@ -8,7 +8,7 @@
+   environment varibles. Multi-instance device paths should never be placed
+   on a Handle.
+ 
+-  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
++  Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
+   This program and the accompanying materials                          
+   are licensed and made available under the terms and conditions of the BSD License         
+   which accompanies this distribution.  The full text of the license may be found at        
+@@ -28,6 +28,7 @@
+ #include <Library/MemoryAllocationLib.h>
+ #include <Library/UefiBootServicesTableLib.h>
+ #include <Library/BaseLib.h>
++#include <Library/PcdLib.h>
+ 
+ //
+ // Template for an end-of-device path node.
+@@ -42,6 +43,61 @@ GLOBAL_REMOVE_IF_UNREFERENCED CONST EFI_DEVICE_PATH_PROTOCOL  mUefiDevicePathLib
+ };
+ 
+ /**
++  Determine whether a given device path is valid.
++  If DevicePath is NULL, then ASSERT().
++
++  @param  DevicePath  A pointer to a device path data structure.
++  @param  MaxSize     The maximum size of the device path data structure.
++
++  @retval TRUE        DevicePath is valid.
++  @retval FALSE       The length of any node node in the DevicePath is less
++                      than sizeof (EFI_DEVICE_PATH_PROTOCOL).
++  @retval FALSE       If MaxSize is not zero, the size of the DevicePath
++                      exceeds MaxSize.
++  @retval FALSE       If PcdMaximumDevicePathNodeCount is not zero, the node
++                      count of the DevicePath exceeds PcdMaximumDevicePathNodeCount.
++**/
++BOOLEAN
++EFIAPI
++IsDevicePathValid (
++  IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
++  IN       UINTN                    MaxSize
++  )
++{
++  UINTN Count;
++  UINTN Size;
++  UINTN NodeLength;
++
++  ASSERT (DevicePath != NULL);
++
++  for (Count = 0, Size = 0; !IsDevicePathEnd (DevicePath); DevicePath = NextDevicePathNode (DevicePath)) {
++    NodeLength = DevicePathNodeLength (DevicePath);
++    if (NodeLength < sizeof (EFI_DEVICE_PATH_PROTOCOL)) {
++      return FALSE;
++    }
++
++    if (MaxSize > 0) {
++      Size += NodeLength;
++      if (Size + END_DEVICE_PATH_LENGTH > MaxSize) {
++        return FALSE;
++      }
++    }
++
++    if (PcdGet32 (PcdMaximumDevicePathNodeCount) > 0) {
++      Count++;
++      if (Count >= PcdGet32 (PcdMaximumDevicePathNodeCount)) {
++        return FALSE;
++      }
++    }
++  }
++
++  //
++  // Only return TRUE when the End Device Path node is valid.
++  //
++  return (BOOLEAN) (DevicePathNodeLength (DevicePath) == END_DEVICE_PATH_LENGTH);
++}
++
++/**
+   Returns the Type field of a device path node.
+ 
+   Returns the Type field of the device path node specified by Node.
+@@ -106,8 +162,12 @@ DevicePathNodeLength (
+   IN CONST VOID  *Node
+   )
+ {
++  UINTN Length;
++
+   ASSERT (Node != NULL);
+-  return ReadUnaligned16 ((UINT16 *)&((EFI_DEVICE_PATH_PROTOCOL *)(Node))->Length[0]);
++  Length = ReadUnaligned16 ((UINT16 *)&((EFI_DEVICE_PATH_PROTOCOL *)(Node))->Length[0]);
++  ASSERT (Length >= sizeof (EFI_DEVICE_PATH_PROTOCOL));
++  return Length;
+ }
+ 
+ /**
+@@ -227,7 +287,8 @@ IsDevicePathEndInstance (
+   be used to set the contents of the Length field.
+ 
+   If Node is NULL, then ASSERT().
+-  If NodeLength >= 0x10000, then ASSERT().
++  If NodeLength >= SIZE_64KB, then ASSERT().
++  If NodeLength < sizeof (EFI_DEVICE_PATH_PROTOCOL), then ASSERT().
+ 
+   @param  Node      A pointer to a device path node data structure.
+   @param  Length    The length, in bytes, of the device path node.
+@@ -243,7 +304,7 @@ SetDevicePathNodeLength (
+   )
+ {
+   ASSERT (Node != NULL);
+-  ASSERT (Length < 0x10000);
++  ASSERT ((Length >= sizeof (EFI_DEVICE_PATH_PROTOCOL)) && (Length < SIZE_64KB));
+   return WriteUnaligned16 ((UINT16 *)&((EFI_DEVICE_PATH_PROTOCOL *)(Node))->Length[0], (UINT16)(Length));
+ }
+ 
+@@ -277,12 +338,12 @@ SetDevicePathEndNode (
+   Returns the size of a device path in bytes.
+ 
+   This function returns the size, in bytes, of the device path data structure 
+-  specified by DevicePath including the end of device path node.  If DevicePath 
+-  is NULL, then 0 is returned.
++  specified by DevicePath including the end of device path node.
++  If DevicePath is NULL or invalid, then 0 is returned.
+ 
+   @param  DevicePath  A pointer to a device path data structure.
+-  
+-  @retval 0           If DevicePath is NULL.
++
++  @retval 0           If DevicePath is NULL or invalid.
+   @retval Others      The size of a device path in bytes.
+ 
+ **/
+@@ -298,6 +359,10 @@ GetDevicePathSize (
+     return 0;
+   }
+ 
++  if (!IsDevicePathValid (DevicePath, 0)) {
++    return 0;
++  }
++
+   //
+   // Search for the end of the device path structure
+   //
+@@ -324,7 +389,7 @@ GetDevicePathSize (
+   
+   @param  DevicePath    A pointer to a device path data structure.
+ 
+-  @retval NULL          If DevicePath is NULL.
++  @retval NULL          DevicePath is NULL or invalid.
+   @retval Others        A pointer to the duplicated device path.
+   
+ **/
+@@ -370,6 +435,7 @@ DuplicateDevicePath (
+   @param  SecondDevicePath           A pointer to a device path data structure.
+   
+   @retval NULL      If there is not enough memory for the newly allocated buffer.
++  @retval NULL      If FirstDevicePath or SecondDevicePath is invalid.
+   @retval Others    A pointer to the new device path if success.
+                     Or a copy an end-of-device-path if both FirstDevicePath and SecondDevicePath are NULL.
+ 
+@@ -398,6 +464,10 @@ AppendDevicePath (
+     return DuplicateDevicePath (FirstDevicePath);
+   }
+ 
++  if (!IsDevicePathValid (FirstDevicePath, 0) || !IsDevicePathValid (SecondDevicePath, 0)) {
++    return NULL;
++  }
++
+   //
+   // Allocate space for the combined device path. It only has one end node of
+   // length EFI_DEVICE_PATH_PROTOCOL.
+@@ -500,6 +570,7 @@ AppendDevicePathNode (
+   path instance and a new end-of-device-path-instance node is inserted between. 
+   If DevicePath is NULL, then a copy if DevicePathInstance is returned.
+   If DevicePathInstance is NULL, then NULL is returned.
++  If DevicePath or DevicePathInstance is invalid, then NULL is returned.
+   If there is not enough memory to allocate space for the new device path, then 
+   NULL is returned.  
+   The memory is allocated from EFI boot services memory. It is the responsibility 
+@@ -531,6 +602,10 @@ AppendDevicePathInstance (
+     return NULL;
+   }
+ 
++  if (!IsDevicePathValid (DevicePath, 0) || !IsDevicePathValid (DevicePathInstance, 0)) {
++    return NULL;
++  }
++
+   SrcSize       = GetDevicePathSize (DevicePath);
+   InstanceSize  = GetDevicePathSize (DevicePathInstance);
+ 
+@@ -559,6 +634,7 @@ AppendDevicePathInstance (
+   DevicePath to point to the next device path instance in the device path (or NULL 
+   if no more) and updates Size to hold the size of the device path instance copy.
+   If DevicePath is NULL, then NULL is returned.
++  If DevicePath points to a invalid device path, then NULL is returned.
+   If there is not enough memory to allocate space for the new device path, then 
+   NULL is returned.  
+   The memory is allocated from EFI boot services memory. It is the responsibility 
+@@ -596,6 +672,10 @@ GetNextDevicePathInstance (
+     return NULL;
+   }
+ 
++  if (!IsDevicePathValid (*DevicePath, 0)) {
++    return NULL;
++  }
++
+   //
+   // Find the end of the device path instance
+   //
+@@ -681,13 +761,14 @@ CreateDeviceNode (
+ 
+   This function returns TRUE if the device path specified by DevicePath is
+   multi-instance.
+-  Otherwise, FALSE is returned.  If DevicePath is NULL, then FALSE is returned.
++  Otherwise, FALSE is returned.
++  If DevicePath is NULL or invalid, then FALSE is returned.
+ 
+   @param  DevicePath                 A pointer to a device path data structure.
+ 
+   @retval  TRUE                      DevicePath is multi-instance.
+-  @retval  FALSE                     DevicePath is not multi-instance or DevicePath 
+-                                     is NULL.
++  @retval  FALSE                     DevicePath is not multi-instance, or DevicePath 
++                                     is NULL or invalid.
+ 
+ **/
+ BOOLEAN
+@@ -702,6 +783,10 @@ IsDevicePathMultiInstance (
+     return FALSE;
+   }
+ 
++  if (!IsDevicePathValid (DevicePath, 0)) {
++    return FALSE;
++  }
++
+   Node = DevicePath;
+   while (!IsDevicePathEnd (Node)) {
+     if (IsDevicePathEndInstance (Node)) {
+@@ -776,15 +861,14 @@ FileDevicePath (
+   IN CONST CHAR16                    *FileName
+   )
+ {
+-  UINT16                    Size;
++  UINTN                     Size;
+   FILEPATH_DEVICE_PATH      *FilePath;
+   EFI_DEVICE_PATH_PROTOCOL  *DevicePath;
+   EFI_DEVICE_PATH_PROTOCOL  *FileDevicePath;
+ 
+   DevicePath = NULL;
+ 
+-  Size = (UINT16) StrSize (FileName);
+-  
++  Size = StrSize (FileName);
+   FileDevicePath = AllocatePool (Size + SIZE_OF_FILEPATH_DEVICE_PATH + END_DEVICE_PATH_LENGTH);
+   if (FileDevicePath != NULL) {
+     FilePath = (FILEPATH_DEVICE_PATH *) FileDevicePath;
+diff --git a/MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf b/MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
+index c34301d..2ae151d 100644
+--- a/MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
++++ b/MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
+@@ -3,7 +3,7 @@
+ #
+ # Device Path Library that layers on top of the Memory Allocation Library.
+ #
+-# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
++# Copyright (c) 2007 - 2012, Intel Corporation. All rights reserved.<BR>
+ #
+ #  This program and the accompanying materials
+ #  are licensed and made available under the terms and conditions of the BSD License
+@@ -42,8 +42,10 @@
+   MemoryAllocationLib
+   DebugLib
+   BaseMemoryLib
+-
++  PcdLib
+ 
+ [Protocols]
+   gEfiDevicePathProtocolGuid                    ## CONSUMES
+ 
++[Pcd]
++  gEfiMdePkgTokenSpaceGuid.PcdMaximumDevicePathNodeCount
+diff --git a/MdePkg/Library/UefiDevicePathLibDevicePathProtocol/UefiDevicePathLib.c b/MdePkg/Library/UefiDevicePathLibDevicePathProtocol/UefiDevicePathLib.c
+index 8275dd6..1052988 100644
+--- a/MdePkg/Library/UefiDevicePathLibDevicePathProtocol/UefiDevicePathLib.c
++++ b/MdePkg/Library/UefiDevicePathLibDevicePathProtocol/UefiDevicePathLib.c
+@@ -2,7 +2,7 @@
+   Library instance that implement UEFI Device Path Library class based on protocol
+   gEfiDevicePathUtilitiesProtocolGuid.
+ 
+-  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
++  Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
+   This program and the accompanying materials
+   are licensed and made available under the terms and conditions of the BSD License
+   which accompanies this distribution.  The full text of the license may be found at
+@@ -24,6 +24,7 @@
+ #include <Library/MemoryAllocationLib.h>
+ #include <Library/BaseMemoryLib.h>
+ #include <Library/UefiBootServicesTableLib.h>
++#include <Library/PcdLib.h>
+ 
+ EFI_DEVICE_PATH_UTILITIES_PROTOCOL          *mDevicePathUtilities = NULL;
+ 
+@@ -72,6 +73,61 @@ DevicePathLibConstructor (
+ }
+ 
+ /**
++  Determine whether a given device path is valid.
++  If DevicePath is NULL, then ASSERT().
++
++  @param  DevicePath  A pointer to a device path data structure.
++  @param  MaxSize     The maximum size of the device path data structure.
++
++  @retval TRUE        DevicePath is valid.
++  @retval FALSE       The length of any node node in the DevicePath is less
++                      than sizeof (EFI_DEVICE_PATH_PROTOCOL).
++  @retval FALSE       If MaxSize is not zero, the size of the DevicePath
++                      exceeds MaxSize.
++  @retval FALSE       If PcdMaximumDevicePathNodeCount is not zero, the node
++                      count of the DevicePath exceeds PcdMaximumDevicePathNodeCount.
++**/
++BOOLEAN
++EFIAPI
++IsDevicePathValid (
++  IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
++  IN       UINTN                    MaxSize
++  )
++{
++  UINTN Count;
++  UINTN Size;
++  UINTN NodeLength;
++
++  ASSERT (DevicePath != NULL);
++
++  for (Count = 0, Size = 0; !IsDevicePathEnd (DevicePath); DevicePath = NextDevicePathNode (DevicePath)) {
++    NodeLength = DevicePathNodeLength (DevicePath);
++    if (NodeLength < sizeof (EFI_DEVICE_PATH_PROTOCOL)) {
++      return FALSE;
++    }
++
++    if (MaxSize > 0) {
++      Size += NodeLength;
++      if (Size + END_DEVICE_PATH_LENGTH > MaxSize) {
++        return FALSE;
++      }
++    }
++
++    if (PcdGet32 (PcdMaximumDevicePathNodeCount) > 0) {
++      Count++;
++      if (Count >= PcdGet32 (PcdMaximumDevicePathNodeCount)) {
++        return FALSE;
++      }
++    }
++  }
++
++  //
++  // Only return TRUE when the End Device Path node is valid.
++  //
++  return (BOOLEAN) (DevicePathNodeLength (DevicePath) == END_DEVICE_PATH_LENGTH);
++}
++
++/**
+   Returns the Type field of a device path node.
+ 
+   Returns the Type field of the device path node specified by Node.
+@@ -136,8 +192,12 @@ DevicePathNodeLength (
+   IN CONST VOID  *Node
+   )
+ {
++  UINTN Length;
++
+   ASSERT (Node != NULL);
+-  return ReadUnaligned16 ((UINT16 *)&((EFI_DEVICE_PATH_PROTOCOL *)(Node))->Length[0]);
++  Length = ReadUnaligned16 ((UINT16 *)&((EFI_DEVICE_PATH_PROTOCOL *)(Node))->Length[0]);
++  ASSERT (Length >= sizeof (EFI_DEVICE_PATH_PROTOCOL));
++  return Length;
+ }
+ 
+ /**
+@@ -256,7 +316,8 @@ IsDevicePathEndInstance (
+   be used to set the contents of the Length field.
+ 
+   If Node is NULL, then ASSERT().
+-  If NodeLength >= 0x10000, then ASSERT().
++  If NodeLength >= SIZE_64KB, then ASSERT().
++  If NodeLength < sizeof (EFI_DEVICE_PATH_PROTOCOL), then ASSERT().
+ 
+   @param  Node      A pointer to a device path node data structure.
+   @param  Length    The length, in bytes, of the device path node.
+@@ -272,7 +333,7 @@ SetDevicePathNodeLength (
+   )
+ {
+   ASSERT (Node != NULL);
+-  ASSERT (Length < 0x10000);
++  ASSERT ((Length >= sizeof (EFI_DEVICE_PATH_PROTOCOL)) && (Length < SIZE_64KB));
+   return WriteUnaligned16 ((UINT16 *)&((EFI_DEVICE_PATH_PROTOCOL *)(Node))->Length[0], (UINT16)(Length));
+ }
+ 
+@@ -305,13 +366,14 @@ SetDevicePathEndNode (
+ /**
+   Returns the size of a device path in bytes.
+ 
+-  This function returns the size, in bytes, of the device path data structure specified by
+-  DevicePath including the end of device path node.  If DevicePath is NULL, then 0 is returned.
++  This function returns the size, in bytes, of the device path data structure 
++  specified by DevicePath including the end of device path node.
++  If DevicePath is NULL or invalid, then 0 is returned.
+ 
+-  @param  DevicePath                 A pointer to a device path data structure.
+-  
+-  @retval 0       If DevicePath is NULL.
+-  @retval Others  The size of a device path in bytes.
++  @param  DevicePath  A pointer to a device path data structure.
++
++  @retval 0           If DevicePath is NULL or invalid.
++  @retval Others      The size of a device path in bytes.
+ 
+ **/
+ UINTN
+@@ -336,7 +398,7 @@ GetDevicePathSize (
+   
+   @param  DevicePath                 A pointer to a device path data structure.
+ 
+-  @retval NULL    If DevicePath is NULL.
++  @retval NULL    If DevicePath is NULL or invalid.
+   @retval Others  A pointer to the duplicated device path.
+   
+ **/
+@@ -367,6 +429,7 @@ DuplicateDevicePath (
+   @param  SecondDevicePath           A pointer to a device path data structure.
+   
+   @retval NULL      If there is not enough memory for the newly allocated buffer.
++  @retval NULL      If FirstDevicePath or SecondDevicePath is invalid.
+   @retval Others    A pointer to the new device path if success.
+                     Or a copy an end-of-device-path if both FirstDevicePath and 
+                     SecondDevicePath are NULL.
+@@ -431,6 +494,7 @@ AppendDevicePathNode (
+   path instance and a new end-of-device-path-instance node is inserted between. 
+   If DevicePath is NULL, then a copy if DevicePathInstance is returned.
+   If DevicePathInstance is NULL, then NULL is returned.
++  If DevicePath or DevicePathInstance is invalid, then NULL is returned.
+   If there is not enough memory to allocate space for the new device path, then 
+   NULL is returned.   
+   The memory is allocated from EFI boot services memory. It is the responsibility 
+@@ -524,15 +588,16 @@ CreateDeviceNode (
+ /**
+   Determines if a device path is single or multi-instance.
+ 
+-  This function returns TRUE if the device path specified by DevicePath is 
++  This function returns TRUE if the device path specified by DevicePath is
+   multi-instance.
+-  Otherwise, FALSE is returned.  If DevicePath is NULL, then FALSE is returned.
++  Otherwise, FALSE is returned.
++  If DevicePath is NULL or invalid, then FALSE is returned.
+ 
+   @param  DevicePath                 A pointer to a device path data structure.
+ 
+   @retval  TRUE                      DevicePath is multi-instance.
+-  @retval  FALSE                     DevicePath is not multi-instance or DevicePath 
+-                                     is NULL.
++  @retval  FALSE                     DevicePath is not multi-instance, or DevicePath 
++                                     is NULL or invalid.
+ 
+ **/
+ BOOLEAN
+diff --git a/MdePkg/Library/UefiDevicePathLibDevicePathProtocol/UefiDevicePathLibDevicePathProtocol.inf b/MdePkg/Library/UefiDevicePathLibDevicePathProtocol/UefiDevicePathLibDevicePathProtocol.inf
+index 3393830..16b47e3 100644
+--- a/MdePkg/Library/UefiDevicePathLibDevicePathProtocol/UefiDevicePathLibDevicePathProtocol.inf
++++ b/MdePkg/Library/UefiDevicePathLibDevicePathProtocol/UefiDevicePathLibDevicePathProtocol.inf
+@@ -4,7 +4,7 @@
+ #  Device Path Library that layers on top of the UEFI 2.0 Device Path Protocol.
+ #  This library is not available for EFI 1.10 modules.
+ #
+-#  Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.<BR>
++#  Copyright (c) 2007 - 2012, Intel Corporation. All rights reserved.<BR>
+ #
+ #  This program and the accompanying materials
+ #  are licensed and made available under the terms and conditions of the BSD License
+@@ -44,11 +44,14 @@
+   MemoryAllocationLib
+   BaseLib
+   DebugLib
+-
++  PcdLib
+ 
+ [Protocols]
+   gEfiDevicePathProtocolGuid                    ## CONSUMES
+   gEfiDevicePathUtilitiesProtocolGuid           ## CONSUMES
+ 
++[Pcd]
++  gEfiMdePkgTokenSpaceGuid.PcdMaximumDevicePathNodeCount
++
+ [Depex.common.DXE_DRIVER, Depex.common.DXE_RUNTIME_DRIVER, Depex.common.DXE_SAL_DRIVER, Depex.common.DXE_SMM_DRIVER]
+   gEfiDevicePathUtilitiesProtocolGuid
+diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec
+index b29cb01..aefba3f 100644
+--- a/MdePkg/MdePkg.dec
++++ b/MdePkg/MdePkg.dec
+@@ -1287,6 +1287,9 @@
+   ## Indicates the maximum node number of linked list
+   gEfiMdePkgTokenSpaceGuid.PcdMaximumLinkedListLength|1000000|UINT32|0x00000003
+ 
++  ## Indicates the maximum node number of device path
++  gEfiMdePkgTokenSpaceGuid.PcdMaximumDevicePathNodeCount|0|UINT32|0x00000029
++
+   ## Indicates the timeout tick of holding spin lock
+   gEfiMdePkgTokenSpaceGuid.PcdSpinLockTimeout|10000000|UINT32|0x00000004
+ 

Copied: refind-efi/repos/testing-any/refind-efi.install (from rev 173350, refind-efi/trunk/refind-efi.install)
===================================================================
--- testing-any/refind-efi.install	                        (rev 0)
+++ testing-any/refind-efi.install	2012-12-19 14:47:55 UTC (rev 173351)
@@ -0,0 +1,28 @@
+post_install() {
+	
+	cat << EOF 
+
+refind-efi applications have been installed at /usr/lib/refind/*.efi
+
+UEFI FS drivers have deen installed at /usr/lib/refind/drivers_*/
+
+Copy the efi application (according to your UEFI ARCH) 
+and /usr/lib/refind/config/refind.conf to a sub-directory of <EFISYS>/EFI/
+and add an entry to firmware boot menu using efibootmgr or mactel-boot (for Macs)
+
+rEFInd icons have been installed at /usr/share/refind/icons/
+
+HTML Documentation is available at /usr/share/refind/docs/html/
+
+More info at https://wiki.archlinux.org/index.php/UEFI_Bootloaders#Using_rEFInd
+
+EOF
+	
+}
+
+post_upgrade() {
+	
+	post_install
+	
+}
+

Copied: refind-efi/repos/testing-any/refind_include_more_shell_paths.patch (from rev 173350, refind-efi/trunk/refind_include_more_shell_paths.patch)
===================================================================
--- testing-any/refind_include_more_shell_paths.patch	                        (rev 0)
+++ testing-any/refind_include_more_shell_paths.patch	2012-12-19 14:47:55 UTC (rev 173351)
@@ -0,0 +1,21 @@
+diff --git a/refind/main.c b/refind/main.c
+index beac3bf..1a2cf58 100644
+--- a/refind/main.c
++++ b/refind/main.c
+@@ -62,13 +62,13 @@
+ 
+ #define MACOSX_LOADER_PATH      L"System\\Library\\CoreServices\\boot.efi"
+ #if defined (EFIX64)
+-#define SHELL_NAMES             L"\\EFI\\tools\\shell.efi,\\shellx64.efi"
++#define SHELL_NAMES             L"\\EFI\\tools\\shellx64.efi,\\EFI\\tools\\shell.efi,\\shellx64.efi"
+ #define DRIVER_DIRS             L"drivers,drivers_x64"
+ #elif defined (EFI32)
+-#define SHELL_NAMES             L"\\EFI\\tools\\shell.efi,\\shellia32.efi"
++#define SHELL_NAMES             L"\\EFI\\tools\\shellia32.efi,\\EFI\\tools\\shell.efi,\\shellia32.efi"
+ #define DRIVER_DIRS             L"drivers,drivers_ia32"
+ #else
+-#define SHELL_NAMES             L"\\EFI\\tools\\shell.efi"
++#define SHELL_NAMES             L"\\EFI\\tools\\shell.efi,\\shell.efi"
+ #define DRIVER_DIRS             L"drivers"
+ #endif
+ 

Copied: refind-efi/repos/testing-any/refind_linux.conf (from rev 173350, refind-efi/trunk/refind_linux.conf)
===================================================================
--- testing-any/refind_linux.conf	                        (rev 0)
+++ testing-any/refind_linux.conf	2012-12-19 14:47:55 UTC (rev 173351)
@@ -0,0 +1,5 @@
+## This file should be present in the same directory as the EFISTUB kernel and initramfs files
+## More info at http://www.rodsbooks.com/refind/linux.html , http://www.rodsbooks.com/efi-bootloaders/efistub.html
+
+"Boot with defaults"    "root=PARTUUID=XXXXXXXX rootfstype=XXXX ro"
+"Boot to terminal"      "root=PARTUUID=XXXXXXXX rootfstype=XXXX ro systemd.unit=multi-user.target"




More information about the arch-commits mailing list