xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] pv-grub: Support bzip2, xz and lzo compressed kernels
@ 2013-01-04 11:56 Ian Campbell
  2013-01-04 12:15 ` Samuel Thibault
  2013-01-04 12:33 ` Bastian Blank
  0 siblings, 2 replies; 19+ messages in thread
From: Ian Campbell @ 2013-01-04 11:56 UTC (permalink / raw)
  To: xen-devel; +Cc: waldi, Ian Campbell

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@citrix.com>
Cc: waldi@debian.org
---
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

^ permalink raw reply related	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2013-09-10 19:14 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-04 11:56 [PATCH] pv-grub: Support bzip2, xz and lzo compressed kernels Ian Campbell
2013-01-04 12:15 ` Samuel Thibault
2013-01-04 12:43   ` Ian Campbell
2013-01-04 23:42     ` Samuel Thibault
2013-09-10 18:51     ` Matt Wilson
2013-09-10 19:05       ` Bastian Blank
2013-09-10 19:14         ` Matt Wilson
2013-01-04 12:33 ` Bastian Blank
2013-01-04 12:40   ` Ian Campbell
2013-02-26 22:25     ` Bastian Blank
2013-02-26 22:30       ` [RFC] libxc: Move compression support into own file Bastian Blank
2013-02-26 22:32       ` [RFC] libxc: Add trusted decompressors Bastian Blank
2013-02-27 12:17         ` Ian Campbell
2013-02-27 12:44           ` Bastian Blank
2013-02-27 14:28             ` Ian Campbell
2013-03-04 10:33             ` George Dunlap
2013-03-04 11:02               ` Tim Deegan
2013-03-12 15:21                 ` Ian Campbell
2013-03-02 20:16         ` [PATCH] " Bastian Blank

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).