From b3d62c26f7695bde343224f24e418e0ef5dfbb04 Mon Sep 17 00:00:00 2001 From: Sven Dowideit Date: Wed, 16 Nov 2016 13:07:38 +1000 Subject: [PATCH] kernel headers and extras don't get built from os anymore Signed-off-by: Sven Dowideit --- docs/os/custom-builds/custom-kernels/index.md | 84 ++++++++++--------- images/10-extras/Dockerfile | 5 -- images/10-extras/extra.sh | 19 ----- images/10-headers/Dockerfile | 3 - images/10-headers/headers.sh | 24 ------ 5 files changed, 45 insertions(+), 90 deletions(-) delete mode 100644 images/10-extras/Dockerfile delete mode 100755 images/10-extras/extra.sh delete mode 100644 images/10-headers/Dockerfile delete mode 100755 images/10-headers/headers.sh diff --git a/docs/os/custom-builds/custom-kernels/index.md b/docs/os/custom-builds/custom-kernels/index.md index f53a39ee..7dc6f255 100644 --- a/docs/os/custom-builds/custom-kernels/index.md +++ b/docs/os/custom-builds/custom-kernels/index.md @@ -7,7 +7,51 @@ redirect_from: ## Custom Kernels -### Changing the Kernel in RancherOS +### Building and Packaging a Kernel to be used in RancherOS + +We build the kernel for RancherOS at the [os-kernel repository](https://github.com/rancher/os-kernel). You can use this repository to help package your own custom kernel to be used in RancherOS. + + +1. Create a clone of the [os-kernel](https://github.com/rancher/os-kernel) repository to your local machine using `git clone`. + + ``` + $ git clone https://github.com/rancher/os-kernel.git + ``` + +2. In the `./Dockerfile.dapper` file, update the `KERNEL_TAG`, `KERNEL_VERSION`, `KERNEL_URL` and `KERNEL_SHA1`. `KERNEL_URL` points to Linux kernel sources archive, packaged as `.tar.gz` or `.tar.xz`. `KERNEL_SHA1` is the `SHA1` sum of the kernel sources archive. + + `./Dockerfile.dapper` file + + ```bash + ########## Kernel version Configuration ############################# + ENV KERNEL_TAG=v4.8.7 + ENV KERNEL_VERSION=4.8.7-rancher + ENV KERNEL_SHA1=5c10724a0e7e97b72046be841df0c69c6e2a03c2 + ENV KERNEL_URL=https://github.com/rancher/linux/archive/${KERNEL_TAG}.tar.gz + ``` + +3. After you've replaced the `KERNEL_*` values, run `make` in the root `os-kernel` directory. After the build is completed, a `./dist/kernel` directory will be created with the freshly built kernel tarball and headers. + + ``` + $ make + ...snip... + --- 4.8.7-rancher Kernel prepared for RancherOS + ./dist/kernel/extra-linux-4.8.7-rancher-x86.tar.gz + ./dist/kernel/build-linux-4.8.7-rancher-x86.tar.gz + ./dist/kernel/linux-4.8.7-rancher-x86.tar.gz + ./dist/kernel/config + + Images ready to push: + rancher/os-extras:4.8.7-rancher + rancher/os-headers:4.8.7-rancher + + ``` + +Now you need to either upload the `./dist/kernel/linux-4.8.7-rancher-x86.tar.gz` file to somewhere, or copy that file into your clone of the `rancher/os` repo, as `assets/kernel.tar.gz`. + +The `build-.tar.gz` and `extra-.tar.gz` files are used to build the `rancher/os-extras` and `rancher/os-headers` images for your RancherOS release - which you will need to tag them with a different organisation name, push them to a registry, and create custom service.yml files. + +### Building a RancherOS release using the Packaged kernel files. By default, RancherOS ships with the kernel provided by the [os-kernel repository](https://github.com/rancher/os-kernel). Swapping out the default kernel can by done by [building your own custom RancherOS ISO]({{site.baseurl}}/os/configuration/custom-rancheros-iso/). @@ -60,41 +104,3 @@ By default, RancherOS ships with the kernel provided by the [os-kernel repositor ``` 3. After you've replaced the URL with your custom kernel, you can follow the steps in [building your own custom RancherOS ISO]({{site.baseurl}}/os/configuration/custom-rancheros-iso/). - -### Packaging a Kernel to be used in RancherOS - -We build the kernel for RancherOS at the [os-kernel repository](https://github.com/rancher/os-kernel). You can use this repository to help package your own custom kernel to be used in RancherOS. - - -1. Create a clone of the [os-kernel](https://github.com/rancher/os-kernel) repository to your local machine using `git clone`. - - ``` - $ git clone https://github.com/rancher/os-kernel.git - ``` - -2. In the `./scripts/build-common` file, update the `KERNEL_URL` and `KERNEL_SHA1`. `KERNEL_URL` points to Linux kernel sources archive, packaged as `.tar.gz` or `.tar.xz`. `KERNEL_SHA1` is the `SHA1` sum of the kernel sources archive. - - `./scripts/build-common` file - - ```bash - #!/bin/bash - set -e - - : ${KERNEL_URL:="https://github.com/rancher/linux/archive/Ubuntu-3.19.0-27.29.tar.gz"} - : ${KERNEL_SHA1:="84b9bc53bbb4dd465b97ea54a71a9805e27ae4f2"} - : ${ARTIFACTS:=$(pwd)/assets} - : ${BUILD:=$(pwd)/build} - : ${CONFIG:=$(pwd)/config} - : ${DIST:=$(pwd)/dist} - ``` - -3. After you've replaced the `KERNEL_URL` and `KERNEL_SHA1`, run `make` in the root `os-kernel` directory. After the build is completed, a `./dist/kernel` directory will be created with the freshly built kernel tarball and headers. - - ``` - $ make - $ cd dist/kernel - $ ls - build.tar.gz extra.tar.gz .tar.gz - ``` - -The `build.tar.gz` and `extra.tar.gz` files are used to build the `rancher/os-extras` and `rancher/os-headers` images for your RancherOS release - see https://github.com/rancher/os-images and https://github.com/rancher/os-services for how to build the images and make them available. diff --git a/images/10-extras/Dockerfile b/images/10-extras/Dockerfile deleted file mode 100644 index ceeb57cd..00000000 --- a/images/10-extras/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM alpine:3.4 -# FROM arm64=skip arm=skip -RUN apk --purge --no-cache add kmod bash openssl -COPY extra.sh /usr/bin -CMD ["extra.sh"] diff --git a/images/10-extras/extra.sh b/images/10-extras/extra.sh deleted file mode 100755 index eb0b8aff..00000000 --- a/images/10-extras/extra.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -set -e - -DIR=$(readlink /lib/modules/$(uname -r)/build) -STAMP=/lib/modules/$(uname -r)/.extra-done -VER=$(basename $DIR) -URL=${KERNEL_EXTRAS_URL:-https://github.com/rancher/os-kernel/releases/download/${VER}/extra.tar.gz} - -if [ -e $STAMP ]; then - echo Kernel extras already installed. Delete $STAMP to reinstall - exit 0 -fi - -echo Downloading $URL -wget -O - $URL | gzip -dc | tar xf - -C / -depmod -a -touch $STAMP - -echo Kernel extras installed diff --git a/images/10-headers/Dockerfile b/images/10-headers/Dockerfile deleted file mode 100644 index be9712a7..00000000 --- a/images/10-headers/Dockerfile +++ /dev/null @@ -1,3 +0,0 @@ -FROM rancher/os-base -COPY headers.sh / -CMD ["/headers.sh"] diff --git a/images/10-headers/headers.sh b/images/10-headers/headers.sh deleted file mode 100755 index 6f6f84cd..00000000 --- a/images/10-headers/headers.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash -set -e - -DIR=$(readlink /lib/modules/$(uname -r)/build) -STAMP=${DIR}/.done -VER=$(basename $DIR) - -if [ "$VER" = "Ubuntu-4.4.0-23.41-rancher2" ]; then - VER=Ubuntu-4.4.0-23.41-rancher2-2 -fi - -KERNEL_HEADERS_URL=${KERNEL_HEADERS_URL:-https://github.com/rancher/os-kernel/releases/download/${VER}/build.tar.gz} - -if [ -e $STAMP ]; then - echo Headers already installed in $DIR - exit 0 -fi - -echo Downloading $KERNEL_HEADERS_URL -mkdir -p $DIR -wget -O - $KERNEL_HEADERS_URL | gzip -dc | tar xf - -C $DIR -touch $STAMP - -echo Headers installed at $DIR