From 95657b6c802e59496da1d70b188d1378e729de98 Mon Sep 17 00:00:00 2001 From: Cedric Schieli Date: Sun, 11 Apr 2010 14:31:07 +0000 Subject: Support booting on Xen (using pygrub) --- Makefile | 27 +++++++++++++++++++++++---- alpine.conf.mk | 3 ++- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index cf85a5c..151ea89 100755 --- a/Makefile +++ b/Makefile @@ -30,8 +30,15 @@ find_apk = $(addprefix $(ISO_PKGDIR)/,$(call find_apk_file,$(1))) get_apk = $(addsuffix .apk,$(shell apk fetch --simulate $(APK_OPTS) $(1) 2>&1 | sed 's:^Downloading :$(ISO_PKGDIR)/:')) expand_apk = $(shell apk search --quiet $(APK_OPTS) $(1) | sort | uniq) -KERNEL_FLAVOR_DEFAULT ?= grsec -KERNEL_FLAVOR ?= $(KERNEL_FLAVOR_DEFAULT) +ifeq ($(KERNEL_FLAVOR),) + KERNEL_FLAVOR_DEFAULT ?= grsec + KERNEL_FLAVOR_XEN ?= pae + KERNEL_FLAVOR ?= $(KERNEL_FLAVOR_DEFAULT) $(KERNEL_FLAVOR_XEN) +else + KERNEL_FLAVOR_DEFAULT ?= $(firstword $(KERNEL_FLAVOR)) + KERNEL_FLAVOR_XEN ?= pae +endif + KERNEL_PKGNAME = linux-$* KERNEL_APK = $(call get_apk,$(KERNEL_PKGNAME)) @@ -199,6 +206,9 @@ ISOLINUX := $(ISO_DIR)/$(ISOLINUX_DIR) ISOLINUX_BIN := $(ISOLINUX)/isolinux.bin ISOLINUX_CFG := $(ISOLINUX)/isolinux.cfg SYSLINUX_CFG := $(ISO_DIR)/syslinux.cfg +PYGRUB_DIR := boot/grub +PYGRUB := $(ISO_DIR)/$(PYGRUB_DIR) +PYGRUB_CFG := $(PYGRUB)/menu.lst $(ISOLINUX_BIN): @echo "==> iso: install isolinux" @@ -230,8 +240,17 @@ $(SYSLINUX_CFG): $(ALL_MODLOOP_DIRSTAMP) echo " append initrd=/boot/$$flavor.gz alpine_dev=usbdisk:vfat modules=loop,cramfs,sd-mod,usb-storage quiet"; \ done >>$@ +$(PYGRUB_CFG): + @echo "==> iso: configure pygrub" + @mkdir -p $(dir $@) + @echo "default 0" >$@ + @echo "title $(KERNEL_FLAVOR_XEN)" >>$@ + @echo "root (hd0,0)" >>$@ + @echo "kernel /boot/$(KERNEL_FLAVOR_XEN) alpine_dev=cdrom:iso9660 modules=loop,cramfs quiet xen BOOT_IMAGE=/boot/$(KERNEL_FLAVOR_XEN)" >>$@ + @echo "initrd /boot/$(KERNEL_FLAVOR_XEN).gz" >>$@ + clean-syslinux: - @rm -f $(SYSLINUX_CFG) $(ISOLINUX_CFG) $(ISOLINUX_BIN) + @rm -f $(SYSLINUX_CFG) $(ISOLINUX_CFG) $(ISOLINUX_BIN) $(PYGRUB_CFG) ISO_KERNEL_STAMP := $(DESTDIR)/stamp.kernel.% ISO_KERNEL = $(ISO_DIR)/boot/$* @@ -261,7 +280,7 @@ $(ISO_KERNEL_STAMP): $(MODLOOP_DIRSTAMP) ALL_ISO_KERNEL = $(foreach flavor,$(KERNEL_FLAVOR),$(subst %,$(flavor),$(ISO_KERNEL_STAMP))) -$(ISOFS_DIRSTAMP): $(ALL_MODLOOP) $(ALL_INITFS) $(ISOLINUX_CFG) $(ISOLINUX_BIN) $(ALL_ISO_KERNEL) $(ISO_REPOS_DIRSTAMP) $(SYSLINUX_CFG) +$(ISOFS_DIRSTAMP): $(ALL_MODLOOP) $(ALL_INITFS) $(ISOLINUX_CFG) $(ISOLINUX_BIN) $(ALL_ISO_KERNEL) $(ISO_REPOS_DIRSTAMP) $(SYSLINUX_CFG) $(PYGRUB_CFG) @echo "$(ALPINE_NAME)-$(ALPINE_RELEASE) $(BUILD_DATE)" \ > $(ISO_DIR)/.alpine-release @touch $@ diff --git a/alpine.conf.mk b/alpine.conf.mk index bcb8ff7..fd77a1b 100644 --- a/alpine.conf.mk +++ b/alpine.conf.mk @@ -1,3 +1,4 @@ ALPINE_NAME := alpine -KERNEL_FLAVOR := grsec +KERNEL_FLAVOR_DEFAULT := grsec +KERNEL_FLAVOR_XEN := pae -- cgit v1.2.3