diff options
author | Kevin Lo <kevlo@FreeBSD.org> | 2021-07-06 11:57:08 +0000 |
---|---|---|
committer | Kevin Lo <kevlo@FreeBSD.org> | 2021-07-06 11:57:08 +0000 |
commit | 310466c582bf8c7b816ecdf1d26234189aaa3c11 (patch) | |
tree | 05aae9b561d28d97f62c59638add200bedeb26e1 | |
parent | c0e6f62c86b7a687a2101c83b2f2f140fccff9a0 (diff) | |
download | ports-310466c582bf8c7b816ecdf1d26234189aaa3c11.tar.gz ports-310466c582bf8c7b816ecdf1d26234189aaa3c11.zip |
sysutils/grub2-pcbsd: fix build with gcc10
Revive grub2-pcbsd and grub2-efi ports.
Thanks to lwhsu for valuable input.
Approved by: lwhsu
40 files changed, 3665 insertions, 2 deletions
@@ -12656,8 +12656,6 @@ net/linuxigd||2019-05-09|Has expired: Abandonware; use net/miniupnpd instead net/openafs||2019-05-09|Has expired: Broken for more than 6 months security/quantis||2019-05-09|Has expired: Broken for more than 6 months sysutils/boxbackup||2019-05-09|Has expired: Broken for more than 6 months -sysutils/grub2-efi||2019-05-09|Has expired: Broken for more than 6 months -sysutils/grub2-pcbsd||2019-05-09|Has expired: Broken for more than 6 months sysutils/mdcp||2019-05-09|Has expired: Broken for more than 6 months sysutils/sbsigntool||2019-05-09|Has expired: Broken for more than 6 months www/py-cherrypy-old||2019-05-09|Has expired: Lates version is in tree and no dependent ports diff --git a/sysutils/Makefile b/sysutils/Makefile index 9e85976162b9..9151f2c32bb8 100644 --- a/sysutils/Makefile +++ b/sysutils/Makefile @@ -472,6 +472,8 @@ SUBDIR += graveman SUBDIR += graylog SUBDIR += grub2-bhyve + SUBDIR += grub2-efi + SUBDIR += grub2-pcbsd SUBDIR += gsh SUBDIR += gsmartcontrol SUBDIR += gstopd diff --git a/sysutils/grub2-efi/Makefile b/sysutils/grub2-efi/Makefile new file mode 100644 index 000000000000..29b6bcd71ef4 --- /dev/null +++ b/sysutils/grub2-efi/Makefile @@ -0,0 +1,55 @@ +# Created by: kmoore@FreeBSD.org + +PORTNAME= grub2-efi +PORTVERSION= 2.02 +PORTREVISION= 20 +CATEGORIES= sysutils +MASTER_SITES= LOCAL/kevlo +DISTNAME= grub-${PORTVERSION}_7 + +MAINTAINER= kevlo@FreeBSD.org +COMMENT= Multiboot EFI boot loader + +LICENSE= GPLv3 + +RUN_DEPENDS= ${LOCALBASE}/bin/mformat:emulators/mtools \ + ${LOCALBASE}/bin/grub-mkrescue:sysutils/grub2-pcbsd +BUILD_DEPENDS= ${LOCALBASE}/bin/flex:textproc/flex \ + ${LOCALBASE}/bin/bash:shells/bash \ + help2man:misc/help2man + +ONLY_FOR_ARCHS= amd64 +USES= autoreconf:build bison cpe gettext gmake python tar:xz + +WRKSRC= ${WRKDIR}/grub-${PORTVERSION} +SSP_UNSAFE= yes +USE_GCC= yes +GNU_CONFIGURE= yes +MAKE_JOBS_UNSAFE= yes + +CPE_PRODUCT= grub +CPE_VENDOR= gnu + +CONFIGURE_ARGS= --with-platform=efi --disable-werror --localedir=${PREFIX}/share/locale +CONFIGURE_ENV= CPP="${CC} -E" \ + LEX=${LOCALBASE}/bin/flex + +.include <bsd.port.pre.mk> + +post-patch: + @${LN} -s ${LOCALBASE}/share/fonts/dejavu/DejaVuSans.ttf ${WRKSRC} + @${TOUCH} -t 200001010000 ${WRKSRC}/Makefile.util.def + +pre-configure: + @${REINPLACE_CMD} -e 's|python|${PYTHON_CMD}|g' ${WRKSRC}/autogen.sh + cd ${WRKSRC} && ./autogen.sh + +post-configure: + @${LN} -sfh /usr/include/machine /usr/include/sys /usr/include/x86 ${WRKSRC}/grub-core + +do-install: + @cd ${WRKSRC}/grub-core && ${GMAKE} install DESTDIR=${STAGEDIR} + +RUN_DEPENDS:= ${RUN_DEPENDS:Ngcc*} + +.include <bsd.port.post.mk> diff --git a/sysutils/grub2-efi/distinfo b/sysutils/grub2-efi/distinfo new file mode 100644 index 000000000000..8c609472f8d1 --- /dev/null +++ b/sysutils/grub2-efi/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1625569310 +SHA256 (grub-2.02_7.tar.xz) = 044588d9754142f2982478cb4e7289ab1521fd4412b2a0804ce647c3ff73feff +SIZE (grub-2.02_7.tar.xz) = 5019120 diff --git a/sysutils/grub2-efi/files/patch-grub-core_disk_geli.c b/sysutils/grub2-efi/files/patch-grub-core_disk_geli.c new file mode 100644 index 000000000000..f8d1f9bed333 --- /dev/null +++ b/sysutils/grub2-efi/files/patch-grub-core_disk_geli.c @@ -0,0 +1,12 @@ +--- grub-core/disk/geli.c.orig 2015-01-30 16:34:55 UTC ++++ grub-core/disk/geli.c +@@ -445,6 +445,9 @@ recover_key (grub_disk_t source, grub_cr + if (!grub_password_get (passphrase, MAX_PASSPHRASE)) + return grub_error (GRUB_ERR_BAD_ARGUMENT, "Passphrase not supplied"); + ++ /* Set the GELI passphrase to GRUB env, for passing to FreeBSD kernel */ ++ grub_env_set ("gelipassphrase", passphrase); ++ + /* Calculate the PBKDF2 of the user supplied passphrase. */ + if (grub_le_to_cpu32 (header.niter) != 0) + { diff --git a/sysutils/grub2-efi/files/patch-grub-core_lib_libgcrypt_src_types.h b/sysutils/grub2-efi/files/patch-grub-core_lib_libgcrypt_src_types.h new file mode 100644 index 000000000000..9b353e42f498 --- /dev/null +++ b/sysutils/grub2-efi/files/patch-grub-core_lib_libgcrypt_src_types.h @@ -0,0 +1,11 @@ +--- grub-core/lib/libgcrypt/src/types.h.orig 2014-03-03 16:00:26 UTC ++++ grub-core/lib/libgcrypt/src/types.h +@@ -113,6 +113,8 @@ + #endif + #endif + ++typedef uint64_t u64; ++ + typedef union { + int a; + short b; diff --git a/sysutils/grub2-efi/files/patch-grub-core_loader_i386_bsd.c b/sysutils/grub2-efi/files/patch-grub-core_loader_i386_bsd.c new file mode 100644 index 000000000000..a69efa6d22b2 --- /dev/null +++ b/sysutils/grub2-efi/files/patch-grub-core_loader_i386_bsd.c @@ -0,0 +1,185 @@ +--- grub-core/loader/i386/bsd.c.orig 2015-01-30 16:34:55 UTC ++++ grub-core/loader/i386/bsd.c +@@ -42,12 +42,14 @@ + GRUB_MOD_LICENSE ("GPLv3+"); + + #include <grub/video.h> ++#include <grub/acpi.h> + #ifdef GRUB_MACHINE_PCBIOS + #include <grub/machine/biosnum.h> + #endif + #ifdef GRUB_MACHINE_EFI + #include <grub/efi/efi.h> + #define NETBSD_DEFAULT_VIDEO_MODE "800x600" ++#define FREEBSD_DEFAULT_VIDEO_MODE "auto" + #else + #define NETBSD_DEFAULT_VIDEO_MODE "text" + #include <grub/i386/pc/vbe.h> +@@ -585,6 +587,72 @@ freebsd_get_zfs (void) + grub_free (uuid); + } + ++#ifdef GRUB_MACHINE_EFI ++ ++static grub_err_t ++grub_freebsd_setup_video (void) ++{ ++ struct grub_video_mode_info mode_info; ++ void *framebuffer; ++ const char *modevar; ++ struct grub_freebsd_btinfo_framebuf efifb; ++ grub_err_t err; ++ grub_video_driver_id_t driv_id; ++ ++ modevar = grub_env_get ("gfxpayload"); ++ ++ /* Now all graphical modes are acceptable. ++ May change in future if we have modes without framebuffer. */ ++ if (modevar && *modevar != 0) ++ { ++ char *tmp; ++ tmp = grub_xasprintf ("%s;" FREEBSD_DEFAULT_VIDEO_MODE, modevar); ++ if (! tmp) ++ return grub_errno; ++ err = grub_video_set_mode (tmp, 0, 0); ++ grub_free (tmp); ++ } ++ else ++ err = grub_video_set_mode (FREEBSD_DEFAULT_VIDEO_MODE, 0, 0); ++ ++ if (err) ++ return err; ++ ++ driv_id = grub_video_get_driver_id (); ++ if (driv_id == GRUB_VIDEO_DRIVER_NONE) ++ return GRUB_ERR_NONE; ++ ++ err = grub_video_get_info_and_fini (&mode_info, &framebuffer); ++ ++ if (err) ++ return err; ++ ++ efifb.fb_width = mode_info.width; ++ efifb.fb_height = mode_info.height; ++ efifb.fb_stride = mode_info.pitch / mode_info.bytes_per_pixel; ++ ++ efifb.fb_addr = (grub_addr_t) framebuffer; ++ efifb.fb_size = ALIGN_UP (mode_info.pitch * efifb.fb_height, 65536); ++ ++ if ( mode_info.blue_field_pos == 16 ) { ++ efifb.fb_mask_red = 0x000000ff; ++ efifb.fb_mask_green = 0x0000ff00; ++ efifb.fb_mask_blue = 0x00ff0000; ++ } ++ ++ if ( mode_info.blue_field_pos == 0 ) { ++ efifb.fb_mask_red = 0x00ff0000; ++ efifb.fb_mask_green = 0x0000ff00; ++ efifb.fb_mask_blue = 0x000000ff; ++ } ++ ++ efifb.fb_mask_reserved = 0xff000000; ++ ++ err = grub_bsd_add_meta ( FREEBSD_MODINFO_METADATA | FREEBSD_BTINFO_FRAMEBUF, &efifb, sizeof (efifb)); ++ return err; ++} ++#endif ++ + static grub_err_t + grub_freebsd_boot (void) + { +@@ -603,6 +671,55 @@ grub_freebsd_boot (void) + + bi.boot_device = freebsd_biosdev; + ++#ifdef GRUB_MACHINE_EFI ++ /* When booting in EFI mode, we need to export some additional kernel ACPI hints */ ++ struct grub_acpi_rsdp_v10 *v1; ++ struct grub_acpi_rsdp_v20 *v2; ++ v1 = grub_acpi_get_rsdpv1 (); ++ v2 = grub_acpi_get_rsdpv2 (); ++ if (v2 && v2->length > 40) ++ v2 = 0; ++ ++ int revision; ++ char acpiBuf[24]; ++ ++ if (v1) ++ { ++ revision = v1->revision; ++ if ( revision == 0 ) ++ revision = 1; ++ grub_snprintf (acpiBuf, sizeof (acpiBuf), "%d", revision); ++ grub_env_set("kFreeBSD.hint.acpi.0.revision", acpiBuf); ++ ++ grub_snprintf (acpiBuf, sizeof (acpiBuf), "%s", v1->oemid); ++ grub_env_set("kFreeBSD.hint.acpi.0.oem", acpiBuf); ++ ++ grub_snprintf (acpiBuf, sizeof (acpiBuf), "0x%016x", v1->rsdt_addr); ++ grub_env_set("kFreeBSD.hint.acpi.0.rsdt", acpiBuf); ++ ++ grub_snprintf (acpiBuf, sizeof (acpiBuf), "0x%016llx", (unsigned long long)v1); ++ grub_env_set("kFreeBSD.hint.acpi.0.rsdp", acpiBuf); ++ } ++ ++ if (v2) ++ { ++ revision = v2->rsdpv1.revision; ++ if ( revision == 0 ) ++ revision = 1; ++ ++ grub_snprintf (acpiBuf, sizeof (acpiBuf), "%d", revision); ++ grub_env_set("kFreeBSD.hint.acpi.0.revision", acpiBuf); ++ ++ grub_snprintf (acpiBuf, sizeof (acpiBuf), "0x%016llx", (unsigned long long)v2->xsdt_addr); ++ grub_env_set("kFreeBSD.hint.acpi.0.xsdt", acpiBuf); ++ ++ grub_snprintf (acpiBuf, sizeof (acpiBuf), "%d", v2->length); ++ grub_env_set("kFreeBSD.hint.acpi.0.xsdt_length", acpiBuf); ++ } ++ ++ ++#endif ++ + p_size = 0; + FOR_SORTED_ENV (var) + if ((grub_memcmp (var->name, "kFreeBSD.", sizeof("kFreeBSD.") - 1) == 0) && (var->name[sizeof("kFreeBSD.") - 1])) +@@ -688,6 +805,10 @@ grub_freebsd_boot (void) + *(grub_uint32_t *) p_tag = bootflags; + break; + ++ case FREEBSD_MODINFO_METADATA | FREEBSD_BTINFO_FRAMEBUF: ++ grub_memcpy (p_tag, tag->data, tag->len); ++ break; ++ + case FREEBSD_MODINFO_METADATA | FREEBSD_MODINFOMD_ENVP: + if (is_64bit) + *(grub_uint64_t *) p_tag = bi.environment; +@@ -717,7 +838,10 @@ grub_freebsd_boot (void) + + bi.kern_end = kern_end; + ++#ifndef GRUB_MACHINE_EFI ++ /* Don't set text mode on EFI boot */ + grub_video_set_mode ("text", 0, 0); ++#endif + + if (is_64bit) + { +@@ -1561,6 +1685,16 @@ grub_cmd_freebsd (grub_extcmd_context_t + FREEBSD_MODINFOMD_KERNEND, &data, len); + if (err) + return err; ++ ++#ifdef GRUB_MACHINE_EFI ++ err = grub_freebsd_setup_video (); ++ if (err) ++ { ++ grub_print_error (); ++ grub_puts_ (N_("Booting in EFI blind mode")); ++ grub_errno = GRUB_ERR_NONE; ++ } ++#endif + } + grub_bsd_get_device (&freebsd_biosdev, &unit, &slice, &part); + freebsd_zfsguid = 0; diff --git a/sysutils/grub2-efi/files/patch-grub-core_partmap_gpt.c b/sysutils/grub2-efi/files/patch-grub-core_partmap_gpt.c new file mode 100644 index 000000000000..5ed32e5fd0ae --- /dev/null +++ b/sysutils/grub2-efi/files/patch-grub-core_partmap_gpt.c @@ -0,0 +1,20 @@ +--- grub-core/partmap/gpt.c.orig 2014-10-20 16:16:07 UTC ++++ grub-core/partmap/gpt.c +@@ -37,6 +37,7 @@ static const grub_gpt_part_type_t grub_g + + #ifdef GRUB_UTIL + static const grub_gpt_part_type_t grub_gpt_partition_type_bios_boot = GRUB_GPT_PARTITION_TYPE_BIOS_BOOT; ++static const grub_gpt_part_type_t grub_gpt_partition_type_freebsd_boot = GRUB_GPT_PARTITION_TYPE_FREEBSD_BOOT; + #endif + + /* 512 << 7 = 65536 byte sectors. */ +@@ -155,7 +156,8 @@ find_usable_region (grub_disk_t disk __a + disk->partition = p2; + + /* If there's an embed region, it is in a dedicated partition. */ +- if (! grub_memcmp (&gptdata.type, &grub_gpt_partition_type_bios_boot, 16)) ++ if (! grub_memcmp (&gptdata.type, &grub_gpt_partition_type_bios_boot, 16) || ++ ! grub_memcmp (&gptdata.type, &grub_gpt_partition_type_freebsd_boot, 16)) + { + ctx->start = p->start; + ctx->len = p->len; diff --git a/sysutils/grub2-efi/files/patch-include_grub_gpt__partition.h b/sysutils/grub2-efi/files/patch-include_grub_gpt__partition.h new file mode 100644 index 000000000000..d8da78eea7b3 --- /dev/null +++ b/sysutils/grub2-efi/files/patch-include_grub_gpt__partition.h @@ -0,0 +1,17 @@ +--- include/grub/gpt_partition.h.orig 2014-03-03 16:00:26 UTC ++++ include/grub/gpt_partition.h +@@ -43,6 +43,14 @@ typedef struct grub_gpt_part_type grub_g + { 0x74, 0x4e, 0x65, 0x65, 0x64, 0x45, 0x46, 0x49 } \ + } + ++#define GRUB_GPT_PARTITION_TYPE_FREEBSD_BOOT \ ++ { grub_cpu_to_le32_compile_time (0x83bd6b9d), \ ++ grub_cpu_to_le16_compile_time (0x7f41), \ ++ grub_cpu_to_le16_compile_time (0x11dc), \ ++ { 0xbe, 0x0b, 0x00, 0x15, 0x60, 0xb8, 0x4f, 0x0f } \ ++ } ++ ++ + #define GRUB_GPT_PARTITION_TYPE_LDM \ + { grub_cpu_to_le32_compile_time (0x5808C8AAU),\ + grub_cpu_to_le16_compile_time (0x7E8F), \ diff --git a/sysutils/grub2-efi/files/patch-include_grub_i386_bsd.h b/sysutils/grub2-efi/files/patch-include_grub_i386_bsd.h new file mode 100644 index 000000000000..3de8d0bb203e --- /dev/null +++ b/sysutils/grub2-efi/files/patch-include_grub_i386_bsd.h @@ -0,0 +1,10 @@ +--- include/grub/i386/bsd.h.orig 2014-12-30 21:10:24 UTC ++++ include/grub/i386/bsd.h +@@ -26,6 +26,7 @@ + #include <grub/i386/netbsd_reboot.h> + #include <grub/i386/openbsd_reboot.h> + #include <grub/i386/freebsd_linker.h> ++#include <grub/i386/freebsd_bootinfo.h> + #include <grub/i386/netbsd_bootinfo.h> + #include <grub/i386/openbsd_bootarg.h> + diff --git a/sysutils/grub2-efi/files/patch-include_grub_i386_freebsd__bootinfo.h b/sysutils/grub2-efi/files/patch-include_grub_i386_freebsd__bootinfo.h new file mode 100644 index 000000000000..359342e38066 --- /dev/null +++ b/sysutils/grub2-efi/files/patch-include_grub_i386_freebsd__bootinfo.h @@ -0,0 +1,36 @@ +--- include/grub/i386/freebsd_bootinfo.h.orig 2015-06-07 21:44:01 UTC ++++ include/grub/i386/freebsd_bootinfo.h +@@ -0,0 +1,33 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2008,2009 Free Software Foundation, Inc. ++ * ++ * GRUB is free software: you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation, either version 3 of the License, or ++ * (at your option) any later version. ++ * ++ * GRUB is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with GRUB. If not, see <http://www.gnu.org/licenses/>. ++ */ ++ ++#include <grub/types.h> ++ ++#define FREEBSD_BTINFO_FRAMEBUF 0x1005 ++ ++struct grub_freebsd_btinfo_framebuf { ++ grub_uint64_t fb_addr; ++ grub_uint64_t fb_size; ++ grub_int32_t fb_height; ++ grub_int32_t fb_width; ++ grub_int32_t fb_stride; ++ grub_uint32_t fb_mask_red; ++ grub_uint32_t fb_mask_green; ++ grub_uint32_t fb_mask_blue; ++ grub_uint32_t fb_mask_reserved; ++}; diff --git a/sysutils/grub2-efi/files/patch-po_LINGUAS b/sysutils/grub2-efi/files/patch-po_LINGUAS new file mode 100644 index 000000000000..2dbcb6e4d4cc --- /dev/null +++ b/sysutils/grub2-efi/files/patch-po_LINGUAS @@ -0,0 +1,5 @@ +--- po/LINGUAS.orig 2015-01-30 16:30:32 UTC ++++ po/LINGUAS +@@ -1 +1 @@ +-ast ca da de de@hebrew de_CH en@arabic en@cyrillic en@greek en@hebrew en@piglatin en@quot eo es fi fr gl hu id it ja lt nb nl pa pl pt_BR ru sl sv tr uk vi zh_CN zh_TW ++ast ca da de eo es fi fr gl hu id it ja lt nb nl pa pl pt_BR ru sl sv tr uk vi zh_CN zh_TW diff --git a/sysutils/grub2-efi/pkg-descr b/sysutils/grub2-efi/pkg-descr new file mode 100644 index 000000000000..9960c6e8f4bd --- /dev/null +++ b/sysutils/grub2-efi/pkg-descr @@ -0,0 +1,8 @@ +GNU GRUB is a multiboot boot loader. It was derived from GRUB, the GRand +Unified Bootloader, which was originally designed and implemented by Erich +Stefan Boleyn. + +This port builds the GRUB x86_64-efi boot modules, allowing grub-install +or grub-mkrescue to install with EFI support. + +WWW: http://www.gnu.org/software/grub/ diff --git a/sysutils/grub2-efi/pkg-plist b/sysutils/grub2-efi/pkg-plist new file mode 100644 index 000000000000..c512c40925dc --- /dev/null +++ b/sysutils/grub2-efi/pkg-plist @@ -0,0 +1,521 @@ +lib/grub/x86_64-efi/acpi.mod +lib/grub/x86_64-efi/acpi.module +lib/grub/x86_64-efi/adler32.mod +lib/grub/x86_64-efi/adler32.module +lib/grub/x86_64-efi/affs.mod +lib/grub/x86_64-efi/affs.module +lib/grub/x86_64-efi/afs.mod +lib/grub/x86_64-efi/afs.module +lib/grub/x86_64-efi/ahci.mod +lib/grub/x86_64-efi/ahci.module +lib/grub/x86_64-efi/all_video.mod +lib/grub/x86_64-efi/all_video.module +lib/grub/x86_64-efi/aout.mod +lib/grub/x86_64-efi/aout.module +lib/grub/x86_64-efi/appleldr.mod +lib/grub/x86_64-efi/appleldr.module +lib/grub/x86_64-efi/archelp.mod +lib/grub/x86_64-efi/archelp.module +lib/grub/x86_64-efi/at_keyboard.mod +lib/grub/x86_64-efi/at_keyboard.module +lib/grub/x86_64-efi/ata.mod +lib/grub/x86_64-efi/ata.module +lib/grub/x86_64-efi/backtrace.mod +lib/grub/x86_64-efi/backtrace.module +lib/grub/x86_64-efi/bfs.mod +lib/grub/x86_64-efi/bfs.module +lib/grub/x86_64-efi/bitmap.mod +lib/grub/x86_64-efi/bitmap.module +lib/grub/x86_64-efi/bitmap_scale.mod +lib/grub/x86_64-efi/bitmap_scale.module +lib/grub/x86_64-efi/blocklist.mod +lib/grub/x86_64-efi/blocklist.module +lib/grub/x86_64-efi/boot.mod +lib/grub/x86_64-efi/boot.module +lib/grub/x86_64-efi/bsd.mod +lib/grub/x86_64-efi/bsd.module +lib/grub/x86_64-efi/bswap_test.mod +lib/grub/x86_64-efi/bswap_test.module +lib/grub/x86_64-efi/btrfs.mod +lib/grub/x86_64-efi/btrfs.module +lib/grub/x86_64-efi/bufio.mod +lib/grub/x86_64-efi/bufio.module +lib/grub/x86_64-efi/cat.mod +lib/grub/x86_64-efi/cat.module +lib/grub/x86_64-efi/cbfs.mod +lib/grub/x86_64-efi/cbfs.module +lib/grub/x86_64-efi/cbls.mod +lib/grub/x86_64-efi/cbls.module +lib/grub/x86_64-efi/cbmemc.mod +lib/grub/x86_64-efi/cbmemc.module +lib/grub/x86_64-efi/cbtable.mod +lib/grub/x86_64-efi/cbtable.module +lib/grub/x86_64-efi/cbtime.mod +lib/grub/x86_64-efi/cbtime.module +lib/grub/x86_64-efi/chain.mod +lib/grub/x86_64-efi/chain.module +lib/grub/x86_64-efi/cmdline_cat_test.mod +lib/grub/x86_64-efi/cmdline_cat_test.module +lib/grub/x86_64-efi/cmp.mod +lib/grub/x86_64-efi/cmp.module +lib/grub/x86_64-efi/cmp_test.mod +lib/grub/x86_64-efi/cmp_test.module +lib/grub/x86_64-efi/command.lst +lib/grub/x86_64-efi/configfile.mod +lib/grub/x86_64-efi/configfile.module +lib/grub/x86_64-efi/cpio.mod +lib/grub/x86_64-efi/cpio.module +lib/grub/x86_64-efi/cpio_be.mod +lib/grub/x86_64-efi/cpio_be.module +lib/grub/x86_64-efi/cpuid.mod +lib/grub/x86_64-efi/cpuid.module +lib/grub/x86_64-efi/crc64.mod +lib/grub/x86_64-efi/crc64.module +lib/grub/x86_64-efi/crypto.lst +lib/grub/x86_64-efi/crypto.mod +lib/grub/x86_64-efi/crypto.module +lib/grub/x86_64-efi/cryptodisk.mod +lib/grub/x86_64-efi/cryptodisk.module +lib/grub/x86_64-efi/cs5536.mod +lib/grub/x86_64-efi/cs5536.module +lib/grub/x86_64-efi/ctz_test.mod +lib/grub/x86_64-efi/ctz_test.module +lib/grub/x86_64-efi/date.mod +lib/grub/x86_64-efi/date.module +lib/grub/x86_64-efi/datehook.mod +lib/grub/x86_64-efi/datehook.module +lib/grub/x86_64-efi/datetime.mod +lib/grub/x86_64-efi/datetime.module +lib/grub/x86_64-efi/disk.mod +lib/grub/x86_64-efi/disk.module +lib/grub/x86_64-efi/diskfilter.mod +lib/grub/x86_64-efi/diskfilter.module +lib/grub/x86_64-efi/div.mod +lib/grub/x86_64-efi/div.module +lib/grub/x86_64-efi/div_test.mod +lib/grub/x86_64-efi/div_test.module +lib/grub/x86_64-efi/dm_nv.mod +lib/grub/x86_64-efi/dm_nv.module +lib/grub/x86_64-efi/echo.mod +lib/grub/x86_64-efi/echo.module +lib/grub/x86_64-efi/efi_gop.mod +lib/grub/x86_64-efi/efi_gop.module +lib/grub/x86_64-efi/efi_uga.mod +lib/grub/x86_64-efi/efi_uga.module +lib/grub/x86_64-efi/efifwsetup.mod +lib/grub/x86_64-efi/efifwsetup.module +lib/grub/x86_64-efi/efinet.mod +lib/grub/x86_64-efi/efinet.module +lib/grub/x86_64-efi/ehci.mod +lib/grub/x86_64-efi/ehci.module +lib/grub/x86_64-efi/elf.mod +lib/grub/x86_64-efi/elf.module +lib/grub/x86_64-efi/eval.mod +lib/grub/x86_64-efi/eval.module +lib/grub/x86_64-efi/exfat.mod +lib/grub/x86_64-efi/exfat.module +lib/grub/x86_64-efi/exfctest.mod +lib/grub/x86_64-efi/exfctest.module +lib/grub/x86_64-efi/ext2.mod +lib/grub/x86_64-efi/ext2.module +lib/grub/x86_64-efi/extcmd.mod +lib/grub/x86_64-efi/extcmd.module +lib/grub/x86_64-efi/fat.mod +lib/grub/x86_64-efi/fat.module +lib/grub/x86_64-efi/file.mod +lib/grub/x86_64-efi/file.module +lib/grub/x86_64-efi/fixvideo.mod +lib/grub/x86_64-efi/fixvideo.module +lib/grub/x86_64-efi/font.mod +lib/grub/x86_64-efi/font.module +lib/grub/x86_64-efi/fs.lst +lib/grub/x86_64-efi/fshelp.mod +lib/grub/x86_64-efi/fshelp.module +lib/grub/x86_64-efi/functional_test.mod +lib/grub/x86_64-efi/functional_test.module +lib/grub/x86_64-efi/gcry_arcfour.mod +lib/grub/x86_64-efi/gcry_arcfour.module +lib/grub/x86_64-efi/gcry_blowfish.mod +lib/grub/x86_64-efi/gcry_blowfish.module +lib/grub/x86_64-efi/gcry_camellia.mod +lib/grub/x86_64-efi/gcry_camellia.module +lib/grub/x86_64-efi/gcry_cast5.mod +lib/grub/x86_64-efi/gcry_cast5.module +lib/grub/x86_64-efi/gcry_crc.mod +lib/grub/x86_64-efi/gcry_crc.module +lib/grub/x86_64-efi/gcry_des.mod +lib/grub/x86_64-efi/gcry_des.module +lib/grub/x86_64-efi/gcry_dsa.mod +lib/grub/x86_64-efi/gcry_dsa.module +lib/grub/x86_64-efi/gcry_idea.mod +lib/grub/x86_64-efi/gcry_idea.module +lib/grub/x86_64-efi/gcry_md4.mod +lib/grub/x86_64-efi/gcry_md4.module +lib/grub/x86_64-efi/gcry_md5.mod +lib/grub/x86_64-efi/gcry_md5.module +lib/grub/x86_64-efi/gcry_rfc2268.mod +lib/grub/x86_64-efi/gcry_rfc2268.module +lib/grub/x86_64-efi/gcry_rijndael.mod +lib/grub/x86_64-efi/gcry_rijndael.module +lib/grub/x86_64-efi/gcry_rmd160.mod +lib/grub/x86_64-efi/gcry_rmd160.module +lib/grub/x86_64-efi/gcry_rsa.mod +lib/grub/x86_64-efi/gcry_rsa.module +lib/grub/x86_64-efi/gcry_seed.mod +lib/grub/x86_64-efi/gcry_seed.module +lib/grub/x86_64-efi/gcry_serpent.mod +lib/grub/x86_64-efi/gcry_serpent.module +lib/grub/x86_64-efi/gcry_sha1.mod +lib/grub/x86_64-efi/gcry_sha1.module +lib/grub/x86_64-efi/gcry_sha256.mod +lib/grub/x86_64-efi/gcry_sha256.module +lib/grub/x86_64-efi/gcry_sha512.mod +lib/grub/x86_64-efi/gcry_sha512.module +lib/grub/x86_64-efi/gcry_tiger.mod +lib/grub/x86_64-efi/gcry_tiger.module +lib/grub/x86_64-efi/gcry_twofish.mod +lib/grub/x86_64-efi/gcry_twofish.module +lib/grub/x86_64-efi/gcry_whirlpool.mod +lib/grub/x86_64-efi/gcry_whirlpool.module +lib/grub/x86_64-efi/gdb_grub +lib/grub/x86_64-efi/geli.mod +lib/grub/x86_64-efi/geli.module +lib/grub/x86_64-efi/gettext.mod +lib/grub/x86_64-efi/gettext.module +lib/grub/x86_64-efi/gfxmenu.mod +lib/grub/x86_64-efi/gfxmenu.module +lib/grub/x86_64-efi/gfxterm.mod +lib/grub/x86_64-efi/gfxterm.module +lib/grub/x86_64-efi/gfxterm_background.mod +lib/grub/x86_64-efi/gfxterm_background.module +lib/grub/x86_64-efi/gfxterm_menu.mod +lib/grub/x86_64-efi/gfxterm_menu.module +lib/grub/x86_64-efi/gmodule.pl +lib/grub/x86_64-efi/gptsync.mod +lib/grub/x86_64-efi/gptsync.module +lib/grub/x86_64-efi/gzio.mod +lib/grub/x86_64-efi/gzio.module +lib/grub/x86_64-efi/halt.mod +lib/grub/x86_64-efi/halt.module +lib/grub/x86_64-efi/hashsum.mod +lib/grub/x86_64-efi/hashsum.module +lib/grub/x86_64-efi/hdparm.mod +lib/grub/x86_64-efi/hdparm.module +lib/grub/x86_64-efi/hello.mod +lib/grub/x86_64-efi/hello.module +lib/grub/x86_64-efi/help.mod +lib/grub/x86_64-efi/help.module +lib/grub/x86_64-efi/hexdump.mod +lib/grub/x86_64-efi/hexdump.module +lib/grub/x86_64-efi/hfs.mod +lib/grub/x86_64-efi/hfs.module +lib/grub/x86_64-efi/hfsplus.mod +lib/grub/x86_64-efi/hfsplus.module +lib/grub/x86_64-efi/hfspluscomp.mod +lib/grub/x86_64-efi/hfspluscomp.module +lib/grub/x86_64-efi/http.mod +lib/grub/x86_64-efi/http.module +lib/grub/x86_64-efi/iorw.mod +lib/grub/x86_64-efi/iorw.module +lib/grub/x86_64-efi/iso9660.mod +lib/grub/x86_64-efi/iso9660.module +lib/grub/x86_64-efi/jfs.mod +lib/grub/x86_64-efi/jfs.module +lib/grub/x86_64-efi/jpeg.mod +lib/grub/x86_64-efi/jpeg.module +lib/grub/x86_64-efi/kernel.exec +lib/grub/x86_64-efi/kernel.img +lib/grub/x86_64-efi/keylayouts.mod +lib/grub/x86_64-efi/keylayouts.module +lib/grub/x86_64-efi/keystatus.mod +lib/grub/x86_64-efi/keystatus.module +lib/grub/x86_64-efi/ldm.mod +lib/grub/x86_64-efi/ldm.module +lib/grub/x86_64-efi/legacy_password_test.mod +lib/grub/x86_64-efi/legacy_password_test.module +lib/grub/x86_64-efi/legacycfg.mod +lib/grub/x86_64-efi/legacycfg.module +lib/grub/x86_64-efi/linux.mod +lib/grub/x86_64-efi/linux.module +lib/grub/x86_64-efi/linux16.mod +lib/grub/x86_64-efi/linux16.module +lib/grub/x86_64-efi/loadbios.mod +lib/grub/x86_64-efi/loadbios.module +lib/grub/x86_64-efi/loadenv.mod +lib/grub/x86_64-efi/loadenv.module +lib/grub/x86_64-efi/loopback.mod +lib/grub/x86_64-efi/loopback.module +lib/grub/x86_64-efi/ls.mod +lib/grub/x86_64-efi/ls.module +lib/grub/x86_64-efi/lsacpi.mod +lib/grub/x86_64-efi/lsacpi.module +lib/grub/x86_64-efi/lsefi.mod +lib/grub/x86_64-efi/lsefi.module +lib/grub/x86_64-efi/lsefimmap.mod +lib/grub/x86_64-efi/lsefimmap.module +lib/grub/x86_64-efi/lsefisystab.mod +lib/grub/x86_64-efi/lsefisystab.module +lib/grub/x86_64-efi/lsmmap.mod +lib/grub/x86_64-efi/lsmmap.module +lib/grub/x86_64-efi/lspci.mod +lib/grub/x86_64-efi/lspci.module +lib/grub/x86_64-efi/lssal.mod +lib/grub/x86_64-efi/lssal.module +lib/grub/x86_64-efi/luks.mod +lib/grub/x86_64-efi/luks.module +lib/grub/x86_64-efi/lvm.mod +lib/grub/x86_64-efi/lvm.module +lib/grub/x86_64-efi/lzopio.mod +lib/grub/x86_64-efi/lzopio.module +lib/grub/x86_64-efi/macbless.mod +lib/grub/x86_64-efi/macbless.module +lib/grub/x86_64-efi/macho.mod +lib/grub/x86_64-efi/macho.module +lib/grub/x86_64-efi/mdraid09.mod +lib/grub/x86_64-efi/mdraid09.module +lib/grub/x86_64-efi/mdraid09_be.mod +lib/grub/x86_64-efi/mdraid09_be.module +lib/grub/x86_64-efi/mdraid1x.mod +lib/grub/x86_64-efi/mdraid1x.module +lib/grub/x86_64-efi/memdisk.mod +lib/grub/x86_64-efi/memdisk.module +lib/grub/x86_64-efi/memrw.mod +lib/grub/x86_64-efi/memrw.module +lib/grub/x86_64-efi/minicmd.mod +lib/grub/x86_64-efi/minicmd.module +lib/grub/x86_64-efi/minix.mod +lib/grub/x86_64-efi/minix.module +lib/grub/x86_64-efi/minix2.mod +lib/grub/x86_64-efi/minix2.module +lib/grub/x86_64-efi/minix2_be.mod +lib/grub/x86_64-efi/minix2_be.module +lib/grub/x86_64-efi/minix3.mod +lib/grub/x86_64-efi/minix3.module +lib/grub/x86_64-efi/minix3_be.mod +lib/grub/x86_64-efi/minix3_be.module +lib/grub/x86_64-efi/minix_be.mod +lib/grub/x86_64-efi/minix_be.module +lib/grub/x86_64-efi/mmap.mod +lib/grub/x86_64-efi/mmap.module +lib/grub/x86_64-efi/moddep.lst +lib/grub/x86_64-efi/modinfo.sh +lib/grub/x86_64-efi/morse.mod +lib/grub/x86_64-efi/morse.module +lib/grub/x86_64-efi/mpi.mod +lib/grub/x86_64-efi/mpi.module +lib/grub/x86_64-efi/msdospart.mod +lib/grub/x86_64-efi/msdospart.module +lib/grub/x86_64-efi/mul_test.mod +lib/grub/x86_64-efi/mul_test.module +lib/grub/x86_64-efi/multiboot.mod +lib/grub/x86_64-efi/multiboot.module +lib/grub/x86_64-efi/multiboot2.mod +lib/grub/x86_64-efi/multiboot2.module +lib/grub/x86_64-efi/nativedisk.mod +lib/grub/x86_64-efi/nativedisk.module +lib/grub/x86_64-efi/net.mod +lib/grub/x86_64-efi/net.module +lib/grub/x86_64-efi/newc.mod +lib/grub/x86_64-efi/newc.module +lib/grub/x86_64-efi/nilfs2.mod +lib/grub/x86_64-efi/nilfs2.module +lib/grub/x86_64-efi/normal.mod +lib/grub/x86_64-efi/normal.module +lib/grub/x86_64-efi/ntfs.mod +lib/grub/x86_64-efi/ntfs.module +lib/grub/x86_64-efi/ntfscomp.mod +lib/grub/x86_64-efi/ntfscomp.module +lib/grub/x86_64-efi/odc.mod +lib/grub/x86_64-efi/odc.module +lib/grub/x86_64-efi/offsetio.mod +lib/grub/x86_64-efi/offsetio.module +lib/grub/x86_64-efi/ohci.mod +lib/grub/x86_64-efi/ohci.module +lib/grub/x86_64-efi/part_acorn.mod +lib/grub/x86_64-efi/part_acorn.module +lib/grub/x86_64-efi/part_amiga.mod +lib/grub/x86_64-efi/part_amiga.module +lib/grub/x86_64-efi/part_apple.mod +lib/grub/x86_64-efi/part_apple.module +lib/grub/x86_64-efi/part_bsd.mod +lib/grub/x86_64-efi/part_bsd.module +lib/grub/x86_64-efi/part_dfly.mod +lib/grub/x86_64-efi/part_dfly.module +lib/grub/x86_64-efi/part_dvh.mod +lib/grub/x86_64-efi/part_dvh.module +lib/grub/x86_64-efi/part_gpt.mod +lib/grub/x86_64-efi/part_gpt.module +lib/grub/x86_64-efi/part_msdos.mod +lib/grub/x86_64-efi/part_msdos.module +lib/grub/x86_64-efi/part_plan.mod +lib/grub/x86_64-efi/part_plan.module +lib/grub/x86_64-efi/part_sun.mod +lib/grub/x86_64-efi/part_sun.module +lib/grub/x86_64-efi/part_sunpc.mod +lib/grub/x86_64-efi/part_sunpc.module +lib/grub/x86_64-efi/partmap.lst +lib/grub/x86_64-efi/parttool.lst +lib/grub/x86_64-efi/parttool.mod +lib/grub/x86_64-efi/parttool.module +lib/grub/x86_64-efi/password.mod +lib/grub/x86_64-efi/password.module +lib/grub/x86_64-efi/password_pbkdf2.mod +lib/grub/x86_64-efi/password_pbkdf2.module +lib/grub/x86_64-efi/pata.mod +lib/grub/x86_64-efi/pata.module +lib/grub/x86_64-efi/pbkdf2.mod +lib/grub/x86_64-efi/pbkdf2.module +lib/grub/x86_64-efi/pbkdf2_test.mod +lib/grub/x86_64-efi/pbkdf2_test.module +lib/grub/x86_64-efi/pcidump.mod +lib/grub/x86_64-efi/pcidump.module +lib/grub/x86_64-efi/play.mod +lib/grub/x86_64-efi/play.module +lib/grub/x86_64-efi/png.mod +lib/grub/x86_64-efi/png.module +lib/grub/x86_64-efi/priority_queue.mod +lib/grub/x86_64-efi/priority_queue.module +lib/grub/x86_64-efi/probe.mod +lib/grub/x86_64-efi/probe.module +lib/grub/x86_64-efi/procfs.mod +lib/grub/x86_64-efi/procfs.module +lib/grub/x86_64-efi/progress.mod +lib/grub/x86_64-efi/progress.module +lib/grub/x86_64-efi/raid5rec.mod +lib/grub/x86_64-efi/raid5rec.module +lib/grub/x86_64-efi/raid6rec.mod +lib/grub/x86_64-efi/raid6rec.module +lib/grub/x86_64-efi/read.mod +lib/grub/x86_64-efi/read.module +lib/grub/x86_64-efi/reboot.mod +lib/grub/x86_64-efi/reboot.module +lib/grub/x86_64-efi/regexp.mod +lib/grub/x86_64-efi/regexp.module +lib/grub/x86_64-efi/reiserfs.mod +lib/grub/x86_64-efi/reiserfs.module +lib/grub/x86_64-efi/relocator.mod +lib/grub/x86_64-efi/relocator.module +lib/grub/x86_64-efi/romfs.mod +lib/grub/x86_64-efi/romfs.module +lib/grub/x86_64-efi/scsi.mod +lib/grub/x86_64-efi/scsi.module +lib/grub/x86_64-efi/search.mod +lib/grub/x86_64-efi/search.module +lib/grub/x86_64-efi/search_fs_file.mod +lib/grub/x86_64-efi/search_fs_file.module +lib/grub/x86_64-efi/search_fs_uuid.mod +lib/grub/x86_64-efi/search_fs_uuid.module +lib/grub/x86_64-efi/search_label.mod +lib/grub/x86_64-efi/search_label.module +lib/grub/x86_64-efi/serial.mod +lib/grub/x86_64-efi/serial.module +lib/grub/x86_64-efi/setjmp.mod +lib/grub/x86_64-efi/setjmp.module +lib/grub/x86_64-efi/setjmp_test.mod +lib/grub/x86_64-efi/setjmp_test.module +lib/grub/x86_64-efi/setpci.mod +lib/grub/x86_64-efi/setpci.module +lib/grub/x86_64-efi/sfs.mod +lib/grub/x86_64-efi/sfs.module +lib/grub/x86_64-efi/shift_test.mod +lib/grub/x86_64-efi/shift_test.module +lib/grub/x86_64-efi/signature_test.mod +lib/grub/x86_64-efi/signature_test.module +lib/grub/x86_64-efi/sleep.mod +lib/grub/x86_64-efi/sleep.module +lib/grub/x86_64-efi/sleep_test.mod +lib/grub/x86_64-efi/sleep_test.module +lib/grub/x86_64-efi/spkmodem.mod +lib/grub/x86_64-efi/spkmodem.module +lib/grub/x86_64-efi/squash4.mod +lib/grub/x86_64-efi/squash4.module +lib/grub/x86_64-efi/syslinuxcfg.mod +lib/grub/x86_64-efi/syslinuxcfg.module +lib/grub/x86_64-efi/tar.mod +lib/grub/x86_64-efi/tar.module +lib/grub/x86_64-efi/terminal.lst +lib/grub/x86_64-efi/terminal.mod +lib/grub/x86_64-efi/terminal.module +lib/grub/x86_64-efi/terminfo.mod +lib/grub/x86_64-efi/terminfo.module +lib/grub/x86_64-efi/test.mod +lib/grub/x86_64-efi/test.module +lib/grub/x86_64-efi/test_blockarg.mod +lib/grub/x86_64-efi/test_blockarg.module +lib/grub/x86_64-efi/testload.mod +lib/grub/x86_64-efi/testload.module +lib/grub/x86_64-efi/testspeed.mod +lib/grub/x86_64-efi/testspeed.module +lib/grub/x86_64-efi/tftp.mod +lib/grub/x86_64-efi/tftp.module +lib/grub/x86_64-efi/tga.mod +lib/grub/x86_64-efi/tga.module +lib/grub/x86_64-efi/time.mod +lib/grub/x86_64-efi/time.module +lib/grub/x86_64-efi/tr.mod +lib/grub/x86_64-efi/tr.module +lib/grub/x86_64-efi/trig.mod +lib/grub/x86_64-efi/trig.module +lib/grub/x86_64-efi/true.mod +lib/grub/x86_64-efi/true.module +lib/grub/x86_64-efi/udf.mod +lib/grub/x86_64-efi/udf.module +lib/grub/x86_64-efi/ufs1.mod +lib/grub/x86_64-efi/ufs1.module +lib/grub/x86_64-efi/ufs1_be.mod +lib/grub/x86_64-efi/ufs1_be.module +lib/grub/x86_64-efi/ufs2.mod +lib/grub/x86_64-efi/ufs2.module +lib/grub/x86_64-efi/uhci.mod +lib/grub/x86_64-efi/uhci.module +lib/grub/x86_64-efi/usb.mod +lib/grub/x86_64-efi/usb.module +lib/grub/x86_64-efi/usb_keyboard.mod +lib/grub/x86_64-efi/usb_keyboard.module +lib/grub/x86_64-efi/usbms.mod +lib/grub/x86_64-efi/usbms.module +lib/grub/x86_64-efi/usbserial_common.mod +lib/grub/x86_64-efi/usbserial_common.module +lib/grub/x86_64-efi/usbserial_ftdi.mod +lib/grub/x86_64-efi/usbserial_ftdi.module +lib/grub/x86_64-efi/usbserial_pl2303.mod +lib/grub/x86_64-efi/usbserial_pl2303.module +lib/grub/x86_64-efi/usbserial_usbdebug.mod +lib/grub/x86_64-efi/usbserial_usbdebug.module +lib/grub/x86_64-efi/usbtest.mod +lib/grub/x86_64-efi/usbtest.module +lib/grub/x86_64-efi/verify.mod +lib/grub/x86_64-efi/verify.module +lib/grub/x86_64-efi/video.lst +lib/grub/x86_64-efi/video.mod +lib/grub/x86_64-efi/video.module +lib/grub/x86_64-efi/video_bochs.mod +lib/grub/x86_64-efi/video_bochs.module +lib/grub/x86_64-efi/video_cirrus.mod +lib/grub/x86_64-efi/video_cirrus.module +lib/grub/x86_64-efi/video_colors.mod +lib/grub/x86_64-efi/video_colors.module +lib/grub/x86_64-efi/video_fb.mod +lib/grub/x86_64-efi/video_fb.module +lib/grub/x86_64-efi/videoinfo.mod +lib/grub/x86_64-efi/videoinfo.module +lib/grub/x86_64-efi/videotest.mod +lib/grub/x86_64-efi/videotest.module +lib/grub/x86_64-efi/videotest_checksum.mod +lib/grub/x86_64-efi/videotest_checksum.module +lib/grub/x86_64-efi/xfs.mod +lib/grub/x86_64-efi/xfs.module +lib/grub/x86_64-efi/xnu.mod +lib/grub/x86_64-efi/xnu.module +lib/grub/x86_64-efi/xnu_uuid.mod +lib/grub/x86_64-efi/xnu_uuid.module +lib/grub/x86_64-efi/xnu_uuid_test.mod +lib/grub/x86_64-efi/xnu_uuid_test.module +lib/grub/x86_64-efi/xzio.mod +lib/grub/x86_64-efi/xzio.module +lib/grub/x86_64-efi/zfs.mod +lib/grub/x86_64-efi/zfs.module +lib/grub/x86_64-efi/zfscrypt.mod +lib/grub/x86_64-efi/zfscrypt.module +lib/grub/x86_64-efi/zfsinfo.mod +lib/grub/x86_64-efi/zfsinfo.module diff --git a/sysutils/grub2-pcbsd/Makefile b/sysutils/grub2-pcbsd/Makefile new file mode 100644 index 000000000000..2e679d8edd63 --- /dev/null +++ b/sysutils/grub2-pcbsd/Makefile @@ -0,0 +1,91 @@ +# Created by: kmoore@FreeBSD.org + +PORTNAME= grub2-pcbsd +PORTVERSION= 2.02q +PORTREVISION= 17 +CATEGORIES= sysutils +MASTER_SITES= LOCAL/kevlo +DISTNAME= grub-2.02_8 + +MAINTAINER= kevlo@FreeBSD.org +COMMENT= Multiboot boot loader + +LICENSE= GPLv3 + +BUILD_DEPENDS= ${LOCALBASE}/bin/flex:textproc/flex \ + ${LOCALBASE}/bin/bash:shells/bash \ + help2man:misc/help2man + +ONLY_FOR_ARCHS= amd64 +USES= autoreconf:build bison cpe gettext gmake makeinfo python tar:xz + +WRKSRC= ${WRKDIR}/grub-2.02 +CONFLICTS= grub2-2* +SSP_UNSAFE= yes +USE_GCC= yes +GNU_CONFIGURE= yes +INFO= grub grub-dev +MAKE_JOBS_UNSAFE= yes + +CPE_PRODUCT= grub +CPE_VENDOR= gnu + +CONFIGURE_ARGS= --disable-werror --localedir=${PREFIX}/share/locale +CONFIGURE_ENV= CPP="${CC} -E" \ + LEX=${LOCALBASE}/bin/flex + +SUB_FILES= 00_header 10_kfreebsd 10_ktrueos 30_os-prober 50_otherbe + +OPTIONS_DEFINE= MKFONT FUSE +OPTIONS_DEFAULT=MKFONT +OPTIONS_SUB= yes + +MKFONT_DESC= Build grub-mkfont (require freetype2) +FUSE_DESC= Build grub-mount (require FUSE) + +.include <bsd.port.pre.mk> + +.if ${ARCH} != "amd64" +EFIEMU= "@comment " +.endif + +PLIST_SUB+= EFIEMU=${EFIEMU} + +.if ${PORT_OPTIONS:MMKFONT} +LIB_DEPENDS+= libfreetype.so:print/freetype2 +BUILD_DEPENDS+= ${LOCALBASE}/share/fonts/dejavu/DejaVuSans.ttf:x11-fonts/dejavu \ + ${LOCALBASE}/share/fonts/gnu-unifont/unifont.pcf.gz:x11-fonts/gnu-unifont +CONFIGURE_ARGS+= --enable-grub-mkfont +.else +CONFIGURE_ARGS+= --disable-grub-mkfont +.endif + +.if ${PORT_OPTIONS:MFUSE} +LIB_DEPENDS+= libfuse.so:sysutils/fusefs-libs +CONFIGURE_ARGS+= --enable-grub-mount +.else +CONFIGURE_ARGS+= --disable-grub-mount +.endif + +post-patch: + @${TOUCH} -t 200001010000 ${WRKSRC}/Makefile.util.def + +pre-configure: + @${REINPLACE_CMD} -e 's|python|${PYTHON_CMD}|g' ${WRKSRC}/autogen.sh + cd ${WRKSRC} && ./autogen.sh + +post-configure: + @${LN} -sfh /usr/include/machine /usr/include/sys /usr/include/x86 ${WRKSRC}/grub-core + +post-install: + ${RM} -r ${STAGEDIR}${PREFIX}/lib/charset.alias + ${INSTALL_SCRIPT} ${WRKDIR}/00_header ${STAGEDIR}${PREFIX}/etc/grub.d/ + ${INSTALL_SCRIPT} ${WRKDIR}/10_kfreebsd ${STAGEDIR}${PREFIX}/etc/grub.d/ + ${INSTALL_SCRIPT} ${WRKDIR}/10_ktrueos ${STAGEDIR}${PREFIX}/etc/grub.d/ + ${INSTALL_SCRIPT} ${WRKDIR}/30_os-prober ${STAGEDIR}${PREFIX}/etc/grub.d/ + ${INSTALL_SCRIPT} ${WRKDIR}/50_otherbe ${STAGEDIR}${PREFIX}/etc/grub.d/ + ${MV} ${STAGEDIR}${PREFIX}/etc/grub.d/40_custom ${STAGEDIR}/${PREFIX}/etc/grub.d/40_custom.dist + +RUN_DEPENDS:= ${RUN_DEPENDS:Ngcc*} + +.include <bsd.port.post.mk> diff --git a/sysutils/grub2-pcbsd/distinfo b/sysutils/grub2-pcbsd/distinfo new file mode 100644 index 000000000000..400036de8064 --- /dev/null +++ b/sysutils/grub2-pcbsd/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1625569318 +SHA256 (grub-2.02_8.tar.xz) = 3b5382f3b2aa467dbfa1a0d53f97e24ccc1b24cdea67056fd3227c57f4c69088 +SIZE (grub-2.02_8.tar.xz) = 5022808 diff --git a/sysutils/grub2-pcbsd/files/00_header.in b/sysutils/grub2-pcbsd/files/00_header.in new file mode 100644 index 000000000000..e3d1cec6c2fd --- /dev/null +++ b/sysutils/grub2-pcbsd/files/00_header.in @@ -0,0 +1,361 @@ +#! /bin/sh +set -e + +# grub-mkconfig helper script. +# Copyright (C) 2006,2007,2008,2009,2010 Free Software Foundation, Inc. +# +# GRUB is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# GRUB is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GRUB. If not, see <http://www.gnu.org/licenses/>. + +transform="s,x,x," + +prefix="/usr/local" +exec_prefix="${prefix}" +datarootdir="${prefix}/share" +grub_lang=`echo $LANG | cut -d . -f 1` + +export TEXTDOMAIN=grub +export TEXTDOMAINDIR="/usr/local/share/locale" + +. "${datarootdir}/grub/grub-mkconfig_lib" + +# Set indicator that we haven't written device access yet +haveDevAccess=0 + +# Work-around for systems with GPTID enabled still +echo "insmod part_gpt" + +# Do this as early as possible, since other commands might depend on it. +# (e.g. the `loadfont' command might need lvm or raid modules) +for i in ${GRUB_PRELOAD_MODULES} ; do + echo "insmod $i" +done + +if [ -e "/root/beadm.install" ] ; then + BEADM="/root/beadm.install" +else + BEADM="beadm" +fi + +if [ "x${GRUB_DEFAULT}" = "x" ] ; then + GRUB_DEFAULT=0 +fi +if [ "x${GRUB_DEFAULT}" = "xsaved" ] ; then GRUB_DEFAULT='${saved_entry}' ; fi +if [ "x${GRUB_TIMEOUT}" = "x" ] ; then GRUB_TIMEOUT=5 ; fi +if [ "x${GRUB_GFXMODE}" = "x" ] ; then GRUB_GFXMODE=auto ; fi + +# Check if we have more than one BE, and need to show the menu by default +beNum=`$BEADM list 2>/dev/null | grep -v 'Mountpoint' | wc -l | awk '{print $1}'` +if [ $beNum -gt 1 ] ; then GRUB_HIDDEN_TIMEOUT=""; fi + +if [ "x${GRUB_DEFAULT_BUTTON}" = "x" ] ; then GRUB_DEFAULT_BUTTON="$GRUB_DEFAULT" ; fi +if [ "x${GRUB_DEFAULT_BUTTON}" = "xsaved" ] ; then GRUB_DEFAULT_BUTTON='${saved_entry}' ; fi +if [ "x${GRUB_TIMEOUT_BUTTON}" = "x" ] ; then GRUB_TIMEOUT_BUTTON="$GRUB_TIMEOUT" ; fi + +cat << EOF +if [ -s \$prefix/grubenv ]; then + load_env +fi +EOF +if [ "x$GRUB_BUTTON_CMOS_ADDRESS" != "x" ]; then + cat <<EOF +if cmostest $GRUB_BUTTON_CMOS_ADDRESS ; then + set default="${GRUB_DEFAULT_BUTTON}" +else + set default="${GRUB_DEFAULT}" +fi +EOF +else + cat <<EOF +set default="${GRUB_DEFAULT}" +EOF +fi +cat <<EOF + +if [ x"\${feature_menuentry_id}" = xy ]; then + menuentry_id_option="--id" +else + menuentry_id_option="" +fi + +export menuentry_id_option + +if [ x"\${gelipassphrase}" != x ]; then + set pass="\$gelipassphrase" + export pass +fi + +if [ "\${prev_saved_entry}" ]; then + set saved_entry="\${prev_saved_entry}" + save_env saved_entry + set prev_saved_entry= + save_env prev_saved_entry + set boot_once=true +fi + +function savedefault { + if [ -z "\${boot_once}" ]; then + saved_entry="\${chosen}" + save_env saved_entry + fi +} + +function load_video { +EOF +if [ -n "${GRUB_VIDEO_BACKEND}" ]; then + cat <<EOF + insmod ${GRUB_VIDEO_BACKEND} +EOF +else +# If all_video.mod isn't available load all modules available +# with versions prior to introduction of all_video.mod +cat <<EOF + insmod vbe + insmod vga + insmod video_bochs + insmod video_cirrus +EOF +fi +cat <<EOF +} + +EOF + +serial=0; +gfxterm=0; +for x in ${GRUB_TERMINAL_INPUT} ${GRUB_TERMINAL_OUTPUT}; do + if [ xserial = "x$x" ]; then + serial=1; + fi + if [ xgfxterm = "x$x" ]; then + gfxterm=1; + fi +done + +if [ "x$serial" = x1 ]; then + if [ "x${GRUB_SERIAL_COMMAND}" = "x" ] ; then + grub_warn "$(gettext "Requested serial terminal but GRUB_SERIAL_COMMAND is unspecified. Default parameters will be used.")" + GRUB_SERIAL_COMMAND=serial + fi + echo "${GRUB_SERIAL_COMMAND}" +fi + +if [ "x$gfxterm" = x1 ]; then + if [ -n "$GRUB_FONT" ] ; then + # Make the font accessible + if [ $haveDevAccess -ne 1 ] ; then + haveDevAccess=1 + prepare_grub_to_access_device `${grub_probe} --target=device "${GRUB_FONT}"` + fi + cat << EOF +if loadfont `make_system_path_relative_to_its_root "${GRUB_FONT}"` ; then +EOF + else + for dir in "${pkgdatadir}" "`echo '/boot/grub' | sed "s,//*,/,g"`" /usr/share/grub ; do + for basename in unicode unifont ascii; do + path="${dir}/${basename}.pf2" + if is_path_readable_by_grub "${path}" > /dev/null ; then + font_path="${path}" + else + continue + fi + break 2 + done + done + if [ -n "${font_path}" ] ; then + cat << EOF +if [ x\$feature_default_font_path = xy ] ; then + font=unicode +else +EOF + # Make the font accessible + if [ $haveDevAccess -ne 1 ] ; then + haveDevAccess=1 + prepare_grub_to_access_device `${grub_probe} --target=device "${font_path}"` + fi + cat << EOF + font="`make_system_path_relative_to_its_root "${font_path}"`" +fi + +if loadfont \$font ; then +EOF + else + cat << EOF +if loadfont unicode ; then +EOF + fi + fi + + cat << EOF + if [ x"\${grub_platform}" = xpc ] ; then + set gfxmode=${GRUB_GFXMODE} + load_video + insmod gfxterm + else + # EFI + insmod efi_gop + insmod gfxterm + insmod font + insmod videotest + insmod videoinfo + set gfxmode=${GRUB_GFXMODE} + fi +EOF + +# Gettext variables and module +if [ "x${LANG}" != "xC" -a "x${grub_lang}" != "xen_US" ] ; then + cat << EOF + set locale_dir=\$prefix/locale + set lang=${grub_lang} + insmod gettext +EOF +fi + +cat <<EOF +fi +EOF +fi + +case x${GRUB_TERMINAL_INPUT} in + x) + # Just use the native terminal + ;; + x*) + cat << EOF +terminal_input ${GRUB_TERMINAL_INPUT} +EOF + ;; +esac + +case x${GRUB_TERMINAL_OUTPUT} in + x) + # Just use the native terminal + ;; + x*) + cat << EOF +terminal_output ${GRUB_TERMINAL_OUTPUT} +EOF + ;; +esac + +if [ "x$gfxterm" = x1 ]; then + if [ "x$GRUB_THEME" != x ] && [ -f "$GRUB_THEME" ] \ + && is_path_readable_by_grub "$GRUB_THEME"; then + gettext_printf "Found theme: %s\n" "$GRUB_THEME" >&2 + + if [ $haveDevAccess -ne 1 ] ; then + haveDevAccess=1 + prepare_grub_to_access_device `${grub_probe} --target=device "$GRUB_THEME"` + fi + cat << EOF +insmod gfxmenu +EOF + themedir="`dirname "$GRUB_THEME"`" + for x in "$themedir"/*.pf2 "$themedir"/f/*.pf2; do + if [ -f "$x" ]; then + cat << EOF +loadfont (\$root)`make_system_path_relative_to_its_root $x` +EOF + fi + done + if [ x"`echo "$themedir"/*.jpg`" != x"$themedir/*.jpg" ] || [ x"`echo "$themedir"/*.jpeg`" != x"$themedir/*.jpeg" ]; then + cat << EOF +insmod jpeg +EOF + fi + if [ x"`echo "$themedir"/*.png`" != x"$themedir/*.png" ]; then + cat << EOF +insmod png +EOF + fi + if [ x"`echo "$themedir"/*.tga`" != x"$themedir/*.tga" ]; then + cat << EOF +insmod tga +EOF + fi + + cat << EOF +set theme=(\$root)`make_system_path_relative_to_its_root $GRUB_THEME` +export theme +EOF + elif [ "x$GRUB_BACKGROUND" != x ] && [ -f "$GRUB_BACKGROUND" ] \ + && is_path_readable_by_grub "$GRUB_BACKGROUND"; then + gettext_printf "Found background: %s\n" "$GRUB_BACKGROUND" >&2 + case "$GRUB_BACKGROUND" in + *.png) reader=png ;; + *.tga) reader=tga ;; + *.jpg|*.jpeg) reader=jpeg ;; + *) gettext "Unsupported image format" >&2; echo >&2; exit 1 ;; + esac + if [ $haveDevAccess -ne 1 ] ; then + haveDevAccess=1 + prepare_grub_to_access_device `${grub_probe} --target=device "$GRUB_BACKGROUND"` + fi + cat << EOF +insmod $reader +background_image -m stretch `make_system_path_relative_to_its_root "$GRUB_BACKGROUND"` +EOF + fi +fi + +make_timeout () +{ + if [ "x${1}" != "x" ] ; then + if [ "x${GRUB_HIDDEN_TIMEOUT_QUIET}" = "xtrue" ] ; then + verbose= + else + verbose=" --verbose" + fi + cat << EOF +echo "Hold Left-Shift for menu.." +if sleep$verbose --interruptible ${1} ; then + if keystatus --shift; then + set timeout=-1 + else + set timeout=0 + fi +fi +EOF + else + cat << EOF +set timeout=${2} +EOF + fi +} + +if [ "x$GRUB_BUTTON_CMOS_ADDRESS" != "x" ]; then + cat <<EOF +if cmostest $GRUB_BUTTON_CMOS_ADDRESS ; then +EOF +make_timeout "${GRUB_HIDDEN_TIMEOUT_BUTTON}" "${GRUB_TIMEOUT_BUTTON}" +echo else +make_timeout "${GRUB_HIDDEN_TIMEOUT}" "${GRUB_TIMEOUT}" +echo fi +else +make_timeout "${GRUB_HIDDEN_TIMEOUT}" "${GRUB_TIMEOUT}" +fi + +if [ "x$GRUB_BUTTON_CMOS_ADDRESS" != "x" ] && [ "x$GRUB_BUTTON_CMOS_CLEAN" = "xyes" ]; then + cat <<EOF +cmosclean $GRUB_BUTTON_CMOS_ADDRESS +EOF +fi + +# Play an initial tune +if [ "x${GRUB_INIT_TUNE}" != "x" ] ; then + echo "play ${GRUB_INIT_TUNE}" +fi + +if [ "x${GRUB_BADRAM}" != "x" ] ; then + echo "badram ${GRUB_BADRAM}" +fi diff --git a/sysutils/grub2-pcbsd/files/10_kfreebsd.in b/sysutils/grub2-pcbsd/files/10_kfreebsd.in new file mode 100644 index 000000000000..d9d0dfb0009d --- /dev/null +++ b/sysutils/grub2-pcbsd/files/10_kfreebsd.in @@ -0,0 +1,247 @@ +#! /bin/sh +set -e + +# grub-mkconfig helper script. +# Copyright (C) 2006,2007,2008,2009,2010,2011 Free Software Foundation, Inc. +# +# GRUB is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# GRUB is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GRUB. If not, see <http://www.gnu.org/licenses/>. + +# Check if we have beadm installed, if not do normal freebsd detection +if [ -e "/usr/local/sbin/beadm" ] ; then exit 0; fi + +prefix="@prefix@" +exec_prefix="@exec_prefix@" +datarootdir="@datarootdir@" +. "$pkgdatadir/grub-mkconfig_lib" + +export TEXTDOMAIN=@PACKAGE@ +export TEXTDOMAINDIR="@localedir@" + +CLASS="--class os" + +case "${GRUB_DISTRIBUTOR}" in + Debian) + OS="${GRUB_DISTRIBUTOR} GNU/kFreeBSD" + CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') --class gnu-kfreebsd --class gnu ${CLASS}" + ;; + *) + OS="FreeBSD" + CLASS="--class freebsd --class bsd ${CLASS}" + ;; +esac + +load_kfreebsd_module () +{ + mod="$1" + allow_fail="$2" + + if ! test -e "${module_dir}/${mod}.ko" ; then + if [ "${allow_fail}" = "true" ] ; then + # Return silently + return + else + # Print an error and fail. + ls "${module_dir}/${mod}.ko" > /dev/null + fi + fi + + if [ -z "${prepare_module_dir_cache}" ]; then + prepare_module_dir_cache="$(prepare_grub_to_access_device $(${grub_probe} -t device "${module_dir}") | grub_add_tab)" + fi + + printf '%s\n' "${prepare_module_dir_cache}" + cat << EOF + kfreebsd_module_elf ${module_dir_rel}/${mod}.ko +EOF +} + +title_correction_code= + +kfreebsd_entry () +{ + os="$1" + version="$2" + type="$3" + args="$4" + if [ -z "$boot_device_id" ]; then + boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")" + fi + if [ x$type != xsimple ] ; then + if [ x$type = xrecovery ] ; then + title="$(gettext_printf "%s, with kFreeBSD %s (recovery mode)" "${os}" "${version}")" + else + title="$(gettext_printf "%s, with kFreeBSD %s" "${os}" "${version}")" + fi + replacement_title="$(echo "Advanced options for ${OS}" | sed 's,>,>>,g')>$(echo "$title" | sed 's,>,>>,g')" + if [ x"$title" = x"$GRUB_ACTUAL_DEFAULT" ]; then + quoted="$(echo "$GRUB_ACTUAL_DEFAULT" | grub_quote)" + title_correction_code="${title_correction_code}if [ \"x\$default\" = '$quoted' ]; then default='$(echo "$replacement_title" | grub_quote)'; fi;" + grub_warn "$(gettext_printf "Please don't use old title \`%s' for GRUB_DEFAULT, use \`%s' (for versions before 2.00) or \`%s' (for 2.00 or later)" "$GRUB_ACTUAL_DEFAULT" "$replacement_title" "kfreebsd-advanced-$boot_device_id>kfreebsd-$version-$type-$boot_device_id")" + fi + echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'kfreebsd-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/" + else + echo "menuentry '$(echo "$OS" | grub_quote)' ${CLASS} \$menuentry_id_option 'kfreebsd-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/" + fi + if [ x$type != xrecovery ] ; then + save_default_entry | grub_add_tab | sed "s/^/$submenu_indentation/" + fi + if [ -z "${prepare_boot_cache}" ]; then + prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | grub_add_tab)" + fi + + printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/" + message="$(gettext_printf "Loading kernel of FreeBSD %s ..." ${version})" + sed "s/^/$submenu_indentation/" << EOF + echo '$(echo "$message" | grub_quote)' + kfreebsd ${rel_dirname}/${basename} ${args} +EOF + + if test -n "${devices}" ; then + sed "s/^/$submenu_indentation/" << EOF + kfreebsd_loadenv ${devices_rel_dirname}/${devices_basename} +EOF + fi + + load_kfreebsd_module acpi true + + for abstraction in dummy $(${grub_probe} -t abstraction --device ${GRUB_DEVICE}) ; do + case $abstraction in + lvm) load_kfreebsd_module geom_linux_lvm false ;; + esac + done + + case "${kfreebsd_fs}" in + zfs) + load_kfreebsd_module opensolaris false + + ls "/boot/zfs/zpool.cache" > /dev/null + printf '%s\n' "${prepare_boot_cache}" + sed "s/^/$submenu_indentation/" << EOF + kfreebsd_module $(make_system_path_relative_to_its_root /boot)/zfs/zpool.cache type=/boot/zfs/zpool.cache +EOF + ;; + esac + + if [ x${kfreebsd_fs} = xufs ]; then + load_kfreebsd_module ${kfreebsd_fs} true | sed "s/^/$submenu_indentation/" + else + load_kfreebsd_module ${kfreebsd_fs} false | sed "s/^/$submenu_indentation/" + fi + + sed "s/^/$submenu_indentation/" << EOF + set kFreeBSD.vfs.root.mountfrom=${kfreebsd_fs}:${kfreebsd_device} + set kFreeBSD.vfs.root.mountfrom.options=rw +} +EOF +} + +list= +for i in /boot/kfreebsd-* /boot/kernel/kernel ; do + if grub_file_is_not_garbage "$i" ; then + list="$list $i" + fi +done +prepare_boot_cache= +boot_device_id= +title_correction_code= + +# Extra indentation to add to menu entries in a submenu. We're not in a submenu +# yet, so it's empty. In a submenu it will be equal to '\t' (one tab). +submenu_indentation="" + +is_top_level=true + +while [ "x$list" != "x" ] ; do + kfreebsd=`version_find_latest $list` + gettext_printf "Found kernel of FreeBSD: %s\n" "$kfreebsd" >&2 + basename=`basename $kfreebsd` + dirname=`dirname $kfreebsd` + rel_dirname=`make_system_path_relative_to_its_root $dirname` + + if [ -f /boot/device.hints ] ; then + devices=/boot/device.hints + devices_basename=`basename $devices` + devices_dirname=`dirname $devices` + devices_rel_dirname=`make_system_path_relative_to_its_root $devices_dirname` + fi + + case ${GRUB_FS} in + ufs1 | ufs2) kfreebsd_fs=ufs ;; + ext2) kfreebsd_fs=ext2fs ;; + *) kfreebsd_fs=${GRUB_FS} ;; + esac + + case ${GRUB_FS} in + zfs) + # zpool name + kfreebsd_device=$(${grub_probe} -t fs_label --device ${GRUB_DEVICE}) + # filesystem name (empty string for the main filesystem) + kfreebsd_device="${kfreebsd_device}$(${grub_mkrelpath} / | sed -e "s,/*@$,,")" + ;; + *) + kfreebsd_device=${kfreebsd_fs}id/${GRUB_DEVICE_UUID} + # Debian GNU/kFreeBSD can't remount root if it's supplied as UUID but + # as an UUID + if [ "x${GRUB_DISTRIBUTOR}" = "xDebian" ] \ + && ! (cat /etc/fstab | awk '!/^[[:space:]]*#/ && $2=="/" { print $1; }' \ + | grep "${kfreebsd_fs}id/${GRUB_DEVICE_UUID}" > /dev/null); then + kfreebsd_device=${GRUB_DEVICE} + fi + ;; + esac + + version=`echo $basename | sed -e "s,^[^0-9]*-,,g;s/\.gz$//g"` + alt_version=`echo $version | sed -e "s,\.old$,,g"` + + module_dir= + for i in "/lib/modules/${version}" "/lib/modules/${alt_version}" \ + "/boot/kernel"; do + if test -e "$i" ; then + module_dir="$i" + break + fi + done + if test -n "${module_dir}" ; then + gettext_printf "Found kernel module directory: %s\n" "${module_dir}" >&2 + module_dir_rel=$(make_system_path_relative_to_its_root $module_dir) + fi + + if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then + kfreebsd_entry "${OS}" "${version}" simple + submenu_indentation="$grub_tab" + + if [ -z "$boot_device_id" ]; then + boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")" + fi + # TRANSLATORS: %s is replaced with an OS name + echo "submenu '$(gettext_printf "Advanced options for %s" "${OS}" | grub_quote)' \$menuentry_id_option 'kfreebsd-advanced-$boot_device_id' {" + is_top_level=false + fi + + kfreebsd_entry "${OS}" "${version}" advanced + if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then + kfreebsd_entry "${OS}" "${version}" recovery "-s" + fi + + list=`echo $list | tr ' ' '\n' | fgrep -vx "$kfreebsd" | tr '\n' ' '` +done + +# If at least one kernel was found, then we need to +# add a closing '}' for the submenu command. +if [ x"$is_top_level" != xtrue ]; then + echo '}' +fi + +echo "$title_correction_code" + diff --git a/sysutils/grub2-pcbsd/files/10_ktrueos.in b/sysutils/grub2-pcbsd/files/10_ktrueos.in new file mode 100644 index 000000000000..15410ac18d8a --- /dev/null +++ b/sysutils/grub2-pcbsd/files/10_ktrueos.in @@ -0,0 +1,389 @@ +#!/bin/sh +# +# Copyright 2015 iXsystems (Kris Moore) +# All rights reserved +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted providing that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +# Script to detect TrueOS / PC-BSD disk installations and create grub +# entries for them + +# Check if we have beadm installed, if not skip this file +if [ ! -e "/usr/local/sbin/beadm" ] ; then exit 0; fi + +ROOTFS=`mount | awk '/ \/ / {print $1}'` +BEDS="$( echo ${ROOTFS} | awk -F '/' '{print $2}' )" +if [ "$BEDS" = "dev" ] ; then BEDS="ROOT"; fi + +serial=0; +console=0; +for x in ${GRUB_TERMINAL_OUTPUT}; do + if [ xserial = "x$x" ]; then + serial=1; + fi + if [ xgfxterm = "x$x" ]; then + console=1; + fi + if [ xconsole = "x$x" ]; then + console=1; + fi +done + +if [ "x$serial" = "x1" ]; then + if [ "x$console" = "x1" ]; then + out="-Dh" + else + out="-h" + fi +fi + +display_loaderopts() +{ + # Optional ARG1, set to a ZFS dataset to mount and read values from + if [ -n "$1" ] ; then + fMnt="/mnt.$$" + mkdir $fMnt + mount -t zfs ${1} $fMnt >/dev/null + if [ $? -ne 0 ] ; then + echo "Failed to mount ${1}" >&2 + return + fi + else + fMnt="" + fi + + # Create our placeholder to save _load entries to parse + touch /tmp/.lRObjs.$$ + touch /tmp/.lSysCtls.$$ + + # Loader files, in order of which to read them + lFiles="${fMnt}/boot/loader.conf.local ${fMnt}/boot/loader.conf ${fMnt}/boot/loader.conf.trueos ${fMnt}/boot/loader.conf.pcbsd" + for f in $lFiles + do + if [ ! -e "$f" ] ; then continue ; fi + + # Lets parse any of the _load= lines + grep "_load=" ${f} | grep -v "^#" >/tmp/.lObjs.$$ + while read line + do + loadVal="`echo $line | cut -d '=' -f 1`" + # Is this value already set in a higher priority file? + grep -q "^${loadVal}" /tmp/.lRObjs.$$ + if [ $? -eq 0 ];then continue; fi + + # Save this value for later + echo "$line" >> /tmp/.lRObjs.$$ + haveObjs=1 + + done < /tmp/.lObjs.$$ + rm /tmp/.lObjs.$$ + + # Lets look for any sysctls to set + grep "." ${f} | grep "=" | grep -v "^#" | grep -v "_load" >/tmp/.sObjs.$$ + while read line + do + loadVal="`echo $line | cut -d '=' -f 1`" + # Is this value already set in a higher priority file? + grep -q "^${loadVal}" /tmp/.lSysCtls.$$ + if [ $? -eq 0 ];then continue; fi + + # Save this value for later + echo "$line" >> /tmp/.lSysCtls.$$ + haveSysCtls=1 + + done < /tmp/.sObjs.$$ + rm /tmp/.sObjs.$$ + done + + # Using GELI encryption? + haveGELI="false" + + # Now lets echo out the modules to load + if [ "$haveObjs" = "1" ] ; then + while read line + do + echo "$line" | grep -q '"YES"' + if [ $? -ne 0 ] ; then continue ; fi + module="`echo $line | cut -d '=' -f 1 | sed 's|_load||g'`" + # Try to locate module now + if [ -e "${fMnt}/boot/kernel/${module}.ko" ] ; then + mPath="kernel" + elif [ -e "${fMnt}/boot/modules/${module}.ko" ] ; then + mPath="modules" + else + # This isn't a module that we can see, lets set it as a variable + #echo "No such module $line, setting as a variable" >&2 + echo "$line" >> /tmp/.lSysCtls.$$ + continue + fi + + # Are we loading GELI module? + if [ "$module" = "geom_eli" ] ; then haveGELI="true" ; fi + + echo " kfreebsd_module_elf ${loadPrefix}/@/boot/${mPath}/${module}.ko" + done < /tmp/.lRObjs.$$ + fi + + # Add our compat kenv lines + echo " set kFreeBSD.bootfile=\"kernel\"" + echo " set kFreeBSD.kernel=\"kernel\"" + echo " set kFreeBSD.kernel_options=\"\"" + echo " set kFreeBSD.kernelname=\"/boot/kernel/kernel\"" + echo " set kFreeBSD.module_path=\"/boot/kernel;/boot/modules\"" + + # Any kenv to set? + if [ "$haveSysCtls" = "1" ] ; then + while read line + do + # Strip out the vfs.root.mountfrom, we set that elsewhere + echo "$line" | grep -q "vfs.root.mountfrom" + if [ $? -eq 0 ] ; then continue ; fi + + line="`echo $line | sed 's|"||g'`" + key="`echo $line | cut -d '=' -f 1`" + val="`echo $line | cut -d '=' -f 2`" + if [ -z "$key" -o -z "$val" ] ; then continue ; fi + echo " set kFreeBSD.${key}=\"${val}\"" + done < /tmp/.lSysCtls.$$ + fi + + rm /tmp/.lRObjs.$$ + rm /tmp/.lSysCtls.$$ + if [ -n "$1" ] ; then + umount /mnt.$$ >/dev/null + rmdir /mnt.$$ >/dev/null + fi + + # Set the grub.platform kenv variable + echo " set kFreeBSD.grub.platform=\"\$grub_platform\"" + + # See if we need to do GELI passphrase passthrough + if [ "$haveGELI" = "true" ] ; then + echo " set kFreeBSD.kern.geom.eli.passphrase=\"\$pass\"" + fi +} + +detect_beadm() +{ + /usr/bin/which -s beadm >/dev/null 2>/dev/null + if [ $? -ne 0 ] ; then return 0; fi + + # Check if we are running from the installer and use its beadm + if [ -e "/root/beadm.install" ] ; then + BEADM="/root/beadm.install" + + # Check if this is valid + testBE=`$BEADM list` + if [ -z "$testBE" ] ; then + # No BE's, lets switch back to regular mode + BEADM="`/usr/bin/which beadm`" + fi + else + BEADM="`/usr/bin/which beadm`" + fi + + ${BEADM} list >/dev/null 2>/dev/null + if [ $? -ne 0 ] ; then return 0; fi + + + if [ -e "/etc/defaults/pcbsd" ] ; then + NICK="PC-BSD" + else + NICK="TrueOS" + fi + + # Only list the default BE here + $BEADM list -H >/tmp/.grub-beadm.$$ 2>/dev/null + while read line + do + be=`echo $line | awk '{print $1}'` + flags=`echo $line | awk '{print $2}'` + + # Is this BE marked as wanting to be used for next boot? Make it the first one if so + if [ "$flags" = "NR" -o "$flags" = "R" ] ; then + BE_LIST="$be" + break + fi + done < /tmp/.grub-beadm.$$ + rm /tmp/.grub-beadm.$$ + + # Get list of beadm datasets + for b in $BE_LIST + do + # Got a beadm snapshot, lets get the complete dataset name + beLine=`${BEADM} list -a | grep "/$BEDS/${b}[[:space:]]"` + cdataset=`echo $beLine | awk '{print $1}'` + cdatadate=`echo $beLine | awk '{print $5}'` + cdatatime=`echo $beLine | awk '{print $6}'` + ztank=`echo $cdataset | cut -d '/' -f 1` + shortdataset="/`echo $cdataset | cut -d '/' -f 2-5`" + # Get the BE nickname if it exists + beNickName=`${BEADM} list | grep "^${b} " | tr -s ' ' | cut -d ' ' -f 7-12` + if [ -z "$beNickName" ] ; then + beNickName="$b" + fi + + # First part of this dataset + cat > /tmp/.grubdataset.$$.1 << EOF + insmod zfs + search --no-floppy -s -l $ztank +EOF + + # Second part of loader to save + cat > /tmp/.grubdataset.$$.2 << EOF + kfreebsd_module ${shortdataset}/@/boot/zfs/zpool.cache type=/boot/zfs/zpool.cache + set kFreeBSD.vfs.root.mountfrom=zfs:$cdataset +EOF + + # Now lets look for options in loader.conf to load + loadPrefix="${shortdataset}" + # If this is the current mounted dataset, we can skip mounting it + mount | grep -q -e "$cdataset on / (" -e "$cdataset on /mnt (" + if [ $? -eq 0 ] ; then + display_loaderopts >>/tmp/.grubdataset.$$.2 + else + display_loaderopts $cdataset >> /tmp/.grubdataset.$$.2 + fi + + # Lets start a submenu for each BE +cat << EOF + +submenu "${NICK} (${beNickName}) - ${cdatadate} ${cdatatime}" { +EOF + + # Lets do the default entry first + ################################# + cat << EOF + menuentry "Normal Bootup" { +EOF + # Get the dataset guts + cat /tmp/.grubdataset.$$.1 + echo " kfreebsd ${shortdataset}/@/boot/kernel/kernel ${out}" + echo " kfreebsd_loadenv ${shortdataset}@/boot/device.hints" + cat /tmp/.grubdataset.$$.2 + + # Set any options + cat << EOF + } +EOF + + # Next lets do single user mode + ################################# + cat << EOF + menuentry "Single User Mode" { +EOF + # Get the dataset guts + cat /tmp/.grubdataset.$$.1 + echo " kfreebsd ${shortdataset}/@/boot/kernel/kernel ${out} -s" + echo " kfreebsd_loadenv ${shortdataset}@/boot/device.hints" + cat /tmp/.grubdataset.$$.2 + + # Set any options + cat << EOF + } +EOF + + # Next lets do verbose mode + ################################# + cat << EOF + menuentry "Verbose Mode" { +EOF + # Get the dataset guts + cat /tmp/.grubdataset.$$.1 + echo " kfreebsd ${shortdataset}/@/boot/kernel/kernel ${out} -v" + echo " kfreebsd_loadenv ${shortdataset}@/boot/device.hints" + cat /tmp/.grubdataset.$$.2 + + # Set any options + cat << EOF + } +EOF + + if [ -e "/etc/defaults/pcbsd" ] ; then + # Next lets do display wizard + ################################# + cat << EOF + menuentry "Run the Display Wizard" { +EOF + # Get the dataset guts + cat /tmp/.grubdataset.$$.1 + echo " kfreebsd ${shortdataset}/@/boot/kernel/kernel ${out}" + echo " kfreebsd_loadenv ${shortdataset}@/boot/device.hints" + cat /tmp/.grubdataset.$$.2 + + # Set any options + cat << EOF + set kFreeBSD.runwiz=YES + } +EOF + # Now for vesa mode + ################################# + cat << EOF + menuentry "Run X in vesa mode" { +EOF + # Get the dataset guts + cat /tmp/.grubdataset.$$.1 + echo " kfreebsd ${shortdataset}/@/boot/kernel/kernel ${out}" + echo " kfreebsd_loadenv ${shortdataset}@/boot/device.hints" + cat /tmp/.grubdataset.$$.2 + + # Set any options + cat << EOF + set kFreeBSD.xvesa=YES + } +EOF + # Now for non-xorg mode + ################################# + cat << EOF + menuentry "Boot to console (Disable X)" { +EOF + # Get the dataset guts + cat /tmp/.grubdataset.$$.1 + echo " kfreebsd ${shortdataset}/@/boot/kernel/kernel ${out}" + echo " kfreebsd_loadenv ${shortdataset}@/boot/device.hints" + cat /tmp/.grubdataset.$$.2 + + # Set any options + cat << EOF + set kFreeBSD.noxorg=YES + } +EOF + fi + + + # Lastly lets close the submenu section + cat << EOF +} + +EOF + done + + # Cleanup after ourselves + if [ -e "/tmp/.grubdataset.$$.1" ] ; then + rm /tmp/.grubdataset.$$.1 + rm /tmp/.grubdataset.$$.2 + fi +} + +# Detect our types of disk layouts +detect_beadm + diff --git a/sysutils/grub2-pcbsd/files/30_os-prober.in b/sysutils/grub2-pcbsd/files/30_os-prober.in new file mode 100644 index 000000000000..4a58fdecd57f --- /dev/null +++ b/sysutils/grub2-pcbsd/files/30_os-prober.in @@ -0,0 +1,140 @@ +#!/bin/sh +# +# Copyright 2015 iXsystems (Kris Moore) +# All rights reserved +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted providing that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +# Check if we have beadm installed, if not skip this file +if [ ! -e "/usr/local/sbin/beadm" ] ; then exit 0; fi + +# Script to detect other NON BSD OS's and add to grub.cfg + +check_ntfs_part() +{ + local disk="$1" + + fs_uuid=`grub-probe --device /dev/${disk} --target=fs_uuid 2>/dev/null` + if [ -z "$fs_uuid" ] ; then + echo "Warning: Could not get fs_uuid for $disk" + return + fi + + cat << EOF +menuentry "Microsoft Windows ($disk)" { + search --no-floppy --fs-uuid --set=root $fs_uuid + chainloader +1 +} +EOF +} + +print_uefichain() { + cat << EOF +menuentry "Chainload Disk (hd${hdnum} - $1)" { + set root=('hd${hdnum},${rootpre}1') + chainloader $1 +} + +EOF +} + +if [ -e "/usr/local/etc/default/grub" ] ; then + . /usr/local/etc/default/grub +fi +if [ -n "$GRUB_NODUALBOOT" ] ; then + exit 0 +fi + +# Look for file-systems on the zpool disk +for disk in `zpool status | grep ONLINE | grep -v "state:" | awk '{print $1}'` +do + disk="`echo $disk | sed 's|.eli||g'`" + if [ ! -e "/dev/$disk" ] ; then continue ; fi + + # Get the parent disk name + parentdisk=`grub-probe --target=disk --device /dev/$disk 2>/dev/null` + parentdisk="`echo $parentdisk | sed 's|/dev/||g'`" + if [ ! -e "/dev/$parentdisk" ] ; then continue ; fi + + for ldisk in `cd /dev/ && ls ${parentdisk}s[0-9] ${parentdisk}p[0-99] 2>/dev/null` + do + fs_type=`grub-probe --device /dev/${ldisk} --target=fs 2>/dev/null` + case $fs_type in + ntfs) check_ntfs_part "$ldisk" ;; # Start checking for NTFS + *) ;; # Unknown for now, add more! + esac + done +done + +# Look for other disks to chainload +hdnum=0 +for disk in `cd /dev/ && ls ada[0-9] da[0-9] 2>/dev/null` +do + # Skip disks apart of zpool + zpool status | grep ONLINE | grep -v "state:" | grep -q "$disk" + if [ $? -eq 0 ] ; then + hdnum=`expr $hdnum + 1` + continue + fi + + # Check if the first partition on this disk is EFI + if [ -e "/dev/${disk}s1" ] ; then + fp="/dev/${disk}s1" + rootpre="" + else + fp="/dev/${disk}p1" + rootpre="gpt" + fi + + # Add UEFI chainloader + if [ "`grub-probe --device -t fs $fp 2>/dev/null`" = "fat" ] ; then + + # Lets mount the FAT partition and look for UEFI boots + uefimnt="/tmp/.grub-uefi.$$" + if [ ! -d "$uefimnt" ] ; then mkdir $uefimnt; fi + mount_msdosfs $fp $uefimnt + if [ $? -eq 0 ] ; then + if [ -e "${uefimnt}/EFI/Boot/bootx64.efi" ] ; then + print_uefichain "/EFI/Boot/bootx64.efi" + fi + cd $uefimnt + for i in `find . | grep \.efi$ | grep -v "./EFI/Boot/bootx64.efi"` + do + i="`echo $i | sed 's|\./|/|g'`" + print_uefichain "$i" + done + cd /dev + umount $uefimnt + rmdir $uefimnt + fi + + else + # Add BIOS chainloader + cat << EOF +menuentry "Chainload Disk (hd${hdnum})" { + set root=(hd${hdnum}) + chainloader +1 +} +EOF + fi + hdnum=`expr $hdnum + 1` +done diff --git a/sysutils/grub2-pcbsd/files/50_otherbe.in b/sysutils/grub2-pcbsd/files/50_otherbe.in new file mode 100644 index 000000000000..6d527cf68b82 --- /dev/null +++ b/sysutils/grub2-pcbsd/files/50_otherbe.in @@ -0,0 +1,396 @@ +#!/bin/sh +# +# Copyright 2015 iXsystems (Kris Moore) +# All rights reserved +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted providing that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +# Script to detect TrueOS / PC-BSD disk installations and create grub +# entries for them + +# Check if we have beadm installed, if not skip this file +if [ ! -e "/usr/local/sbin/beadm" ] ; then exit 0; fi + +ROOTFS=`mount | awk '/ \/ / {print $1}'` +BEDS="$( echo ${ROOTFS} | awk -F '/' '{print $2}' )" +if [ "$BEDS" = "dev" ] ; then BEDS="ROOT"; fi + +serial=0; +console=0; +for x in ${GRUB_TERMINAL_OUTPUT}; do + if [ xserial = "x$x" ]; then + serial=1; + fi + if [ xgfxterm = "x$x" ]; then + console=1; + fi + if [ xconsole = "x$x" ]; then + console=1; + fi +done + +if [ "x$serial" = "x1" ]; then + if [ "x$console" = "x1" ]; then + out="-Dh" + else + out="-h" + fi +fi + +display_loaderopts() +{ + # Optional ARG1, set to a ZFS dataset to mount and read values from + if [ -n "$1" ] ; then + fMnt="/mnt.$$" + mkdir $fMnt + mount -t zfs ${1} $fMnt >/dev/null + if [ $? -ne 0 ] ; then + echo "Failed to mount ${1}" >&2 + return + fi + else + fMnt="" + fi + + # Create our placeholder to save _load entries to parse + touch /tmp/.lRObjs.$$ + touch /tmp/.lSysCtls.$$ + + # Loader files, in order of which to read them + lFiles="${fMnt}/boot/loader.conf.local ${fMnt}/boot/loader.conf ${fMnt}/boot/loader.conf.trueos ${fMnt}/boot/loader.conf.pcbsd" + for f in $lFiles + do + if [ ! -e "$f" ] ; then continue ; fi + + # Lets parse any of the _load= lines + grep "_load=" ${f} | grep -v "^#" >/tmp/.lObjs.$$ + while read line + do + loadVal="`echo $line | cut -d '=' -f 1`" + # Is this value already set in a higher priority file? + grep -q "^${loadVal}" /tmp/.lRObjs.$$ + if [ $? -eq 0 ];then continue; fi + + # Save this value for later + echo "$line" >> /tmp/.lRObjs.$$ + haveObjs=1 + + done < /tmp/.lObjs.$$ + rm /tmp/.lObjs.$$ + + # Lets look for any sysctls to set + grep "." ${f} | grep "=" | grep -v "^#" | grep -v "_load" >/tmp/.sObjs.$$ + while read line + do + loadVal="`echo $line | cut -d '=' -f 1`" + # Is this value already set in a higher priority file? + grep -q "^${loadVal}" /tmp/.lSysCtls.$$ + if [ $? -eq 0 ];then continue; fi + + # Save this value for later + echo "$line" >> /tmp/.lSysCtls.$$ + haveSysCtls=1 + + done < /tmp/.sObjs.$$ + rm /tmp/.sObjs.$$ + done + + # Using GELI encryption? + haveGELI="false" + + # Now lets echo out the modules to load + if [ "$haveObjs" = "1" ] ; then + while read line + do + echo "$line" | grep -q '"YES"' + if [ $? -ne 0 ] ; then continue ; fi + module="`echo $line | cut -d '=' -f 1 | sed 's|_load||g'`" + # Try to locate module now + if [ -e "${fMnt}/boot/kernel/${module}.ko" ] ; then + mPath="kernel" + elif [ -e "${fMnt}/boot/modules/${module}.ko" ] ; then + mPath="modules" + else + # This isn't a module that we can see, lets set it as a variable + #echo "No such module $line, setting as a variable" >&2 + echo "$line" >> /tmp/.lSysCtls.$$ + continue + fi + + # Are we loading GELI module? + if [ "$module" = "geom_eli" ] ; then haveGELI="true" ; fi + + echo " kfreebsd_module_elf ${loadPrefix}/@/boot/${mPath}/${module}.ko" + done < /tmp/.lRObjs.$$ + fi + + # Add our compat kenv lines + echo " set kFreeBSD.bootfile=\"kernel\"" + echo " set kFreeBSD.kernel=\"kernel\"" + echo " set kFreeBSD.kernel_options=\"\"" + echo " set kFreeBSD.kernelname=\"/boot/kernel/kernel\"" + echo " set kFreeBSD.module_path=\"/boot/kernel;/boot/modules\"" + + # Any kenv to set? + if [ "$haveSysCtls" = "1" ] ; then + while read line + do + # Strip out the vfs.root.mountfrom, we set that elsewhere + echo "$line" | grep -q "vfs.root.mountfrom" + if [ $? -eq 0 ] ; then continue ; fi + + line="`echo $line | sed 's|"||g'`" + key="`echo $line | cut -d '=' -f 1`" + val="`echo $line | cut -d '=' -f 2`" + if [ -z "$key" -o -z "$val" ] ; then continue ; fi + echo " set kFreeBSD.${key}=\"${val}\"" + done < /tmp/.lSysCtls.$$ + fi + + rm /tmp/.lRObjs.$$ + rm /tmp/.lSysCtls.$$ + if [ -n "$1" ] ; then + umount /mnt.$$ >/dev/null + rmdir /mnt.$$ >/dev/null + fi + + # Set the grub.platform kenv variable + echo " set kFreeBSD.grub.platform=\"\$grub_platform\"" + + # See if we need to do GELI passphrase passthrough + if [ "$haveGELI" = "true" ] ; then + echo " set kFreeBSD.kern.geom.eli.passphrase=\"\$pass\"" + fi +} + +detect_beadm() +{ + /usr/bin/which -s beadm >/dev/null 2>/dev/null + if [ $? -ne 0 ] ; then return 0; fi + + # Check if we are running from the installer and use its beadm + if [ -e "/root/beadm.install" ] ; then + BEADM="/root/beadm.install" + + # Check if this is valid + testBE=`$BEADM list` + if [ -z "$testBE" ] ; then + # No BE's, lets switch back to regular mode + BEADM="`/usr/bin/which beadm`" + fi + else + BEADM="`/usr/bin/which beadm`" + fi + + ${BEADM} list >/dev/null 2>/dev/null + if [ $? -ne 0 ] ; then return 0; fi + + + if [ -e "/etc/defaults/pcbsd" ] ; then + NICK="PC-BSD" + else + NICK="TrueOS" + fi + + # Now we will list all the non-default BEs + $BEADM list -H >/tmp/.grub-beadm.$$ 2>/dev/null + while read line + do + be=`echo $line | awk '{print $1}'` + flags=`echo $line | awk '{print $2}'` + + # Skip the active BE + if [ "$flags" = "NR" -o "$flags" = "R" ] ; then + continue + fi + BE_LIST="${be} ${BE_LIST}" + done < /tmp/.grub-beadm.$$ + rm /tmp/.grub-beadm.$$ + + if [ -z "$BE_LIST" ] ; then return; fi + + echo "submenu \"Boot Environment Menu\" {" + + # Get list of beadm datasets + for b in $BE_LIST + do + # Got a beadm snapshot, lets get the complete dataset name + beLine=`${BEADM} list -a | grep "/$BEDS/${b}"` + cdataset=`echo $beLine | awk '{print $1}'` + cdatadate=`echo $beLine | awk '{print $5}'` + cdatatime=`echo $beLine | awk '{print $6}'` + ztank=`echo $cdataset | cut -d '/' -f 1` + shortdataset="/`echo $cdataset | cut -d '/' -f 2-5`" + # Get the BE nickname if it exists + beNickName=`${BEADM} list | grep "^${b} " | tr -s ' ' | cut -d ' ' -f 7-12` + if [ -z "$beNickName" ] ; then + beNickName="$b" + fi + + # First part of this dataset + cat > /tmp/.grubdataset.$$.1 << EOF + insmod zfs + search --no-floppy -s -l $ztank +EOF + + # Second part of loader to save + cat > /tmp/.grubdataset.$$.2 << EOF + kfreebsd_module ${shortdataset}/@/boot/zfs/zpool.cache type=/boot/zfs/zpool.cache + set kFreeBSD.vfs.root.mountfrom=zfs:$cdataset +EOF + + # Now lets look for options in loader.conf to load + loadPrefix="${shortdataset}" + # If this is the current mounted dataset, we can skip mounting it + mount | grep -q -e "$cdataset on / (" -e "$cdataset on /mnt (" + if [ $? -eq 0 ] ; then + display_loaderopts >>/tmp/.grubdataset.$$.2 + else + display_loaderopts $cdataset >> /tmp/.grubdataset.$$.2 + fi + + # Lets start a submenu for each BE +cat << EOF + +submenu "${NICK} (${beNickName}) - ${cdatadate} ${cdatatime}" { +EOF + + # Lets do the default entry first + ################################# + cat << EOF + menuentry "Normal Bootup" { +EOF + # Get the dataset guts + cat /tmp/.grubdataset.$$.1 + echo " kfreebsd ${shortdataset}/@/boot/kernel/kernel ${out}" + echo " kfreebsd_loadenv ${shortdataset}@/boot/device.hints" + cat /tmp/.grubdataset.$$.2 + + # Set any options + cat << EOF + } +EOF + + # Next lets do single user mode + ################################# + cat << EOF + menuentry "Single User Mode" { +EOF + # Get the dataset guts + cat /tmp/.grubdataset.$$.1 + echo " kfreebsd ${shortdataset}/@/boot/kernel/kernel ${out} -s" + echo " kfreebsd_loadenv ${shortdataset}@/boot/device.hints" + cat /tmp/.grubdataset.$$.2 + + # Set any options + cat << EOF + } +EOF + + # Next lets do verbose mode + ################################# + cat << EOF + menuentry "Verbose Mode" { +EOF + # Get the dataset guts + cat /tmp/.grubdataset.$$.1 + echo " kfreebsd ${shortdataset}/@/boot/kernel/kernel ${out} -v" + echo " kfreebsd_loadenv ${shortdataset}@/boot/device.hints" + cat /tmp/.grubdataset.$$.2 + + # Set any options + cat << EOF + } +EOF + + if [ -e "/etc/defaults/pcbsd" ] ; then + # Next lets do display wizard + ################################# + cat << EOF + menuentry "Run the Display Wizard" { +EOF + # Get the dataset guts + cat /tmp/.grubdataset.$$.1 + echo " kfreebsd ${shortdataset}/@/boot/kernel/kernel ${out}" + echo " kfreebsd_loadenv ${shortdataset}@/boot/device.hints" + cat /tmp/.grubdataset.$$.2 + + # Set any options + cat << EOF + set kFreeBSD.runwiz=YES + } +EOF + # Now for vesa mode + ################################# + cat << EOF + menuentry "Run X in vesa mode" { +EOF + # Get the dataset guts + cat /tmp/.grubdataset.$$.1 + echo " kfreebsd ${shortdataset}/@/boot/kernel/kernel ${out}" + echo " kfreebsd_loadenv ${shortdataset}@/boot/device.hints" + cat /tmp/.grubdataset.$$.2 + + # Set any options + cat << EOF + set kFreeBSD.xvesa=YES + } +EOF + # Now for non-xorg mode + ################################# + cat << EOF + menuentry "Boot to console (Disable X)" { +EOF + # Get the dataset guts + cat /tmp/.grubdataset.$$.1 + echo " kfreebsd ${shortdataset}/@/boot/kernel/kernel ${out}" + echo " kfreebsd_loadenv ${shortdataset}@/boot/device.hints" + cat /tmp/.grubdataset.$$.2 + + # Set any options + cat << EOF + set kFreeBSD.noxorg=YES + } +EOF + fi + + + # Lastly lets close the submenu section + cat << EOF +} + +EOF + done + + echo "}" + echo "" + + # Cleanup after ourselves + if [ -e "/tmp/.grubdataset.$$.1" ] ; then + rm /tmp/.grubdataset.$$.1 + rm /tmp/.grubdataset.$$.2 + fi +} + +# Detect our types of disk layouts +detect_beadm + diff --git a/sysutils/grub2-pcbsd/files/patch-configure.ac b/sysutils/grub2-pcbsd/files/patch-configure.ac new file mode 100644 index 000000000000..0410fc189060 --- /dev/null +++ b/sysutils/grub2-pcbsd/files/patch-configure.ac @@ -0,0 +1,20 @@ +--- configure.ac.orig 2015-06-03 14:54:01 UTC ++++ configure.ac +@@ -1459,7 +1459,7 @@ fi + + if test x"$starfield_excuse" = x; then + for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do +- for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/truetype/ttf-dejavu /usr/share/fonts/dejavu /usr/share/fonts/truetype; do ++ for dir in . /usr/src /usr/local/lib/X11/fonts/dejavu /usr/share/fonts/truetype/ttf-dejavu /usr/local/share/fonts/dejavu /usr/share/fonts/truetype; do + if test -f "$dir/DejaVuSans.$ext"; then + DJVU_FONT_SOURCE="$dir/DejaVuSans.$ext" + break 2 +@@ -1481,7 +1481,7 @@ AC_SUBST([DJVU_FONT_SOURCE]) + FONT_SOURCE= + + for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do +- for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/unifont /usr/share/fonts/uni /usr/share/fonts/truetype/unifont /usr/share/fonts/misc; do ++ for dir in . /usr/src /usr/local/lib/X11/fonts/local /usr/local/share/fonts/unifont /usr/local/share/fonts/gnu-unifont /usr/share/fonts/truetype/unifont /usr/share/fonts/misc; do + if test -f "$dir/unifont.$ext"; then + md5="$(md5sum "$dir/unifont.$ext"|awk '{ print $1; }')" + # PCF and BDF from version 6.3 isn't hanled properly by libfreetype. diff --git a/sysutils/grub2-pcbsd/files/patch-grub-core_disk_geli.c b/sysutils/grub2-pcbsd/files/patch-grub-core_disk_geli.c new file mode 100644 index 000000000000..f8d1f9bed333 --- /dev/null +++ b/sysutils/grub2-pcbsd/files/patch-grub-core_disk_geli.c @@ -0,0 +1,12 @@ +--- grub-core/disk/geli.c.orig 2015-01-30 16:34:55 UTC ++++ grub-core/disk/geli.c +@@ -445,6 +445,9 @@ recover_key (grub_disk_t source, grub_cr + if (!grub_password_get (passphrase, MAX_PASSPHRASE)) + return grub_error (GRUB_ERR_BAD_ARGUMENT, "Passphrase not supplied"); + ++ /* Set the GELI passphrase to GRUB env, for passing to FreeBSD kernel */ ++ grub_env_set ("gelipassphrase", passphrase); ++ + /* Calculate the PBKDF2 of the user supplied passphrase. */ + if (grub_le_to_cpu32 (header.niter) != 0) + { diff --git a/sysutils/grub2-pcbsd/files/patch-grub-core_lib_libgcrypt_src_types.h b/sysutils/grub2-pcbsd/files/patch-grub-core_lib_libgcrypt_src_types.h new file mode 100644 index 000000000000..9b353e42f498 --- /dev/null +++ b/sysutils/grub2-pcbsd/files/patch-grub-core_lib_libgcrypt_src_types.h @@ -0,0 +1,11 @@ +--- grub-core/lib/libgcrypt/src/types.h.orig 2014-03-03 16:00:26 UTC ++++ grub-core/lib/libgcrypt/src/types.h +@@ -113,6 +113,8 @@ + #endif + #endif + ++typedef uint64_t u64; ++ + typedef union { + int a; + short b; diff --git a/sysutils/grub2-pcbsd/files/patch-grub-core_loader_i386_bsd.c b/sysutils/grub2-pcbsd/files/patch-grub-core_loader_i386_bsd.c new file mode 100644 index 000000000000..b2e3d9793f4f --- /dev/null +++ b/sysutils/grub2-pcbsd/files/patch-grub-core_loader_i386_bsd.c @@ -0,0 +1,18 @@ +--- grub-core/loader/i386/bsd.c.orig 2015-01-30 16:34:55 UTC ++++ grub-core/loader/i386/bsd.c +@@ -416,11 +416,14 @@ grub_freebsd_add_meta_module (const char + grub_addr_t addr, grub_uint32_t size) + { + const char *name; +- name = grub_strrchr (filename, '/'); ++ /* Don't strip the full path, some FreeBSD functionality, such ++ * as dtrace, rely on this. Instead only strip out the portion after ZFS @ sign */ ++ name = grub_strrchr (filename, '@'); + if (name) + name++; + else + name = filename; ++ + if (grub_strcmp (type, "/boot/zfs/zpool.cache") == 0) + name = "/boot/zfs/zpool.cache"; + diff --git a/sysutils/grub2-pcbsd/files/patch-grub-core_osdep_freebsd_getroot.c b/sysutils/grub2-pcbsd/files/patch-grub-core_osdep_freebsd_getroot.c new file mode 100644 index 000000000000..a25e60121570 --- /dev/null +++ b/sysutils/grub2-pcbsd/files/patch-grub-core_osdep_freebsd_getroot.c @@ -0,0 +1,108 @@ +--- grub-core/osdep/freebsd/getroot.c.orig 2015-01-23 02:27:45 UTC ++++ grub-core/osdep/freebsd/getroot.c +@@ -296,6 +296,105 @@ grub_util_get_grub_dev_os (const char *o + return grub_dev; + } + ++int grub_util_check_geom_label(const char *name) ++{ ++ struct gmesh mesh; ++ struct gclass *class; ++ struct ggeom *geom; ++ struct gprovider *pp; ++ struct gprovider *pplabel; ++ struct gconsumer *cp; ++ const char *geom_name; ++ const char *test_name; ++ int err; ++ ++ err = geom_gettree (&mesh); ++ if (err != 0) ++ grub_util_error ("%s", _("couldn't open geom")); ++ ++ LIST_FOREACH (class, &mesh.lg_class, lg_class) ++ if (strcasecmp (class->lg_name, "label") == 0) ++ break; ++ if (!class) ++ grub_util_error ("%s", _("couldn't find geom `label' class")); ++ ++ if (strncmp (name, "/dev/", sizeof ("/dev/") - 1) == 0) ++ test_name = name + sizeof ("/dev/") - 1; ++ else ++ test_name = name; ++ ++ LIST_FOREACH (geom, &class->lg_geom, lg_geom) ++ { ++ LIST_FOREACH(pp, &geom->lg_provider, lg_provider) ++ { ++ geom_name = pp->lg_name; ++ if (strcasecmp (geom_name, test_name) != 0) ++ continue; ++ ++ LIST_FOREACH(cp, &geom->lg_consumer, lg_consumer) ++ { ++ pplabel = cp->lg_provider; ++ if (pplabel == NULL) ++ continue; ++ return 1; ++ } ++ } ++ } ++ return 0; ++} ++ ++const char * ++grub_util_convert_geom_label_to_dev (const char *name, int *full_path) ++{ ++ struct gmesh mesh; ++ struct gclass *class; ++ struct ggeom *geom; ++ struct gprovider *pp; ++ struct gprovider *pplabel; ++ struct gconsumer *cp; ++ static char buf[256]; ++ const char *geom_name; ++ int err; ++ ++ grub_util_info ("Converting label '%s' to device", name); ++ ++ err = geom_gettree (&mesh); ++ if (err != 0) ++ grub_util_error ("%s", _("couldn't open geom")); ++ ++ LIST_FOREACH (class, &mesh.lg_class, lg_class) ++ if (strcasecmp (class->lg_name, "label") == 0) ++ break; ++ if (!class) ++ grub_util_error ("%s", _("couldn't find geom `label' class")); ++ ++ ++ LIST_FOREACH (geom, &class->lg_geom, lg_geom) ++ { ++ LIST_FOREACH(pp, &geom->lg_provider, lg_provider) ++ { ++ geom_name = pp->lg_name; ++ if (strcasecmp (geom_name, name) != 0) ++ continue; ++ ++ LIST_FOREACH(cp, &geom->lg_consumer, lg_consumer) ++ { ++ pplabel = cp->lg_provider; ++ if (pplabel == NULL) ++ continue; ++ ++ if ( full_path ) ++ snprintf(buf, sizeof(buf), "/dev/%s", pplabel->lg_name); ++ else ++ snprintf(buf, sizeof(buf), "%s", pplabel->lg_name); ++ return buf; ++ } ++ } ++ } ++ grub_util_error ("%s", _("couldn't convert gptid to real device name")); ++ return 0; ++} ++ + /* FIXME: geom actually gives us the whole container hierarchy. + It can be used more efficiently than this. */ + void diff --git a/sysutils/grub2-pcbsd/files/patch-grub-core_osdep_unix_getroot.c b/sysutils/grub2-pcbsd/files/patch-grub-core_osdep_unix_getroot.c new file mode 100644 index 000000000000..824a9c552c1e --- /dev/null +++ b/sysutils/grub2-pcbsd/files/patch-grub-core_osdep_unix_getroot.c @@ -0,0 +1,15 @@ +--- grub-core/osdep/unix/getroot.c.orig 2015-06-03 14:54:01 UTC ++++ grub-core/osdep/unix/getroot.c +@@ -507,6 +507,12 @@ grub_guess_root_devices (const char *dir + if (!os_dev) + os_dev = find_root_devices_from_libzfs (dir); + ++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) ++ if (os_dev) ++ if ( grub_util_check_geom_label(os_dev) ) ++ os_dev = grub_util_convert_geom_label_to_dev (os_dev + sizeof ("/dev/") - 1, 1); ++#endif ++ + if (os_dev) + { + char **cur; diff --git a/sysutils/grub2-pcbsd/files/patch-grub-core_osdep_unix_platform.c b/sysutils/grub2-pcbsd/files/patch-grub-core_osdep_unix_platform.c new file mode 100644 index 000000000000..15b7cb871052 --- /dev/null +++ b/sysutils/grub2-pcbsd/files/patch-grub-core_osdep_unix_platform.c @@ -0,0 +1,100 @@ +--- grub-core/osdep/unix/platform.c.orig 2014-03-03 16:00:26 UTC ++++ grub-core/osdep/unix/platform.c +@@ -81,52 +81,8 @@ get_ofpathname (const char *dev) + static void + grub_install_remove_efi_entries_by_distributor (const char *efi_distributor) + { +- int fd; +- pid_t pid = grub_util_exec_pipe ((const char * []){ "efibootmgr", NULL }, &fd); +- char *line = NULL; +- size_t len = 0; +- +- if (!pid) +- { +- grub_util_warn (_("Unable to open stream from %s: %s"), +- "efibootmgr", strerror (errno)); +- return; +- } +- +- FILE *fp = fdopen (fd, "r"); +- if (!fp) +- { +- grub_util_warn (_("Unable to open stream from %s: %s"), +- "efibootmgr", strerror (errno)); +- return; +- } +- +- line = xmalloc (80); +- len = 80; +- while (1) +- { +- int ret; +- char *bootnum; +- ret = getline (&line, &len, fp); +- if (ret == -1) +- break; +- if (grub_memcmp (line, "Boot", sizeof ("Boot") - 1) != 0 +- || line[sizeof ("Boot") - 1] < '0' +- || line[sizeof ("Boot") - 1] > '9') +- continue; +- if (!strcasestr (line, efi_distributor)) +- continue; +- bootnum = line + sizeof ("Boot") - 1; +- bootnum[4] = '\0'; +- if (!verbosity) +- grub_util_exec ((const char * []){ "efibootmgr", "-q", +- "-b", bootnum, "-B", NULL }); +- else +- grub_util_exec ((const char * []){ "efibootmgr", +- "-b", bootnum, "-B", NULL }); +- } +- +- free (line); ++ // We don't have efibootmgr on FreeBSD, have to set externally ++ return; + } + + void +@@ -134,40 +90,8 @@ grub_install_register_efi (grub_device_t + const char *efifile_path, + const char *efi_distributor) + { +- const char * efidir_disk; +- int efidir_part; +- efidir_disk = grub_util_biosdisk_get_osdev (efidir_grub_dev->disk); +- efidir_part = efidir_grub_dev->disk->partition ? efidir_grub_dev->disk->partition->number + 1 : 1; +- +- if (grub_util_exec_redirect_null ((const char * []){ "efibootmgr", "--version", NULL })) +- { +- /* TRANSLATORS: This message is shown when required executable `%s' +- isn't found. */ +- grub_util_error (_("%s: not found"), "efibootmgr"); +- } +- +- /* On Linux, we need the efivars kernel modules. */ +-#ifdef __linux__ +- grub_util_exec ((const char * []){ "modprobe", "-q", "efivars", NULL }); +-#endif +- /* Delete old entries from the same distributor. */ +- grub_install_remove_efi_entries_by_distributor (efi_distributor); +- +- char *efidir_part_str = xasprintf ("%d", efidir_part); +- +- if (!verbosity) +- grub_util_exec ((const char * []){ "efibootmgr", "-q", +- "-c", "-d", efidir_disk, +- "-p", efidir_part_str, "-w", +- "-L", efi_distributor, "-l", +- efifile_path, NULL }); +- else +- grub_util_exec ((const char * []){ "efibootmgr", +- "-c", "-d", efidir_disk, +- "-p", efidir_part_str, "-w", +- "-L", efi_distributor, "-l", +- efifile_path, NULL }); +- free (efidir_part_str); ++ // We don't have efibootmgr on FreeBSD, have to set externally ++ return; + } + + void diff --git a/sysutils/grub2-pcbsd/files/patch-grub-core_partmap_gpt.c b/sysutils/grub2-pcbsd/files/patch-grub-core_partmap_gpt.c new file mode 100644 index 000000000000..5ed32e5fd0ae --- /dev/null +++ b/sysutils/grub2-pcbsd/files/patch-grub-core_partmap_gpt.c @@ -0,0 +1,20 @@ +--- grub-core/partmap/gpt.c.orig 2014-10-20 16:16:07 UTC ++++ grub-core/partmap/gpt.c +@@ -37,6 +37,7 @@ static const grub_gpt_part_type_t grub_g + + #ifdef GRUB_UTIL + static const grub_gpt_part_type_t grub_gpt_partition_type_bios_boot = GRUB_GPT_PARTITION_TYPE_BIOS_BOOT; ++static const grub_gpt_part_type_t grub_gpt_partition_type_freebsd_boot = GRUB_GPT_PARTITION_TYPE_FREEBSD_BOOT; + #endif + + /* 512 << 7 = 65536 byte sectors. */ +@@ -155,7 +156,8 @@ find_usable_region (grub_disk_t disk __a + disk->partition = p2; + + /* If there's an embed region, it is in a dedicated partition. */ +- if (! grub_memcmp (&gptdata.type, &grub_gpt_partition_type_bios_boot, 16)) ++ if (! grub_memcmp (&gptdata.type, &grub_gpt_partition_type_bios_boot, 16) || ++ ! grub_memcmp (&gptdata.type, &grub_gpt_partition_type_freebsd_boot, 16)) + { + ctx->start = p->start; + ctx->len = p->len; diff --git a/sysutils/grub2-pcbsd/files/patch-include_grub_efiemu_runtime.h b/sysutils/grub2-pcbsd/files/patch-include_grub_efiemu_runtime.h new file mode 100644 index 000000000000..272a7fc22e4a --- /dev/null +++ b/sysutils/grub2-pcbsd/files/patch-include_grub_efiemu_runtime.h @@ -0,0 +1,11 @@ +--- include/grub/efiemu/runtime.h.orig 2021-07-05 10:59:57.352037000 +0000 ++++ include/grub/efiemu/runtime.h 2021-07-05 11:02:38.126967000 +0000 +@@ -29,7 +29,7 @@ + + struct efi_variable + { +- grub_efi_guid_t guid; ++ grub_efi_packed_guid_t guid; + grub_uint32_t namelen; + grub_uint32_t size; + grub_efi_uint32_t attributes; diff --git a/sysutils/grub2-pcbsd/files/patch-include_grub_emu_getroot.h b/sysutils/grub2-pcbsd/files/patch-include_grub_emu_getroot.h new file mode 100644 index 000000000000..10e7f60c58ae --- /dev/null +++ b/sysutils/grub2-pcbsd/files/patch-include_grub_emu_getroot.h @@ -0,0 +1,11 @@ +--- include/grub/emu/getroot.h.orig 2015-01-23 02:27:45 UTC ++++ include/grub/emu/getroot.h +@@ -44,6 +44,8 @@ char *grub_util_get_grub_dev (const char + #if defined (__FreeBSD__) || defined(__FreeBSD_kernel__) + void grub_util_follow_gpart_up (const char *name, grub_disk_addr_t *off_out, + char **name_out); ++int grub_util_check_geom_label(const char *name); ++const char *grub_util_convert_geom_label_to_dev (const char *name, int *full_path); + #endif + + #include <sys/stat.h> diff --git a/sysutils/grub2-pcbsd/files/patch-include_grub_gpt__partition.h b/sysutils/grub2-pcbsd/files/patch-include_grub_gpt__partition.h new file mode 100644 index 000000000000..d8da78eea7b3 --- /dev/null +++ b/sysutils/grub2-pcbsd/files/patch-include_grub_gpt__partition.h @@ -0,0 +1,17 @@ +--- include/grub/gpt_partition.h.orig 2014-03-03 16:00:26 UTC ++++ include/grub/gpt_partition.h +@@ -43,6 +43,14 @@ typedef struct grub_gpt_part_type grub_g + { 0x74, 0x4e, 0x65, 0x65, 0x64, 0x45, 0x46, 0x49 } \ + } + ++#define GRUB_GPT_PARTITION_TYPE_FREEBSD_BOOT \ ++ { grub_cpu_to_le32_compile_time (0x83bd6b9d), \ ++ grub_cpu_to_le16_compile_time (0x7f41), \ ++ grub_cpu_to_le16_compile_time (0x11dc), \ ++ { 0xbe, 0x0b, 0x00, 0x15, 0x60, 0xb8, 0x4f, 0x0f } \ ++ } ++ ++ + #define GRUB_GPT_PARTITION_TYPE_LDM \ + { grub_cpu_to_le32_compile_time (0x5808C8AAU),\ + grub_cpu_to_le16_compile_time (0x7E8F), \ diff --git a/sysutils/grub2-pcbsd/files/patch-po_LINGUAS b/sysutils/grub2-pcbsd/files/patch-po_LINGUAS new file mode 100644 index 000000000000..2dbcb6e4d4cc --- /dev/null +++ b/sysutils/grub2-pcbsd/files/patch-po_LINGUAS @@ -0,0 +1,5 @@ +--- po/LINGUAS.orig 2015-01-30 16:30:32 UTC ++++ po/LINGUAS +@@ -1 +1 @@ +-ast ca da de de@hebrew de_CH en@arabic en@cyrillic en@greek en@hebrew en@piglatin en@quot eo es fi fr gl hu id it ja lt nb nl pa pl pt_BR ru sl sv tr uk vi zh_CN zh_TW ++ast ca da de eo es fi fr gl hu id it ja lt nb nl pa pl pt_BR ru sl sv tr uk vi zh_CN zh_TW diff --git a/sysutils/grub2-pcbsd/files/patch-util_grub-install.c b/sysutils/grub2-pcbsd/files/patch-util_grub-install.c new file mode 100644 index 000000000000..bee5b764e6db --- /dev/null +++ b/sysutils/grub2-pcbsd/files/patch-util_grub-install.c @@ -0,0 +1,19 @@ +--- util/grub-install.c.orig 2015-06-03 14:54:01 UTC ++++ util/grub-install.c +@@ -236,7 +236,16 @@ argp_parser (int key, char *arg, struct + case ARGP_KEY_ARG: + if (install_device) + grub_util_error ("%s", _("More than one install device?")); ++#if defined (__FreeBSD__) || defined (__FreeBSD_kernel__) ++ /* Check if passing a FreeBSD geom label */ ++ if ( grub_util_check_geom_label(arg) ) ++ install_device = \ ++ xstrdup(grub_util_convert_geom_label_to_dev (arg + sizeof ("/dev/") - 1, 1)); ++ else ++ install_device = xstrdup (arg); ++#else + install_device = xstrdup (arg); ++#endif + return 0; + + default: diff --git a/sysutils/grub2-pcbsd/files/patch-util_grub-mkconfig.in b/sysutils/grub2-pcbsd/files/patch-util_grub-mkconfig.in new file mode 100644 index 000000000000..3fb66966ecc0 --- /dev/null +++ b/sysutils/grub2-pcbsd/files/patch-util_grub-mkconfig.in @@ -0,0 +1,14 @@ +--- util/grub-mkconfig.in.orig 2015-06-03 14:54:01 UTC ++++ util/grub-mkconfig.in +@@ -281,3 +281,11 @@ fi + + gettext "done" >&2 + echo >&2 ++ ++# If pcbsd-utils are installed, the restamp-grub command will exist ++# Use it to do the grub-install and copy grub.cfg to other BEs ++which restamp-grub >/dev/null 2>/dev/null ++if [ $? -eq 0 ] ; then ++ restamp-grub ++fi ++ diff --git a/sysutils/grub2-pcbsd/files/patch-util_grub-mkconfig__lib.in b/sysutils/grub2-pcbsd/files/patch-util_grub-mkconfig__lib.in new file mode 100644 index 000000000000..219e3c95aee8 --- /dev/null +++ b/sysutils/grub2-pcbsd/files/patch-util_grub-mkconfig__lib.in @@ -0,0 +1,21 @@ +--- util/grub-mkconfig_lib.in.orig 2015-06-03 14:54:01 UTC ++++ util/grub-mkconfig_lib.in +@@ -139,7 +139,17 @@ prepare_grub_to_access_device () + echo "insmod ${module}" + done + +- fs="`"${grub_probe}" --device $@ --target=fs`" ++ # KPM - 6-24-2013 ++ # Add this work-around since GRUB doesn't like to identify ZFS ++ # partitions which are in a raidz configuration, gives Unknown FS error ++ # We can instead look at zpool to see if this device is used though ++ zpool status 2>/dev/null | grep -q "`echo ${device} | sed 's|/dev/||g'`" ++ if [ $? -eq 0 ] ; then ++ fs="zfs" ++ else ++ fs="`"${grub_probe}" --device $@ --target=fs`" ++ fi ++ + for module in ${fs} ; do + echo "insmod ${module}" + done diff --git a/sysutils/grub2-pcbsd/files/patch-util_grub-probe.c b/sysutils/grub2-pcbsd/files/patch-util_grub-probe.c new file mode 100644 index 000000000000..eb75b0c1587e --- /dev/null +++ b/sysutils/grub2-pcbsd/files/patch-util_grub-probe.c @@ -0,0 +1,19 @@ +--- util/grub-probe.c.orig 2015-06-03 14:54:01 UTC ++++ util/grub-probe.c +@@ -805,7 +805,16 @@ argp_parser (int key, char *arg, struct + + case ARGP_KEY_ARG: + assert (arguments->ndevices < arguments->device_max); ++#if defined (__FreeBSD__) || defined (__FreeBSD_kernel__) ++ /* Check if passing a FreeBSD geom label */ ++ if ( grub_util_check_geom_label(arg) ) ++ arguments->devices[arguments->ndevices++] = \ ++ xstrdup(grub_util_convert_geom_label_to_dev (arg + sizeof ("/dev/") - 1, 1)); ++ else ++ arguments->devices[arguments->ndevices++] = xstrdup(arg); ++#else + arguments->devices[arguments->ndevices++] = xstrdup(arg); ++#endif + break; + + default: diff --git a/sysutils/grub2-pcbsd/pkg-descr b/sysutils/grub2-pcbsd/pkg-descr new file mode 100644 index 000000000000..c0099fd599d2 --- /dev/null +++ b/sysutils/grub2-pcbsd/pkg-descr @@ -0,0 +1,11 @@ +GNU GRUB is a multiboot boot loader. It was derived from GRUB, the GRand +Unified Bootloader, which was originally designed and implemented by Erich +Stefan Boleyn. + +This port does not install GRUB on the master boot record of your hard drive. +To do this you will need to read the info page that is installed by the port. + +This port includes additional patches and fixes making it work properly +with ZFS boot-environments. + +WWW: http://www.gnu.org/software/grub/ diff --git a/sysutils/grub2-pcbsd/pkg-message b/sysutils/grub2-pcbsd/pkg-message new file mode 100644 index 000000000000..8acdc7aa8683 --- /dev/null +++ b/sysutils/grub2-pcbsd/pkg-message @@ -0,0 +1,40 @@ +[ +{ type: install + message: <<EOM +To install GRUB as your boot-loader, use the following command: + +# grub-install /dev/ada0 (replace ada0 with your disk) +# grub-mkconfig -o /boot/grub/grub.cfg + +This version of GRUB can be used traditionally or with +PC-BSD style boot environments. + +Additionally, when using GPT, you must have a created a +"bios-boot" partition at install time. This partition is used +for GRUB's modules for GELI/ZFS and related bits. + +Traditional Setup +-- + +When the "beadm" utility is not present, grub-mkconfig +will use the standard GRUB detection scripts for setting +up your /boot/grub/grub.cfg file. + + +Boot Environment Setup +-- + +If the "beadm" command is installed on the system, +grub-mkconfig will use it to setup /boot/grub/grub.cfg + +For it to properly detect / populate your BE menus you +must have your root zpool setup in the following manner: + +<tank>/ROOT/<be> + +Where <tank> is your zpool, and <be> is your '/' mountpoint. +The "beadm" utility must be installed and working before using +GRUB utilities. +EOM +} +] diff --git a/sysutils/grub2-pcbsd/pkg-plist b/sysutils/grub2-pcbsd/pkg-plist new file mode 100644 index 000000000000..f10e7b6213d7 --- /dev/null +++ b/sysutils/grub2-pcbsd/pkg-plist @@ -0,0 +1,681 @@ +%%FUSE%%bin/grub-mount +%%FUSE%%man/man1/grub-mount.1.gz +%%MKFONT%%bin/grub-mkfont +%%MKFONT%%share/grub/themes/starfield/dejavu_10.pf2 +%%MKFONT%%share/grub/themes/starfield/dejavu_12.pf2 +%%MKFONT%%share/grub/themes/starfield/dejavu_bold_14.pf2 +%%MKFONT%%share/grub/themes/starfield/dejavu_14.pf2 +%%MKFONT%%share/grub/themes/starfield/dejavu_16.pf2 +%%MKFONT%%share/grub/themes/starfield/blob_w.png +%%MKFONT%%share/grub/themes/starfield/boot_menu_c.png +%%MKFONT%%share/grub/themes/starfield/boot_menu_e.png +%%MKFONT%%share/grub/themes/starfield/boot_menu_ne.png +%%MKFONT%%share/grub/themes/starfield/boot_menu_n.png +%%MKFONT%%share/grub/themes/starfield/boot_menu_nw.png +%%MKFONT%%share/grub/themes/starfield/boot_menu_se.png +%%MKFONT%%share/grub/themes/starfield/boot_menu_s.png +%%MKFONT%%share/grub/themes/starfield/boot_menu_sw.png +%%MKFONT%%share/grub/themes/starfield/boot_menu_w.png +%%MKFONT%%share/grub/themes/starfield/slider_c.png +%%MKFONT%%share/grub/themes/starfield/slider_n.png +%%MKFONT%%share/grub/themes/starfield/slider_s.png +%%MKFONT%%share/grub/themes/starfield/starfield.png +%%MKFONT%%share/grub/themes/starfield/README +%%MKFONT%%share/grub/themes/starfield/terminal_box_c.png +%%MKFONT%%share/grub/themes/starfield/terminal_box_e.png +%%MKFONT%%share/grub/themes/starfield/terminal_box_ne.png +%%MKFONT%%share/grub/themes/starfield/terminal_box_n.png +%%MKFONT%%share/grub/themes/starfield/terminal_box_nw.png +%%MKFONT%%share/grub/themes/starfield/terminal_box_se.png +%%MKFONT%%share/grub/themes/starfield/terminal_box_s.png +%%MKFONT%%share/grub/themes/starfield/terminal_box_sw.png +%%MKFONT%%share/grub/themes/starfield/terminal_box_w.png +%%MKFONT%%share/grub/themes/starfield/theme.txt +%%MKFONT%%share/grub/themes/starfield/COPYING.CC-BY-SA-3.0 +%%MKFONT%%share/grub/ascii.h +%%MKFONT%%share/grub/ascii.pf2 +%%MKFONT%%share/grub/euro.pf2 +%%MKFONT%%share/grub/unicode.pf2 +%%MKFONT%%share/grub/widthspec.h +%%MKFONT%%man/man1/grub-mkfont.1.gz +bin/grub-editenv +bin/grub-file +bin/grub-fstest +bin/grub-glue-efi +bin/grub-kbdcomp +bin/grub-menulst2cfg +bin/grub-mkimage +bin/grub-mklayout +bin/grub-mknetdir +bin/grub-mkpasswd-pbkdf2 +bin/grub-mkrelpath +bin/grub-mkrescue +bin/grub-mkstandalone +bin/grub-render-label +bin/grub-script-check +bin/grub-syslinux2cfg +etc/bash_completion.d/grub +etc/grub.d/00_header +etc/grub.d/10_kfreebsd +etc/grub.d/10_ktrueos +etc/grub.d/30_os-prober +etc/grub.d/40_custom.dist +etc/grub.d/41_custom +etc/grub.d/50_otherbe +etc/grub.d/README +lib/grub/i386-pc/acpi.mod +lib/grub/i386-pc/acpi.module +lib/grub/i386-pc/adler32.mod +lib/grub/i386-pc/adler32.module +lib/grub/i386-pc/affs.mod +lib/grub/i386-pc/affs.module +lib/grub/i386-pc/afs.mod +lib/grub/i386-pc/afs.module +lib/grub/i386-pc/ahci.mod +lib/grub/i386-pc/ahci.module +lib/grub/i386-pc/all_video.mod +lib/grub/i386-pc/all_video.module +lib/grub/i386-pc/aout.mod +lib/grub/i386-pc/aout.module +lib/grub/i386-pc/archelp.mod +lib/grub/i386-pc/archelp.module +lib/grub/i386-pc/at_keyboard.mod +lib/grub/i386-pc/at_keyboard.module +lib/grub/i386-pc/ata.mod +lib/grub/i386-pc/ata.module +lib/grub/i386-pc/backtrace.mod +lib/grub/i386-pc/backtrace.module +lib/grub/i386-pc/bfs.mod +lib/grub/i386-pc/bfs.module +lib/grub/i386-pc/biosdisk.mod +lib/grub/i386-pc/biosdisk.module +lib/grub/i386-pc/bitmap.mod +lib/grub/i386-pc/bitmap.module +lib/grub/i386-pc/bitmap_scale.mod +lib/grub/i386-pc/bitmap_scale.module +lib/grub/i386-pc/blocklist.mod +lib/grub/i386-pc/blocklist.module +lib/grub/i386-pc/boot.image +lib/grub/i386-pc/boot.img +lib/grub/i386-pc/boot.mod +lib/grub/i386-pc/boot.module +lib/grub/i386-pc/boot_hybrid.image +lib/grub/i386-pc/boot_hybrid.img +lib/grub/i386-pc/bsd.mod +lib/grub/i386-pc/bsd.module +lib/grub/i386-pc/bswap_test.mod +lib/grub/i386-pc/bswap_test.module +lib/grub/i386-pc/btrfs.mod +lib/grub/i386-pc/btrfs.module +lib/grub/i386-pc/bufio.mod +lib/grub/i386-pc/bufio.module +lib/grub/i386-pc/cat.mod +lib/grub/i386-pc/cat.module +lib/grub/i386-pc/cbfs.mod +lib/grub/i386-pc/cbfs.module +lib/grub/i386-pc/cbls.mod +lib/grub/i386-pc/cbls.module +lib/grub/i386-pc/cbmemc.mod +lib/grub/i386-pc/cbmemc.module +lib/grub/i386-pc/cbtable.mod +lib/grub/i386-pc/cbtable.module +lib/grub/i386-pc/cbtime.mod +lib/grub/i386-pc/cbtime.module +lib/grub/i386-pc/cdboot.image +lib/grub/i386-pc/cdboot.img +lib/grub/i386-pc/chain.mod +lib/grub/i386-pc/chain.module +lib/grub/i386-pc/cmdline_cat_test.mod +lib/grub/i386-pc/cmdline_cat_test.module +lib/grub/i386-pc/cmosdump.mod +lib/grub/i386-pc/cmosdump.module +lib/grub/i386-pc/cmostest.mod +lib/grub/i386-pc/cmostest.module +lib/grub/i386-pc/cmp.mod +lib/grub/i386-pc/cmp.module +lib/grub/i386-pc/cmp_test.mod +lib/grub/i386-pc/cmp_test.module +lib/grub/i386-pc/command.lst +lib/grub/i386-pc/config.h +lib/grub/i386-pc/configfile.mod +lib/grub/i386-pc/configfile.module +lib/grub/i386-pc/cpio.mod +lib/grub/i386-pc/cpio.module +lib/grub/i386-pc/cpio_be.mod +lib/grub/i386-pc/cpio_be.module +lib/grub/i386-pc/cpuid.mod +lib/grub/i386-pc/cpuid.module +lib/grub/i386-pc/crc64.mod +lib/grub/i386-pc/crc64.module +lib/grub/i386-pc/crypto.lst +lib/grub/i386-pc/crypto.mod +lib/grub/i386-pc/crypto.module +lib/grub/i386-pc/cryptodisk.mod +lib/grub/i386-pc/cryptodisk.module +lib/grub/i386-pc/cs5536.mod +lib/grub/i386-pc/cs5536.module +lib/grub/i386-pc/ctz_test.mod +lib/grub/i386-pc/ctz_test.module +lib/grub/i386-pc/date.mod +lib/grub/i386-pc/date.module +lib/grub/i386-pc/datehook.mod +lib/grub/i386-pc/datehook.module +lib/grub/i386-pc/datetime.mod +lib/grub/i386-pc/datetime.module +lib/grub/i386-pc/disk.mod +lib/grub/i386-pc/disk.module +lib/grub/i386-pc/diskboot.image +lib/grub/i386-pc/diskboot.img +lib/grub/i386-pc/diskfilter.mod +lib/grub/i386-pc/diskfilter.module +lib/grub/i386-pc/div.mod +lib/grub/i386-pc/div.module +lib/grub/i386-pc/div_test.mod +lib/grub/i386-pc/div_test.module +lib/grub/i386-pc/dm_nv.mod +lib/grub/i386-pc/dm_nv.module +lib/grub/i386-pc/drivemap.mod +lib/grub/i386-pc/drivemap.module +lib/grub/i386-pc/echo.mod +lib/grub/i386-pc/echo.module +lib/grub/i386-pc/efiemu.mod +lib/grub/i386-pc/efiemu.module +%%EFIEMU%%lib/grub/i386-pc/efiemu32.o +%%EFIEMU%%lib/grub/i386-pc/efiemu64.o +lib/grub/i386-pc/ehci.mod +lib/grub/i386-pc/ehci.module +lib/grub/i386-pc/elf.mod +lib/grub/i386-pc/elf.module +lib/grub/i386-pc/eval.mod +lib/grub/i386-pc/eval.module +lib/grub/i386-pc/exfat.mod +lib/grub/i386-pc/exfat.module +lib/grub/i386-pc/exfctest.mod +lib/grub/i386-pc/exfctest.module +lib/grub/i386-pc/ext2.mod +lib/grub/i386-pc/ext2.module +lib/grub/i386-pc/extcmd.mod +lib/grub/i386-pc/extcmd.module +lib/grub/i386-pc/fat.mod +lib/grub/i386-pc/fat.module +lib/grub/i386-pc/file.mod +lib/grub/i386-pc/file.module +lib/grub/i386-pc/font.mod +lib/grub/i386-pc/font.module +lib/grub/i386-pc/freedos.mod +lib/grub/i386-pc/freedos.module +lib/grub/i386-pc/fs.lst +lib/grub/i386-pc/fshelp.mod +lib/grub/i386-pc/fshelp.module +lib/grub/i386-pc/functional_test.mod +lib/grub/i386-pc/functional_test.module +lib/grub/i386-pc/gcry_arcfour.mod +lib/grub/i386-pc/gcry_arcfour.module +lib/grub/i386-pc/gcry_blowfish.mod +lib/grub/i386-pc/gcry_blowfish.module +lib/grub/i386-pc/gcry_camellia.mod +lib/grub/i386-pc/gcry_camellia.module +lib/grub/i386-pc/gcry_cast5.mod +lib/grub/i386-pc/gcry_cast5.module +lib/grub/i386-pc/gcry_crc.mod +lib/grub/i386-pc/gcry_crc.module +lib/grub/i386-pc/gcry_des.mod +lib/grub/i386-pc/gcry_des.module +lib/grub/i386-pc/gcry_dsa.mod +lib/grub/i386-pc/gcry_dsa.module +lib/grub/i386-pc/gcry_idea.mod +lib/grub/i386-pc/gcry_idea.module +lib/grub/i386-pc/gcry_md4.mod +lib/grub/i386-pc/gcry_md4.module +lib/grub/i386-pc/gcry_md5.mod +lib/grub/i386-pc/gcry_md5.module +lib/grub/i386-pc/gcry_rfc2268.mod +lib/grub/i386-pc/gcry_rfc2268.module +lib/grub/i386-pc/gcry_rijndael.mod +lib/grub/i386-pc/gcry_rijndael.module +lib/grub/i386-pc/gcry_rmd160.mod +lib/grub/i386-pc/gcry_rmd160.module +lib/grub/i386-pc/gcry_rsa.mod +lib/grub/i386-pc/gcry_rsa.module +lib/grub/i386-pc/gcry_seed.mod +lib/grub/i386-pc/gcry_seed.module +lib/grub/i386-pc/gcry_serpent.mod +lib/grub/i386-pc/gcry_serpent.module +lib/grub/i386-pc/gcry_sha1.mod +lib/grub/i386-pc/gcry_sha1.module +lib/grub/i386-pc/gcry_sha256.mod +lib/grub/i386-pc/gcry_sha256.module +lib/grub/i386-pc/gcry_sha512.mod +lib/grub/i386-pc/gcry_sha512.module +lib/grub/i386-pc/gcry_tiger.mod +lib/grub/i386-pc/gcry_tiger.module +lib/grub/i386-pc/gcry_twofish.mod +lib/grub/i386-pc/gcry_twofish.module +lib/grub/i386-pc/gcry_whirlpool.mod +lib/grub/i386-pc/gcry_whirlpool.module +lib/grub/i386-pc/gdb.mod +lib/grub/i386-pc/gdb.module +lib/grub/i386-pc/gdb_grub +lib/grub/i386-pc/geli.mod +lib/grub/i386-pc/geli.module +lib/grub/i386-pc/gettext.mod +lib/grub/i386-pc/gettext.module +lib/grub/i386-pc/gfxmenu.mod +lib/grub/i386-pc/gfxmenu.module +lib/grub/i386-pc/gfxterm.mod +lib/grub/i386-pc/gfxterm.module +lib/grub/i386-pc/gfxterm_background.mod +lib/grub/i386-pc/gfxterm_background.module +lib/grub/i386-pc/gfxterm_menu.mod +lib/grub/i386-pc/gfxterm_menu.module +lib/grub/i386-pc/gmodule.pl +lib/grub/i386-pc/gptsync.mod +lib/grub/i386-pc/gptsync.module +lib/grub/i386-pc/gzio.mod +lib/grub/i386-pc/gzio.module +lib/grub/i386-pc/halt.mod +lib/grub/i386-pc/halt.module +lib/grub/i386-pc/hashsum.mod +lib/grub/i386-pc/hashsum.module +lib/grub/i386-pc/hdparm.mod +lib/grub/i386-pc/hdparm.module +lib/grub/i386-pc/hello.mod +lib/grub/i386-pc/hello.module +lib/grub/i386-pc/help.mod +lib/grub/i386-pc/help.module +lib/grub/i386-pc/hexdump.mod +lib/grub/i386-pc/hexdump.module +lib/grub/i386-pc/hfs.mod +lib/grub/i386-pc/hfs.module +lib/grub/i386-pc/hfsplus.mod +lib/grub/i386-pc/hfsplus.module +lib/grub/i386-pc/hfspluscomp.mod +lib/grub/i386-pc/hfspluscomp.module +lib/grub/i386-pc/http.mod +lib/grub/i386-pc/http.module +lib/grub/i386-pc/iorw.mod +lib/grub/i386-pc/iorw.module +lib/grub/i386-pc/iso9660.mod +lib/grub/i386-pc/iso9660.module +lib/grub/i386-pc/jfs.mod +lib/grub/i386-pc/jfs.module +lib/grub/i386-pc/jpeg.mod +lib/grub/i386-pc/jpeg.module +lib/grub/i386-pc/kernel.exec +lib/grub/i386-pc/kernel.img +lib/grub/i386-pc/keylayouts.mod +lib/grub/i386-pc/keylayouts.module +lib/grub/i386-pc/keystatus.mod +lib/grub/i386-pc/keystatus.module +lib/grub/i386-pc/ldm.mod +lib/grub/i386-pc/ldm.module +lib/grub/i386-pc/legacy_password_test.mod +lib/grub/i386-pc/legacy_password_test.module +lib/grub/i386-pc/legacycfg.mod +lib/grub/i386-pc/legacycfg.module +lib/grub/i386-pc/linux.mod +lib/grub/i386-pc/linux.module +lib/grub/i386-pc/linux16.mod +lib/grub/i386-pc/linux16.module +lib/grub/i386-pc/lnxboot.image +lib/grub/i386-pc/lnxboot.img +lib/grub/i386-pc/loadenv.mod +lib/grub/i386-pc/loadenv.module +lib/grub/i386-pc/loopback.mod +lib/grub/i386-pc/loopback.module +lib/grub/i386-pc/ls.mod +lib/grub/i386-pc/ls.module +lib/grub/i386-pc/lsacpi.mod +lib/grub/i386-pc/lsacpi.module +lib/grub/i386-pc/lsapm.mod +lib/grub/i386-pc/lsapm.module +lib/grub/i386-pc/lsmmap.mod +lib/grub/i386-pc/lsmmap.module +lib/grub/i386-pc/lspci.mod +lib/grub/i386-pc/lspci.module +lib/grub/i386-pc/luks.mod +lib/grub/i386-pc/luks.module +lib/grub/i386-pc/lvm.mod +lib/grub/i386-pc/lvm.module +lib/grub/i386-pc/lzma_decompress.image +lib/grub/i386-pc/lzma_decompress.img +lib/grub/i386-pc/lzopio.mod +lib/grub/i386-pc/lzopio.module +lib/grub/i386-pc/macbless.mod +lib/grub/i386-pc/macbless.module +lib/grub/i386-pc/macho.mod +lib/grub/i386-pc/macho.module +lib/grub/i386-pc/mda_text.mod +lib/grub/i386-pc/mda_text.module +lib/grub/i386-pc/mdraid09.mod +lib/grub/i386-pc/mdraid09.module +lib/grub/i386-pc/mdraid09_be.mod +lib/grub/i386-pc/mdraid09_be.module +lib/grub/i386-pc/mdraid1x.mod +lib/grub/i386-pc/mdraid1x.module +lib/grub/i386-pc/memdisk.mod +lib/grub/i386-pc/memdisk.module +lib/grub/i386-pc/memrw.mod +lib/grub/i386-pc/memrw.module +lib/grub/i386-pc/minicmd.mod +lib/grub/i386-pc/minicmd.module +lib/grub/i386-pc/minix.mod +lib/grub/i386-pc/minix.module +lib/grub/i386-pc/minix2.mod +lib/grub/i386-pc/minix2.module +lib/grub/i386-pc/minix2_be.mod +lib/grub/i386-pc/minix2_be.module +lib/grub/i386-pc/minix3.mod +lib/grub/i386-pc/minix3.module +lib/grub/i386-pc/minix3_be.mod +lib/grub/i386-pc/minix3_be.module +lib/grub/i386-pc/minix_be.mod +lib/grub/i386-pc/minix_be.module +lib/grub/i386-pc/mmap.mod +lib/grub/i386-pc/mmap.module +lib/grub/i386-pc/moddep.lst +lib/grub/i386-pc/modinfo.sh +lib/grub/i386-pc/morse.mod +lib/grub/i386-pc/morse.module +lib/grub/i386-pc/mpi.mod +lib/grub/i386-pc/mpi.module +lib/grub/i386-pc/msdospart.mod +lib/grub/i386-pc/msdospart.module +lib/grub/i386-pc/mul_test.mod +lib/grub/i386-pc/mul_test.module +lib/grub/i386-pc/multiboot.mod +lib/grub/i386-pc/multiboot.module +lib/grub/i386-pc/multiboot2.mod +lib/grub/i386-pc/multiboot2.module +lib/grub/i386-pc/nativedisk.mod +lib/grub/i386-pc/nativedisk.module +lib/grub/i386-pc/net.mod +lib/grub/i386-pc/net.module +lib/grub/i386-pc/newc.mod +lib/grub/i386-pc/newc.module +lib/grub/i386-pc/nilfs2.mod +lib/grub/i386-pc/nilfs2.module +lib/grub/i386-pc/normal.mod +lib/grub/i386-pc/normal.module +lib/grub/i386-pc/ntfs.mod +lib/grub/i386-pc/ntfs.module +lib/grub/i386-pc/ntfscomp.mod +lib/grub/i386-pc/ntfscomp.module +lib/grub/i386-pc/ntldr.mod +lib/grub/i386-pc/ntldr.module +lib/grub/i386-pc/odc.mod +lib/grub/i386-pc/odc.module +lib/grub/i386-pc/offsetio.mod +lib/grub/i386-pc/offsetio.module +lib/grub/i386-pc/ohci.mod +lib/grub/i386-pc/ohci.module +lib/grub/i386-pc/part_acorn.mod +lib/grub/i386-pc/part_acorn.module +lib/grub/i386-pc/part_amiga.mod +lib/grub/i386-pc/part_amiga.module +lib/grub/i386-pc/part_apple.mod +lib/grub/i386-pc/part_apple.module +lib/grub/i386-pc/part_bsd.mod +lib/grub/i386-pc/part_bsd.module +lib/grub/i386-pc/part_dfly.mod +lib/grub/i386-pc/part_dfly.module +lib/grub/i386-pc/part_dvh.mod +lib/grub/i386-pc/part_dvh.module +lib/grub/i386-pc/part_gpt.mod +lib/grub/i386-pc/part_gpt.module +lib/grub/i386-pc/part_msdos.mod +lib/grub/i386-pc/part_msdos.module +lib/grub/i386-pc/part_plan.mod +lib/grub/i386-pc/part_plan.module +lib/grub/i386-pc/part_sun.mod +lib/grub/i386-pc/part_sun.module +lib/grub/i386-pc/part_sunpc.mod +lib/grub/i386-pc/part_sunpc.module +lib/grub/i386-pc/partmap.lst +lib/grub/i386-pc/parttool.lst +lib/grub/i386-pc/parttool.mod +lib/grub/i386-pc/parttool.module +lib/grub/i386-pc/password.mod +lib/grub/i386-pc/password.module +lib/grub/i386-pc/password_pbkdf2.mod +lib/grub/i386-pc/password_pbkdf2.module +lib/grub/i386-pc/pata.mod +lib/grub/i386-pc/pata.module +lib/grub/i386-pc/pbkdf2.mod +lib/grub/i386-pc/pbkdf2.module +lib/grub/i386-pc/pbkdf2_test.mod +lib/grub/i386-pc/pbkdf2_test.module +lib/grub/i386-pc/pci.mod +lib/grub/i386-pc/pci.module +lib/grub/i386-pc/pcidump.mod +lib/grub/i386-pc/pcidump.module +lib/grub/i386-pc/plan9.mod +lib/grub/i386-pc/plan9.module +lib/grub/i386-pc/play.mod +lib/grub/i386-pc/play.module +lib/grub/i386-pc/png.mod +lib/grub/i386-pc/png.module +lib/grub/i386-pc/priority_queue.mod +lib/grub/i386-pc/priority_queue.module +lib/grub/i386-pc/probe.mod +lib/grub/i386-pc/probe.module +lib/grub/i386-pc/procfs.mod +lib/grub/i386-pc/procfs.module +lib/grub/i386-pc/progress.mod +lib/grub/i386-pc/progress.module +lib/grub/i386-pc/pxe.mod +lib/grub/i386-pc/pxe.module +lib/grub/i386-pc/pxeboot.image +lib/grub/i386-pc/pxeboot.img +lib/grub/i386-pc/pxechain.mod +lib/grub/i386-pc/pxechain.module +lib/grub/i386-pc/raid5rec.mod +lib/grub/i386-pc/raid5rec.module +lib/grub/i386-pc/raid6rec.mod +lib/grub/i386-pc/raid6rec.module +lib/grub/i386-pc/read.mod +lib/grub/i386-pc/read.module +lib/grub/i386-pc/reboot.mod +lib/grub/i386-pc/reboot.module +lib/grub/i386-pc/regexp.mod +lib/grub/i386-pc/regexp.module +lib/grub/i386-pc/reiserfs.mod +lib/grub/i386-pc/reiserfs.module +lib/grub/i386-pc/relocator.mod +lib/grub/i386-pc/relocator.module +lib/grub/i386-pc/romfs.mod +lib/grub/i386-pc/romfs.module +lib/grub/i386-pc/scsi.mod +lib/grub/i386-pc/scsi.module +lib/grub/i386-pc/search.mod +lib/grub/i386-pc/search.module +lib/grub/i386-pc/search_fs_file.mod +lib/grub/i386-pc/search_fs_file.module +lib/grub/i386-pc/search_fs_uuid.mod +lib/grub/i386-pc/search_fs_uuid.module +lib/grub/i386-pc/search_label.mod +lib/grub/i386-pc/search_label.module +lib/grub/i386-pc/sendkey.mod +lib/grub/i386-pc/sendkey.module +lib/grub/i386-pc/serial.mod +lib/grub/i386-pc/serial.module +lib/grub/i386-pc/setjmp.mod +lib/grub/i386-pc/setjmp.module +lib/grub/i386-pc/setjmp_test.mod +lib/grub/i386-pc/setjmp_test.module +lib/grub/i386-pc/setpci.mod +lib/grub/i386-pc/setpci.module +lib/grub/i386-pc/sfs.mod +lib/grub/i386-pc/sfs.module +lib/grub/i386-pc/shift_test.mod +lib/grub/i386-pc/shift_test.module +lib/grub/i386-pc/signature_test.mod +lib/grub/i386-pc/signature_test.module +lib/grub/i386-pc/sleep.mod +lib/grub/i386-pc/sleep.module +lib/grub/i386-pc/sleep_test.mod +lib/grub/i386-pc/sleep_test.module +lib/grub/i386-pc/spkmodem.mod +lib/grub/i386-pc/spkmodem.module +lib/grub/i386-pc/squash4.mod +lib/grub/i386-pc/squash4.module +lib/grub/i386-pc/syslinuxcfg.mod +lib/grub/i386-pc/syslinuxcfg.module +lib/grub/i386-pc/tar.mod +lib/grub/i386-pc/tar.module +lib/grub/i386-pc/terminal.lst +lib/grub/i386-pc/terminal.mod +lib/grub/i386-pc/terminal.module +lib/grub/i386-pc/terminfo.mod +lib/grub/i386-pc/terminfo.module +lib/grub/i386-pc/test.mod +lib/grub/i386-pc/test.module +lib/grub/i386-pc/test_blockarg.mod +lib/grub/i386-pc/test_blockarg.module +lib/grub/i386-pc/testload.mod +lib/grub/i386-pc/testload.module +lib/grub/i386-pc/testspeed.mod +lib/grub/i386-pc/testspeed.module +lib/grub/i386-pc/tftp.mod +lib/grub/i386-pc/tftp.module +lib/grub/i386-pc/tga.mod +lib/grub/i386-pc/tga.module +lib/grub/i386-pc/time.mod +lib/grub/i386-pc/time.module +lib/grub/i386-pc/tr.mod +lib/grub/i386-pc/tr.module +lib/grub/i386-pc/trig.mod +lib/grub/i386-pc/trig.module +lib/grub/i386-pc/true.mod +lib/grub/i386-pc/true.module +lib/grub/i386-pc/truecrypt.mod +lib/grub/i386-pc/truecrypt.module +lib/grub/i386-pc/udf.mod +lib/grub/i386-pc/udf.module +lib/grub/i386-pc/ufs1.mod +lib/grub/i386-pc/ufs1.module +lib/grub/i386-pc/ufs1_be.mod +lib/grub/i386-pc/ufs1_be.module +lib/grub/i386-pc/ufs2.mod +lib/grub/i386-pc/ufs2.module +lib/grub/i386-pc/uhci.mod +lib/grub/i386-pc/uhci.module +lib/grub/i386-pc/usb.mod +lib/grub/i386-pc/usb.module +lib/grub/i386-pc/usb_keyboard.mod +lib/grub/i386-pc/usb_keyboard.module +lib/grub/i386-pc/usbms.mod +lib/grub/i386-pc/usbms.module +lib/grub/i386-pc/usbserial_common.mod +lib/grub/i386-pc/usbserial_common.module +lib/grub/i386-pc/usbserial_ftdi.mod +lib/grub/i386-pc/usbserial_ftdi.module +lib/grub/i386-pc/usbserial_pl2303.mod +lib/grub/i386-pc/usbserial_pl2303.module +lib/grub/i386-pc/usbserial_usbdebug.mod +lib/grub/i386-pc/usbserial_usbdebug.module +lib/grub/i386-pc/usbtest.mod +lib/grub/i386-pc/usbtest.module +lib/grub/i386-pc/vbe.mod +lib/grub/i386-pc/vbe.module +lib/grub/i386-pc/verify.mod +lib/grub/i386-pc/verify.module +lib/grub/i386-pc/vga.mod +lib/grub/i386-pc/vga.module +lib/grub/i386-pc/vga_text.mod +lib/grub/i386-pc/vga_text.module +lib/grub/i386-pc/video.lst +lib/grub/i386-pc/video.mod +lib/grub/i386-pc/video.module +lib/grub/i386-pc/video_bochs.mod +lib/grub/i386-pc/video_bochs.module +lib/grub/i386-pc/video_cirrus.mod +lib/grub/i386-pc/video_cirrus.module +lib/grub/i386-pc/video_colors.mod +lib/grub/i386-pc/video_colors.module +lib/grub/i386-pc/video_fb.mod +lib/grub/i386-pc/video_fb.module +lib/grub/i386-pc/videoinfo.mod +lib/grub/i386-pc/videoinfo.module +lib/grub/i386-pc/videotest.mod +lib/grub/i386-pc/videotest.module +lib/grub/i386-pc/videotest_checksum.mod +lib/grub/i386-pc/videotest_checksum.module +lib/grub/i386-pc/xfs.mod +lib/grub/i386-pc/xfs.module +lib/grub/i386-pc/xnu.mod +lib/grub/i386-pc/xnu.module +lib/grub/i386-pc/xnu_uuid.mod +lib/grub/i386-pc/xnu_uuid.module +lib/grub/i386-pc/xnu_uuid_test.mod +lib/grub/i386-pc/xnu_uuid_test.module +lib/grub/i386-pc/xzio.mod +lib/grub/i386-pc/xzio.module +lib/grub/i386-pc/zfs.mod +lib/grub/i386-pc/zfs.module +lib/grub/i386-pc/zfscrypt.mod +lib/grub/i386-pc/zfscrypt.module +lib/grub/i386-pc/zfsinfo.mod +lib/grub/i386-pc/zfsinfo.module +man/man1/grub-editenv.1.gz +man/man1/grub-file.1.gz +man/man1/grub-fstest.1.gz +man/man1/grub-glue-efi.1.gz +man/man1/grub-kbdcomp.1.gz +man/man1/grub-menulst2cfg.1.gz +man/man1/grub-mkimage.1.gz +man/man1/grub-mklayout.1.gz +man/man1/grub-mknetdir.1.gz +man/man1/grub-mkpasswd-pbkdf2.1.gz +man/man1/grub-mkrelpath.1.gz +man/man1/grub-mkrescue.1.gz +man/man1/grub-mkstandalone.1.gz +man/man1/grub-render-label.1.gz +man/man1/grub-script-check.1.gz +man/man1/grub-syslinux2cfg.1.gz +man/man8/grub-bios-setup.8.gz +man/man8/grub-install.8.gz +man/man8/grub-macbless.8.gz +man/man8/grub-mkconfig.8.gz +man/man8/grub-ofpathname.8.gz +man/man8/grub-probe.8.gz +man/man8/grub-reboot.8.gz +man/man8/grub-set-default.8.gz +man/man8/grub-sparc64-setup.8.gz +sbin/grub-bios-setup +sbin/grub-install +sbin/grub-macbless +sbin/grub-mkconfig +sbin/grub-ofpathname +sbin/grub-probe +sbin/grub-reboot +sbin/grub-set-default +sbin/grub-sparc64-setup +share/grub/grub-mkconfig_lib +share/locale/ast/LC_MESSAGES/grub.mo +share/locale/ca/LC_MESSAGES/grub.mo +share/locale/da/LC_MESSAGES/grub.mo +share/locale/de/LC_MESSAGES/grub.mo +share/locale/eo/LC_MESSAGES/grub.mo +share/locale/es/LC_MESSAGES/grub.mo +share/locale/fi/LC_MESSAGES/grub.mo +share/locale/fr/LC_MESSAGES/grub.mo +share/locale/gl/LC_MESSAGES/grub.mo +share/locale/hu/LC_MESSAGES/grub.mo +share/locale/id/LC_MESSAGES/grub.mo +share/locale/it/LC_MESSAGES/grub.mo +share/locale/ja/LC_MESSAGES/grub.mo +share/locale/lt/LC_MESSAGES/grub.mo +share/locale/nb/LC_MESSAGES/grub.mo +share/locale/nl/LC_MESSAGES/grub.mo +share/locale/pa/LC_MESSAGES/grub.mo +share/locale/pl/LC_MESSAGES/grub.mo +share/locale/pt_BR/LC_MESSAGES/grub.mo +share/locale/ru/LC_MESSAGES/grub.mo +share/locale/sl/LC_MESSAGES/grub.mo +share/locale/sv/LC_MESSAGES/grub.mo +share/locale/tr/LC_MESSAGES/grub.mo +share/locale/uk/LC_MESSAGES/grub.mo +share/locale/vi/LC_MESSAGES/grub.mo +share/locale/zh_CN/LC_MESSAGES/grub.mo +share/locale/zh_TW/LC_MESSAGES/grub.mo |