]> code.delx.au - refind/commitdiff
Removed space_after_boot_options token in favor of adding a space
authorsrs5694 <srs5694@users.sourceforge.net>
Sat, 3 Nov 2012 04:34:49 +0000 (00:34 -0400)
committersrs5694 <srs5694@users.sourceforge.net>
Sat, 3 Nov 2012 04:34:49 +0000 (00:34 -0400)
after boot options only when booting Mac OS X.

NEWS.txt
docs/refind/installing.html
refind/config.c
refind/driver_support.c
refind/global.h
refind/main.c

index dc09c2be8e27bd5a0ecc793274a4258266239166..c0c4b422856a61aa342733c024a9ccbad7325d8c 100644 (file)
--- a/NEWS.txt
+++ b/NEWS.txt
@@ -1,7 +1,10 @@
 0.4.7 (??/?/2012):
 ------------------
 
 0.4.7 (??/?/2012):
 ------------------
 
-- Added new "space_after_boot_options" token to refind.conf.
+- Modified rEFInd to add a space after the command-line options only when
+  launching Mac OS X. On some early Macs, the extra space (which had been
+  present by default, as a carryover from rEFIt) causes problems when
+  booting Linux kernels from FAT partitions.
 
 0.4.6 (10/6/2012):
 ------------------
 
 0.4.6 (10/6/2012):
 ------------------
index 6dd8550247f6412d2c4ba84de52329793748b0bc..4f45ba2061f4a9df338fc5b0a7ff653216c85377 100644 (file)
@@ -327,6 +327,12 @@ $ <b>ioreg -l -p IODeviceTree | grep firmware-abi</b>
     unless you're certain you do <i>not</i> have an Advanced Format hard
     disk.</li>
 
     unless you're certain you do <i>not</i> have an Advanced Format hard
     disk.</li>
 
+<li>If you don't want to reboot immediately after installing rEFInd, you
+    may optionally unmount the ESP by typing <tt class="userinput">sudo
+    umount /dev/disk0s1</tt> or <tt class="userinput">sudo umount
+    /Volumes/esp</tt>. This step isn't strictly required, but if you want
+    to keep the ESP out of your directory tree, it can be useful.</li>
+
 </ol>
 
 <p>When you reboot, your Mac should bring up the rEFInd menu, and should continue to do so thereafter. If you make changes that break this association, you can re-run the <tt>bless</tt> command (if necessary, restoring the rEFInd files first). This might be necessary after installing system updates from Apple or if you upgrade rEFInd to a newer version.</p>
 </ol>
 
 <p>When you reboot, your Mac should bring up the rEFInd menu, and should continue to do so thereafter. If you make changes that break this association, you can re-run the <tt>bless</tt> command (if necessary, restoring the rEFInd files first). This might be necessary after installing system updates from Apple or if you upgrade rEFInd to a newer version.</p>
index 9a6996b9c4b67031965047010e62cfbf4bdf4e0f..a2c36fe33749d69ff7097f18b476f06af4330d47 100644 (file)
@@ -429,9 +429,6 @@ VOID ReadConfig(VOID)
         } else if (StriCmp(TokenList[0], L"max_tags") == 0) {
            HandleInt(TokenList, TokenCount, &(GlobalConfig.MaxTags));
 
         } else if (StriCmp(TokenList[0], L"max_tags") == 0) {
            HandleInt(TokenList, TokenCount, &(GlobalConfig.MaxTags));
 
-        } else if ((StriCmp(TokenList[0], L"space_after_boot_options") == 0) && (TokenCount == 2)) {
-           GlobalConfig.SpaceAfterBootOptions = (StriCmp(TokenList[1], L"true") == 0);
-
         }
 
         FreeTokenLine(&TokenList, &TokenCount);
         }
 
         FreeTokenLine(&TokenList, &TokenCount);
index b8cb8b091839572f0e4b0e4891ecaaae5f4877e3..a547d654d25e6f2b9fc3f08f9234b3191a1cdfcd 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 #include "driver_support.h"
  */
 
 #include "driver_support.h"
+#include "lib.h"
 #include "../include/refit_call_wrapper.h"
 
 #ifdef __MAKEWITH_GNUEFI
 #include "../include/refit_call_wrapper.h"
 
 #ifdef __MAKEWITH_GNUEFI
