
У меня есть собственное ядро, которое нужно установить на несколько виртуальных машин.
Один из способов сделать это — перенести исходный код на каждую виртуальную машину, а затем скомпилировать и установить.
Я хотел бы узнать, есть ли более быстрый способ скомпилировать на хосте и просто передать какой-нибудь файл или установить ядро через файлы хоста.
И хостовая, и гостевая ОС — Ubuntu 14.04, а в качестве гипервизора я использую KVM.
Я использовал этосвязьдля компиляции и установки ядра.
решение1
Я бы рекомендовал использовать систему пакетов вашего дистрибутива. Создайте свой собственный пакет ядра, а затем вы можете распространить его по вашим виртуальным машинам любым удобным для вас способом. Многие дистрибутивы предоставляют инструкции о том, как это сделать с помощью своего предпочтительного менеджера пакетов (см. ниже для Ubuntu).
Если вам часто приходится пересобирать ядро (и/или другое программное обеспечение), вы можетесоздать локальный репозиторий пакетов(например, на хосте) для добавления в список репозиториев гостей. Тогда гости смогут извлекать любые новые пакеты, как только они станут доступны.
Если у вас есть только несколько пакетов для распространения, размещение их на хосте в локальном кэше пакетов ad-hoc работает так же хорошо. Поделитесь этим местоположением с гостями с помощью Samba или просто rsync
вручную пакетами, когда это необходимо.
В Ubuntu,создание собственного пакета ядрасводится к следующему:
Получить источник
apt-get source linux-image-$(uname -r)
ИЛИgit clone git://kernel.ubuntu.com/ubuntu/ubuntu-<releasename>.git
Подготовьте среду сборки
sudo apt-get build-dep linux-image-$(uname -r)
Измените конфигурацию ядра
chmod a+x debian/rules debian/scripts/* debian/scripts/misc/*
fakeroot debian/rules clean
fakeroot debian/rules editconfigs
(пройдитесь по каждому)- Добавьте локальный идентификатор версии (например,
+myVer1
) в конец первого номера версии,debian.master/changelog
чтобыapt
распознать ядро как более новое, чем версия официального репозитория.
Собрать ядро
fakeroot debian/rules clean
fakeroot debian/rules binary-headers binary-generic binary-perarch
(быстрая сборка) ИЛИfakeroot debian/rules binary
(медленнее, если требуются linux-tools или lowlatency)
Если сборка прошла успешно, ваши пользовательские .deb
пакеты будут находиться в каталоге выше корня сборки.