From owner-svn-ports-head@FreeBSD.ORG Tue Feb 10 18:20:37 2015 Return-Path: Delivered-To: svn-ports-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2D8DA8CB; Tue, 10 Feb 2015 18:20:37 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 1872A106; Tue, 10 Feb 2015 18:20:37 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t1AIKb8h042654; Tue, 10 Feb 2015 18:20:37 GMT (envelope-from kmoore@FreeBSD.org) Received: (from kmoore@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t1AIKZtS042648; Tue, 10 Feb 2015 18:20:35 GMT (envelope-from kmoore@FreeBSD.org) Message-Id: <201502101820.t1AIKZtS042648@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: kmoore set sender to kmoore@FreeBSD.org using -f From: Kris Moore Date: Tue, 10 Feb 2015 18:20:35 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r378790 - in head/sysutils/grub2-pcbsd: . files X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-head@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: SVN commit messages for the ports tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Feb 2015 18:20:37 -0000 Author: kmoore Date: Tue Feb 10 18:20:34 2015 New Revision: 378790 URL: https://svnweb.freebsd.org/changeset/ports/378790 QAT: https://qat.redports.org/buildarchive/r378790/ Log: - Update grub2-pcbsd to bring it in sync with PC-BSD's repo - Add support for "cleaner" boot-menus, list old BEs in their own submenu - Fix an issue with geli passphrase passthrough - Bump PORTREV Added: head/sysutils/grub2-pcbsd/files/50_otherbe.in (contents, props changed) Modified: head/sysutils/grub2-pcbsd/Makefile head/sysutils/grub2-pcbsd/distinfo head/sysutils/grub2-pcbsd/files/00_header.in head/sysutils/grub2-pcbsd/files/10_ktrueos.in head/sysutils/grub2-pcbsd/pkg-plist Modified: head/sysutils/grub2-pcbsd/Makefile ============================================================================== --- head/sysutils/grub2-pcbsd/Makefile Tue Feb 10 18:03:14 2015 (r378789) +++ head/sysutils/grub2-pcbsd/Makefile Tue Feb 10 18:20:34 2015 (r378790) @@ -3,11 +3,11 @@ PORTNAME= grub2-pcbsd PORTVERSION= 2.02p -PORTREVISION= 22 +PORTREVISION= 24 CATEGORIES= sysutils MASTER_SITES= http://www.pcbsd.org/~kris/software/ \ ftp://ftp.pcbsd.org/pub/software/ -DISTNAME= grub-2.02_4 +DISTNAME= grub-2.02_5 MAINTAINER= kmoore@FreeBSD.org COMMENT= Multiboot boot loader @@ -34,7 +34,7 @@ CONFIGURE_ARGS= --disable-werror --local CONFIGURE_ENV= CPP="${CC} -E" \ LEX=${LOCALBASE}/bin/flex -SUB_FILES= 00_header 10_kfreebsd 10_ktrueos 30_os-prober +SUB_FILES= 00_header 10_kfreebsd 10_ktrueos 30_os-prober 50_otherbe OPTIONS_DEFINE= MKFONT FUSE OPTIONS_DEFAULT=MKFONT @@ -88,6 +88,7 @@ post-install: @${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 .include Modified: head/sysutils/grub2-pcbsd/distinfo ============================================================================== --- head/sysutils/grub2-pcbsd/distinfo Tue Feb 10 18:03:14 2015 (r378789) +++ head/sysutils/grub2-pcbsd/distinfo Tue Feb 10 18:20:34 2015 (r378790) @@ -1,2 +1,2 @@ -SHA256 (grub-2.02_4.tar.xz) = a83d1d5cbde835183252f640899bbe6700b7517f49d844756e0ec81d32a27309 -SIZE (grub-2.02_4.tar.xz) = 4471692 +SHA256 (grub-2.02_5.tar.xz) = ef44c89fa681c8308f847fa682c64d19e1bf296bbd7db0e282c1ecc9b0f9314a +SIZE (grub-2.02_5.tar.xz) = 4994516 Modified: head/sysutils/grub2-pcbsd/files/00_header.in ============================================================================== --- head/sysutils/grub2-pcbsd/files/00_header.in Tue Feb 10 18:03:14 2015 (r378789) +++ head/sysutils/grub2-pcbsd/files/00_header.in Tue Feb 10 18:20:34 2015 (r378790) @@ -91,7 +91,7 @@ fi export menuentry_id_option if [ x"\${gelipassphrase}" != x ]; then - set pass=\$gelipassphrase + set pass="\$gelipassphrase" export pass fi Modified: head/sysutils/grub2-pcbsd/files/10_ktrueos.in ============================================================================== --- head/sysutils/grub2-pcbsd/files/10_ktrueos.in Tue Feb 10 18:03:14 2015 (r378789) +++ head/sysutils/grub2-pcbsd/files/10_ktrueos.in Tue Feb 10 18:20:34 2015 (r378790) @@ -207,7 +207,7 @@ detect_beadm() NICK="TrueOS" fi - # Figure out which BE to list first + # Only list the default BE here $BEADM list -H >/tmp/.grub-beadm.$$ 2>/dev/null while read line do @@ -216,10 +216,9 @@ detect_beadm() # 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 $BE_LIST" - continue + BE_LIST="$be" + break fi - BE_LIST="$BE_LIST $be" done < /tmp/.grub-beadm.$$ rm /tmp/.grub-beadm.$$ @@ -233,6 +232,11 @@ detect_beadm() 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 @@ -258,8 +262,8 @@ EOF # Lets start a submenu for each BE cat << EOF -# Start TrueOS BE Submenu -submenu "${NICK} ($b) - ${cdatadate} ${cdatatime}" { + +submenu "${NICK} (${beNickName}) - ${cdatadate} ${cdatatime}" { EOF # Lets do the default entry first @@ -343,13 +347,28 @@ 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" + 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 } -# End TrueOS BE EOF done Added: head/sysutils/grub2-pcbsd/files/50_otherbe.in ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sysutils/grub2-pcbsd/files/50_otherbe.in Tue Feb 10 18:20:34 2015 (r378790) @@ -0,0 +1,392 @@ +#!/bin/sh +# +# Copyright 2014 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 + +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" + 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" + 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" + 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 + Modified: head/sysutils/grub2-pcbsd/pkg-plist ============================================================================== --- head/sysutils/grub2-pcbsd/pkg-plist Tue Feb 10 18:03:14 2015 (r378789) +++ head/sysutils/grub2-pcbsd/pkg-plist Tue Feb 10 18:20:34 2015 (r378790) @@ -157,6 +157,7 @@ etc/grub.d/00_header 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/10_kfreebsd etc/grub.d/10_ktrueos etc/grub.d/README @@ -620,6 +621,33 @@ sbin/grub-set-default sbin/grub-sparc64-setup sbin/grub-reboot 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 man/man1/grub-editenv.1.gz man/man1/grub-fstest.1.gz man/man1/grub-kbdcomp.1.gz