From ea8823c99319e5c11b975d14c95b487d25ec0f3f Mon Sep 17 00:00:00 2001 From: florian Date: Tue, 3 Nov 2009 01:02:39 +0000 Subject: [x86] merge the olpc target with the x86 target, both tested and running git-svn-id: svn://svn.openwrt.org/openwrt/trunk@18279 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/x86/image/Config.in | 30 ++++++++++++++++++-- target/linux/x86/image/Makefile | 46 ++++++++++++++++++++++++++++-- target/linux/x86/image/gen_image.sh | 48 -------------------------------- target/linux/x86/image/gen_image_olpc.sh | 35 +++++++++++++++++++++++ target/linux/x86/image/gen_image_x86.sh | 48 ++++++++++++++++++++++++++++++++ target/linux/x86/image/olpc.fth | 5 ++++ 6 files changed, 159 insertions(+), 53 deletions(-) delete mode 100755 target/linux/x86/image/gen_image.sh create mode 100755 target/linux/x86/image/gen_image_olpc.sh create mode 100755 target/linux/x86/image/gen_image_x86.sh create mode 100644 target/linux/x86/image/olpc.fth (limited to 'target/linux/x86/image') diff --git a/target/linux/x86/image/Config.in b/target/linux/x86/image/Config.in index bf1426723..9dd7ae587 100644 --- a/target/linux/x86/image/Config.in +++ b/target/linux/x86/image/Config.in @@ -1,6 +1,6 @@ config X86_GRUB_IMAGES bool "Build GRUB images (Linux x86 or x86_64 host only)" - depends TARGET_x86 + depends TARGET_x86_generic depends TARGET_ROOTFS_EXT2FS || TARGET_ROOTFS_JFFS2 || TARGET_ROOTFS_SQUASHFS || TARGET_ROOTFS_ISO select PACKAGE_grub default y @@ -38,14 +38,38 @@ config X86_GRUB_BOOTOPTS config X86_VDI_IMAGES bool "Build VirtualBox image files (VDI). Requires VBoxManage" - depends TARGET_x86 + depends TARGET_x86_generic depends TARGET_ROOTFS_EXT2FS depends X86_GRUB_IMAGES select PACKAGE_kmod-pcnet32 config X86_VMDK_IMAGES bool "Build VMware image files (VMDK). Requires qemu-img" - depends TARGET_x86 + depends TARGET_x86_generic depends TARGET_ROOTFS_EXT2FS depends X86_GRUB_IMAGES select PACKAGE_kmod-e1000 + +config OLPC_BOOTSCRIPT_IMAGES + bool "Build images with bootscript" + depends TARGET_x86_olpc + depends TARGET_ROOTFS_EXT2FS || TARGET_ROOTFS_JFFS2 || TARGET_ROOTFS_SQUASHFS || TARGET_ROOTFS_ISO + default y + +config OLPC_BOOTSCRIPT_IMAGES_PAD + bool "Pad bootscript images to filesystem size (for JFFS2)" + depends OLPC_BOOTSCRIPT_IMAGES + +config OLPC_BOOTSCRIPT_KERNELPART + int "Kernel partition size (in MB)" + depends OLPC_BOOTSCRIPT_IMAGES + default 4 + +config OLPC_BOOTSCRIPT_ROOTPART + string + prompt "Root partition on target device" if OLPC_BOOTSCRIPT_IMAGES + default "/dev/sda2" + help + The root partition on the final device. If you don't know, + you probably want the default (/dev/sda2). + diff --git a/target/linux/x86/image/Makefile b/target/linux/x86/image/Makefile index 6d3c77b77..699dcfe6a 100644 --- a/target/linux/x86/image/Makefile +++ b/target/linux/x86/image/Makefile @@ -8,10 +8,17 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/image.mk export PATH=$(TARGET_PATH):/sbin + +ifeq ($(CONFIG_TARGET_x86_generic),y) BOOTOPTS=$(strip $(subst ",, $(CONFIG_X86_GRUB_BOOTOPTS))) ROOTPART=$(strip $(subst ",, $(CONFIG_X86_GRUB_ROOTPART))) #"))")) # fix vim's broken syntax highlighting +endif +ifeq ($(CONFIG_TARGET_x86_olpc),y) +ROOTPART=$(strip $(subst ",, $(CONFIG_OLPC_BOOTSCRIPT_ROOTPART))) +endif +#"))")) # fix vim's broken syntax highlighting ifeq ($(CONFIG_X86_GRUB_IMAGES),y) ifneq ($(HOST_OS),Darwin) @@ -42,7 +49,7 @@ ifneq ($(HOST_OS),Darwin) -e 's#@CMDLINE@#$(strip $(call Image/cmdline/$(1))) $(BOOTOPTS)#g' \ -e 's#@BAUDRATE@#$(CONFIG_X86_GRUB_BAUDRATE)#g' \ ./menu.lst > $(KDIR)/root.grub/boot/grub/menu.lst - PADDING="$(CONFIG_X86_GRUB_IMAGES_PAD)" PATH="$(TARGET_PATH)" ./gen_image.sh $(BIN_DIR)/openwrt-$(BOARD)-$(1).image $(CONFIG_X86_GRUB_KERNELPART) $(KDIR)/root.grub $(CONFIG_TARGET_ROOTFS_FSPART) $(KDIR)/root.$(1) + PADDING="$(CONFIG_X86_GRUB_IMAGES_PAD)" PATH="$(TARGET_PATH)" ./gen_image_x86.sh $(BIN_DIR)/openwrt-$(BOARD)-$(1).image $(CONFIG_X86_GRUB_KERNELPART) $(KDIR)/root.grub $(CONFIG_TARGET_ROOTFS_FSPART) $(KDIR)/root.$(1) $(call Image/Build/grub/$(1)) endef @@ -56,7 +63,7 @@ ifneq ($(HOST_OS),Darwin) endef else define Image/Build/grub - PADDING="$(CONFIG_X86_GRUB_IMAGES_PAD)" PATH="$(TARGET_PATH)" NOGRUB=1 ./gen_image.sh $(BIN_DIR)/openwrt-$(BOARD)-$(1).image $(CONFIG_X86_GRUB_KERNELPART) "" $(CONFIG_TARGET_ROOTFS_FSPART) $(KDIR)/root.$(1) + PADDING="$(CONFIG_X86_GRUB_IMAGES_PAD)" PATH="$(TARGET_PATH)" NOGRUB=1 ./gen_image_x86.sh $(BIN_DIR)/openwrt-$(BOARD)-$(1).image $(CONFIG_X86_GRUB_KERNELPART) "" $(CONFIG_TARGET_ROOTFS_FSPART) $(KDIR)/root.$(1) endef endif endif @@ -82,9 +89,43 @@ ifeq ($(CONFIG_X86_VMDK_IMAGES),y) endef endif +ROOTDELAY=10 + +ifeq ($(CONFIG_OLPC_BOOTSCRIPT_IMAGES),y) + define Image/cmdline/squashfs + block2mtd.block2mtd=$(ROOTPART),65536,rootfs root=/dev/mtdblock0 rootfstype=squashfs rootdelay=$(ROOTDELAY) + endef + + define Image/cmdline/jffs2-64k + block2mtd.block2mtd=$(ROOTPART),65536,rootfs root=/dev/mtdblock0 rootfstype=jffs2 rootdelay=$(ROOTDELAY) + endef + + define Image/cmdline/jffs2-128k + block2mtd.block2mtd=$(ROOTPART),131072,rootfs root=/dev/mtdblock0 rootfstype=jffs2 rootdelay=$(ROOTDELAY) + endef + + define Image/cmdline/ext2 + root=$(ROOTPART) rootfstype=ext2 rootwait + endef + + define Image/Build/bootscript + # left here because the image builder doesnt need these + $(INSTALL_DIR) $(KDIR)/root.bootscript/boot + $(CP) $(KDIR)/bzImage $(KDIR)/root.bootscript/boot/vmlinuz + sed -e 's#@CMDLINE@#$(strip $(call Image/cmdline/$(1))) $(BOOTOPTS)#g' \ + ./olpc.fth > $(KDIR)/root.bootscript/boot/olpc.fth + PADDING="$(CONFIG_OLPC_BOOTSCRIPT_IMAGES_PAD)" PATH="$(TARGET_PATH)" ./gen_image_olpc.sh $(BIN_DIR)/openwrt-$(BOARD)-$(1).image $(CONFIG_OLPC_BOOTSCRIPT_KERNELPART) $(KDIR)/root.bootscript $(CONFIG_TARGET_ROOTFS_FSPART) $(KDIR)/root.$(1) + endef +endif + define Image/Prepare $(CP) $(LINUX_DIR)/arch/x86/boot/bzImage $(KDIR)/bzImage +ifeq ($(CONFIG_TARGET_x86_generic),y) $(call Image/Prepare/grub) +endif +ifeq ($(CONFIG_TARGET_x86_olpc),y) + $(call Image/Prepare/bootscript) +endif endef define Image/Build/squashfs @@ -112,6 +153,7 @@ endef define Image/Build $(call Image/Build/$(1)) + $(call Image/Build/bootscript,$(1)) ifneq ($(1),iso) $(call Image/Build/grub,$(1)) $(call Image/Build/vdi,$(1)) diff --git a/target/linux/x86/image/gen_image.sh b/target/linux/x86/image/gen_image.sh deleted file mode 100755 index 5d4c0dd34..000000000 --- a/target/linux/x86/image/gen_image.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env bash -# Copyright (C) 2006 OpenWrt.org -set -x -[ $# == 5 ] || { - echo "SYNTAX: $0 " - exit 1 -} - -OUTPUT="$1" -KERNELSIZE="$2" -KERNELDIR="$3" -ROOTFSSIZE="$4" -ROOTFSIMAGE="$5" - -rm -f "$OUTPUT" - -head=16 -sect=63 -cyl=$(( ($KERNELSIZE + $ROOTFSSIZE) * 1024 * 1024 / ($head * $sect * 512))) - -# create partition table -set `ptgen -o "$OUTPUT" -h $head -s $sect -p ${KERNELSIZE}m -p ${ROOTFSSIZE}m` - -KERNELOFFSET="$(($1 / 512))" -KERNELSIZE="$(($2 / 512))" -ROOTFSOFFSET="$(($3 / 512))" -ROOTFSSIZE="$(($4 / 512))" - -BLOCKS="$((($KERNELSIZE / 2) - 1))" - -[ -n "$PADDING" ] && dd if=/dev/zero of="$OUTPUT" bs=512 seek="$ROOTFSOFFSET" conv=notrunc count="$ROOTFSSIZE" -dd if="$ROOTFSIMAGE" of="$OUTPUT" bs=512 seek="$ROOTFSOFFSET" conv=notrunc - -[ -n "$NOGRUB" ] && exit 0 - -genext2fs -d "$KERNELDIR" -b "$BLOCKS" "$OUTPUT.kernel" -dd if="$OUTPUT.kernel" of="$OUTPUT" bs=512 seek="$KERNELOFFSET" conv=notrunc -#rm -f "$OUTPUT.kernel" - -which chpax >/dev/null && chpax -zp $(which grub) -grub --batch --no-curses --no-floppy --device-map=/dev/null < " + exit 1 +} + +OUTPUT="$1" +KERNELSIZE="$2" +KERNELDIR="$3" +ROOTFSSIZE="$4" +ROOTFSIMAGE="$5" + +rm -f "$OUTPUT" + +head=16 +sect=63 +cyl=$(( ($KERNELSIZE + $ROOTFSSIZE) * 1024 * 1024 / ($head * $sect * 512))) + +# create partition table +set `ptgen -o "$OUTPUT" -h $head -s $sect -p ${KERNELSIZE}m -p ${ROOTFSSIZE}m` + +KERNELOFFSET="$(($1 / 512))" +KERNELSIZE="$(($2 / 512))" +ROOTFSOFFSET="$(($3 / 512))" +ROOTFSSIZE="$(($4 / 512))" + +BLOCKS="$((($KERNELSIZE / 2) - 1))" + +genext2fs -d "$KERNELDIR" -b "$BLOCKS" "$OUTPUT.kernel" +dd if="$OUTPUT.kernel" of="$OUTPUT" bs=512 seek="$KERNELOFFSET" conv=notrunc +[ -n "$PADDING" ] && dd if=/dev/zero of="$OUTPUT" bs=512 seek="$ROOTFSOFFSET" conv=notrunc count="$ROOTFSSIZE" +dd if="$ROOTFSIMAGE" of="$OUTPUT" bs=512 seek="$ROOTFSOFFSET" conv=notrunc +#rm -f "$OUTPUT.kernel" diff --git a/target/linux/x86/image/gen_image_x86.sh b/target/linux/x86/image/gen_image_x86.sh new file mode 100755 index 000000000..5d4c0dd34 --- /dev/null +++ b/target/linux/x86/image/gen_image_x86.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash +# Copyright (C) 2006 OpenWrt.org +set -x +[ $# == 5 ] || { + echo "SYNTAX: $0 " + exit 1 +} + +OUTPUT="$1" +KERNELSIZE="$2" +KERNELDIR="$3" +ROOTFSSIZE="$4" +ROOTFSIMAGE="$5" + +rm -f "$OUTPUT" + +head=16 +sect=63 +cyl=$(( ($KERNELSIZE + $ROOTFSSIZE) * 1024 * 1024 / ($head * $sect * 512))) + +# create partition table +set `ptgen -o "$OUTPUT" -h $head -s $sect -p ${KERNELSIZE}m -p ${ROOTFSSIZE}m` + +KERNELOFFSET="$(($1 / 512))" +KERNELSIZE="$(($2 / 512))" +ROOTFSOFFSET="$(($3 / 512))" +ROOTFSSIZE="$(($4 / 512))" + +BLOCKS="$((($KERNELSIZE / 2) - 1))" + +[ -n "$PADDING" ] && dd if=/dev/zero of="$OUTPUT" bs=512 seek="$ROOTFSOFFSET" conv=notrunc count="$ROOTFSSIZE" +dd if="$ROOTFSIMAGE" of="$OUTPUT" bs=512 seek="$ROOTFSOFFSET" conv=notrunc + +[ -n "$NOGRUB" ] && exit 0 + +genext2fs -d "$KERNELDIR" -b "$BLOCKS" "$OUTPUT.kernel" +dd if="$OUTPUT.kernel" of="$OUTPUT" bs=512 seek="$KERNELOFFSET" conv=notrunc +#rm -f "$OUTPUT.kernel" + +which chpax >/dev/null && chpax -zp $(which grub) +grub --batch --no-curses --no-floppy --device-map=/dev/null <