From: Ian Campbell <ian.campbell@citrix.com>
To: xen-devel@lists.xen.org
Cc: waldi@debian.org, Ian Campbell <ian.campbell@citrix.com>
Subject: [PATCH] pv-grub: Support bzip2, xz and lzo compressed kernels
Date: Fri, 4 Jan 2013 11:56:33 +0000 [thread overview]
Message-ID: <1357300593-28685-1-git-send-email-ian.campbell@citrix.com> (raw)
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 ++
| 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/
--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
next reply other threads:[~2013-01-04 11:56 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-04 11:56 Ian Campbell [this message]
2013-01-04 12:15 ` [PATCH] pv-grub: Support bzip2, xz and lzo compressed kernels 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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1357300593-28685-1-git-send-email-ian.campbell@citrix.com \
--to=ian.campbell@citrix.com \
--cc=waldi@debian.org \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).