Скрипт сборки ядра linux 4.14.12 для debian 8 с zfs

Скрипт сборки ядра linux 4.14.12 для debin 8 с zfs

#!/bin/bash
CPU_COUNT="4"
KERNEL_VERSION="4.14.12"
BUILD_DIR="/build-kernel"
LINUX_DIR="$BUILD_DIR/linux-$KERNEL_VERSION"
echo "Устанавливаем зависимости"
apt install parted lsscsi ksh zlib1g-dev uuid-dev libattr1-dev libblkid-dev libselinux1-dev libudev-dev libdevmapper-dev  git build-essential kernel-package fakeroot libncurses5-dev libssl-dev ccache build-essential autoconf libtool  gcc make bc fakeroot dpkg-dev  libncurses5-dev libssl-dev gawk alien fakeroot linux-headers-$(uname -r) -y
echo "Создаем директорию для сборки"
mkdir -p $BUILD_DIR
cd $BUILD_DIR
echo "Проверяем если ли скачанное ядро"
if [ ! -d "$LINUX_DIR" ];
then
echo "Скачиваем ядро"
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-$KERNEL_VERSION.tar.xz
tar -xvf linux-$KERNEL_VERSION.tar.xz
fi
cd $LINUX_DIR
echo "Скачиваем и распаковываем патч"
if [ ! -f "$patch-$KERNEL_VERSION.xz" ]; then
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/patch-$KERNEL_VERSION.xz
unxz patch-$KERNEL_VERSION.xz
fi
echo "Копируем .config"
#cp $BUILD_DIR/.config $LINUX_DIR/
echo "Запускаем make prepare scripts"
cd $LINUX_DIR
make prepare scripts
Клонируем репозитории для установки поддержки zfs
cd $BUILD_DIR
if [ ! -d "$BUILD_DIR/spl" ]; then
git clone https://github.com/zfsonlinux/spl $BUILD_DIR/spl
fi
if [ ! -d "$BUILD_DIR/zfs" ]; then
git clone https://github.com/zfsonlinux/zfs $BUILD_DIR/zfs
fi
echo "Собраем и устанавливаем spl для zfs"
cd $BUILD_DIR/spl
git checkout master
sh autogen.sh
./configure --prefix=/ --libdir=/lib --includedir=/usr/include --datarootdir=/usr/share --enable-linux-builtin=yes --with-linux=$LINUX_DIR --with-linux-obj=$LINUX_DIR
./copy-builtin $LINUX_DIR
make
make install
echo "Собраем и устанавливаем zfs"
cd $BUILD_DIR/zfs
git checkout master
sh autogen.sh
./configure --prefix=/ --libdir=/lib --includedir=/usr/include --datarootdir=/usr/share --enable-linux-builtin=yes --with-linux=$LINUX_DIR --with-linux-obj=$LINUX_DIR --with-spl=$BUILD_DIR/spl --with-spl-obj=$BUILD_DIR/spl
./copy-builtin $LINUX_DIR
make
make install
echo "Установка zfs завершена"
echo "Собираем ядро"
cd $LINUX_DIR/
cp /boot/config-$(uname -r) .config
make menuconfig
echo "Приминяем патчи"
cd $LINUX_DIR
patch patch-$KERNEL_VERSION -p1 --dry-run
patch patch-$KERNEL_VERSION -p1
touch REPORTING-BUGS;
echo "Очищаем"
make clean
echo "Собираем deb пакет"
make -j$CPU_COUNT deb-pkg LOCALVERSION=$KERNEL_VERSION
echo "Сборка пакета завершена - осталось установить"
#curl -L https://raw.githubusercontent.com/docker/docker/master/contrib/check-config.sh | CONFIG=.config /bin/bash
#wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.14.8.tar.xz

Репозиторий на git https://github.com/galushkoav/build-kernel-with-zfs

2 комментария к “Скрипт сборки ядра linux 4.14.12 для debian 8 с zfs

  1. Добрый.
    Кол-во ядер\сокетов ЦПУ можно вычислять и использовать так:
    CPU_COUNT=”$(echo “$(grep -c “processor” /proc/cpuinfo) / $(grep “physical id” /proc/cpuinfo |sort -u |wc -l)” | bc)”

    И с некоторых пор по совету гуру во всех bash-скриптах первой использую строку: set -euxo pipefail (x можно в дальнейшем убрать). Реально выручает.

  2. Да количество ядер легко подставить в переменную, согласен.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

 

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.