Сборка deb-пакета ядра xen-amd64 с патчами dm-ioband и blkio-cgroup
0. Обновляем списки пакетов
1. Устанавливаем необходимые для сборки пакеты
2.
3. Добываем исходники текущего ядра со всеми патчами (версия со временем будет расти)
4. Качаем патч dm-ioband (текущую версию всегда можно подсмотреть на сайте)
5. И патчи для blkio-cgroup (версию смотреть на том же сайте)
6. Распаковываем
7.
8. Патчим раз.
9. Патчим два.
10. Подготавливаем дерево исходников со всеми необходимыми патчами и нужным arch/feature set.
11. Конфигурируем новое ядро дабы включить новые фичи
добавляем опцию Device Drivers-> Multiple devices driver support (RAID and LVM) -> I/O bandwidth control (CONFIG_DM_IOBAND=M)
добавляем опцию General setup -> Control Group support -> Block I/O cgroup subsystem (CONFIG_CGROUP_BLKIO=Y)
Сохраняем при выходе.
12. Билд!
13. Курим бамбук 100500 минут, пока соберется новое ядро.
14.
Новые пакеты будут содержать другой суффикс, чем оригинальный пакет — это чтобы не путалось с официальными пакетами.
Тем не менее после установки (через dpkg -i или путем создания собственного apt-репозитория) названия в deb-репозитории будет такое-же, как и в оригинальных пакетах, что не позволит сломать зависимости:
Проверить правильность сборки можно так: в linux-image-....deb в файле CONTENTS/boot/config-2.6.32-5-xen-amd64 найти опции, которые включались выше.
Официальный howto: wiki.debian.org/HowToRebuildAnOfficialDebianKernelPackage
apt-get update
1. Устанавливаем необходимые для сборки пакеты
apt-get install build-essential fakeroot ncurses-dev dpkg-dev devscripts
2.
mkdir new_kernel; cd new_kernel
3. Добываем исходники текущего ядра со всеми патчами (версия со временем будет расти)
apt-get source linux-image-2.6.32-5-xen-amd64
4. Качаем патч dm-ioband (текущую версию всегда можно подсмотреть на сайте)
wget -O dm-ioband-1.14.0.patch "http://downloads.sourceforge.net/project/ioband/dm-ioband%20patches/1.14.0/dm-ioband-1.14.0.patch?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fioband%2Ffiles%2Fdm-ioband%2520patches2F1.14.0%2F&ts=1325766844&use_mirror=ignum"
5. И патчи для blkio-cgroup (версию смотреть на том же сайте)
wget -O blkio-cgroup-v13.tar.bz2 "http://downloads.sourceforge.net/project/ioband/blkio-cgroup%20patches/v13/blkio-cgroup-v13.tar.bz2?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fioband%2Ffiles%2Fblkio-cgroup%2520patches%2Fv13%2F&ts=1325773162&use_mirror=citylan"
6. Распаковываем
tar -xjf blkio-cgroup-v13.tar.bz2
7.
cd linux-2.6-2.6.32
8. Патчим раз.
$ patch -p1 < ../dm-ioband-1.14.0.patch
patching file Documentation/device-mapper/ioband.txt
patching file drivers/md/Kconfig
patching file drivers/md/Makefile
patching file drivers/md/dm-ioband-ctl.c
patching file drivers/md/dm-ioband-policy.c
patching file drivers/md/dm-ioband-type.c
patching file drivers/md/dm-ioband.h
patching file drivers/md/dm-ioband-rangebw.c
patching file Documentation/device-mapper/range-bw.txt
patching file include/trace/events/dm-ioband.h
9. Патчим два.
$ patch -p1 < ../blkio-cgroup-v13/blkio-cgroup-v13-1-pagecgroup.patch
patching file include/linux/memcontrol.h
patching file include/linux/mmzone.h
patching file include/linux/page_cgroup.h
patching file init/Kconfig
patching file mm/Makefile
patching file mm/memcontrol.c
patching file mm/page_cgroup.c
$ patch -p1 < ../blkio-cgroup-v13/blkio-cgroup-v13-2-iocontext.patch
patching file block/blk-ioc.c
patching file include/linux/iocontext.h
$ patch -p1 < ../blkio-cgroup-v13/blkio-cgroup-v13-3-body.patch
patching file include/linux/biotrack.h
patching file include/linux/cgroup_subsys.h
patching file init/Kconfig
patching file mm/biotrack.c
patching file mm/page_cgroup.c
patching file mm/Makefile
$ patch -p1 < ../blkio-cgroup-v13/blkio-cgroup-v13-4-hook.patch
patching file fs/buffer.c
patching file fs/direct-io.c
patching file mm/bounce.c
patching file mm/filemap.c
patching file mm/memory.c
Hunk #2 succeeded at 2165 (offset 3 lines).
Hunk #3 succeeded at 2590 (offset 3 lines).
Hunk #4 succeeded at 2668 (offset 4 lines).
Hunk #5 succeeded at 2823 (offset 4 lines).
patching file mm/page-writeback.c
Hunk #2 succeeded at 1128 (offset 1 line).
patching file mm/swap_state.c
$ patch -p1 < ../blkio-cgroup-v13/blkio-cgroup-v13-5-doc.patch
patching file Documentation/cgroups/00-INDEX
patching file Documentation/cgroups/blkio.txt
$ patch -p1 < ../blkio-cgroup-v13/blkio-cgroup-v13-6-ioband.patch
patching file include/linux/biotrack.h
patching file mm/biotrack.c
patching file drivers/md/dm-ioctl.c
patching file drivers/md/dm-ioband-policy.c
patching file drivers/md/dm-ioband-rangebw.c
patching file drivers/md/dm-ioband-ctl.c
patching file drivers/md/dm-ioband.h
patching file drivers/md/dm-ioband-type.c
$ patch -p1 < ../blkio-cgroup-v13/blkio-cgroup-v13-7-ioband-doc.patch
patching file Documentation/cgroups/blkio.txt
10. Подготавливаем дерево исходников со всеми необходимыми патчами и нужным arch/feature set.
fakeroot make -f debian/rules.gen setup_amd64_xen
11. Конфигурируем новое ядро дабы включить новые фичи
make -C debian/build/build_amd64_xen_amd64 menuconfig
добавляем опцию Device Drivers-> Multiple devices driver support (RAID and LVM) -> I/O bandwidth control (CONFIG_DM_IOBAND=M)
добавляем опцию General setup -> Control Group support -> Block I/O cgroup subsystem (CONFIG_CGROUP_BLKIO=Y)
Сохраняем при выходе.
12. Билд!
fakeroot make -f debian/rules.gen binary-arch_amd64_xen_amd64
13. Курим бамбук 100500 минут, пока соберется новое ядро.
14.
$ cd .. ; ls *.deb
linux-headers-2.6.32-5-xen-amd64_2.6.32-41_amd64.deb linux-image-2.6.32-5-xen-amd64-dbg_2.6.32-41_amd64.deb
linux-image-2.6.32-5-xen-amd64_2.6.32-41_amd64.deb xen-linux-system-2.6.32-5-xen-amd64_2.6.32-41_amd64.deb
Новые пакеты будут содержать другой суффикс, чем оригинальный пакет — это чтобы не путалось с официальными пакетами.
Тем не менее после установки (через dpkg -i или путем создания собственного apt-репозитория) названия в deb-репозитории будет такое-же, как и в оригинальных пакетах, что не позволит сломать зависимости:
Package: linux-headers-2.6.32-5-xen-amd64
Package: linux-image-2.6.32-5-xen-amd64-dbg
Package: linux-image-2.6.32-5-xen-amd64
Package: xen-linux-system-2.6.32-5-xen-amd64
Проверить правильность сборки можно так: в linux-image-....deb в файле CONTENTS/boot/config-2.6.32-5-xen-amd64 найти опции, которые включались выше.
Официальный howto: wiki.debian.org/HowToRebuildAnOfficialDebianKernelPackage
- 0
- 21 марта 2012, 10:29
- admin
Комментарии (0)
RSS свернуть / развернуть