This config has a security problem. If a user has full acces to some partition (e.g. fto server partition) he can put grub.xen there and load his own code On Dec 12, 2013 4:38 PM, "Colin Watson" <cjwat...@ubuntu.com> wrote:
> * .gitignore: Add xen.cfg. > * Makefile.am (grub-core/xen.cfg): New rule. > (grub.xen): Likewise. Add to platform_DATA. > * configure.ac (COND_xen): New conditional. > * grub-core/Makefile.core.def (xen.cfg): New definition. > * grub-core/boot/xen/xen.cfg.in: New file. This is suitable for > installation both in the dom0 filesystem (where it will find and > chainload a secondary grub.xen) and in the domU filesystem (where it > will load a matching grub.cfg). > --- > .gitignore | 1 + > ChangeLog | 14 ++++++++++++++ > Makefile.am | 14 ++++++++++++++ > configure.ac | 1 + > grub-core/Makefile.core.def | 7 +++++++ > grub-core/boot/xen/xen.cfg.in | 31 +++++++++++++++++++++++++++++++ > 6 files changed, 68 insertions(+) > create mode 100644 grub-core/boot/xen/xen.cfg.in > > diff --git a/.gitignore b/.gitignore > index 2292cc9..51aa8b4 100644 > --- a/.gitignore > +++ b/.gitignore > @@ -153,6 +153,7 @@ trigtables.c > uhci_test > update-grub_lib > unidata.c > +xen.cfg > xzcompress_test > Makefile.in > GPATH > diff --git a/ChangeLog b/ChangeLog > index fc86601..58304f7 100644 > --- a/ChangeLog > +++ b/ChangeLog > @@ -1,5 +1,19 @@ > 2013-12-12 Colin Watson <cjwat...@ubuntu.com> > > + Build grub.xen. > + > + * .gitignore: Add xen.cfg. > + * Makefile.am (grub-core/xen.cfg): New rule. > + (grub.xen): Likewise. Add to platform_DATA. > + * configure.ac (COND_xen): New conditional. > + * grub-core/Makefile.core.def (xen.cfg): New definition. > + * grub-core/boot/xen/xen.cfg.in: New file. This is suitable for > + installation both in the dom0 filesystem (where it will find and > + chainload a secondary grub.xen) and in the domU filesystem (where > it > + will load a matching grub.cfg). > + > +2013-12-12 Colin Watson <cjwat...@ubuntu.com> > + > Accept environment variables on the command line for Xen. > > * grub-core/kern/xen/init.c (fetch_command_line_word): New > function. > diff --git a/Makefile.am b/Makefile.am > index 0a2c099..e9792f6 100644 > --- a/Makefile.am > +++ b/Makefile.am > @@ -402,6 +402,20 @@ default_payload.elf: grub-mkstandalone grub-mkimage > pkgdatadir=. ./grub-mkstandalone --grub-mkimage=./grub-mkimage -O > i386-coreboot -o $@ --modules='ahci pata ehci uhci ohci usb_keyboard usbms > part_msdos xfs ext2 fat at_keyboard part_gpt usbserial_usbdebug cbfs' > --install-modules='ls linux search configfile normal cbtime cbls memrw iorw > minicmd lsmmap lspci halt reboot hexdump pcidump regexp setpci lsacpi chain > test' --fonts= --themes= --locales= -d grub-core/ > /boot/grub/grub.cfg=$(srcdir)/coreboot.cfg > endif > > +if COND_xen > +# The grub-core/util split means that we have to duplicate rules a little > +# bit here. > +grub-core/xen.cfg: grub-core/boot/xen/xen.cfg.in > + $(MAKE) -C grub-core xen.cfg > + > +grub.xen: grub-mkstandalone grub-mkimage grub-core/xen.cfg > + pkgdatadir=. ./grub-mkstandalone --grub=mkimage=./grub-mkimage \ > + -o $@ -O $(target_cpu)-$(platform) -d grub-core/ \ > + /boot/grub/grub.cfg=grub-core/xen.cfg > + > +platform_DATA += grub.xen > +endif > + > windowsdir=$(top_builddir)/$(PACKAGE)-$(VERSION)-for-windows > windowsdir: $(PROGRAMS) $(starfield_DATA) $(platform_DATA) > test -d $(windowsdir) && rm -rf $(windowsdir) || true > diff --git a/configure.ac b/configure.ac > index 0abbb99..08aa751 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -1590,6 +1590,7 @@ AM_CONDITIONAL([COND_i386_ieee1275], [test > x$target_cpu = xi386 -a x$platform = > AM_CONDITIONAL([COND_i386_coreboot], [test x$target_cpu = xi386 -a > x$platform = xcoreboot]) > AM_CONDITIONAL([COND_i386_multiboot], [test x$target_cpu = xi386 -a > x$platform = xmultiboot]) > AM_CONDITIONAL([COND_x86_64_efi], [test x$target_cpu = xx86_64 -a > x$platform = xefi]) > +AM_CONDITIONAL([COND_xen], [test x$platform = xxen]) > AM_CONDITIONAL([COND_i386_xen], [test x$target_cpu = xi386 -a x$platform > = xxen]) > AM_CONDITIONAL([COND_x86_64_xen], [test x$target_cpu = xx86_64 -a > x$platform = xxen]) > AM_CONDITIONAL([COND_mips_loongson], [test x$target_cpu = xmipsel -a > x$platform = xloongson]) > diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def > index 060de44..63a8351 100644 > --- a/grub-core/Makefile.core.def > +++ b/grub-core/Makefile.core.def > @@ -44,6 +44,13 @@ script = { > enable = powerpc_ieee1275; > }; > > +script = { > + installdir = platform; > + name = xen.cfg; > + common = boot/xen/xen.cfg.in; > + enable = xen; > +}; > + > kernel = { > name = kernel; > > diff --git a/grub-core/boot/xen/xen.cfg.in b/grub-core/boot/xen/xen.cfg.in > new file mode 100644 > index 0000000..e2e590c > --- /dev/null > +++ b/grub-core/boot/xen/xen.cfg.in > @@ -0,0 +1,31 @@ > +if [ -z "$grub_xen_guest" ]; then > + # This is the copy of grub.xen installed in the dom0's filesystem. > + # Look for a copy in the domU's filesystem and chainload that. > This > + # allows us to guarantee that GRUB will be in sync with the > + # configuration file in the domU. The file locations here must not > + # have any configure-generated substitutions applied, as the intent > + # is that a single grub.xen should be able to cope with a variety > of > + # domU systems. > + if search --set=root --file /boot/grub/grub.xen; then > + linux /boot/grub/grub.xen grub_xen_guest=1 > + boot > + elif search --set=root --file=/boot/grub2/grub.xen; then > + linux /boot/grub2/grub.xen grub_xen_guest=1 > + boot > + else > + echo "No grub.xen found in guest filesystem. Tried:" > + echo " /boot/grub/grub.xen" > + echo " /boot/grub2/grub.xen" > + halt > + fi > +else > + # This is the copy of grub.xen installed in the domU's filesystem. > + # Read its configuration file. > + if search --set=root --exclude=memdisk --file \ > + /@bootdirname@/@grubdirname@/grub.cfg; then > + configfile /@bootdirname@/@grubdirname@/grub.cfg > + else > + echo "No /@bootdirname@/@grubdirname@/grub.cfg found in > guest filesystem." > + halt > + fi > +fi > -- > 1.8.4.4 > > _______________________________________________ > Grub-devel mailing list > Grub-devel@gnu.org > https://lists.gnu.org/mailman/listinfo/grub-devel >
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel