slackware.ru
http://www.slackware.ru/forum/

Как собрать ядро в пакет txz?
http://www.slackware.ru/forum/viewtopic.php?f=28&t=782
Страница 1 из 3

Автор:  MaxSlack [ 27 июл 2012 09:44 ]
Заголовок сообщения:  Как собрать ядро в пакет txz?

И модули к нему? :smu:sche_nie: :)-(:

Автор:  bormant [ 01 авг 2012 21:00 ]
Заголовок сообщения:  Re: Как собрать ядро в пакет txz?

Например, даже с вариантами, как-то так: http://slackware.osuosl.org/slackware-13.37/source/k/

Автор:  slackwarius [ 06 ноя 2012 15:27 ]
Заголовок сообщения:  Re: Как собрать ядро в пакет txz?

Будет так же интересно узнать, в какой последовательности нужно компилировать при помощи .Slackbuild
1 - kernel-generic
2 - kernel-huge
3 - kernel-modules
?
И каждый из этих .SlackBuild необходимо применять к одному и тому же .tar.bz2 архиву загруженного с Kernel.org?

Автор:  bormant [ 06 ноя 2012 16:59 ]
Заголовок сообщения:  Re: Как собрать ядро в пакет txz?

Если посмотрите внимательно, ядерные слакбилды собирают уже скомпилированное.
Очевидно, что kernel-modules имеет смысл собирать только после выполнения с -generic- конфигом:
# make bzImage modules modules_install

Поэтому напрашивается примерно такая последовательность:
Код:
cd /usr/src/
tar xf /путь/до/linux-x.y.z.tar.xz
cd linux-x.y.z

cat config-huge > .config
make olddefconfig
make bzImage
(cd /путь/до/kernel-huge; VERSION=x.y.z ./kernel-huge.SlackBuild)
make clean

cat config-generic > .config
make olddefconfig
make bzImage modules modules_install
(cd /путь/до/kernel-generic; VERSION=x.y.z ./kernel-generic.SlackBuild)
(cd /путь/до/kernel-modules; VERSION=x.y.z ./kernel-modules.SlackBuild)
make clean

make prepare
rm .version
makepkg /tmp/kernel-source-x.y.z-noarch.txz


ps. Обычно huge ядро не нужно ни для чего, кроме установки/ремонта, поэтому обычно начинают с конфига generic, добавляют драйвер корневой ФС в ядро, делают прочий тюнинг и собирают своё рабочее ядро с модулями или без -- сильно зависит от личных предпочтений и наличного оборудования.

Автор:  slackwarius [ 13 ноя 2012 08:56 ]
Заголовок сообщения:  Re: Как собрать ядро в пакет txz?

Расскажите по подробнее пожалуйства. Что будет, если я возьму свежее ядро, закомпилирую всё то, что включил в ядро, но не закомпилирую и не установлю модули? Так же, для меня актуален вопрос, почему поддержу файловых систем нужно включать именно в ядро и нельзя выносить их в модули (хотя, такая опция для фс предусмотрена)?

Автор:  bormant [ 14 ноя 2012 18:10 ]
Заголовок сообщения:  Re: Как собрать ядро в пакет txz?

Не файловых систем, а файловой системы корневого раздела. Если драйвер корневой ФС в ядро не вкомпилирован, то загрузиться можно будет только с использованием initrd -- поскольку модули ведь на корневом разделе лежат, а без драйвера ФС его не смонтировать.
Если отключить все ненужное, а все нужное включить как "y", получится ядро, заточенное под ваше оборудование и собирающееся довольно быстро.
С другой стороны, потеряется возможность выгрузить отдельный модуль и загрузить его с другими параметрами, держать параметры в modprobe.d, параметры тех или иных модулей, при необходимости, передавать прийдется непосредственно ядру, и т.п. Кроме того, некоторые Фили, если правильно путаю, могут работать только в виде модуля (что-то такое в памяти когда-то отложилось, возможно уже и неактуально).
С третей стороны, вы точно знаете, что не придется в экстренном порядке мигрировать систему на машину, скажем, с контроллером, поддержку которого вы отключили?

Вот из подобных компромиссов и складывается то или иное финальное решение.

Вариант -generic-, использующий стратегию "все в модули", довольно универсален -- ненужное не занимает ОЗУ, дисковое пространство ныне довольно дешево, а сборка, хотя и дольше, но делается один раз и уже выполнена за вас сборщиком дистрибутива.

Автор:  slackwarius [ 25 ноя 2012 17:51 ]
Заголовок сообщения:  Re: Как собрать ядро в пакет txz?

bormant писал(а):
Если посмотрите внимательно, ядерные слакбилды собирают уже скомпилированное.
Очевидно, что kernel-modules имеет смысл собирать только после выполнения с -generic- конфигом:
# make bzImage modules modules_install

Поэтому напрашивается примерно такая последовательность...


Сделав всё по инструкции я получил архивы:
Код:
-rw-r--r--  1    0   0  3711768 нояб. 26 01:46 kernel-generic-3.6.7-x86_64-1.txz (3,5 мб)
-rw-r--r--  1    0   0  3711244 нояб. 26 01:02 kernel-huge-3.6.7-x86_64-1.txz (3,5 мб)
-rw-r--r--  1    0   0      804 нояб. 26 01:22 kernel-modules-3.6.7-x86_64-1.txz (804б)

Это нормально? Или я где то промахнулся?

Автор:  bormant [ 25 ноя 2012 18:03 ]
Заголовок сообщения:  Re: Как собрать ядро в пакет txz?

Точно промахнулись с модулями.
Вот эта строка:
Код:
bzImage modules modules_install
должна была быть, как наверняка уже догадались,
Код:
make bzImage modules modules_install
То есть, нужно
Код:
cd /usr/src/linux-x.y.z
make clean
cat /путь/до/config-generic > .config
make bzImage modules modules_install
(cd /путь/до/kernel-generic; VERSION=x.y.z ./kernel-generic.SlackBuild)
(cd /путь/до/kernel-modules; VERSION=x.y.z ./kernel-modules.SlackBuild)
make clean
make prepare
rm .version
makepkg /tmp/kernel-source-x.y.z-noarch.txz

По поводу "всё по инструкции", полагаю слегка лукавите, ибо не вижу пакета с исходниками: /tmp/kernel-source-x.y.z-noarch.txz

Автор:  slackwarius [ 25 ноя 2012 18:10 ]
Заголовок сообщения:  Re: Как собрать ядро в пакет txz?

Верно, делал всё по инструкции кроме
Код:
makepkg /tmp/kernel-source-x.y.z-noarch.txz

пологая, что эта строчка просто соберёт весь исходный код в архив (на случай, если вдруг мне они понадобятся на другом пк). Я думал, что эти слакбилды соберут уже все скомпилированные файлы ядра.

Автор:  bormant [ 25 ноя 2012 18:16 ]
Заголовок сообщения:  Re: Как собрать ядро в пакет txz?

Полагали правильно, только из-за допущенной ошибки в команде, сборка -generic- ядра, сборка и установка модулей не производились. Соответственно вместо -generic- ядра упаковалось -huge- (ранее собранное), а вместо установленных модулей -- пустое дерево.

Автор:  slackwarius [ 28 ноя 2012 14:13 ]
Заголовок сообщения:  Re: Как собрать ядро в пакет txz?

Скоро вернусь домой, попробуй собрать 3.6.8-gnu ещё разок.
На данный момент не понимаю только вот что.
Код:
cat config-huge > .config
make bzImage
(cd /путь/до/kernel-huge; VERSION=x.y.z ./kernel-huge.SlackBuild)
make clean
cat config-generic > .config
make bzImage modules modules_install

Зачем дважды выполнять make bzImage?

Автор:  bormant [ 28 ноя 2012 14:51 ]
Заголовок сообщения:  Re: Как собрать ядро в пакет txz?

Затем, что в первом случае:
Код:
cat config-huge > .config
make bzImage
, а во втором
Код:
cat config-generic > .config
make bzImage
а config-huge и config-generic ой как неодинаковы, например, для Slackware-14.0 x86_64:
Код:
$ diff /boot/config-huge-3.2.29 /boot/config-generic-3.2.29 | wc -l
373
поделив на 4, получим грубую оценку количества по-разному выставленных параметров.

Автор:  slackwarius [ 16 дек 2012 17:10 ]
Заголовок сообщения:  Re: Как собрать ядро в пакет txz?

Я пошёл более удобным для себя путём:
Код:
make DESTDIR=/.../.../ install
makepkg

Автор:  bormant [ 17 дек 2012 09:11 ]
Заголовок сообщения:  Re: Как собрать ядро в пакет txz?

slackwarius,
в родных ядерных слакбилдах есть дополнение, формирующее в /boot символьные ссылки vmlinuz, config, System.map:
Код:
mkdir -p $PKG/boot
cp $KERNEL $PKG/boot/vmlinuz-$KERNNAME-${VERSION}
( cd $PKG/boot ; ln -sf vmlinuz-$KERNNAME-${VERSION} vmlinuz )
cp $SYSMAP $PKG/boot/System.map-$KERNNAME-${VERSION}
( cd $PKG/boot ; ln -sf System.map-$KERNNAME-${VERSION} System.map )
cp $CONFIG $PKG/boot/config-$KERNNAME-${VERSION}
( cd $PKG/boot ; ln -sf config-$KERNNAME-${VERSION} config )
Результатом является довесок в виде doinst.sh примерно следующего содержания:
Код:
( cd boot ; rm -rf config )
( cd boot ; ln -sf config-generic-3.2.29 config )
( cd boot ; rm -rf System.map )
( cd boot ; ln -sf System.map-generic-3.2.29 System.map )
( cd boot ; rm -rf vmlinuz )
( cd boot ; ln -sf vmlinuz-generic-3.2.29 vmlinuz )
который устанавливает вышеуказанные ссылки на свежепоставленное ядро. В /etc/lilo.conf по умолчанию прописано image = /boot/vmlinuz, поэтому для -huge- ядра остаётся просто позвать lilo, для -generic- -- дописать, если не было сделано раньше, initrd = /boot/initrd.gz и позвать /usr/share/mkinitrd/mkinitrd_command_generator.sh -k 3.2.29 | bash, а затем lilo.

С учётом сказанного, стандартный для дистрибутива путь:
Код:
# make bzImage
# VERSION=3.2.34 ./kernel-generic.SlackBuild
может оказаться все же удобнее.

Автор:  slackwarius [ 11 май 2013 21:20 ]
Заголовок сообщения:  Re: Как собрать ядро в пакет txz?

slackwarius писал(а):
bormant писал(а):
Если посмотрите внимательно, ядерные слакбилды собирают уже скомпилированное.
Очевидно, что kernel-modules имеет смысл собирать только после выполнения с -generic- конфигом:
# make bzImage modules modules_install

Поэтому напрашивается примерно такая последовательность...


Сделав всё по инструкции я получил архивы:
Код:
-rw-r--r--  1    0   0  3711768 нояб. 26 01:46 kernel-generic-3.6.7-x86_64-1.txz (3,5 мб)
-rw-r--r--  1    0   0  3711244 нояб. 26 01:02 kernel-huge-3.6.7-x86_64-1.txz (3,5 мб)
-rw-r--r--  1    0   0      804 нояб. 26 01:22 kernel-modules-3.6.7-x86_64-1.txz (804б)

Это нормально? Или я где то промахнулся?

Проблема решилась легко и просто. Я использую LibreKernel, и в директории с модулями эта версия ядра создаёт папку с именем версии ядра плюс окончание -gnu (н-р 3.9.0-gnu), а в оригинальном Slackbuild папка с модулями не содержит этого окончания. Именно по этой причине и создавался пустой архив.

Автор:  Revorg [ 21 сен 2013 18:37 ]
Заголовок сообщения:  Re: Как собрать ядро в пакет txz?

Решил собрать generic ядро с конфигом проекта http://liquorix.net/ Собирал по инструкции http://enjoygnulinux.blogspot.ru/search ... 1%80%D0%BE собрал два пакета kernel-generic-smp-3.11.1_smp-i686-1.txz и kernel-modules-smp-3.11.1_smp-i686-1.txz. Как собрать kernel-headers и kernel-source в txz пакет ?

Автор:  Cthulhu [ 21 сен 2013 20:47 ]
Заголовок сообщения:  Re: Как собрать ядро в пакет txz?

Ну kernel-source собирается очень просто.
Код:
mkdir -p ~/linux-source/usr/src
cd /usr/src/linux
make clean
cp -r /usr/src/linux-3.11.1 ~/linux-source/usr/src/
ln -s ~/linux-source/usr/src/linux-3.11.1 ~/linux-source/usr/src/linux
cd ~/linux-source
makepkg ../kernel-source-3.11.1-noarch-1.txz

То же самое с headers для этого проделайте похожую операцию с /usr/src/linux-3.11.1/include/linux и отобразите ее в /usr/include/


Примечание.
kernel-headers должны быть теми, с которыми собрана glibc. Если не пересобираете glibc -- не трогайте kernel-headers!
См. Пакет Sklackware kernel-headers, Slackware kernel-headers package.
-- bormant

Автор:  emulek [ 18 фев 2014 08:58 ]
Заголовок сообщения:  Re: Как собрать ядро в пакет txz?

Цитата:
Код:
cd /usr/src/linux-x.y.z
make clean
cat /путь/до/config-generic > .config
make bzImage modules modules_install
(cd /путь/до/kernel-generic; VERSION=x.y.z ./kernel-generic.SlackBuild)

что-то я не понял последней команды -- слакобилд берёт обпраз из текущего каталога, как образ там окажется?

PS: http://enjoygnulinux.blogspot.ru/ себе забрал. Оно ничейное а имя красивое. Буду наполнять, раз никто не хочет.

Автор:  yars [ 18 фев 2014 11:39 ]
Заголовок сообщения:  Re: Как собрать ядро в пакет txz?

Цитата:
слакобилд берёт обпраз из текущего каталога, как образ там окажется?

А по умолчанию
Код:
make bzImage modules modules_install

поставит:
    в /boot - bzip'ом пожатый образ ядра и вызовет lilo
    в /lib/modules/$KERNELVERSION - модули ядра.
Соответственно, вместо /путь/до/kernel-generic в
Код:
(cd /путь/до/kernel-generic; VERSION=x.y.z ./kernel-generic.SlackBuild)
нужно подставить /boot и получить свежеиспеченный ядерный пакет. Можно при сборке задать каталог /tmp/boot и перед вызовом слакбилда указать этот каталог... неплохо бы еще отучить make вызывать lilo после создания образа ядра и делать это в doinst.sh. Если не ошибаюсь, штатная возможность запретить вызов lilo есть. Но можно и выстрелить из пушки по воробьям, а также себе в ногу, собрав ядро в chroot-е (хотя, вроде ничего криминального в таком способе опакечивания ядра я не вижу, мне даже так удобно).

Автор:  drBatty [ 18 фев 2014 11:53 ]
Заголовок сообщения:  Re: Как собрать ядро в пакет txz?

Цитата:
Но можно и выстрелить из пушки по воробьям, а также себе в ногу, собрав ядро в chroot-е (хотя, вроде ничего криминального в таком способе опакечивания ядра я не вижу, мне даже так удобно).

дык у меня других вариантов нет, ибо на нетбуке собрать ядро невозможно. Потому и собираю в chroot'е.

Цитата:
в /boot - bzip'ом пожатый образ ядра и вызовет lilo

что-то я не заметил. У мну в /usr/src/linux-*/arch/x86/ собрался образ.

Страница 1 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/