From 5664ed3ea160466286aa2c5711f8094b0ec7003b Mon Sep 17 00:00:00 2001
From: srs5694 by Roderick W. Smith, rodsmith@rodsbooks.com Originally written: 3/14/2012; last Web page update: 3/23/2012, referencing rEFInd 0.2.2 Originally written: 3/14/2012; last Web page update: 3/26/2012, referencing rEFInd 0.2.3 I'm a technical writer and consultant specializing in Linux technologies. This Web page is provided free of charge and with no annoying outside ads; however, I did take time to prepare it, and Web hosting does cost money. If you find this Web page useful, please consider making a small donation to help keep this site up and running. Thanks! by Roderick W. Smith, rodsmith@rodsbooks.com Originally written: 3/14/2012; last Web page update: 3/23/2012, referencing rEFInd 0.2.2 Originally written: 3/14/2012; last Web page update: 3/26/2012, referencing rEFInd 0.2.3 I'm a technical writer and consultant specializing in Linux technologies. This Web page is provided free of charge and with no annoying outside ads; however, I did take time to prepare it, and Web hosting does cost money. If you find this Web page useful, please consider making a small donation to help keep this site up and running. Thanks! by Roderick W. Smith, rodsmith@rodsbooks.com Originally written: 3/14/2012; last Web page update: 3/23/2012, referencing rEFInd 0.2.2 Originally written: 3/14/2012; last Web page update: 3/26/2012, referencing rEFInd 0.2.3 I'm a technical writer and consultant specializing in Linux technologies. This Web page is provided free of charge and with no annoying outside ads; however, I did take time to prepare it, and Web hosting does cost money. If you find this Web page useful, please consider making a small donation to help keep this site up and running. Thanks! by Roderick W. Smith, rodsmith@rodsbooks.com Originally written: 3/14/2012; last Web page update: 3/23/2012, referencing rEFInd 0.2.2 Originally written: 3/14/2012; last Web page update: 3/26/2012, referencing rEFInd 0.2.3 I'm a technical writer and consultant specializing in Linux technologies. This Web page is provided free of charge and with no annoying outside ads; however, I did take time to prepare it, and Web hosting does cost money. If you find this Web page useful, please consider making a small donation to help keep this site up and running. Thanks!
Note: I consider rEFInd to be alpha-quality software! Although rEFIt 0.14, upon which rEFInd is based, is beta-quality, I've changed a great deal of the code, and I'm still learning about it. I'm discovering bugs (old and new) and fixing them every day or two. That said, rEFInd is a usable program in its current form on many systems. If you have problems, feel free to drop me a line.
+You can find the rEFInd source code and binary packages at its SourceForge page. Note that rEFInd is OS-independent—it runs before the OS, so you download the same binary package for any OS. You can obtain rEFInd in three different forms:
If you download a zip file, you'll need to extract the files with a tool such as unzip, which is included with Linux and Mac OS X. Numerous Windows utilities also support this format, such as PKZIP and 7-Zip.
+If you use Arch Linux, you can obtain rEFInd from its repositories, in both stable and git (experimental) releases. The git release is likely to include pre-release bug fixes and new features, but those features may be poorly tested or undocumented.
+ +To the best of my knowledge, no other Linux distribution yet includes rEFInd in its repositories. That's likely to change in time. If you hear of rEFInd being included in an OS's official package set, feel free to drop me a line.
+copyright © 2012 by Roderick W. Smith
diff --git a/docs/refind/index.html b/docs/refind/index.html index 9d2457b..432e913 100644 --- a/docs/refind/index.html +++ b/docs/refind/index.html @@ -14,7 +14,7 @@by Roderick W. Smith, rodsmith@rodsbooks.com
-Originally written: 3/14/2012; last Web page update: 3/23/2012, referencing rEFInd 0.2.2
+Originally written: 3/14/2012; last Web page update: 3/26/2012, referencing rEFInd 0.2.3
I'm a technical writer and consultant specializing in Linux technologies. This Web page is provided free of charge and with no annoying outside ads; however, I did take time to prepare it, and Web hosting does cost money. If you find this Web page useful, please consider making a small donation to help keep this site up and running. Thanks!
@@ -89,9 +89,9 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.comThis page describes rEFInd, my fork of the rEFIt boot manager for computers based on the Extensible Firmware Interface (EFI) and Unified EFI (UEFI). Like rEFIt, rEFInd is a boot manager, meaning that it presents a menu of options to the user when the computer first starts up, as shown below. rEFInd is not a boot loader, which is a program that loads an OS kernel and hands off control to it. Many popular boot managers, such as the Grand Unified Bootloader (GRUB), are also boot loaders, which can blur the distinction in many users' minds. rEFInd, though, relies on a separate boot loader to finish the handoff to an OS; it just presents a pretty menu and gives you options for how to proceed prior to booting an OS. All EFI-capable OSes include boot loaders, so this limitation isn't a problem. If you're using Linux, you should be aware that several EFI boot loaders are available, so choosing between them can be a challenge. See my Web page on this topic for more information.
-In theory, EFI implementations should provide boot managers. Unfortunately, in practice these boot managers are often so poor as to be useless. The worst I've personally encountered is on Gigabyte's Hybrid EFI, which provides you with no boot options whatsoever, beyond choosing the boot device (hard disk vs. optical disc, for instance). I've heard of others that are just as bad. For this reason, a good EFI boot manager—either standalone or as part of a boot loader—is a practical necessity for multi-booting on an EFI computer. That's where rEFIt and rEFInd come into play.
@@ -169,6 +169,8 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.comby Roderick W. Smith, rodsmith@rodsbooks.com
-Originally written: 3/14/2012; last Web page update: 3/23/2012, referencing rEFInd 0.2.2
+Originally written: 3/14/2012; last Web page update: 3/26/2012, referencing rEFInd 0.2.3
I'm a technical writer and consultant specializing in Linux technologies. This Web page is provided free of charge and with no annoying outside ads; however, I did take time to prepare it, and Web hosting does cost money. If you find this Web page useful, please consider making a small donation to help keep this site up and running. Thanks!
diff --git a/docs/refind/linux.html b/docs/refind/linux.html index a0023ef..ed93b38 100644 --- a/docs/refind/linux.html +++ b/docs/refind/linux.html @@ -14,7 +14,7 @@by Roderick W. Smith, rodsmith@rodsbooks.com
-Originally written: 3/19/2012; last Web page update: 3/23/2012, referencing rEFInd 0.2.2
+Originally written: 3/19/2012; last Web page update: 3/26/2012, referencing rEFInd 0.2.3
I'm a technical writer and consultant specializing in Linux technologies. This Web page is provided free of charge and with no annoying outside ads; however, I did take time to prepare it, and Web hosting does cost money. If you find this Web page useful, please consider making a small donation to help keep this site up and running. Thanks!
@@ -111,21 +111,19 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.comThe intent of this system is that distribution maintainers can place their kernels, initial RAM disks, and a linux.conf file in their own subdirectory on the ESP. rEFInd will detect their kernels and create one main menu entry for each kernel. Each entry will implement as many options as there are lines in the linux.conf file. In this way, two or more distributions can each maintain their boot loader entries, without being too concerned for who maintains rEFInd as a whole.
+The intent of this system is that distribution maintainers can place their kernels, initial RAM disks, and a refind_linux.conf file in their own subdirectory on the ESP. rEFInd will detect their kernels and create one main menu entry for each kernel. Each entry will implement as many options as there are lines in the refind_linux.conf file. In this way, two or more distributions can each maintain their boot loader entries, without being too concerned about who maintains rEFInd as a whole.
As an example, consider the following file configuration:
@@ -135,10 +133,10 @@ total 17943 -rwxr-xr-x 1 root root 4781632 2012-03-18 12:01 bzImage-3.3.0.efi -rwxr-xr-x 1 root root 131072 2011-10-14 04:10 grubx64.EFI -rwxr-xr-x 1 root root 13459936 2012-03-18 12:02 initrd.img-3.3.0 --rwxr-xr-x 1 root root 266 2012-03-18 19:39 linux.conf +-rwxr-xr-x 1 root root 266 2012-03-26 19:39 refind_linux.conf -When rEFInd scans this directory, it will find two EFI boot loaders in EFI/ubuntu: grubx64.EFI and bzImage-3.3.0.efi. rEFInd will create two main-menu tags for these two loaders, one of which will launch Ubuntu's standard GRUB and the other of which will launch the 3.3.0 kernel file directly. The linux.conf file contains a list of labels and options:
+When rEFInd scans this directory, it will find two EFI boot loaders in EFI/ubuntu: grubx64.EFI and bzImage-3.3.0.efi. rEFInd will create two main-menu tags for these two loaders, one of which will launch Ubuntu's standard GRUB and the other of which will launch the 3.3.0 kernel file directly. The refind_linux.conf file contains a list of labels and options:
"Boot with defaults" "root=/dev/sda3 ro quiet splash vt.handoff=7" @@ -153,10 +151,10 @@ total 17943
-Note that the first entry shown here takes a name that's set in rEFInd rather than the one specified in the linux.conf file. The remaining names match those specified in the file, though.
+Note that the first entry shown here takes a name that's set in rEFInd rather than the one specified in the refind_linux.conf file. The remaining names match those specified in the file, though.
From a user's perspective, the submenus defined in this way work just like submenus defined via the submenuentry options in refind.conf, or like the submenus that rEFInd creates automatically for Mac OS X or ELILO. There are, however, limitations in what you can accomplish with this method:
@@ -164,19 +162,19 @@ total 17943
On the whole, this method of configuration has a lot going for it. For distribution maintainers, if you place your Linux kernel files (with EFI stub support) on the ESP, with suitable filenames, matching initial RAM disk files, and a linux.conf file, then any rEFInd 0.2.1 or later installation should detect your files, even if the user installs another distribution with another rEFInd that takes over from yours. (If the user, or this other rEFInd installation, disables auto-detection, this won't work.)
+On the whole, this method of configuration has a lot going for it. For distribution maintainers, if you place your Linux kernel files (with EFI stub support) on the ESP, with suitable filenames, matching initial RAM disk files, and a refind_linux.conf file, then any rEFInd 0.2.3 or later installation should detect your files, even if the user installs another distribution with another rEFInd that takes over from yours. (If the user, or this other rEFInd installation, disables auto-detection, this won't work.)
-For end users, this method is simpler than maintaining manual configurations in refind.conf (or equivalents for ELILO or GRUB). To install a new kernel, you need only copy it and its initial RAM disk, under suitable names, to a scanned directory on the ESP. There's no need to touch any configuration file, provided you've already set up linux.conf in your kernel's directory. You will, however, have to adjust linux.conf if you make certain changes, such as if your root directory identifier changes.
+For end users, this method is simpler than maintaining manual configurations in refind.conf (or equivalents for ELILO or GRUB). To install a new kernel, you need only copy it and its initial RAM disk, under suitable names, to a scanned directory on the ESP. There's no need to touch any configuration file, provided you've already set up refind_linux.conf in your kernel's directory. You will, however, have to adjust refind_linux.conf if you make certain changes, such as if your root directory identifier changes.
by Roderick W. Smith, rodsmith@rodsbooks.com
-Last Web page update: 3/23/2012
+Last Web page update: 3/26/2012
I'm a technical writer and consultant specializing in Linux technologies. This Web page is provided free of charge and with no annoying outside ads; however, I did take time to prepare it, and Web hosting does cost money. If you find this Web page useful, please consider making a small donation to help keep this site up and running. Thanks!
@@ -93,6 +93,8 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.comby Roderick W. Smith, rodsmith@rodsbooks.com
-Originally written: 3/14/2012; last Web page update: 3/23/2012, referencing rEFInd 0.2.2
+Originally written: 3/14/2012; last Web page update: 3/26/2012, referencing rEFInd 0.2.3
I'm a technical writer and consultant specializing in Linux technologies. This Web page is provided free of charge and with no annoying outside ads; however, I did take time to prepare it, and Web hosting does cost money. If you find this Web page useful, please consider making a small donation to help keep this site up and running. Thanks!
@@ -125,6 +125,8 @@ program. I'm not sure what you'd use in Windows to create ICNS files.by Roderick W. Smith, rodsmith@rodsbooks.com
-Originally written: 3/14/2012; last Web page update: 3/23/2012, referencing rEFInd 0.2.2
+Originally written: 3/14/2012; last Web page update: 3/26/2012, referencing rEFInd 0.2.3
I'm a technical writer and consultant specializing in Linux technologies. This Web page is provided free of charge and with no annoying outside ads; however, I did take time to prepare it, and Web hosting does cost money. If you find this Web page useful, please consider making a small donation to help keep this site up and running. Thanks!
diff --git a/mkdistrib b/mkdistrib index fd64376..73232af 100755 --- a/mkdistrib +++ b/mkdistrib @@ -16,7 +16,7 @@ make clean # Prepare a place and copy files there.... mkdir -p ../snapshots/$1/refind-$1/icons cp --preserve=timestamps icons/*icns ../snapshots/$1/refind-$1/icons/ -cp -a docs images include libeg refind NEWS.txt BUILDING.txt COPYING.txt LICENSE.txt README.txt Make.common Makefile refind.conf-sample ../snapshots/$1/refind-$1 +cp -a docs images include libeg refind CREDITS.txt NEWS.txt BUILDING.txt COPYING.txt LICENSE.txt README.txt Make.common Makefile refind.conf-sample ../snapshots/$1/refind-$1 # Go there are prepare a souce code zip file.... cd ../snapshots/$1/ @@ -30,7 +30,7 @@ cp -a icons refind-bin-$1/refind/ cp --preserve=timestamps refind.conf-sample refind-bin-$1/refind/ cp refind/refind.efi refind-bin-$1/refind/refind_x64.efi cp $StartDir/refind_ia32.efi refind-bin-$1/refind/ -cp -a COPYING.txt LICENSE.txt README.txt docs refind-bin-$1 +cp -a COPYING.txt LICENSE.txt README.txt docs CREDITS.txt refind-bin-$1 zip -9r ../refind-bin-$1.zip refind-bin-$1 cd .. rm -r refind-$1 diff --git a/refind/config.c b/refind/config.c index 2b6d2d3..36026c0 100644 --- a/refind/config.c +++ b/refind/config.c @@ -54,7 +54,7 @@ // constants #define CONFIG_FILE_NAME L"refind.conf" -#define LINUX_OPTIONS_FILENAMES L"refind_linux.conf,linux.conf" +#define LINUX_OPTIONS_FILENAMES L"refind_linux.conf,refind-linux.conf,linux.conf" #define MAXCONFIGFILESIZE (128*1024) #define ENCODING_ISO8859_1 (0) @@ -596,10 +596,14 @@ REFIT_FILE * ReadLinuxOptionsFile(IN CHAR16 *LoaderPath, IN REFIT_VOLUME *Volume File = AllocateZeroPool(sizeof(REFIT_FILE)); Status = ReadFile(Volume->RootDir, FullFilename, File); GoOn = FALSE; - if (CheckError(Status, L"while loading the Linux options file")) + if (CheckError(Status, L"while loading the Linux options file")) { + if (File != NULL) + FreePool(File); File = NULL; - } // if - } else { + GoOn = TRUE; + } // if error + } // if file exists + } else { // a filename string is NULL GoOn = FALSE; } // if/else if (OptionsFilename != NULL) @@ -609,7 +613,7 @@ REFIT_FILE * ReadLinuxOptionsFile(IN CHAR16 *LoaderPath, IN REFIT_VOLUME *Volume OptionsFilename = FullFilename = NULL; } while (GoOn); return (File); -} // static REFIT_FILE * FindLinuxOptionsFile() +} // static REFIT_FILE * ReadLinuxOptionsFile() // Retrieve a single line of options from a Linux kernel options file CHAR16 * GetFirstOptionsFromFile(IN CHAR16 *LoaderPath, IN REFIT_VOLUME *Volume) { diff --git a/refind/main.c b/refind/main.c index 8e63ad3..48f41fe 100644 --- a/refind/main.c +++ b/refind/main.c @@ -74,7 +74,7 @@ static VOID AboutrEFInd(VOID) { if (AboutMenu.EntryCount == 0) { AboutMenu.TitleImage = BuiltinIcon(BUILTIN_ICON_FUNC_ABOUT); - AddMenuInfoLine(&AboutMenu, L"rEFInd Version 0.2.2.2"); + AddMenuInfoLine(&AboutMenu, L"rEFInd Version 0.2.3"); AddMenuInfoLine(&AboutMenu, L""); AddMenuInfoLine(&AboutMenu, L"Copyright (c) 2006-2010 Christoph Pfisterer"); AddMenuInfoLine(&AboutMenu, L"Copyright (c) 2012 Roderick W. Smith"); -- 2.39.2