summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Crandall <triquetra@triquetradevelopment.com>2015-04-17 20:23:08 -0500
committerDavid Crandall <triquetra@triquetradevelopment.com>2015-04-17 20:23:08 -0500
commitcd2501d7b22e74e15afc1e2f91604908b067e5fc (patch)
treeb32d3cd9651872b8ea3063426c09a57a08ba2d34
parentcreated gde profile; added separate systemd profiles for gde and knome (diff)
downloadtriquetra-cd2501d7b22e74e15afc1e2f91604908b067e5fc.tar.gz
triquetra-cd2501d7b22e74e15afc1e2f91604908b067e5fc.tar.bz2
triquetra-cd2501d7b22e74e15afc1e2f91604908b067e5fc.zip
added refind-bin
-rw-r--r--sys-boot/refind-bin/Manifest8
-rwxr-xr-xsys-boot/refind-bin/files/refind-install80
-rw-r--r--sys-boot/refind-bin/files/refind-mkconfig177
-rw-r--r--sys-boot/refind-bin/files/refind.d-gentoo120
-rw-r--r--sys-boot/refind-bin/files/refind.default180
-rw-r--r--sys-boot/refind-bin/refind-bin-0.4.5.ebuild72
-rw-r--r--sys-boot/refind-bin/refind-bin-0.8.5.ebuild72
7 files changed, 709 insertions, 0 deletions
diff --git a/sys-boot/refind-bin/Manifest b/sys-boot/refind-bin/Manifest
new file mode 100644
index 0000000..129c682
--- /dev/null
+++ b/sys-boot/refind-bin/Manifest
@@ -0,0 +1,8 @@
+AUX refind-install 2786 SHA256 184b6bd259088ab8e2110de0e3e0f4a4c627430af0c2da8717b74a50e5cb7ccd SHA512 e9064740660cd561f35bac68fda6ac7217a8dfe6a0b9c67fdae082827003e3cba45365a02351b0548f22428ffd7bf06a873cd81f75cbb31190aac576c9afbd67 WHIRLPOOL 0efd632a5657f04a3f8415130f549969d1924be8eeaf806c924c93b3664824adf113a32156883efd708740d5bc32562f64e2565dcda5aaf19c942d57ea985ab8
+AUX refind-mkconfig 5031 SHA256 ee147acd83f872d5bc079ad6f2e1f99f19158f5613da78ffb0dea88e780ea088 SHA512 5f76d632aa4d93e05a8f035110da3d96a8c25e05fae5d145ad0069e479e78c1eb93d0afbb8cf8ae273d9aa1d1d52d037dbc44cb2454a574f227562d4442b9583 WHIRLPOOL abf828849b502865eed77b7da5fd9a9befb3e03da2a851984de82a0fedf26ff2efc96abe41a65592e9fe375aca3c7470b6355d0c69bf2c5212e49fe2e5116d94
+AUX refind.d-gentoo 4497 SHA256 9225069dd2deafdc22c469b48db54c667faed13620877744cf2560d2f7f54e39 SHA512 ede1c500e34f17dacbb560b0f04ed04efc5a2ff4521ace7f144cd4842ebcfbab3c720515d71a70b53b824ddf6c5332c380231bc366cad51a0381062d7ffac792 WHIRLPOOL 5f8731872482749020bb2939e94307b96ad1a940ff4c91ef0395ab1ebff927ee1b02404dd79aad929d4a019f16b63e500d15839fb5e73149fdd813cc6c3ce9ff
+AUX refind.default 8151 SHA256 74868ffadb491cb59a00d0841d91a33c8c854fe7cc829ac4a3751f32a55c4fa7 SHA512 c1ef40883402e0cd22e4e7613b8a0b11fe79d9e9d77633a01fb1e9212b3d27426da9ea21ad512d9cedf6e29687308352036bd80a5d9dfddaad6f520658ac531f WHIRLPOOL a879d006e8a08099b16376bf86af1b519151b2308f541e26d49c8641cf5371cbbec1d0ce56866c63047a8653cd7a72bf217bc85c5c2be83fa99ecae5060d5dd5
+DIST refind-bin-0.4.5.zip 953517 SHA256 c7eb35dae68a0c638329002ce1087ea58a97df3255e13dbe7b130d446015351f SHA512 fdb021123b791d2aa957234bb02184e0b67c780fdf517fd9a5544851e54d4ae24c4e123717f6b333df781536c6dec196187448c59773a1f6dd02cc33b0c2e2bc WHIRLPOOL 2094a70d976df608ec515ff4fb26f85fd8c007f96eb04c55a0959e4dc4fafa1d4b9f2177eb0b290c37f57e2cd7599a7dd692fce549559b2704423ab080335f7e
+DIST refind-bin-0.8.5.zip 2506724 SHA256 1b3935024af61a670bcd613f91c1fea1edbba1a7ae142fabfbf4fe7b71c18af6 SHA512 40f6ea9e0cd5169bbe3d1a748ed4a08c63bc40829eb126fd555c131a4b50c088b553021274780952a8e91e233e9b45f339d9c8d26f0fc44c758f2281cd2299c4 WHIRLPOOL be4af9b7f497e26ac2b0ed6a782dfe397acc48761fffeb1588cf7d81385491e0d31887f585c640312c6ad31c199da922eb0a2bed121df504036b6eb8411e6c36
+EBUILD refind-bin-0.4.5.ebuild 2208 SHA256 b0f9f0cc2678c880d39bb3f3f78e2181a78da5d197d3ebb8f96f69cd7a174de2 SHA512 572f4bbc99d5a70ea16f50f5d6281d09f9dacbdf5ea214c3d119e4460ad21b8552d72e6dbed0dfa842a52e83f87b2b6668bd04c93bdb2b2d5a1e7f3280b76966 WHIRLPOOL 16a14f066cfd2d9e8d2bc0aed571365ca9bbb39f80e9f7f5ba493befe9b1cca46e8f2d79896926266a46a61ead8cdea6354eec82de005cf6673c432dbc8baa1e
+EBUILD refind-bin-0.8.5.ebuild 2208 SHA256 b0f9f0cc2678c880d39bb3f3f78e2181a78da5d197d3ebb8f96f69cd7a174de2 SHA512 572f4bbc99d5a70ea16f50f5d6281d09f9dacbdf5ea214c3d119e4460ad21b8552d72e6dbed0dfa842a52e83f87b2b6668bd04c93bdb2b2d5a1e7f3280b76966 WHIRLPOOL 16a14f066cfd2d9e8d2bc0aed571365ca9bbb39f80e9f7f5ba493befe9b1cca46e8f2d79896926266a46a61ead8cdea6354eec82de005cf6673c432dbc8baa1e
diff --git a/sys-boot/refind-bin/files/refind-install b/sys-boot/refind-bin/files/refind-install
new file mode 100755
index 0000000..35b1a01
--- /dev/null
+++ b/sys-boot/refind-bin/files/refind-install
@@ -0,0 +1,80 @@
+#!/bin/bash
+#
+# script to install rEFInd
+#
+# Usage:
+#
+# refind-install
+#
+# This program is copyright (c) 2012 by David P. Crandall
+# It is released under the terms of the GNU GPL, version 3.
+# It is based on the work of Roderick W. Smith from the
+# install.sh script in the rEFInd package.
+#
+# Revision history:
+#
+# 0.4.5 -- Initial version
+#
+# Note: version numbers match those of the rEFInd package
+# with which this script first appeared.
+
+InstallIt="0"
+
+CpuType=$(uname -m)
+if [[ $CpuType == 'x86_64' ]] ; then
+ Refind="refind_x64.efi"
+elif [[ $CpuType == 'i386' || $CpuType == 'i486' || $CpuType == 'i586' || $CpuType == 'i686' ]] ; then
+ Refind="refind_ia32.efi"
+ ewarn "CAUTION: This Linux installation uses a 32-bit kernel. 32-bit EFI-based"
+ ewarn "computers are VERY RARE. If you've installed a 32-bit version of Linux"
+ ewarn "on a 64-bit computer, you should manually install the 64-bit version of"
+ ewarn "rEFInd. Installation will now proceed presuming a 32-bit EFI."
+else
+ echo
+ echo "Unknown CPU type '$CpuType'; aborting!"
+ echo
+ exit
+fi
+
+Efibootmgr=$(which efibootmgr 2> /dev/null)
+if [[ $Efibootmgr ]] ; then
+ modprobe efivars &> /dev/null
+ EspLine=$(df /boot/efi | grep boot)
+ InstallPart=$(echo $EspLine | cut -d " " -f 6)
+ InstallDisk=$(grep $InstallPart /etc/mtab | cut -d " " -f 1 | cut -c 1-8)
+ PartNum=$(grep $InstallPart /etc/mtab | cut -d " " -f 1 | cut -c 9-10)
+ TargetDir="/EFI/refind"
+ EntryFilename=$TargetDir/$Refind
+ EfiEntryFilename=$(echo ${EntryFilename//\//\\\})
+ EfiEntryFilename2=$(echo ${EfiEntryFilename} | sed s/\\\\\\\\/\\\\\\\\\\\\\\\\/g)
+ ExistingEntry=$($Efibootmgr -v | grep $EfiEntryFilename2)
+ if [[ $ExistingEntry ]] ; then
+ ExistingEntryBootNum=$(echo $ExistingEntry | cut -c 5-8)
+ FirstBoot=$($Efibootmgr | grep BootOrder | cut -c 12-15)
+ if [[ $ExistingEntryBootNum != $FirstBoot ]] ; then
+ echo "An existing rEFInd boot entry exists, but isn't set as the default boot"
+ echo "manager. The boot order is being adjusted to make rEFInd the default boot"
+ echo "manager. If this is NOT what you want, you should use efibootmgr to"
+ echo "manually adjust your EFI's boot order."
+ $Efibootmgr -b $ExistingEntryBootNum -B &> /dev/null
+ InstallIt="1"
+ fi
+ else
+ InstallIt="1"
+ fi
+ if [[ $InstallIt == "1" ]] ; then
+ echo "Installing rEFInd as default boot manager"
+ $Efibootmgr -c -l $EfiEntryFilename -L rEFInd -d $InstallDisk -p $PartNum &> /dev/null
+ if [[ $? != 0 ]] ; then
+ echo
+ echo "ALERT: There were problems running the efibootmgr program! You may need to"
+ echo "rename the rEFInd binary to the default name (EFI/boot/bootx64.efi"
+ echo "on x86-64 systems or EFI/boot/bootia32.efi on x86 systems) to have it run!"
+ echo
+ fi
+ fi
+else
+ echo
+ echo "Could not locate the efibootmgr program."
+ echo
+fi
diff --git a/sys-boot/refind-bin/files/refind-mkconfig b/sys-boot/refind-bin/files/refind-mkconfig
new file mode 100644
index 0000000..560503d
--- /dev/null
+++ b/sys-boot/refind-bin/files/refind-mkconfig
@@ -0,0 +1,177 @@
+#!/usr/bin/env python
+#
+# script to automate creation of rEFInd configuration files
+#
+# Usage:
+#
+# refind-mkconfig
+#
+# This program is copyright (c) 2012 by David P. Crandall
+# It is released under the terms of the GNU GPL, version 3.
+#
+# Revision history:
+#
+# 0.4.5 -- Initial version
+#
+# Note: version numbers match those of the rEFInd package
+# with which this script first appeared.
+
+import os, re
+from collections import OrderedDict, deque
+from string import Template
+
+class _Template(Template):
+ idpattern = '[0-9]+'
+
+class _Parser(object):
+ def __init__(self, files):
+ self.files = files
+ self.state = pattern
+ self.stanzas = OrderedDict()
+ self.header = None
+ self.menu = None
+
+ def process(self, lines):
+ remaining = self.state.process(lines, self)
+ if remaining:
+ self.process(remaining)
+
+ def getstanzas(self):
+ for file in self.files:
+ with open(file, 'r') as sf:
+ lines = deque(sf.readlines())
+ self.process(lines)
+ return self.stanzas
+
+class _Pattern(object):
+ def __init__(self):
+ self.header = re.compile("^\[(.+)\]")
+
+ def process(self, lines, parser):
+ line = lines.popleft()
+ match = self.header.match(line)
+ if match:
+ parser.header = match.group(1)
+ parser.stanzas[parser.header] = OrderedDict() if parser.header not in parser.stanzas
+ parser.state = transition
+ return lines
+
+class _Menustart(object):
+ def __init__():
+ self.start = re.compile("^menuentry\s+(.+)\s+\{")
+
+ def process(self, lines, parser):
+ line = lines.popleft()
+ match = self.start.match(line)
+ if match:
+ parser.menu = match.group(1)
+ parser.stanzas[parser.header][parser.menu] = [line]
+ parser.state = menu_end
+ return lines
+
+class _Menuend(object):
+ def __init__():
+ self.end = re.compile("^\}")
+
+ def process(self, lines, parser):
+ line = lines.popleft()
+ parser.stanzas[parser.header][parser.menu].append(line)
+ if self.end.match(line):
+ parser.state = transition
+ return lines
+
+class _Transition(object):
+ def process(self, lines, parser):
+ if pattern.header.match(lines[0]):
+ parser.state = pattern
+ elif menu_start.start.match(lines[0])
+ parser.state = menu_start
+ else
+ discard = lines.popleft()
+ return lines
+
+class Mkconfig(object):
+ def __init__(self):
+ self.efi = self._findEFI()
+ self.conf = os.path.join(self.efi, "/EFI/refind/refind.test")
+ self.comment = re.compile('^\s*#')
+ self.stanzas = OrderedDict()
+ self.stanzaFiles = sum([[os.path.join(r, f) for f in fl]
+ for r, d, fl in os.walk("/etc/refind.d")], [])
+
+ blockdir = re.compile('^' + self.efi + '/EFI/(refind|tools)')
+ stripdir = re.compile('^' + self.efi)
+ efiFiles = [[os.path.join(r, f) for f in fl]
+ for r, d, fl in os.walk(self.efi) if not blockdir.match(r)]
+ # flatten generated lists
+ efiFiles = sum(efiFiles, [])
+ # sort by modification date of files, newest first
+ efiFiles = sorted(efiFiles, reverse=True, key=lambda i: os.path.getmtime(i))
+ # strip mount path
+ self.efiFiles = [stripdir.sub('', f) for f in efiFiles]
+
+ def _findEFI(self):
+ if os.path.ismount("/boot/efi"):
+ mntpath = os.path.abspath("/boot/efi")
+ elif os.path.ismount("/boot"):
+ mntpath = os.path.abspath("/boot")
+ else
+ print "The EFI partition could not be found at /boot or /boot/efi. Exiting"
+ exit
+ with open("/proc/mounts") as mnts:
+ for line in mnts:
+ words = re.split('\s+', line)
+ if words[1] == mntpath:
+ if words[2] == "vfat":
+ return mntpath
+ print "EFI partition must be vfat, but the filesystem is " + words[3] + ". Exiting"
+ exit
+
+ def _getstanzas(self):
+ p =
+ for file in self.stanzaFiles:
+ with open(file, 'r') as sf:
+ lines = sf.readlines()
+
+
+ def writeGlobalOptions(self):
+ with open(self.conf, 'w') as newconf:
+ newconf.write("# This file has been automatically generated by refind-mkconfig.\n")
+ newconf.write("# Manual edits will be overwritten the next time refind-mkconfig\n")
+ newconf.write("# is invoked. To change settings, edit /etc/default/refind and\n")
+ newconf.write("# the files located at /etc/refind.d.\n\n")
+ # Get global options
+ newconf.write("# Global options\n")
+ with open("/etc/default/refind") as default:
+ for line in default:
+ if NOT self.comment.match(line):
+ newconf.write(line + "\n")
+
+ def writeStanzas(self):
+ # Get OS stanzas
+ with open(self.conf, 'a') as newconf:
+ newconf.write("\n# OS stanzas\n\n")
+ p = _Parser(self.stanzaFiles)
+ self.stanzas = p.getstanzas
+ for pk in self.stanzas:
+ pattern = re.compile(pk)
+ for file in self.efiFiles:
+ match = pattern.match(file)
+ if match:
+ values = {str(i): match.group(i) for i in range(pattern.groups)}
+ for mk in self.stanzas[pk]:
+ for line in self.stanzas[pk][mk]:
+ t = _Template(line)
+ newconf.write(t.substitute(values))
+ newconf.write("\n")
+
+pattern = _Pattern()
+menu_start = _Menustart()
+menu_end = _Menuend()
+transition = _Transition()
+
+if __name__ == '__main__':
+ cfg = Mkconfig()
+ cfg.writeGlobalOptions
+ cfg.writeStanzas
+ print "New refind.conf written to " + cfg.efi \ No newline at end of file
diff --git a/sys-boot/refind-bin/files/refind.d-gentoo b/sys-boot/refind-bin/files/refind.d-gentoo
new file mode 100644
index 0000000..728c742
--- /dev/null
+++ b/sys-boot/refind-bin/files/refind.d-gentoo
@@ -0,0 +1,120 @@
+#
+# script to install rEFInd
+#
+# Usage:
+#
+# refind-mkconfig
+#
+# This program is copyright (c) 2012 by David P. Crandall
+# It is released under the terms of the GNU GPL, version 3.
+#
+# Revision history:
+#
+# 0.4.5 -- Initial version
+#
+# Note: version numbers match those of the rEFInd package
+# with which this script first appeared.
+#
+# Sample manual configuration stanzas. Each begins with the "menuentry"
+# keyword followed by a name that's to appear in the menu (use quotes
+# if you want the name to contain a space) and an open curly brace
+# ("{"). Each entry ends with a close curly brace ("}"). Common
+# keywords within each stanza include:
+#
+# volume - identifies the filesystem from which subsequent files
+# are loaded. You can specify the volume by label or by
+# a number followed by a colon (as in "0:" for the first
+# filesystem or "1:" for the second).
+# loader - identifies the boot loader file
+# initrd - Specifies an initial RAM disk file
+# icon - specifies a custom boot loader icon
+# ostype - OS type code to determine boot options available by
+# pressing Insert. Valid values are "MacOS", "Linux",
+# "Windows", and "XOM". Case-sensitive.
+# graphics - set to "on" to enable graphics-mode boot (useful
+# mainly for MacOS) or "off" for text-mode boot.
+# Default is auto-detected from loader filename.
+# options - sets options to be passed to the boot loader; use
+# quotes if more than one option should be passed or
+# if any options use characters that might be changed
+# by rEFInd parsing procedures (=, /, #, or tab).
+# disabled - use alone or set to "yes" to disable this entry.
+#
+# Note that you can use either DOS/Windows/EFI-style backslashes (\)
+# or Unix-style forward slashes (/) as directory separators. Either
+# way, all file references are on the ESP from which rEFInd was
+# launched.
+# Use of quotes around parameters causes them to be interpreted as
+# one keyword, and for parsing of special characters (spaces, =, /,
+# and #) to be disabled. This is useful mainly with the "options"
+# keyword. Use of quotes around parameters that specify filenames is
+# permissible, but you must then use backslashes instead of slashes,
+# except when you must pass a forward slash to the loader, as when
+# passing a root= option to a Linux kernel.
+
+# Below are several sample boot stanzas. All are disabled by default.
+# Find one similar to what you need, copy it, remove the "disabled" line,
+# and adjust the entries to suit your needs.
+
+# A sample entry for a Linux 3.3 kernel with its new EFI boot stub
+# support on a filesystem called "KERNELS". This entry includes
+# Linux-specific boot options and specification of an initial RAM disk.
+# Note uses of Linux-style forward slashes, even in the initrd
+# specification. Also note that a leading slash is optional in file
+# specifications.
+
+[(.*)/vmlinuz-((.*)-gentoo)(\.old)?]
+menuentry "Gentoo ${3}" {
+ icon EFI/refind/icons/os_gentoo.icns
+ ostype Linux
+ volume ESP
+ loader ${0}
+ initrd ${1}/initramfs-genkernel-x86_64-${2}
+ options "domdadm root=LABEL=gentoo"
+}
+
+menuentry Linux {
+ icon EFI/refind/icons/os_linux.icns
+ volume KERNELS
+ loader bzImage-3.3.0-rc7
+ initrd initrd-3.3.0.img
+ options "ro root=UUID=5f96cafa-e0a7-4057-b18f-fa709db5b837"
+ disabled
+}
+
+# A sample entry for loading Ubuntu using its standard name for
+# its GRUB 2 boot loader. Note uses of Linux-style forward slashes
+[ubuntu/grubx64.efi]
+menuentry Ubuntu {
+ loader /EFI/ubuntu/grubx64.efi
+ icon /EFI/refined/icons/os_linux.icns
+ disabled
+}
+
+# A minimal ELILO entry, which probably offers nothing that
+# auto-detection can't accomplish.
+[elilo.efi]
+menuentry "ELILO" {
+ loader \EFI\elilo\elilo.efi
+ disabled
+}
+
+# Like the ELILO entry, this one offers nothing that auto-detection
+# can't do; but you might use it if you want to disable auto-detection
+# but still boot Windows....
+menuentry "Windows 7" {
+ loader \EFI\Microsoft\Boot\bootmgfw.efi
+ disabled
+}
+
+# EFI shells are programs just like boot loaders, and can be
+# launched in the same way. You can pass a shell the name of a
+# script that it's to run on the "options" line. The script
+# could initialize hardware and then launch an OS, or it could
+# do something entirely different.
+menuentry "Windows via shell script" {
+ icon \EFI\refind\icons\os_win.icns
+ loader \EFI\tools\shell.efi
+ options "fs0:\EFI\tools\launch_windows.nsh"
+ disabled
+} \ No newline at end of file
diff --git a/sys-boot/refind-bin/files/refind.default b/sys-boot/refind-bin/files/refind.default
new file mode 100644
index 0000000..2067dd3
--- /dev/null
+++ b/sys-boot/refind-bin/files/refind.default
@@ -0,0 +1,180 @@
+#
+# refind.conf
+# Configuration file for the rEFInd boot menu
+#
+
+# Timeout in seconds for the main menu screen. Setting the timeout to 0
+# disables automatic booting (i.e., no timeout).
+#
+timeout 20
+
+# Hide user interface elements for personal preference or to increase
+# security:
+# banner - the rEFInd title banner
+# label - text label in the menu
+# singleuser - remove the submenu options to boot Mac OS X in single-user
+# or verbose modes; affects ONLY MacOS X
+# hwtest - the submenu option to run Apple's hardware test
+# arrows - scroll arrows on the OS selection tag line
+# all - all of the above
+#
+#hideui singleuser
+#hideui all
+
+# Set the name of a subdirectory in which icons are stored. Icons must
+# have the same names they have in the standard directory. The directory
+# name is specified relative to the main rEFInd binary's directory. If
+# an icon can't be found in the specified directory, an attempt is made
+# to load it from the default directory; thus, you can replace just some
+# icons in your own directory and rely on the default for others.
+# Default is "icons".
+#
+#icons_dir myicons
+
+# Use a custom title banner instead of the rEFInd icon and name. The file
+# path is relative to the directory where refind.efi is located. The color
+# in the top left corner of the image is used as the background color
+# for the menu screens. Currently uncompressed BMP images with color
+# depths of 24, 8, 4 or 1 bits are supported.
+#
+#banner hostname.bmp
+
+# Custom images for the selection background. There is a big one (144 x 144)
+# for the OS icons, and a small one (64 x 64) for the function icons in the
+# second row. If only a small image is given, that one is also used for
+# the big icons by stretching it in the middle. If only a big one is given,
+# the built-in default will be used for the small icons.
+#
+# Like the banner option above, these options take a filename of
+# an uncompressed BMP image file.
+#
+#selection_big selection-big.bmp
+#selection_small selection-small.bmp
+
+# Use text mode only. When enabled, this option forces rEFInd into text mode.
+#
+#textonly
+
+# Set the screen's video resolution. Pass this option two values,
+# corresponding to the X and Y resolutions. Note that not all resolutions
+# are supported. On UEFI systems, passing an incorrect value results in a
+# message being shown on the screen to that effect, along with a list of
+# supported modes. On EFI 1.x systems (e.g., Macintoshes), setting an
+# incorrect mode silently fails. On both types of systems, setting an
+# incorrect resolution results in the default resolution being used.
+# A resolution of 1024x768 usually works, but higher values often don't.
+# Default is "0 0" (use the system default resolution, usually 800x600).
+#
+#resolution 1024 768
+
+# Launch specified OSes in graphics mode. By default, rEFInd switches
+# to text mode and displays basic pre-launch information when launching
+# all OSes except OS X. Using graphics mode can produce a more seamless
+# transition, but displays no information, which can make matters
+# difficult if you must debug a problem. Also, on at least one known
+# computer, using graphics mode prevents a crash when using the Linux
+# kernel's EFI stub loader.
+# Valid options:
+# osx - Mac OS X
+# linux - A Linux kernel with EFI stub loader
+# elilo - The ELILO boot loader
+# grub - The GRUB (Legacy or 2) boot loader
+# windows - Microsoft Windows
+# Default value: osx
+#
+#use_graphics_for osx,linux
+
+# Which non-bootloader tools to show on the tools line, and in what
+# order to display them:
+# shell - the EFI shell
+# gptsync - the (dangerous) gptsync.efi utility
+# about - an "about this program" option
+# exit - a tag to exit from rEFInd
+# shutdown - shuts down the computer (a bug causes this to reboot EFI
+# systems)
+# reboot - a tag to reboot the computer
+# Default is shell,about,shutdown,reboot
+#
+#showtools shell, about, reboot
+
+# Directories in which to search for EFI drivers. These drivers can
+# provide filesystem support, give access to hard disks on plug-in
+# controllers, etc. In most cases none are needed, but if you add
+# EFI drivers and you want rEFInd to automatically load them, you
+# should specify one or more paths here. rEFInd always scans the
+# "drivers" subdirectory of its own installation directory; this
+# option specifies ADDITIONAL directories to scan.
+# Default is to scan no additional directories for EFI drivers
+#
+#scan_driver_dirs EFI/tools/drivers,drivers
+
+# Which types of boot loaders to search, and in what order to display them:
+# internal - internal EFI disk-based boot loaders
+# external - external EFI disk-based boot loaders
+# optical - EFI optical discs (CD, DVD, etc.)
+# hdbios - BIOS disk-based boot loaders
+# biosexternal - BIOS external boot loaders (USB, eSATA, etc.)
+# cd - BIOS optical-disc boot loaders
+# manual - use stanzas later in this configuration file
+# Default is internal,external,optical
+#
+#scanfor internal,external,optical
+
+# When scanning volumes for EFI boot loaders, rEFInd always looks for
+# Mac OS X's and Microsoft Windows' boot loaders in their normal locations,
+# and scans the root directory and every subdirectory of the /EFI directory
+# for additional boot loaders, but it doesn't recurse into these directories.
+# The also_scan_dirs token adds more directories to the scan list.
+# Directories are specified relative to the volume's root directory. This
+# option applies to ALL the volumes that rEFInd scans. If a specified
+# directory doesn't exist, it's ignored (no error condition results).
+# The default is to scan no additional directories.
+#
+#also_scan_dirs boot,EFI/linux/kernels
+
+# Directories that should NOT be scanned for boot loaders. By default,
+# rEFInd doesn't scan its own directory or the EFI/tools directory.
+# You can "blacklist" additional directories with this option, which
+# takes a list of directory names as options. You might do this to
+# keep EFI/boot/bootx64.efi out of the menu if that's a duplicate of
+# another boot loader or to exclude a directory that holds drivers
+# or non-bootloader utilities provided by a hardware manufacturer. If
+# a directory is listed both here and in also_scan_dirs, dont_scan_dirs
+# takes precedence.
+#
+#dont_scan_dirs EFI/boot,EFI/Dell
+
+# Scan for Linux kernels that lack a ".efi" filename extension. This is
+# useful for better integration with Linux distributions that provide
+# kernels with EFI stub loaders but that don't give those kernels filenames
+# that end in ".efi", particularly if the kernels are stored on a
+# filesystem that the EFI can read. When uncommented, this option causes
+# all files in scanned directories with names that begin with "vmlinuz"
+# or "bzImage" to be included as loaders, even if they lack ".efi"
+# extensions. The drawback to this option is that it can pick up kernels
+# that lack EFI stub loader support and other files. Most notably, if you
+# want to give a kernel a custom icon by placing an icon with the kernel's
+# filename but a ".icns" extension in the same directory as the kernel, this
+# option will cause the icon file to show up as a non-functional loader tag.
+# Default is to NOT scan for kernels without ".efi" extensions.
+#
+#scan_all_linux_kernels
+
+# Set the maximum number of tags that can be displayed on the screen at
+# any time. If more loaders are discovered than this value, rEFInd shows
+# a subset in a scrolling list. If this value is set too high for the
+# screen to handle, it's reduced to the value that the screen can manage.
+# If this value is set to 0 (the default), it's adjusted to the number
+# that the screen can handle.
+#
+#max_tags 0
+
+# Set the default menu selection. The available arguments match the
+# keyboard accelerators available within rEFInd. You may select the
+# default loader using:
+# - A digit between 1 and 9, in which case the Nth loader in the menu
+# will be the default.
+# - Any substring that corresponds to a portion of the loader's title
+# (usually the OS's name or boot loader's path).
+#
+#default_selection 1
diff --git a/sys-boot/refind-bin/refind-bin-0.4.5.ebuild b/sys-boot/refind-bin/refind-bin-0.4.5.ebuild
new file mode 100644
index 0000000..7767d6a
--- /dev/null
+++ b/sys-boot/refind-bin/refind-bin-0.4.5.ebuild
@@ -0,0 +1,72 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI=4
+
+inherit eutils
+
+DESCRIPTION="rEFInd Extensible Firmware Interface boot manager binary install"
+HOMEPAGE="http://www.rodsbooks.com/refind/index.html"
+SRC_URI="mirror://sourceforge/refind/${PV}/${P}.zip"
+#MERGE_TYPE="binary"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~ia64 ~x86"
+IUSE=""
+
+RDEPEND="sys-boot/efibootmgr"
+DEPEND=""
+
+PROVIDE="virtual/bootloader"
+
+src_install() {
+ einfo "Installing rEFInd on Linux"
+ # FindLinuxESP
+ EspLine=$(df /boot/efi | grep boot)
+ InstallPart=$(echo $EspLine | cut -d " " -f 6)
+ EspFilesystem=$(grep $InstallPart /etc/mtab | cut -d " " -f 3)
+ if [[ $EspFilesystem != 'vfat' ]] ; then
+ eerror "/boot/efi doesn't seem to be on a VFAT filesystem. The ESP must be mounted"
+ eerror "at /boot or /boot/efi and it must be VFAT! Aborting!"
+ die "Unable to find a VFAT file system at /boot or /boot/efi."
+ fi
+ einfo "ESP was found at $InstallPart using $EspFilesystem"
+
+ # InstallOnLinux
+ CpuType=$(uname -m)
+ if [[ $CpuType == 'x86_64' ]] ; then
+ Platform="EFI64"
+ elif [[ $CpuType == 'i386' || $CpuType == 'i486' || $CpuType == 'i586' || $CpuType == 'i686' ]] ; then
+ Platform="EFI32"
+ ewarn "CAUTION: This Linux installation uses a 32-bit kernel. 32-bit EFI-based"
+ ewarn "computers are VERY RARE. If you've installed a 32-bit version of Linux"
+ ewarn "on a 64-bit computer, you should manually install the 64-bit version of"
+ ewarn "rEFInd. Installation will now proceed presuming a 32-bit EFI."
+ else
+ die "Unknown CPU type '$CpuType'; aborting!"
+ fi
+
+ # CopyRefindFiles
+ RefindDir="${S}/refind"
+ TargetDir="/EFI/refind"
+ exeinto ${InstallPart}/${TargetDir}
+ if [[ $Platform == 'EFI32' ]] ; then
+ doexe $RefindDir/refind_ia32.efi
+ Refind="refind_ia32.efi"
+ elif [[ $Platform == 'EFI64' ]] ; then
+ doexe $RefindDir/refind_x64.efi
+ Refind="refind_x64.efi"
+ else
+ die "Unknown platform! Aborting!"
+ fi
+ einfo "Copied rEFInd binary file $Refind"
+
+ insinto ${InstallPart}/${TargetDir}
+ doins -r $RefindDir/icons
+ einfo "Copied rEFInd icons directory"
+
+ doins $RefindDir/refind.conf-sample
+ einfo "Copied sample rEFInd configuration file"
+}
diff --git a/sys-boot/refind-bin/refind-bin-0.8.5.ebuild b/sys-boot/refind-bin/refind-bin-0.8.5.ebuild
new file mode 100644
index 0000000..7767d6a
--- /dev/null
+++ b/sys-boot/refind-bin/refind-bin-0.8.5.ebuild
@@ -0,0 +1,72 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI=4
+
+inherit eutils
+
+DESCRIPTION="rEFInd Extensible Firmware Interface boot manager binary install"
+HOMEPAGE="http://www.rodsbooks.com/refind/index.html"
+SRC_URI="mirror://sourceforge/refind/${PV}/${P}.zip"
+#MERGE_TYPE="binary"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~ia64 ~x86"
+IUSE=""
+
+RDEPEND="sys-boot/efibootmgr"
+DEPEND=""
+
+PROVIDE="virtual/bootloader"
+
+src_install() {
+ einfo "Installing rEFInd on Linux"
+ # FindLinuxESP
+ EspLine=$(df /boot/efi | grep boot)
+ InstallPart=$(echo $EspLine | cut -d " " -f 6)
+ EspFilesystem=$(grep $InstallPart /etc/mtab | cut -d " " -f 3)
+ if [[ $EspFilesystem != 'vfat' ]] ; then
+ eerror "/boot/efi doesn't seem to be on a VFAT filesystem. The ESP must be mounted"
+ eerror "at /boot or /boot/efi and it must be VFAT! Aborting!"
+ die "Unable to find a VFAT file system at /boot or /boot/efi."
+ fi
+ einfo "ESP was found at $InstallPart using $EspFilesystem"
+
+ # InstallOnLinux
+ CpuType=$(uname -m)
+ if [[ $CpuType == 'x86_64' ]] ; then
+ Platform="EFI64"
+ elif [[ $CpuType == 'i386' || $CpuType == 'i486' || $CpuType == 'i586' || $CpuType == 'i686' ]] ; then
+ Platform="EFI32"
+ ewarn "CAUTION: This Linux installation uses a 32-bit kernel. 32-bit EFI-based"
+ ewarn "computers are VERY RARE. If you've installed a 32-bit version of Linux"
+ ewarn "on a 64-bit computer, you should manually install the 64-bit version of"
+ ewarn "rEFInd. Installation will now proceed presuming a 32-bit EFI."
+ else
+ die "Unknown CPU type '$CpuType'; aborting!"
+ fi
+
+ # CopyRefindFiles
+ RefindDir="${S}/refind"
+ TargetDir="/EFI/refind"
+ exeinto ${InstallPart}/${TargetDir}
+ if [[ $Platform == 'EFI32' ]] ; then
+ doexe $RefindDir/refind_ia32.efi
+ Refind="refind_ia32.efi"
+ elif [[ $Platform == 'EFI64' ]] ; then
+ doexe $RefindDir/refind_x64.efi
+ Refind="refind_x64.efi"
+ else
+ die "Unknown platform! Aborting!"
+ fi
+ einfo "Copied rEFInd binary file $Refind"
+
+ insinto ${InstallPart}/${TargetDir}
+ doins -r $RefindDir/icons
+ einfo "Copied rEFInd icons directory"
+
+ doins $RefindDir/refind.conf-sample
+ einfo "Copied sample rEFInd configuration file"
+}