From 414eec85c6d3b81e1a9b7d3600280f86d8a77e44 Mon Sep 17 00:00:00 2001 From: Ivan Mikushin Date: Fri, 7 Aug 2015 19:34:05 +0500 Subject: [PATCH] custom kernel and docker-from-scratch --- Makefile.docker | 40 +++++++++++++++++-------------------- scripts/mk-images-tar.sh | 1 + scripts/mk-initrd.sh | 4 +++- scripts/mk-rancheros-iso.sh | 2 ++ 4 files changed, 24 insertions(+), 23 deletions(-) diff --git a/Makefile.docker b/Makefile.docker index 2181eb13..c32caa04 100644 --- a/Makefile.docker +++ b/Makefile.docker @@ -1,49 +1,45 @@ - -DOCKER_BINARY_URL := https://github.com/rancher/docker/releases/download/v1.8.0-rc2-ros/docker-1.8.0-rc2 - include common.make +DOCKER_BINARY_URL := https://github.com/rancher/docker/releases/download/v1.8.0-rc2-ros/docker-1.8.0-rc2 +KERNEL_URL := https://github.com/rancher/os-kernel/releases/download/Ubuntu-3.19.0-26.27/linux-3.19.8-ckt4-rancher-x86.tar.gz +DFS_IMAGE := rancher/docker:1.8.0-rc2 bin/rancheros: - mkdir -p bin + mkdir -p $(dir $@) godep go build -tags netgo -installsuffix netgo -ldflags "-X github.com/rancherio/os/config.VERSION $(VERSION) -linkmode external -extldflags -static" -o $@ strip --strip-all $@ pwd := $(shell pwd) include scripts/build-common -CD := $(BUILD)/cd assets/docker: - mkdir -p assets + mkdir -p $(dir $@) curl -L "$(DOCKER_BINARY_URL)" > $@ chmod +x $@ -copy-images: - ./scripts/copy-images +$(DIST)/artifacts/vmlinuz: $(BUILD)/kernel/ + mkdir -p $(dir $@) + mv $(BUILD)/kernel/boot/vmlinuz* $@ -$(DIST)/artifacts/vmlinuz: copy-images - mkdir -p $(DIST)/artifacts - mv $(BUILD)/kernel/vmlinuz $@ +$(BUILD)/kernel/: + mkdir -p $@ && curl -L "$(KERNEL_URL)" | tar -xzf - -C $@ --strip=0 -INITRD_DIR := $(BUILD)/initrd +$(BUILD)/images.tar: bin/rancheros + FORCE_PULL=$(FORCE_PULL) ./scripts/mk-images-tar.sh -$(BUILD)/images.tar: bin/rancheros os-config.yml - FORCE_PULL=$(FORCE_PULL) BUILD=$(BUILD) ./scripts/mk-images-tar.sh +$(DIST)/artifacts/initrd: bin/rancheros assets/docker $(BUILD)/kernel/ $(BUILD)/images.tar + mkdir -p $(dir $@) + DFS_IMAGE=$(DFS_IMAGE) ./scripts/mk-initrd.sh -$(DIST)/artifacts/initrd: bin/rancheros assets/docker copy-images $(BUILD)/images.tar - mkdir -p $(DIST)/artifacts - INITRD_DIR=$(INITRD_DIR) ./scripts/mk-initrd.sh - - -$(DIST)/artifacts/rancheros.iso: $(DIST)/artifacts/initrd - CD=$(CD) ./scripts/mk-rancheros-iso.sh +$(DIST)/artifacts/rancheros.iso: $(DIST)/artifacts/initrd $(DIST)/artifacts/vmlinuz + ./scripts/mk-rancheros-iso.sh $(DIST)/artifacts/iso-checksums.txt: $(DIST)/artifacts/rancheros.iso @@ -62,4 +58,4 @@ build-all: \ $(DIST)/artifacts/iso-checksums.txt -.PHONY: build-all version copy-images os-config.yml +.PHONY: build-all version diff --git a/scripts/mk-images-tar.sh b/scripts/mk-images-tar.sh index 25b20c91..9a411ae3 100755 --- a/scripts/mk-images-tar.sh +++ b/scripts/mk-images-tar.sh @@ -2,6 +2,7 @@ set -ex cd $(dirname $0)/.. +. scripts/build-common ln -sf bin/rancheros ./ros diff --git a/scripts/mk-initrd.sh b/scripts/mk-initrd.sh index 3ba4b64f..2bfb5a33 100755 --- a/scripts/mk-initrd.sh +++ b/scripts/mk-initrd.sh @@ -4,6 +4,8 @@ set -ex cd $(dirname $0)/.. . scripts/build-common +INITRD_DIR=${BUILD}/initrd + rm -rf ${INITRD_DIR}/{usr,init} mkdir -p ${INITRD_DIR}/usr/{bin,share/ros} @@ -15,7 +17,7 @@ cp bin/rancheros ${INITRD_DIR}/usr/bin/ros ln -s usr/bin/ros ${INITRD_DIR}/init ln -s bin ${INITRD_DIR}/usr/sbin -DFS=$(docker create rancher/docker:1.8.0-rc2) +DFS=$(docker create ${DFS_IMAGE}) trap "docker rm -fv ${DFS}" EXIT docker export ${DFS} | tar xvf - -C ${INITRD_DIR} --exclude=usr/bin/dockerlaunch \ --exclude=usr/bin/docker \ diff --git a/scripts/mk-rancheros-iso.sh b/scripts/mk-rancheros-iso.sh index b7c288d1..c36a3621 100755 --- a/scripts/mk-rancheros-iso.sh +++ b/scripts/mk-rancheros-iso.sh @@ -4,6 +4,8 @@ set -ex cd $(dirname $0)/.. . scripts/build-common +CD=${BUILD}/cd + mkdir -p ${CD}/boot/isolinux cp ${DIST}/artifacts/initrd ${CD}/boot