* [PATCH] auto-load all partmaps in images generated by grub-mkrescue
@ 2008-03-18 20:21 Robert Millan
2008-04-13 10:58 ` Robert Millan
0 siblings, 1 reply; 2+ messages in thread
From: Robert Millan @ 2008-03-18 20:21 UTC (permalink / raw)
To: grub-devel
[-- Attachment #1: Type: text/plain, Size: 163 bytes --]
See subject :-)
--
Robert Millan
<GPLv2> I know my rights; I want my phone call!
<DRM> What use is a phone call… if you are unable to speak?
(as seen on /.)
[-- Attachment #2: rescue_partmap.diff --]
[-- Type: text/x-diff, Size: 6081 bytes --]
* gendistlist.sh (EXTRA_DISTFILES): Add `genpartmaplist.sh'.
* genmk.rb (partmap): New variable.
(CLEANFILES, PARTMAPFILES): Add #{partmap}.
(#{partmap}): New target rule.
* genpartmaplist.sh: New file.
* Makefile.in (pkglib_DATA): Add partmap.lst.
(partmap.lst): New target rule.
* util/i386/pc/grub-mkrescue.in: Generate grub.cfg that loads needed
modules (including all partition maps), instead of preloading them.
diff -x configure -x config.h.in -x CVS -x '*~' -x '*.mk' -Nurp ../grub2/gendistlist.sh ./gendistlist.sh
--- ../grub2/gendistlist.sh 2005-08-22 19:28:59.000000000 +0200
+++ ./gendistlist.sh 2008-03-18 13:30:28.000000000 +0100
@@ -1,6 +1,6 @@
#! /bin/sh
#
-# Copyright (C) 2005 Free Software Foundation, Inc.
+# Copyright (C) 2005, 2008 Free Software Foundation, Inc.
#
# This gendistlist.sh is free software; the author
# gives unlimited permission to copy and/or distribute it,
@@ -16,7 +16,7 @@
EXTRA_DISTFILES="AUTHORS COPYING ChangeLog DISTLIST INSTALL NEWS README \
THANKS TODO Makefile.in aclocal.m4 autogen.sh config.guess \
config.h.in config.sub configure configure.ac gencmdlist.sh \
- gendistlist.sh genfslist.sh genkernsyms.sh genmk.rb \
+ gendistlist.sh genfslist.sh genpartmaplist.sh genkernsyms.sh genmk.rb \
genmodsrc.sh gensymlist.sh install-sh mkinstalldirs stamp-h.in"
DISTDIRS="boot commands conf disk font fs hello include io kern loader \
diff -x configure -x config.h.in -x CVS -x '*~' -x '*.mk' -Nurp ../grub2/genmk.rb ./genmk.rb
--- ../grub2/genmk.rb 2008-02-01 16:45:16.000000000 +0100
+++ ./genmk.rb 2008-03-18 21:12:40.000000000 +0100
@@ -141,6 +141,7 @@ endif
fake_obj = File.basename(src).suffix('o')
command = 'cmd-' + obj.suffix('lst')
fs = 'fs-' + obj.suffix('lst')
+ partmap = 'partmap-' + obj.suffix('lst')
dep = deps[i]
flag = if /\.c$/ =~ src then 'CFLAGS' else 'ASFLAGS' end
extra_flags = if /\.S$/ =~ src then '-DASM_FILE=1' else '' end
@@ -150,9 +151,10 @@ endif
$(TARGET_CC) -I#{dir} -I$(srcdir)/#{dir} $(TARGET_CPPFLAGS) #{extra_flags} $(TARGET_#{flag}) $(#{prefix}_#{flag}) -MD -c -o $@ $<
-include #{dep}
-CLEANFILES += #{command} #{fs}
+CLEANFILES += #{command} #{fs} #{partmap}
COMMANDFILES += #{command}
FSFILES += #{fs}
+PARTMAPFILES += #{partmap}
#{command}: #{src} $(#{src}_DEPENDENCIES) gencmdlist.sh
set -e; \
@@ -164,6 +166,11 @@ FSFILES += #{fs}
$(TARGET_CC) -I#{dir} -I$(srcdir)/#{dir} $(TARGET_CPPFLAGS) $(TARGET_#{flag}) $(#{prefix}_#{flag}) -E $< \
| sh $(srcdir)/genfslist.sh #{symbolic_name} > $@ || (rm -f $@; exit 1)
+#{partmap}: #{src} $(#{src}_DEPENDENCIES) genpartmaplist.sh
+ set -e; \
+ $(TARGET_CC) -I#{dir} -I$(srcdir)/#{dir} $(TARGET_CPPFLAGS) $(TARGET_#{flag}) $(#{prefix}_#{flag}) -E $< \
+ | sh $(srcdir)/genpartmaplist.sh #{symbolic_name} > $@ || (rm -f $@; exit 1)
+
"
end.join('')
diff -x configure -x config.h.in -x CVS -x '*~' -x '*.mk' -Nurp ../grub2/genpartmaplist.sh ./genpartmaplist.sh
--- ../grub2/genpartmaplist.sh 1970-01-01 01:00:00.000000000 +0100
+++ ./genpartmaplist.sh 2008-03-18 13:29:32.000000000 +0100
@@ -0,0 +1,21 @@
+#! /bin/sh
+#
+# Copyright (C) 2005, 2008 Free Software Foundation, Inc.
+#
+# This script is free software; the author
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+# Read source code from stdin and detect partmap names.
+
+module=$1
+
+# For now, this emits only a module name, if the module registers a partition map.
+if grep -v "^#" | grep '^ *grub_partition_map_register' >/dev/null 2>&1; then
+ echo $module
+fi
diff -x configure -x config.h.in -x CVS -x '*~' -x '*.mk' -Nurp ../grub2/Makefile.in ./Makefile.in
--- ../grub2/Makefile.in 2008-02-09 13:31:10.000000000 +0100
+++ ./Makefile.in 2008-03-18 13:22:34.000000000 +0100
@@ -123,7 +123,7 @@ include $(srcdir)/conf/$(target_cpu)-$(p
### General targets.
CLEANFILES += $(pkglib_DATA) $(pkgdata_DATA)
-pkglib_DATA += moddep.lst command.lst fs.lst
+pkglib_DATA += moddep.lst command.lst fs.lst partmap.lst
moddep.lst: $(DEFSYMFILES) $(UNDSYMFILES) genmoddep.awk
cat $(DEFSYMFILES) /dev/null \
| $(AWK) -f $(srcdir)/genmoddep.awk $(UNDSYMFILES) > $@ \
@@ -135,6 +135,9 @@ command.lst: $(COMMANDFILES)
fs.lst: $(FSFILES)
cat $^ /dev/null | sort > $@
+partmap.lst: $(PARTMAPFILES)
+ cat $^ /dev/null | sort > $@
+
ifeq (, $(UNIFONT_HEX))
else
pkgdata_DATA += unicode.pff ascii.pff
diff -x configure -x config.h.in -x CVS -x '*~' -x '*.mk' -Nurp ../grub2/util/i386/pc/grub-mkrescue.in ./util/i386/pc/grub-mkrescue.in
--- ../grub2/util/i386/pc/grub-mkrescue.in 2008-02-09 13:31:11.000000000 +0100
+++ ./util/i386/pc/grub-mkrescue.in 2008-03-18 20:43:27.000000000 +0100
@@ -109,6 +109,11 @@ cp ${input_dir}/*.mod \
${input_dir}/command.lst ${input_dir}/moddep.lst ${input_dir}/fs.lst \
${aux_dir}/boot/grub/
+modules="biosdisk `cat ${input_dir}/partmap.lst` ${modules}"
+for i in ${modules} ; do
+ echo "insmod $i"
+done > ${aux_dir}/boot/grub/grub.cfg
+
if test "x$overlay" = x ; then : ; else
cp -dpR ${overlay}/* ${aux_dir}/
fi
@@ -121,7 +126,7 @@ if [ "x${image_type}" = "xfloppy" ] ; th
# build core.img
core_img=`mktemp`
- ${grub_mkimage} -d ${input_dir}/ -m ${memdisk_img} -o ${core_img} memdisk cpio biosdisk ${modules}
+ ${grub_mkimage} -d ${input_dir}/ -m ${memdisk_img} -o ${core_img} memdisk cpio
rm -f ${memdisk_img}
# build floppy image
@@ -130,7 +135,7 @@ if [ "x${image_type}" = "xfloppy" ] ; th
else
# build core.img
core_img=`mktemp`
- ${grub_mkimage} -d ${input_dir}/ -o ${core_img} biosdisk iso9660 ${modules}
+ ${grub_mkimage} -d ${input_dir}/ -o ${core_img} biosdisk iso9660
# build grub_eltorito image
cat ${input_dir}/cdboot.img ${core_img} > ${aux_dir}/boot/grub/grub_eltorito
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] auto-load all partmaps in images generated by grub-mkrescue
2008-03-18 20:21 [PATCH] auto-load all partmaps in images generated by grub-mkrescue Robert Millan
@ 2008-04-13 10:58 ` Robert Millan
0 siblings, 0 replies; 2+ messages in thread
From: Robert Millan @ 2008-04-13 10:58 UTC (permalink / raw)
To: grub-devel
Committed.
On Tue, Mar 18, 2008 at 09:21:35PM +0100, Robert Millan wrote:
>
> See subject :-)
>
> --
> Robert Millan
>
> <GPLv2> I know my rights; I want my phone call!
> <DRM> What use is a phone call… if you are unable to speak?
> (as seen on /.)
>
> * gendistlist.sh (EXTRA_DISTFILES): Add `genpartmaplist.sh'.
> * genmk.rb (partmap): New variable.
> (CLEANFILES, PARTMAPFILES): Add #{partmap}.
> (#{partmap}): New target rule.
> * genpartmaplist.sh: New file.
> * Makefile.in (pkglib_DATA): Add partmap.lst.
> (partmap.lst): New target rule.
> * util/i386/pc/grub-mkrescue.in: Generate grub.cfg that loads needed
> modules (including all partition maps), instead of preloading them.
>
> diff -x configure -x config.h.in -x CVS -x '*~' -x '*.mk' -Nurp ../grub2/gendistlist.sh ./gendistlist.sh
> --- ../grub2/gendistlist.sh 2005-08-22 19:28:59.000000000 +0200
> +++ ./gendistlist.sh 2008-03-18 13:30:28.000000000 +0100
> @@ -1,6 +1,6 @@
> #! /bin/sh
> #
> -# Copyright (C) 2005 Free Software Foundation, Inc.
> +# Copyright (C) 2005, 2008 Free Software Foundation, Inc.
> #
> # This gendistlist.sh is free software; the author
> # gives unlimited permission to copy and/or distribute it,
> @@ -16,7 +16,7 @@
> EXTRA_DISTFILES="AUTHORS COPYING ChangeLog DISTLIST INSTALL NEWS README \
> THANKS TODO Makefile.in aclocal.m4 autogen.sh config.guess \
> config.h.in config.sub configure configure.ac gencmdlist.sh \
> - gendistlist.sh genfslist.sh genkernsyms.sh genmk.rb \
> + gendistlist.sh genfslist.sh genpartmaplist.sh genkernsyms.sh genmk.rb \
> genmodsrc.sh gensymlist.sh install-sh mkinstalldirs stamp-h.in"
>
> DISTDIRS="boot commands conf disk font fs hello include io kern loader \
> diff -x configure -x config.h.in -x CVS -x '*~' -x '*.mk' -Nurp ../grub2/genmk.rb ./genmk.rb
> --- ../grub2/genmk.rb 2008-02-01 16:45:16.000000000 +0100
> +++ ./genmk.rb 2008-03-18 21:12:40.000000000 +0100
> @@ -141,6 +141,7 @@ endif
> fake_obj = File.basename(src).suffix('o')
> command = 'cmd-' + obj.suffix('lst')
> fs = 'fs-' + obj.suffix('lst')
> + partmap = 'partmap-' + obj.suffix('lst')
> dep = deps[i]
> flag = if /\.c$/ =~ src then 'CFLAGS' else 'ASFLAGS' end
> extra_flags = if /\.S$/ =~ src then '-DASM_FILE=1' else '' end
> @@ -150,9 +151,10 @@ endif
> $(TARGET_CC) -I#{dir} -I$(srcdir)/#{dir} $(TARGET_CPPFLAGS) #{extra_flags} $(TARGET_#{flag}) $(#{prefix}_#{flag}) -MD -c -o $@ $<
> -include #{dep}
>
> -CLEANFILES += #{command} #{fs}
> +CLEANFILES += #{command} #{fs} #{partmap}
> COMMANDFILES += #{command}
> FSFILES += #{fs}
> +PARTMAPFILES += #{partmap}
>
> #{command}: #{src} $(#{src}_DEPENDENCIES) gencmdlist.sh
> set -e; \
> @@ -164,6 +166,11 @@ FSFILES += #{fs}
> $(TARGET_CC) -I#{dir} -I$(srcdir)/#{dir} $(TARGET_CPPFLAGS) $(TARGET_#{flag}) $(#{prefix}_#{flag}) -E $< \
> | sh $(srcdir)/genfslist.sh #{symbolic_name} > $@ || (rm -f $@; exit 1)
>
> +#{partmap}: #{src} $(#{src}_DEPENDENCIES) genpartmaplist.sh
> + set -e; \
> + $(TARGET_CC) -I#{dir} -I$(srcdir)/#{dir} $(TARGET_CPPFLAGS) $(TARGET_#{flag}) $(#{prefix}_#{flag}) -E $< \
> + | sh $(srcdir)/genpartmaplist.sh #{symbolic_name} > $@ || (rm -f $@; exit 1)
> +
>
> "
> end.join('')
> diff -x configure -x config.h.in -x CVS -x '*~' -x '*.mk' -Nurp ../grub2/genpartmaplist.sh ./genpartmaplist.sh
> --- ../grub2/genpartmaplist.sh 1970-01-01 01:00:00.000000000 +0100
> +++ ./genpartmaplist.sh 2008-03-18 13:29:32.000000000 +0100
> @@ -0,0 +1,21 @@
> +#! /bin/sh
> +#
> +# Copyright (C) 2005, 2008 Free Software Foundation, Inc.
> +#
> +# This script is free software; the author
> +# gives unlimited permission to copy and/or distribute it,
> +# with or without modifications, as long as this notice is preserved.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
> +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
> +# PARTICULAR PURPOSE.
> +
> +# Read source code from stdin and detect partmap names.
> +
> +module=$1
> +
> +# For now, this emits only a module name, if the module registers a partition map.
> +if grep -v "^#" | grep '^ *grub_partition_map_register' >/dev/null 2>&1; then
> + echo $module
> +fi
> diff -x configure -x config.h.in -x CVS -x '*~' -x '*.mk' -Nurp ../grub2/Makefile.in ./Makefile.in
> --- ../grub2/Makefile.in 2008-02-09 13:31:10.000000000 +0100
> +++ ./Makefile.in 2008-03-18 13:22:34.000000000 +0100
> @@ -123,7 +123,7 @@ include $(srcdir)/conf/$(target_cpu)-$(p
> ### General targets.
>
> CLEANFILES += $(pkglib_DATA) $(pkgdata_DATA)
> -pkglib_DATA += moddep.lst command.lst fs.lst
> +pkglib_DATA += moddep.lst command.lst fs.lst partmap.lst
> moddep.lst: $(DEFSYMFILES) $(UNDSYMFILES) genmoddep.awk
> cat $(DEFSYMFILES) /dev/null \
> | $(AWK) -f $(srcdir)/genmoddep.awk $(UNDSYMFILES) > $@ \
> @@ -135,6 +135,9 @@ command.lst: $(COMMANDFILES)
> fs.lst: $(FSFILES)
> cat $^ /dev/null | sort > $@
>
> +partmap.lst: $(PARTMAPFILES)
> + cat $^ /dev/null | sort > $@
> +
> ifeq (, $(UNIFONT_HEX))
> else
> pkgdata_DATA += unicode.pff ascii.pff
> diff -x configure -x config.h.in -x CVS -x '*~' -x '*.mk' -Nurp ../grub2/util/i386/pc/grub-mkrescue.in ./util/i386/pc/grub-mkrescue.in
> --- ../grub2/util/i386/pc/grub-mkrescue.in 2008-02-09 13:31:11.000000000 +0100
> +++ ./util/i386/pc/grub-mkrescue.in 2008-03-18 20:43:27.000000000 +0100
> @@ -109,6 +109,11 @@ cp ${input_dir}/*.mod \
> ${input_dir}/command.lst ${input_dir}/moddep.lst ${input_dir}/fs.lst \
> ${aux_dir}/boot/grub/
>
> +modules="biosdisk `cat ${input_dir}/partmap.lst` ${modules}"
> +for i in ${modules} ; do
> + echo "insmod $i"
> +done > ${aux_dir}/boot/grub/grub.cfg
> +
> if test "x$overlay" = x ; then : ; else
> cp -dpR ${overlay}/* ${aux_dir}/
> fi
> @@ -121,7 +126,7 @@ if [ "x${image_type}" = "xfloppy" ] ; th
>
> # build core.img
> core_img=`mktemp`
> - ${grub_mkimage} -d ${input_dir}/ -m ${memdisk_img} -o ${core_img} memdisk cpio biosdisk ${modules}
> + ${grub_mkimage} -d ${input_dir}/ -m ${memdisk_img} -o ${core_img} memdisk cpio
> rm -f ${memdisk_img}
>
> # build floppy image
> @@ -130,7 +135,7 @@ if [ "x${image_type}" = "xfloppy" ] ; th
> else
> # build core.img
> core_img=`mktemp`
> - ${grub_mkimage} -d ${input_dir}/ -o ${core_img} biosdisk iso9660 ${modules}
> + ${grub_mkimage} -d ${input_dir}/ -o ${core_img} biosdisk iso9660
>
> # build grub_eltorito image
> cat ${input_dir}/cdboot.img ${core_img} > ${aux_dir}/boot/grub/grub_eltorito
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> http://lists.gnu.org/mailman/listinfo/grub-devel
--
Robert Millan
<GPLv2> I know my rights; I want my phone call!
<DRM> What use is a phone call… if you are unable to speak?
(as seen on /.)
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2008-04-13 10:59 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-03-18 20:21 [PATCH] auto-load all partmaps in images generated by grub-mkrescue Robert Millan
2008-04-13 10:58 ` Robert Millan
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.