index 2535b40f9b993e14010557173155292505f6ed35..101b5975b67ae28bab7c18a6f67a1fdc7de2e726 100644 (file)
@@ -200,7 +200,6 @@ typedef struct {
 typedef struct {
    BOOLEAN     TextOnly;
    BOOLEAN     ScanAllLinux;
 typedef struct {
    BOOLEAN     TextOnly;
    BOOLEAN     ScanAllLinux;
-   BOOLEAN     SpaceAfterBootOptions;
    UINTN       RequestedScreenWidth;
    UINTN       RequestedScreenHeight;
    UINTN       Timeout;
    UINTN       RequestedScreenWidth;
    UINTN       RequestedScreenHeight;
    UINTN       Timeout;
index 43bff039203d2cd78f9b1e17e8c0d43177db40fd..a8ecdf350f5f50b07f26a3b7be3c23a9edda9cbd 100644 (file)
@@ -93,7 +93,7 @@ static REFIT_MENU_ENTRY MenuEntryExit     = { L"Exit rEFInd", TAG_EXIT, 1, 0, 0,
 static REFIT_MENU_SCREEN MainMenu       = { L"Main Menu", NULL, 0, NULL, 0, NULL, 0, L"Automatic boot" };
 static REFIT_MENU_SCREEN AboutMenu      = { L"About", NULL, 0, NULL, 0, NULL, 0, NULL };
 
 static REFIT_MENU_SCREEN MainMenu       = { L"Main Menu", NULL, 0, NULL, 0, NULL, 0, L"Automatic boot" };
 static REFIT_MENU_SCREEN AboutMenu      = { L"About", NULL, 0, NULL, 0, NULL, 0, NULL };
 
-REFIT_CONFIG GlobalConfig = { FALSE, FALSE, TRUE, 0, 0, 20, 0, 0, GRAPHICS_FOR_OSX, LEGACY_TYPE_MAC, 0,
+REFIT_CONFIG GlobalConfig = { FALSE, FALSE, 0, 0, 20, 0, 0, GRAPHICS_FOR_OSX, LEGACY_TYPE_MAC, 0,
                               NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
                               {TAG_SHELL, TAG_ABOUT, TAG_SHUTDOWN, TAG_REBOOT, 0, 0, 0, 0, 0 }};
 
                               NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
                               {TAG_SHELL, TAG_ABOUT, TAG_SHUTDOWN, TAG_REBOOT, 0, 0, 0, 0, 0 }};
 
@@ -115,7 +115,7 @@ static VOID AboutrEFInd(VOID)
 
     if (AboutMenu.EntryCount == 0) {
         AboutMenu.TitleImage = BuiltinIcon(BUILTIN_ICON_FUNC_ABOUT);
 
     if (AboutMenu.EntryCount == 0) {
         AboutMenu.TitleImage = BuiltinIcon(BUILTIN_ICON_FUNC_ABOUT);
-        AddMenuInfoLine(&AboutMenu, L"rEFInd Version 0.4.6.1");
+        AddMenuInfoLine(&AboutMenu, L"rEFInd Version 0.4.6.2");
         AddMenuInfoLine(&AboutMenu, L"");
         AddMenuInfoLine(&AboutMenu, L"Copyright (c) 2006-2010 Christoph Pfisterer");
         AddMenuInfoLine(&AboutMenu, L"Copyright (c) 2012 Roderick W. Smith");
         AddMenuInfoLine(&AboutMenu, L"");
         AddMenuInfoLine(&AboutMenu, L"Copyright (c) 2006-2010 Christoph Pfisterer");
         AddMenuInfoLine(&AboutMenu, L"Copyright (c) 2012 Roderick W. Smith");
@@ -157,7 +157,7 @@ static VOID AboutrEFInd(VOID)
 
 static EFI_STATUS StartEFIImageList(IN EFI_DEVICE_PATH **DevicePaths,
                                     IN CHAR16 *LoadOptions, IN CHAR16 *LoadOptionsPrefix,
 
 static EFI_STATUS StartEFIImageList(IN EFI_DEVICE_PATH **DevicePaths,
                                     IN CHAR16 *LoadOptions, IN CHAR16 *LoadOptionsPrefix,
-                                    IN CHAR16 *ImageTitle,
+                                    IN CHAR16 *ImageTitle, IN CHAR8 OSType,
                                     OUT UINTN *ErrorInStep,
                                     IN BOOLEAN Verbose)
 {
                                     OUT UINTN *ErrorInStep,
                                     IN BOOLEAN Verbose)
 {
@@ -200,7 +200,7 @@ static EFI_STATUS StartEFIImageList(IN EFI_DEVICE_PATH **DevicePaths,
         if (LoadOptionsPrefix != NULL) {
             MergeStrings(&FullLoadOptions, LoadOptionsPrefix, 0);
             MergeStrings(&FullLoadOptions, LoadOptions, L' ');
         if (LoadOptionsPrefix != NULL) {
             MergeStrings(&FullLoadOptions, LoadOptionsPrefix, 0);
             MergeStrings(&FullLoadOptions, LoadOptions, L' ');
-            if (GlobalConfig.SpaceAfterBootOptions) {
+            if (OSType == 'M') {
                MergeStrings(&FullLoadOptions, L" ", 0);
                // NOTE: That last space is also added by the EFI shell and seems to be significant
                //  when passing options to Apple's boot.efi...
                MergeStrings(&FullLoadOptions, L" ", 0);
                // NOTE: That last space is also added by the EFI shell and seems to be significant
                //  when passing options to Apple's boot.efi...
@@ -241,7 +241,7 @@ bailout:
 
 static EFI_STATUS StartEFIImage(IN EFI_DEVICE_PATH *DevicePath,
                                 IN CHAR16 *LoadOptions, IN CHAR16 *LoadOptionsPrefix,
 
 static EFI_STATUS StartEFIImage(IN EFI_DEVICE_PATH *DevicePath,
                                 IN CHAR16 *LoadOptions, IN CHAR16 *LoadOptionsPrefix,
-                                IN CHAR16 *ImageTitle,
+                                IN CHAR16 *ImageTitle, IN CHAR8 OSType,
                                 OUT UINTN *ErrorInStep,
                                 IN BOOLEAN Verbose)
 {
                                 OUT UINTN *ErrorInStep,
                                 IN BOOLEAN Verbose)
 {
@@ -249,7 +249,7 @@ static EFI_STATUS StartEFIImage(IN EFI_DEVICE_PATH *DevicePath,
 
     DevicePaths[0] = DevicePath;
     DevicePaths[1] = NULL;
 
     DevicePaths[0] = DevicePath;
     DevicePaths[1] = NULL;
-    return StartEFIImageList(DevicePaths, LoadOptions, LoadOptionsPrefix, ImageTitle, ErrorInStep, Verbose);
+    return StartEFIImageList(DevicePaths, LoadOptions, LoadOptionsPrefix, ImageTitle, OSType, ErrorInStep, Verbose);
 } /* static EFI_STATUS StartEFIImage() */
 
 //
 } /* static EFI_STATUS StartEFIImage() */
 
 //
@@ -261,8 +261,8 @@ static VOID StartLoader(IN LOADER_ENTRY *Entry)
     UINTN ErrorInStep = 0;
 
     BeginExternalScreen(Entry->UseGraphicsMode, L"Booting OS");
     UINTN ErrorInStep = 0;
 
     BeginExternalScreen(Entry->UseGraphicsMode, L"Booting OS");
-    StartEFIImage(Entry->DevicePath, Entry->LoadOptions,
-                  Basename(Entry->LoaderPath), Basename(Entry->LoaderPath), &ErrorInStep, !Entry->UseGraphicsMode);
+    StartEFIImage(Entry->DevicePath, Entry->LoadOptions, Basename(Entry->LoaderPath),
+                  Basename(Entry->LoaderPath), Entry->OSType, &ErrorInStep, !Entry->UseGraphicsMode);
     FinishExternalScreen();
 }
 
     FinishExternalScreen();
 }
 
@@ -1144,7 +1144,7 @@ static VOID StartLegacy(IN LEGACY_ENTRY *Entry)
 
     ExtractLegacyLoaderPaths(DiscoveredPathList, MAX_DISCOVERED_PATHS, LegacyLoaderList);
 
 
     ExtractLegacyLoaderPaths(DiscoveredPathList, MAX_DISCOVERED_PATHS, LegacyLoaderList);
 
-    Status = StartEFIImageList(DiscoveredPathList, Entry->LoadOptions, NULL, L"legacy loader", &ErrorInStep, TRUE);
+    Status = StartEFIImageList(DiscoveredPathList, Entry->LoadOptions, NULL, L"legacy loader", 0, &ErrorInStep, TRUE);
     if (Status == EFI_NOT_FOUND) {
         if (ErrorInStep == 1) {
             Print(L"\nPlease make sure that you have the latest firmware update installed.\n");
     if (Status == EFI_NOT_FOUND) {
         if (ErrorInStep == 1) {
             Print(L"\nPlease make sure that you have the latest firmware update installed.\n");
@@ -1448,7 +1448,7 @@ static VOID StartTool(IN LOADER_ENTRY *Entry)
 {
    BeginExternalScreen(Entry->UseGraphicsMode, Entry->me.Title + 6);  // assumes "Start <title>" as assigned below
    StartEFIImage(Entry->DevicePath, Entry->LoadOptions, Basename(Entry->LoaderPath),
 {
    BeginExternalScreen(Entry->UseGraphicsMode, Entry->me.Title + 6);  // assumes "Start <title>" as assigned below
    StartEFIImage(Entry->DevicePath, Entry->LoadOptions, Basename(Entry->LoaderPath),
-                 Basename(Entry->LoaderPath), NULL, TRUE);
+                 Basename(Entry->LoaderPath), Entry->OSType, NULL, TRUE);
    FinishExternalScreen();
 } /* static VOID StartTool() */
 
    FinishExternalScreen();
 } /* static VOID StartTool() */
 
@@ -1497,7 +1497,7 @@ static UINTN ScanDriverDir(IN CHAR16 *Path)
         SPrint(FileName, 255, L"%s\\%s", Path, DirEntry->FileName);
         NumFound++;
         Status = StartEFIImage(FileDevicePath(SelfLoadedImage->DeviceHandle, FileName),
         SPrint(FileName, 255, L"%s\\%s", Path, DirEntry->FileName);
         NumFound++;
         Status = StartEFIImage(FileDevicePath(SelfLoadedImage->DeviceHandle, FileName),
-                               L"", DirEntry->FileName, DirEntry->FileName, NULL, FALSE);
+                               L"", DirEntry->FileName, DirEntry->FileName, 0, NULL, FALSE);
     }
     Status = DirIterClose(&DirIter);
     if (Status != EFI_NOT_FOUND) {
     }
     Status = DirIterClose(&DirIter);
     if (Status != EFI_NOT_FOUND) {