forked from startergo/rEFInd
-
Notifications
You must be signed in to change notification settings - Fork 0
/
NEWS.txt
2462 lines (1891 loc) · 111 KB
/
NEWS.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
0.13.3 (?/??/2021):
-------------------
- Fixed compile problem introduced somewhere between GNU-EFI 3.0.9 and
3.0.13.
- Fixed bug that could cause rEFInd to hang when processing keystrokes
in menus.
- Fixed bug that caused option to return from folded Linux kernel submenu to
be missing.
- Code cleanup in bash scripts.
- Removed a stray exit command from refind-install, which caused
premature termination of the script.
- Minimize reading of HiddenTools variable, which was being read
unnecessarily often.
- I am officially deprecating the "tiano" target, which builds with
TianoCore UDK2014 using custom Makefile rules rather than the usual
TianoCore build process. I'm doing this because it's badly broken in my
current build environment (Ubuntu 20.04). Although it may still work in
older configurations, I'm not currently using or testing it, and I see
no advantage to keeping it working.
0.13.2 (3/13/2021):
-------------------
- Fixed memory management bugs that could cause rEFInd to hang under
certain unpredictable circumstances.
- Fixed potential memory management bugs that could cause HFS+, ext2fs, and
ext4fs drivers to misbehave.
- Fixed bug (introduced with version 0.13.1) that caused rEFInd to fail to
load properly signed EFI drivers when Secure Boot was enabled and used via
Shim.
- Fixed bug in mvrefind that would cause it to fail to create a new
NVRAM entry to point to the moved rEFInd.
- Fixed bug that caused mountesp script to fail in macOS 11.0 ("Big Sur").
- Improved Secure Boot support in refind-install script: The script can now
install a Secure Boot key using mokutil, which can slightly simplify the
MOK setup. It also now creates a backup NVRAM entry to boot directly,
rather than via a Shim, if installed with the --shim option. This should
help on systems with custom Secure Boot key sets that don't rely on Shim,
but with a stray Shim binary present on the ESP that a package script will
detect and pass as a --shim option to rEFInd. If this configuration causes
a Secure Boot failure on launching Shim, then it should fail over to the
direct boot and be fine. (Some EFIs will hang rather than fail over to the
next entry, though, and this change won't help with them.)
- More logging improvements, including bumping the maximum log_level from 3
to 4.
- Improved separation of filesystem name vs. partition name internally. This
can make for more accurate OS icon choices in some situations, such as if
both names are set but only the partition name contains useful
information.
- Previously, when setting "use_nvram false", rEFInd would use the "vars"
subdirectory of its own directory; and if that was unwritable (say, if it
was on an HFS+ volume), then rEFInd would not store its own variables,
such as PreviousBoot and HiddenTags. With this version, rEFInd will now
use the "vars" subdirectory of rEFInd's own directory; if that's not
available, it will use a directory called "refind-vars" in the root
directory of the first ESP that rEFInd can locate; and if neither is
available, rEFInd will use NVRAM storage instead, as if "use_nvram true"
had been set.
- Made rEFInd's self-install code less finicky about the success of
copying configuration, icons, and driver files. Previously it reported a
failure and did not modify NVRAM if any of these failed to copy. Now it
should register itself, although it does complain on screen and log
details (if logging is enabled). This can help if installing from a source
that lacks drivers for a detectable Linux filesystem (ext2/3/4fs,
ReiserFS, Btrfs, or HFS+).
- Adjusted reporting of SIP values; added back 0x77 as an interpreted value
for on-screen notification when rotating through values.
- rEFInd can now identify JFS volumes as such, if a third-party JFS driver
is installed.
- Added support for Booster initrd files, which are named "booster*", rather
than "init*". See https://github.com/anatol/booster and/or
https://wiki.archlinux.org/index.php/Booster for more on Booster.
- Added icon for Manjaro Linux.
- Swapped out expired CentOS Secure Boot keys for new ones.
- Fixed build problem with GNU-EFI 3.0.13.
0.13.1 (2/24/2021):
-------------------
- Removed MyLibLocateProtocol(), based on RefindPlus code, because it
caused at least one Mac to hang.
- Fixed bug that could cause rEFInd to misbehave or hang if a disabled
manual boot stanza referenced a volume with a name that existed but was
unreadable.
- Added logging feature, activated by the log_level token in refind.conf.
This takes a numeric log level (currently from 0 to 3), with 0 meaning no
logging and 1-3 meaning increasing levels of logging. This feature is
intended to be used only when debugging problems, as it can slow rEFInd
down, especially at higher log levels.
- Updated LodePNG library to version 20201017.
- Fixed bug that caused rEFInd to not record a reboot to an EFI NVRAM-based
boot option, thus preventing it from being made the default boot option on
the next boot, if "default_selection +" was used.
- Added ability to write to the LoaderDevicePartUUID EFI variable, which
systemd uses to identify the ESP that was used to boot the computer, and
to mount that partition at /boot if that directory is empty and has
nothing else mounted. This rEFInd feature is activated by the
write_systemd_vars token in refind.conf, and is enabled by default.
- Modified EfivarSetRaw(), which rEFInd uses to write system variables, to
save a variable only if it does not currently exist or does not match the
new value. This is intended to reduce wear and tear on NVRAM storage.
(Previously, rEFInd did this with its own PreviousBoot variable, but this
change expands this functionality to apply to all EFI variables that
rEFInd might write.)
- Uncommented use_nvram from refind.conf-sample and set it to false. This
change will cause new rEFInd installations to save rEFInd's own variables
(PreviousBoot, HiddenTags, and others) on disk rather than in NVRAM.
Existing installations won't be affected by this change. The point is to
try to save wear and tear on NVRAM storage; however, users who install
rEFInd to an HFS+ volume will need to comment out use_nvram or set it to
true in order to use features that rely on rEFInd's variable storage.
- Additional replacements of "which" with "command -v" in mvrefind.
0.13.0 (2/15/2021):
-------------------
- Fixed compile problem with GCC version 10.
- Fixed compile problems with GCC 9 and the Btrfs and HFS+ drivers under
EDK2.
- Replaced use of "which" with "command -v" in shell scripts.
- Fixed detection of UUID on ext2/3/4 filesystems; old code incorrectly
marked filesystems with different UUIDs but the same label as duplicates.
- Fixed bug that caused mouse pointer to disappear on 64-bit systems when
it was moved, when mouse pointer support was active.
- Fixed memory management bug that could cause rEFInd to hang in some
situations.
- Fixed bug that could cause EFI 1.x (UGA graphics) systems to hang if
the refind.conf "resolution" line specified only one parameter. (This
is valid for EFI 2.x/GOP graphics systems, but not for UGA graphics.)
This misconfiguration, if found, is now ignored.
- Imported improvements from RefindPlus
(https://github.com/dakanji/refindplus):
- Expand list of supported Apple SIP/CSR values
- Add support for EXT4_FEATURE_INCOMPAT_ENCRYPT flag to ext4fs driver
- Improved detection of video modes
- New "max" option to "resolution" parameter in refind.conf (is
default in RefindPlus, but configurable option in rEFInd)
- Implemented new feature enabling rEFInd to set the EFI BootNext variable
and reboot into an EFI-defined boot loader. Such options are
auto-scanned if the new "firmware" option to the "scanfor" token is used;
and manual boot stanzas can use the new "firmware_bootnum" token, which
takes a hexadecimal number corresponding to the Boot#### number shown by
efibootmgr in Linux or under the EFI boot order editor in rEFInd.
0.12.0 (3/13/2020):
-------------------
- Plugged several memory leaks -- but many more remain.
- Change internal identification of rEFInd's volume from a volume name to a
Partition GUID, which is more precise and less likely to result in
mis-identification for purposes of not scanning rEFInd's own directory.
- Improved FAT partition discovery by including the FAT serial number, which
should prevent two FAT partitions with the same volume name as being
mis-identified as RAID mirrors, and thus ignoring one of them.
- Added a new EFI boot order maintenance option. To use it, uncomment the
"showtools" option in refind.conf and add the "bootorder" option to the
list. The resulting tool enables you to move any item in the EFI's boot
list to the top of the list or to delete any item in the list. (Deleted
entries will be removed from the BootOrder list AND their Boot#### entries
in NVRAM will be deleted.) You cannot create new options from this tool or
otherwise edit them. Note that this feature adjusts the *EFI's* boot
order, NOT the order of icons shown on rEFInd's screen.
- Added a new self-installation feature. When activated (by setting the
"install" token on the "showtools" line in refind.conf), selecting the
install icon in the second row on the main rEFInd screen will enable the
user to select a target ESP and, once one is selected, rEFInd will be
installed to that ESP, an NVRAM variable for it will be created, and that
variable will be set to the top of the boot order. This option is disabled
by default, except on the USB flash drive and CD-R images I create, and
when using the --usedefault option to refind-install. The intent is that
this feature can be used on emergency recovery media or to install rEFInd
for the first time. It's not likely to be useful in day-to-day use.
- Previous versions of rEFInd have all passed the name of the program being
launched as a parameter to that program, just as the EFI shell does. This
is causing problems for a new unified kernel image format that combines a
Linux kernel, initrd, EFI stub loader, and some other elements into a
single file. Thus, I'm changing to NOT passing the follow-on program's
filename as an option. (Gummiboot/systemd-boot and GRUB 2 both work this
way, and unless you explicitly add the program filename to the options
list, so does launching a file directly via an EFI boot manager entry
created via efibootmgr.) Note that rEFInd continues adding a space to the
end of options lists passed to the macOS boot loader, since it ignores the
commands if this is not done. (No space is added to commands passed to
other programs, though.)
- The handling of screen resets on return from a program has been adjusted
to avoid problems with program error messages being erased by rEFInd's
screen clearing. If a program returns an error code, its output should
remain visible until the user presses a key in response to rEFInd's prompt
to do so.
- Fixed bug that caused gptsync to sometimes hang on launch.
- Improved identification of the ESP in the refind-install script in Linux.
Previously, NVMe devices and some corner cases were handled incorrectly.
This new code should fix these problems. This variant changes from a
dependency on parted to one on the gdisk package (the sgdisk program,
specifically).
- Re-structured source code to split former main.c across four files
(main.c, launch_efi.c, linux.c, and scan.c), since main.c was getting
ridiculously large.
- I'm officially deprecating the ELILO- and XOM-specific code in rEFInd.
ELILO hasn't seen development on its Sourceforge page since 2013, and XOM
was rendered obsolete by Boot Camp and seems to have faded into
non-existence. The deprecated code is located in rEFInd's scan.c file and
simply creates sub-menus that pass options to these boot loaders. If
anybody wants to experiment with obsolete boot loaders, they can achieve
the same effect with manual boot stanzas; and if they don't need to pass
options to these boot loaders, they'll still work fine from rEFInd as
"generic" boot loaders. For the moment, the code remains in place, but I
may remove it on no further notice in the future.
0.11.5 (2/12/2020):
-------------------
- Fixed bug that caused screen corruption when exiting the EFI shell
(and perhaps other programs) on some systems.
- Fixed bug that could cause rescan operations (including after hiding
or un-hiding loaders or when using a scan delay) to hang rEFInd. This
seemed to be a problem mostly with buggy filesystem drivers.
- Cleaned up excessive slashes ("/") in refind-install script
- Corrected incorrect display of "scanning for boot loaders" message
under some circumstances
- Minor formatting changes to man pages
- Renamed .der certificates to .cer, for better compatibility with
KeyTool.efi
- If "%v" is in the kernel options in refind_linux.conf, do NOT
automatically include the auto-detected initrd file. This gives the user
greater control of initrd options when specifying them via in
refind_linux.conf via "%v", since an inappropriate auto-detected initrd
won't be included.
- No longer build NTFS driver by default; it's just too buggy. The source
code is still available and can be built by typing "make ntfs" in the
filesystems subdirectory.
- Documentation scrub: Updated to remove out-of-date references that
have accumulated over time.
- Updated LodePNG to latest version (20200211).
0.11.4 (11/12/2018):
--------------------
- Fixed a problem with RefindPkg.dsc that caused compilation failures
with the latest git version of TianoCore when using the edk2 target.
- Fixed a refind-install bug that caused it to misidentify the ESP when
adding a rEFInd boot entry when autofs was in use.
- Updates to NTFS and btrfs driver, provided by Samuel Liao.
- The NTFS driver fixes bugs related to fragmented files and filesystems
with a cluster size of over 4KiB.
- The btrfs driver adds support for zstd decompression, which requires a
huge (537K) buffer; and it fixes RAID1 issues and adds RAID5/6 support.
- Added references to several new themes to themes.html, and fixed a
broken URL in that file.
- Reverted a change to refind-install and mountesp scripts, introduced in
0.11.3, that caused them to fail when run in macOS's Recovery environment.
- Fixed bug, introduced in 0.11.3, that caused the default of booting
to the previously-launched loader to be lost in favor of launching the
first loader found. Explicitly setting the option via default_selection
still worked.
0.11.3 (7/22/2018):
-------------------
- Changes to scripts for portability; should have no visible effects.
- Updated pointer support to work on some (many? Most?) 32-bit systems.
- Added shutdown_after_timeout feature. When set, this causes rEFInd to
attempt to shut down the computer rather than boot the default option when
the timeout value is reached. Note, however, that some computers will
instead hang or reboot when the timeout value is reached because they lack
support for the shutdown option.
- Fixed bug that caused portions of the "Pausing before disk scan; please
wait...." message displayed when scan_delay is set to a value over 1 to
remain on screen.
- Added support for JPEG images. These are most useful as background
(banner) images, since alpha/transparency is not supported. For that
matter, progressive, lossless, and other JPEG features are not supported,
either; see https://keyj.emphy.de/nanojpeg/ for details.
- Added new use_nvram token, which defaults to true to mimic the original
behavior. When set to false, this option tells rEFInd to store its
variables (PreviousBoot, HiddenTags, HiddenLegacy, and Hidden tools, used
to enable booting the the previously-booted OS and to manage hidden OS
tags) on the hard disk rather than in NVRAM. Note that this token does NOT
affect rEFInd's reading NVRAM for non-rEFInd-specific variables, such as
the one holding the Secure Boot status.
- The "+" symbol in default_selection may now be placed anywhere in the
default_selection string to refer to the previous boot. For instance,
"bzImage,+,vmlinuz" now works, prioritizing any bzImage files over the
previous boot, but the previous boot over vmlinuz files.
- Added icons for Void Linux, Ubuntu 17.10, and Ubuntu 18.04.
- Copied the gummiboot icon (os_gummiboot.png) to os_systemd.png, so
that systemd-boot has an icon.
- Eliminated "Scanning for boot loaders; please wait" message from
initial boot scan, which seems to be universally disliked.
- Fixed bug that caused rEFInd to ignore refind.conf if the first
line was empty.
0.11.2 (10/22/2017):
--------------------
- Fixed a bug that caused the hidden-tags feature to not work unless
it was explicitly set in refind.conf. (It should have been enabled by
default, and now it is.)
- Fixed a bug (introduced in 0.11.1) that caused setting volumes in
manual boot stanzas to fail.
0.11.1 (10/9/2017):
-------------------
- Modified refind-install to be smarter about modifying NVRAM entries under
Linux. It now re-creates existing rEFInd entries only if the existing
entries don't point to the same location that rEFInd will use.
- Modified the way rEFInd tracks boot loader files. This was made necessary
by macOS 10.13/APFS, which was confusing rEFInd's old tracking code when
it was compiled with GNU-EFI. Ideally, this will have no noticeable effect
to end users; however, it's possible that some loaders will appear or
disappear from the menu, or "file not found" errors when launching loaders
will go away, after upgrading to this version of rEFInd.
- Added support for new macOS boot loader locations used in macOS 10.13
("High Sierra").
- Fixed bug that could cause hidden-tag maintenance tool to hang.
- Fixed bug, introduced in 0.11.0, that caused the Apple and Microsoft
recovery tools to not be detected.
0.11.0 (8/13/2017):
-------------------
- Fixed lack of scaling of disk badges when other icons were properly scaled
on HiDPI/retina displays.
- Added new --encryptkeys option to refind-install, to improve the security
of locally-generated Secure Boot keys stored on your computer's hard disk.
- Fixed spoof_osx_version to work with newer Apple EFIs.
- Added new mouse support: Uncomment enable_mouse in refind.conf to activate
this support. You can select an OS to launch with this feature active, but
you cannot use submenus via the mouse. The mouse_size and mouse_speed
tokens control the mouse size in pixels and tracking speed, respectively.
Note that not all computers support mice in their EFIs, which is why this
feature is disabled by default.
- Fixed bug that caused specifying a full path to the fallback boot
loader (EFI/BOOT/bootx64.efi) in dont_scan_files to fail to work.
- Added dont_scan_tools refind.conf token to enable hiding EFI tools.
This feature overrides scantools -- if the latter includes, say, "shell",
but the former includes "shell.efi", any shell called "shell.efi" will be
ignored. As with dont_scan_files, you can specify a "bare" filename or a
complete path. The point is to enable hiding redundant tools -- say, if
multiple MokManager tools show up in the menu and you want just one.
- A new feature enables you to hide OSes and external tool tags from the
rEFInd main menu: Highlight the OS tag and hit "-" or the Delete key. The
OS tag should disappear, and remain gone between reboots. A new tool tag
(on the second row) with a recycling icon enables recovering OS tags
hidden in this way.
- You can now specify volumes by GUID number in dont_scan_dirs and
dont_scan_files specifications -- e.g., "dont_scan_files
2C17D5ED-850D-4F76-BA31-47A561740082:\EFI\badloader\badloader.efi" to keep
EFI\badloader\badloader.efi on the volume with a partition GUID value of
2C17D5ED-850D-4F76-BA31-47A561740082 off the menu.
- I've removed support for the previously-deprecated volume-number style
volume specifications (fs0:, fs1:, etc.).
- Fixed bug in mvrefind that caused it to not move the EFI/BOOT-rEFIndBackup
directory back to EFI/BOOT when renaming rEFInd in EFI/BOOT to something
else.
- The refind-install and mvrefind scripts now create a BOOT.CSV file in the
rEFInd installation directory. The fallback.efi (aka fbx64.efi) program
delivered with many distributions can use this file to re-create rEFInd's
NVRAM boot entry should it be lost. Some distributions (such as Fedora)
set up fallback.efi in the EFI/BOOT directory on the ESP, so it will run
automatically if NVRAM variables are lost. All this said, there's no
guarantee that rEFInd will be FIRST in the boot order should the NVRAM
entries be lost.
- Improved error messaging on Macs; most serious system errors should now
be reported on-screen in graphics mode.
- Fixed bug that caused Fedora/CentOS/RHEL "vmlinuz-0-rescue*" kernels to
not be sorted down in the kernel list if they happened to be the first
ones passed to rEFInd by the EFI.
0.10.9 (7/30/2017):
-------------------
- The PauseForKey() function now works on Macs in graphics mode, which can
help when some errors are encountered. (Most of the errors associated with
this function still rely on Print(), which still doesn't work on Macs; but
at least there will be a prompt to press a key.)
- rEFInd now displays its background and banner before scanning for boot
loaders, and displays a message that it's performing this scan.
- Added support for HiDPI/retina displays: rEFInd now automatically scales
icons and text to twice the normal size when the screen's horizontal
resolution is above 1920. This does not occur in text mode (you must still
select an appropriate text-mode resolution via the "textmode" option in
refind.conf), and it can be overridden by explicitly setting the
"small_icon_size", "big_icon_size", and "font" options in refind.conf.
Note that icons are resized from their originals and so may look a bit
chunky, by HiDPI standards; but rEFInd now embeds both 14- and 28-point
fonts, so the fonts will look better. If the screen is HiDPI but 1920
pixels wide or less, the default icon and font sizes are used, so
adjustment via refind.conf options may still be desirable.
- Added os_trusty.png, os_xenial.png and os_zesty.png icons, for those who
have multiple Ubuntu versions and want to distinguish them visually.
- Updated LodePNG, which is used to load PNG images, to the latest version
(20161127).
- A new "edk2" target to "make" is available, which builds in the standard
TianoCore way. This has the advantage over the "tiano" target of working
with newer versions of EDK2, including the recently-released UDK2017
. (The
"tiano" target maxes out at UDK2014.)
- Improved compatibility with standard TianoCore-style build process; can
now build rEFInd binary, gptsync, and drivers in the "TianoCore" way, in
addition to by using Linux Makefiles.
0.10.8 (5/21/2017):
-------------------
- Added shimx64.efi.signed as a valid Shim source filename, and
mm{arch}.efi.signed as a valid MokManager source filename, to
refind-install script. This enables users on Ubuntu to point to Ubuntu's
signed Shim and MokManager files, which are stored in /usr/lib/shim under
these odd filenames.
- Fixed compile problems with GNU-EFI 3.0.5.
- Added icon for Devuan GNU+Linux, based on the icon in the Devuan press kit
(https://devuan.org/os/press/).
- Minor code efficiency improvements.
- Added ability to specify volumes by partition unique GUIDs in
dont_scan_volumes.
- Renamed "Mac OS X" to "macOS" in assorted messages, per Apple's
re-branding with version 10.12 (Sierra). Unfortunately, I don't know of an
easy way to tell which macOS version a given macOS boot loader will load,
so it's one name or the other for everything.
0.10.7 (4/17/2017):
-------------------
- Update refind-install to recognize and copy mmx64.efi as alternative
name for MokManager.
- Hide volume name "Recovery HD," if that's what it is, from loader
description. This is done because some OS X users are getting confused and
even upset over this detail, even though it's accurate, at least from an
EFI/rEFInd point of view.
- Fixed memory management bug (introduced in 0.10.6) that caused error
messages to be displayed on some systems.
0.10.6 (4/16/2017):
-------------------
- Fixed bug in drivers that could cause filesystems to not be registered,
and perhaps other unknown problems. This manifested on 32-bit GNU-EFI
compiles, but in principle it could cause problems on 64-bit or TianoCore
builds, too.
- Fixed bug in mvrefind that could cause it to fail to move the rEFInd
installation because it incorrectly converted the target directory to an
empty string if the target directory did not (yet) exist.
- Added mm{arch}.efi as MokManager filename, and fb{arch}.efi to list
of boot loaders to be ignored.
- New refind.conf token: extra_kernel_version_strings, which sets strings
that are treated something like digits for purposes of matching Linux
kernel and initrd filenames.
- Don't set the video mode if the computer is already running in the
requested mode. This is a shot-in-the-dark attempt to fix problems with
Mac "retina" displays, which tend to get bumped down to a lower resolution
by rEFInd.
0.10.5 (3/4/2017):
------------------
- Two improvements to initrd detection for Linux kernels:
- If multiple initrd files match the kernel's version number, the file
with more matching characters after the version number is used, rather
than the first initrd file found.
- The "%v" string, if present in the refind_linux.conf file's second
field, will be replaced by the kernel version number. Thus, you can
specify options like:
"Boot with standard initrd" "ro root=/dev/sda2 initrd=initrd-%v-std"
"Boot with debug initrd" "ro root=/dev/sda2 initrd=initrd-%v-debug"
This enables using multiple initrd files per kernel, to be used for
different purposes.
- Minor code optimization.
- Add new key mappings: Backspace (Delete on Mac keyboards) works the same
as Esc, and Tab works the same as F2/Insert/+. This is done for the
benefit of new Apple laptops that lack physical Esc and function keys.
- Fix to refind-install to work better with disks other than /dev/sd? and
/dev/hd? devices.
- Fixes to touch/tablet support to improve reliability.
0.10.4 (10/9/2016):
-------------------
- Fixed compile problem for drivers with recent versions of GNU-EFI
(3.0.4, maybe 3.0.3).
- Fixed bug that could cause program crash on startup. (In practice, it
manifested with GNU-EFI starting with version 3.0.3 or 3.0.4.)
- An anonymous contributor has provided support for touch screens. This
support requires that the "enable_touch" token be used in refind.conf.
Note, however, that not all tablet computers have EFIs that provide the
necessary support in the firmware.
- Martin Whitaker contributed 64-bit support to the ext4fs driver, which
makes it compatible with ext4fs as written by some recent Linux
distributions.
- Tweaked refind-install to do a better job of detecting disks other
than /dev/sd? and /dev/hd? devices.
0.10.3 (4/24/2016):
-------------------
- Altered RPM & Debian installation scripts so as to NOT call sbsign if
Secure Boot is disabled. This is a response to Ubuntu bug #1574372
(https://bugs.launchpad.net/ubuntu/+source/sbsigntool/+bug/1574372): In
Ubuntu 16.04, the sbsign program is segfaulting randomly, which prevents
proper installation of the program. This change at least permits proper
installation IF Secure Boot is disabled.
- Changed description of BIOS/CSM/legacy OS loaders on Macs to include the
string "(Legacy)", so as to more easily identify BIOS/CSM/legacy-mode OSes
in the rEFInd main menu.
- Added recognition of the fwupx64.efi file as a firmware update tool.
This filename is excluded from the first-row launchers, and is instead
presented on the second row, controlled by the "fwupdate" item on the
"showtools" option line. It's enabled by default. Note that it's still a
bit unclear to me how this tool is supposed to be used. rEFInd launches it
with no options, but if it should take options, this will have to be
changed in the future.
- Tightened exclusion of shell binary filenames from boot loader scan.
Previously, any filename containing the substring "shell" was excluded
from scans. Now it's tighter; only files matching one of the filenames in
the constant SHELL_NAMES in main.c are excluded. This change will enable
programs with names that include "shell", but that aren't in rEFInd's
SHELL_NAMES list, such as "shelly.efi", to be shown in the rEFInd main
menu.
- Fixed bug in NTFS driver that caused it to hang (and thus hang the
computer) in some situations, particularly when a file on an NTFS volume
had many fragments and when the computer's CSM was activated. (Fix
courtesy of "S L.")
- Modified SIP/CSR rotation code: If the csr-active-config EFI variable is
missing AND the firmware is Apple (as identified by the string "Apple"
being present in the ST->FirmwareVendor string), rEFInd treats the
computer as one on which SIP is available and set to the "enabled" state
(0x10). The upshot is that the SIP/CSR tool will appear if the showtools
and csr_values options are set appropriately in refind.conf, even if the
csr-active-config variable is missing from the NVRAM. The point of this
change is that I've received reports of some Macs that run OS X 10.11 but
that lack this variable. OS X acts as if SIP were enabled, but rEFInd is
then unable to disable SIP. This change gives rEFInd the ability to
disable SIP on such systems. The drawback is that the variable might be
set on some systems that don't run OS X 10.11. This should be harmless
from a technical point of view, but the presence of SIP indicators in
rEFInd could be confusing.
- Added refind-mkdefault script to simplify resetting rEFInd as the default
boot program in Linux. The intent is to run this after GRUB, Windows, OS
X, or some other tool takes over as the primary boot manager. It can be
called from a startup script to handle this task automatically.
0.10.2 (1/26/2016):
-------------------
- Fixed bug in refind-install that caused mountesp to be installed as a FILE
called /usr/local/bin on OS X if the /usr/local/bin directory did not
already exist.
- Fixed bug in mvrefind that caused it to fail to move bootmgfw.efi in
some situations, and another that caused it to give the resulting NVRAM
entry the default rEFInd name of "rEFInd Boot Manager," rather than the
intended "Windows Boot Manager" (to work around bugs in some EFIs).
- Worked around bug/quirk in some EFIs (in HP ProBook 6470b laptop, at
least) that prevented EFI filesystem drivers from working. (Drivers would
load but not provide access to filesystems.)
- Fixed refind-install bug that caused --usedefault option to not work in OS
X. (This bug did not affect Linux.)
- Improved Secure Boot detection in refind-install in Linux.
- Fixed bug that caused custom volume badges (vol_*.png) to be read only
from default location ("icons" subdirectory), effectively eliminating the
ability to adjust them.
- Added centos.crt and centos.cer public key files.
0.10.1 (12/12/2015):
--------------------
- Change to PPA version: Installing the PPA now queries the user about
whether to install to the ESP. Upgrades will remember the initial
selection.
- Modified time-based sorting of loaders in a single directory to push
anything starting with "vmlinuz-0-rescue" to the end of the list. Fedora
gives its rescue kernels filenames that begin with that string, and if
such a kernel happens to be the most recent, treating it normally will
cause it to become the default when kernel folding is in use. This is
almost certainly undesirable, so this change keeps the rescue kernel at
the end of the list instead, which is saner.
- Significantly reworked the project's Makefiles. This should have no
impact on ordinary users, and even most developers should barely notice
it; but it should make future extensions to additional platforms or
building in different environments easier.
- Added workaround to gptsync for issue with some Macs' EFIs that caused
the program to skip through all prompts, thus accepting the default
option. This would normally cause gptsync to do nothing.
- Added type code 53746F72-6167-11AA-AA11-00306543ECAC (Apple Core Storage,
gdisk type AF05) to list of partition types recognized by gptsync.
- Removed Luxi Sans Mono font, since I discovered it was not open source;
and changed the default font from Nimbus Mono to Liberation Mono.
- Added support for compiling rEFInd for ARM64 (aka AARCH64 or aa64). This
works with both GNU-EFI and Tianocore UDK2014.SP1.P1. This support is
currently poorly tested. In particular, I used QEMU on an x86-64 computer
to create a virtualized ARM64 environment; I've not yet tested on a real
computer. I couldn't get QEMU to create a video card, so I used a serial
terminal, which means that the graphics features are untested -- I ran
rEFInd with "textonly" uncommented in refind.conf. I've tested the ext4fs
driver but no other drivers, although they all compile. (So does gptsync,
although it's unlikely to be useful on ARM64.) Some rEFInd features are
meaningless on ARM64, such as BIOS-mode boot support, anything geared
toward Macs (csr_values/csr_rotate, spoof_osx_version, etc.), and
enable_and_lock_vmx.
- Fixed bug that caused rEFInd to fail to scan EFI boot loaders on
removable media when rEFInd itself was launched from the fallback
filename.
- Moved detailed descriptions of refind-install from installing.html to
a refind-install man page. To keep this information Web-accessible, I've
also created HTML versions of the three man pages and linked them into
the HTML documentation.
- Updated LodePNG to latest version (20151024).
- Fixed bugs in mkrlconf and in refind-install that could cause some kernel
options to be excluded from refind_linux.conf. There were two trouble
conditions:
- Previously, these scripts assumed that the first option in
/proc/cmdline was the kernel's filename, but this isn't always the
case. (In particular, when gummiboot launches the kernel, this is not
true. It might be an incorrect assumption in some other cases, too.)
The fix involves checking for likely signs of a kernel filename before
discarding this first option.
- These scripts cut the "initrd=*" option from /proc/cmdline, but the
call to "sed" was overzealous and cut until the end of input. This
usually worked, since the initrd= option was usually last on the line;
but if it wasn't, any options following initrd= would be lost.
- Added "kernel*" as a matching pattern for Linux kernels, since this is
what Gentoo uses by default.
- The refind-install script can now be run as a symbolic link in Linux.
This enables creating a /usr/sbin/refind-install link in Linux packages,
with the binaries stashed wherever the package system likes them. This
feature does NOT work in OS X, but there's relatively little need for it
there.
0.10.0 (11/8/2015):
-------------------
- Fixed bug that caused refind-install to not unmount the ESP when it
should under OS X.
- Modified refind-install and mkrlconf scripts to use /proc/cmdline as
source for default boot options EXCEPT when refind-install receives the
--root option. In that case, refind-install continues to use
/etc/default/grub as the source of default options. The idea behind this
change is that it's more reliable to get boot options from /proc/cmdline
when the targeted system is the one that's booted; but --root would be
used from emergency disks or live CDs, in which case the current boot
options would be completely wrong, so extracting boot options from GRUB
files is the best bet for getting close to the right options.
- Added "@/boot" to default also_scan_dirs setting. This makes kernels
show up on Btrfs volumes under Ubuntu (and perhaps others), at least when
the Btrfs driver is loaded.
- Added new System Integrity Protection (SIP) rotation feature for Macs
running OS X 10.11 or later. This feature is disabled by default, except
on CD-R and USB flash drive images, on which it's enabled. To enable it,
you must make TWO changes to refind.conf: Uncomment the new "csr_values"
item and add "csr_rotate" to the "showtools" line (uncommenting it, too,
if it's commented out). If desired, you can set more values on
"csr_values"; these are comma-delimited one-byte hexadecimal values that
define various SIP states. When SIP/CSR rotation is activated, a new
shield icon appears among the tools. Selecting it causes the next defined
value to be set and a confirmation message to appear for three seconds.
- Added display of current System Integrity Protection (SIP) mode to
"About" display.
- Added mountesp script for OS X to (you guessed it!) mount the ESP.
- Renamed support scripts: install.sh to refind-install, mvrefind.sh to
mvrefind, and mkrlconf.sh to mkrlconf.
- New icons! The old ones were getting to be a jumbled mess of styles,
particularly for OS tags. I used the AwOken icon set
(http://alecive.deviantart.com/art/AwOken-163570862) for the core icons,
then expanded from there by creating my own icons and modifying icons for
Debian and Elementary OS. I'm also trying to keep better track of
copyrights and licenses on icons. Between that and some icons being for
OSes that probably see very little use (FreeDOS and eComstation, for
instance), a few OS icons have been lost. If you prefer the old icons,
you can continue to use them by upgrading rEFInd, renaming icons-backup
to something else (say, icons-classic), and then adding an "icons" line
in refind.conf to point to the old icons directory.
- Changed from .zip to .tar.gz as source code archive format. I did this
because Linux is the only officially-supported build platform, and
tarballs are a more natural fit to a Linux environment. I'm leaving .zip,
.deb, and .rpm files as the formats for binary packages.
- Added detection of System Integrity Protection (SIP; aka "rootless") mode
to OS X portion of install.sh script. When detected, and if no existing
rEFInd installation is found, the script now prints a warning and brief
instructions of how to enter the Recovery mode to install rEFInd and
suggests aborting the installation. (The user can override and attempt
installation anyhow.) If SIP is detected along with an existing rEFInd
installation, the script moderates the warning and explains that an
update of a working rEFInd will probably succeed, but that re-installing
to fix a broken rEFInd will probably fail.
- Added new "spoof_osx_version" token, which takes an OS X version number
(such as "10.9") as an option. This feature, when enabled, causes rEFInd
to tell a Mac's firmware that the specified version of OS X is being
launched. This option is usually unnecessary, but it can help properly
initialize some hardware -- particularly secondary video devices. OTOH,
on some Macs it can cause hardware (notably keyboards and mice) to become
unresponsive, so you should not use this option unnecessarily.
- Worked around an EFI bug that affected my 32-bit Mac Mini: That system
seems to have a broken EFI, or possibly a buggy CPU, that causes some
(but not all) conversions from floating-point to integer numbers to hang
the computer. Such operations were performed only in rEFInd's
graphics-resizing code, and so would manifest only when icons or
background images were resized. My fix eliminates the use of
floating-point operations in the affected function, which eliminates the
crashes. There may be some degradation in the quality of resized images,
though, particularly on 32-bit systems. (64-bit systems use larger
integers, which enable greater precision in my floating-point
workaround.)
- Under OS X, install.sh can now be run from the recovery system. This may
help work around OS X 10.11's problems with System Integrity Protection,
since it should be possible to reboot into the recovery system to install
rEFInd without disabling SIP for the main installation, even for just one
boot.
0.9.2 (9/19/2015):
------------------
- Added "--keepname" option to install.sh. This option causes install.sh
to keep refind_x64.efi named as such rather than rename it as grubx64.efi
when using Shim. This option is meaningful only if the --shim option is
also used. This option passes the refind_x64.efi filename as an option to
Shim, which overrides the default filename of grubx64.efi. A big caveat:
Only Shim 0.7 and later supports this feature. (Shim 0.4 also works if a
refind_x64.efi is referred to as "\refind_x64.efi" on the command line,
but the need for a leading backslash to refer to a file in the same
directory as Shim is so confusing and wrong that I cannot in good
conscience support it.) I've not seen signed Shim binaries between 0.4
and 0.7, so I don't know if any of them might work.
- Implemented a workaround for a bug in Shim 0.8 that prevented
authentication of more than one binary. If any filesystem drivers were
installed, the first one would be verified, leaving rEFInd unable to
launch anything else unless it was signed by a key in the computer's main
Secure Boot db list.
0.9.1 (9/13/2015):
------------------
- When rEFInd identifies the root (/) partition via the Freedesktop.org
Discoverable Partitions Specification, it now checks two of the
partition's attributes, as per the DPS (see
http://www.freedesktop.org/wiki/Specifications/DiscoverablePartitionsSpec/):
- The partition's read-only attribute determines whether to pass a "rw"
or "ro" option to the kernel.
- If the partition's do-not-automount flag is set, rEFInd will not pass
it as a "root=" option to the kernel. This flag can be used to remove
all but one partition from consideration as a root (/) partition if a
system has more than one with the correct type code.
- Improved Freedesktop.org Discoverable Partitions Specification support:
Previously, if no refind_linux.conf file was present but an /etc/fstab
file was found, rEFInd ignored the Discoverable Partitions Specification
filesystem-type codes. This was fine if /etc/fstab contained a valid "/"
filesystem specification, but if that was absent, the result was no
"root=" specification being present. Under these circumstances
(refind_linux.conf absent, /etc/fstab present but lacking a "/" entry),
rEFInd now tries to identify a device to specify as "root=" via the
Discoverable Partitions Specification.
- Fixed bug that caused "Found match!" and a prompt to press a key to
continue to be printed if any partition used the Freedesktop.org
Discoverable Partitions Specification root-partition GUID. (This
was leftover debugging/testing code that I somehow missed deleting.)
- Added icon for Elementary OS.
- Added /etc/lsb-release to files scanned for clues about the Linux
distribution. This file differentiates Mint and Elementary OS from Ubuntu
better than does /etc/os-release, and may also help with other
closely-related distributions.
- Improvements to handling of case-insensitive string comparisons. These
are buggy on some EFIs, and such bugs affect things like dont_scan_*
blacklists, removal of rEFInd's own directory from scanning, matching of
keyword names in refind.conf, and even loading of icons. I've replaced
many calls to problematic functions with safer calls, which should help a
lot. There may still be problems on some systems with some computers,
though; as far as I can tell, the bugs are buried deep in some EFI
firmware, so I can only replace some of the most direct calls to
potentially buggy system calls.
0.9.0 (7/26/2015):
------------------
- New icon for Kali Linux, submitted by Francesco D'Eugenio.
- Minor code changes to ensure that rEFInd compiles with GCC 5.1. (Tested
with GNU-EFI on a Fedora 22 system; not yet tested with the TianoCore
EDK2.)
- Added new "fold_linux_kernels" token to refind.conf. This option, when
active (the default) "folds" all Linux kernels in a directory into a
single entry on the rEFInd menu. The kernel with the most recent time
stamp is launched by default. To launch another kernel, you must press F2
or Insert; additional kernels appear as options on the first kernel's
submenu. To see the pre-0.9.0 behavior, you must set "fold_linux_kernels
false" (or one of its synonyms, "off" or "0"). The point of this option
is to help de-clutter the rEFInd main menu.
- Added new Linux root (/) partition auto-discovery feature, based on
Freedesktop.org's Discoverable Partitions Spec (DPS)
(http://www.freedesktop.org/wiki/Specifications/DiscoverablePartitionsSpec/):
If no refind_linux.conf file or /etc/fstab file is found, and if a
partition with the correct DPS type code for the system architecture is
found, rEFInd adds "ro root=/dev/disk/by-partuuid/{GUID}" to the kernel
options. This will not help on LVM setups, and will get it right for only
one installation on systems with multiple Linux installations, but it may
help some users, if/when the DPS type codes become more common.
- Fixed bug that caused a rEFInd crash if an empty refind_linux.conf
file was encountered.
- The mkrlconf.sh script now checks the OS on which it's running, which
should help avoid confusion or problems by users who mistakenly run it
under OS X.
- rEFInd now skips checking for various BIOS-mode boot sector signatures
when running on a UEFI-based PC; these checks are run only on Macs. This
may reduce startup time on systems with many partitions.
- Fixed Debian debinstall script to work correctly on IA32 systems. It had
a bug that caused filesystem drivers and gptsync to not be packaged for
IA32.
- Modified Debian postinst file to call install.sh with --localkeys option
if sbsign and openssl are available, even when NOT in Secure Boot mode or
if shim is not detected. This helps with my Ubuntu PPA when using custom
Secure Boot keys, since the PPA is delivered unsigned. (Users will have
to have added their own local keys to their firmware's db.) For
consistency, I've made the same change to the RPM .spec file.
0.8.7 (3/1/2015):
-----------------
- Fixed install.sh bug that caused inappropriate installation under the
name bootx64.efi (or bootia32.efi) under Linux, with a failure to update
the boot entries in NVRAM, has been fixed.
- Added identification of XFS as filesystem type in volume descriptions.
- More fixes to filesystem type detection code. Previous version sometimes
identified FAT or NTFS (or anything with a boot loader) as a whole-disk
device rather than the correct filesystem type.
- Added protections to the code to reduce the risk of crashes that might
occur when dereferencing NULL pointers in various situations.
- I'm deprecating the use of filesystem numbers (as in "fs0:") because
they're unreliable -- filesystem numbers can change between boots and
might not be the same as those used in an EFI shell or other program.
Sooner or later I'll remove code supporting this feature. In the
meantime, if it doesn't work for you, please switch to using filesystem
labels, partition labels, or partition GUIDs.
- Added detection of FreeBSD's BIOS-mode GPT boot loader. Previously,
rEFInd could detect FreeBSD's BIOS-mode MBR boot loader, which gave