[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] pv-grub: Support bzip2, xz and lzo compressed kernels
xz compressed kernels seem to be what we are starting to see in the wild, but we may as well support everything that libxc does in pv-grub. Also update the zlib library to the latest version Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> Cc: waldi@xxxxxxxxxx --- This is only build tested as I don't have a convenient pv-grub setup at the moment. As well as committing the committer should fetch the following URLs to xenbits.xen.org:/var/xenbits-www/html/xen-extfiles - http://www.zlib.net/zlib-1.2.7.tar.gz - http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz md5sum 00b516f4704d4a7cb50a1d97e6e8e15b - http://tukaani.org/xz/xz-5.0.4.tar.bz2 http://tukaani.org/xz/xz-5.0.4.tar.bz2.sig - http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz --- .gitignore | 3 ++ .hgignore | 3 ++ extras/mini-os/Makefile | 3 ++ stubdom/Makefile | 84 +++++++++++++++++++++++++++++++++++++++++++++-- stubdom/bzip2.patch | 11 ++++++ stubdom/grub/kexec.c | 6 +++ 6 files changed, 107 insertions(+), 3 deletions(-) create mode 100644 stubdom/bzip2.patch diff --git a/.gitignore b/.gitignore index f71cff8..a95183a 100644 --- a/.gitignore +++ b/.gitignore @@ -107,6 +107,9 @@ stubdom/newlib-1.* stubdom/newlib-x86* stubdom/pciutils-* stubdom/zlib-* +stubdom/bzip2-* +stubdom/xz-* +stubdom/lzo-* stubdom/grub-* stubdom/ocaml-* stubdom/lwip/ diff --git a/.hgignore b/.hgignore index 344792a..044a88a 100644 --- a/.hgignore +++ b/.hgignore @@ -102,6 +102,9 @@ ^stubdom/newlib-.*$ ^stubdom/pciutils-.*$ ^stubdom/zlib-.*$ +^stubdom/bzip2-.*$ +^stubdom/xz-.*$ +^stubdom/lzo-.*$ ^stubdom/grub-.*$ ^stubdom/ocaml-.*$ ^stubdom/lwip/ diff --git a/extras/mini-os/Makefile b/extras/mini-os/Makefile index 2302a23..717b209 100644 --- a/extras/mini-os/Makefile +++ b/extras/mini-os/Makefile @@ -159,6 +159,9 @@ APP_LDLIBS += -L$(XEN_ROOT)/stubdom/libxc-$(XEN_TARGET_ARCH) -whole-archive -lxe endif APP_LDLIBS += -lpci APP_LDLIBS += -lz +APP_LDLIBS += -lbz2 +APP_LDLIBS += -llzma +APP_LDLIBS += -llzo2 APP_LDLIBS += -lm LDLIBS += -lc endif diff --git a/stubdom/Makefile b/stubdom/Makefile index 50ba360..897ad2c 100644 --- a/stubdom/Makefile +++ b/stubdom/Makefile @@ -9,7 +9,19 @@ include $(XEN_ROOT)/Config.mk #ZLIB_URL?=http://www.zlib.net ZLIB_URL=$(XEN_EXTFILES_URL) -ZLIB_VERSION=1.2.3 +ZLIB_VERSION=1.2.7 + +#BZIP2_URL?=http://www.bzip.org/$(BZIP2_VERSION) +BZIP2_URL=$(XEN_EXTFILES_URL) +BZIP2_VERSION=1.0.6 + +#XZ_URL?=http://tukaani.org/xz +XZ_URL=$(XEN_EXTFILES_URL) +XZ_VERSION=5.0.4 + +#LZO_URL?=http://www.oberhumer.com/opensource/lzo/download +LZO_URL=$(XEN_EXTFILES_URL) +LZO_VERSION=2.06 #LIBPCI_URL?=http://www.kernel.org/pub/software/utils/pciutils LIBPCI_URL?=$(XEN_EXTFILES_URL) @@ -134,6 +146,69 @@ $(ZLIB_STAMPFILE): zlib-$(XEN_TARGET_ARCH) $(NEWLIB_STAMPFILE) $(MAKE) DESTDIR= libz.a && \ $(MAKE) DESTDIR= install ) +############ +# Cross-bzip2 +############ + +bzip2-$(BZIP2_VERSION).tar.gz: + $(WGET) $(BZIP2_URL)/$@ + +bzip2-$(XEN_TARGET_ARCH): bzip2-$(BZIP2_VERSION).tar.gz + tar xzf $< + mv bzip2-$(BZIP2_VERSION) $@ + patch -d $@ -p1 < bzip2.patch + +BZIP2_STAMPFILE=$(CROSS_ROOT)/$(GNU_TARGET_ARCH)-xen-elf/lib/libbz2.a +.PHONY: cross-bzip2 +cross-bzip2: $(BZIP2_STAMPFILE) +$(BZIP2_STAMPFILE): bzip2-$(XEN_TARGET_ARCH) $(NEWLIB_STAMPFILE) + ( cd $< && \ + $(MAKE) DESTDIR= libbz2.a && \ + $(INSTALL_DATA) libbz2.a $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/lib/ && \ + $(INSTALL_DATA) bzlib.h $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/include/ \ + ) + +############## +# Cross-xz +############## + +xz-$(XZ_VERSION).tar.bz2: + $(WGET) $(XZ_URL)/$@ + +xz-$(XEN_TARGET_ARCH): xz-$(XZ_VERSION).tar.bz2 + tar xjf $< + mv xz-$(XZ_VERSION) $@ + +XZ_STAMPFILE=$(CROSS_ROOT)/$(GNU_TARGET_ARCH)-xen-elf/lib/liblzma.a +.PHONY: cross-xz +cross-xz: $(XZ_STAMPFILE) +$(XZ_STAMPFILE): xz-$(XEN_TARGET_ARCH) $(NEWLIB_STAMPFILE) + ( cd $< && \ + CFLAGS="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS)" CC=$(CC) ./configure --prefix=$(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf && \ + cd src/liblzma && \ + $(MAKE) DESTDIR= liblzma.la && \ + $(MAKE) DESTDIR= install ) + +############## +# Cross-lzo +############## + +lzo-$(LZO_VERSION).tar.gz: + $(WGET) $(LZO_URL)/$@ + +lzo-$(XEN_TARGET_ARCH): lzo-$(LZO_VERSION).tar.gz + tar xzf $< + mv lzo-$(LZO_VERSION) $@ + +LZO_STAMPFILE=$(CROSS_ROOT)/$(GNU_TARGET_ARCH)-xen-elf/lib/liblzo2.a +.PHONY: cross-lzo +cross-lzo: $(LZO_STAMPFILE) +$(LZO_STAMPFILE): lzo-$(XEN_TARGET_ARCH) $(NEWLIB_STAMPFILE) + ( cd $< && \ + CFLAGS="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS)" CC=$(CC) ./configure --prefix=$(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf && \ + $(MAKE) DESTDIR= src/liblzo2.la && \ + $(MAKE) DESTDIR= install-libLTLIBRARIES install-pkgincludeHEADERS ) + ############## # Cross-libpci ############## @@ -281,10 +356,13 @@ $(TARGETS_MINIOS): mini-os-%: .PHONY: libxc libxc: libxc-$(XEN_TARGET_ARCH)/libxenctrl.a libxc-$(XEN_TARGET_ARCH)/libxenguest.a -libxc-$(XEN_TARGET_ARCH)/libxenctrl.a: cross-zlib +libxc-$(XEN_TARGET_ARCH)/libxenctrl.a: TARGET_CFLAGS += -DHAVE_BZLIB +libxc-$(XEN_TARGET_ARCH)/libxenctrl.a: TARGET_CFLAGS += -DHAVE_LZMA +libxc-$(XEN_TARGET_ARCH)/libxenctrl.a: TARGET_CFLAGS += -DHAVE_LZO1X +libxc-$(XEN_TARGET_ARCH)/libxenctrl.a: cross-zlib cross-bzip2 cross-xz cross-lzo CPPFLAGS="$(TARGET_CPPFLAGS)" CFLAGS="$(TARGET_CFLAGS)" $(MAKE) DESTDIR= -C libxc-$(XEN_TARGET_ARCH) - libxc-$(XEN_TARGET_ARCH)/libxenguest.a: libxc-$(XEN_TARGET_ARCH)/libxenctrl.a +libxc-$(XEN_TARGET_ARCH)/libxenguest.a: libxc-$(XEN_TARGET_ARCH)/libxenctrl.a ####### # ioemu diff --git a/stubdom/bzip2.patch b/stubdom/bzip2.patch new file mode 100644 index 0000000..ee0df30 --- /dev/null +++ b/stubdom/bzip2.patch @@ -0,0 +1,11 @@ +--- bzip2-x86_64.orig/Makefile 2013-01-04 10:56:57.000000000 +0000 ++++ bzip2-x86_64/Makefile 2013-01-04 10:57:06.000000000 +0000 +@@ -21,7 +21,7 @@ + LDFLAGS= + + BIGFILES=-D_FILE_OFFSET_BITS=64 +-CFLAGS=-Wall -Winline -O2 -g $(BIGFILES) ++CFLAGS=-Wall -Winline -O2 -g $(BIGFILES) -DBZ_NO_STDIO + + # Where you want it installed when you do 'make install' + PREFIX=/usr/local diff --git a/stubdom/grub/kexec.c b/stubdom/grub/kexec.c index b21c91a..9d10d32 100644 --- a/stubdom/grub/kexec.c +++ b/stubdom/grub/kexec.c @@ -54,6 +54,12 @@ static unsigned long allocated; int pin_table(xc_interface *xc_handle, unsigned int type, unsigned long mfn, domid_t dom); +/* Required by libbz2 */ +void bz_internal_error(int errcode) +{ + printk("BZIP2: Internal Error %d", __FUNCTION__); +} + /* We need mfn to appear as target_pfn, so exchange with the MFN there */ static void do_exchange(struct xc_dom_image *dom, xen_pfn_t target_pfn, xen_pfn_t source_mfn) { -- 1.7.2.5 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |