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

Вопрос по сборке ядра
http://www.slackware.ru/forum/viewtopic.php?f=44&t=2025
Страница 1 из 1

Автор:  AlexMak [ 10 ноя 2017 07:17 ]
Заголовок сообщения:  Вопрос по сборке ядра

Хотелось бы собрать ядро впервые в образовательных целях :-): . Не знаю даже где взять (kernel.org недоступен почему-то). В дистрибутиве тоже не понял где брать. Несколько дестких вопросов:
1) Где лежат исходники ядра? В категории К или в source/k дистрибутива? Какие именно там файлы скачивать? Мне, как я понял, желательно не SMP ядро для моего старичка ASUS EEE900.
2) Подойдет ли инструкция от сборки ядра 2.6? Т.е. если я буду повторять по ней все один-в-один для своего ядра 3.10.* ничего не навернется?(http://www.slackware.ru/wiki/%D0%9A%D0% ... 1%80%D0%B0)
3) Какие параметры в menuconfig выставлять для asus eee900, что лучше сделать модулями, а что - нет, для лучшей производительности? Могу предоставить lsmod, lspci и т.д. если нужно...

Автор:  Graf [ 10 ноя 2017 10:09 ]
Заголовок сообщения:  Re: Вопрос по сборке ядра

(kernel.org недоступен почему-то).

Доступен: https://www.kernel.org/pub/linux/kernel/
1) Где лежат исходники ядра?

slackware/k

Есть смысл почитать как собирал ядро Эрик - http://slackware.su/forum/index.php/top ... sg203.html
А так, сборка ядра, дело чисто индивидуальное, но сохранить старое ядро, ой как не помешает ;).

Автор:  bormant [ 10 ноя 2017 11:40 ]
Заголовок сообщения:  Re: Вопрос по сборке ядра

AlexMak,
пункт 1 не нужен.
Сейчас этим заведует kmod, пакет штатно входит в поставку.

Автор:  AlexMak [ 10 ноя 2017 11:51 ]
Заголовок сообщения:  Re: Вопрос по сборке ядра

Спасибо, почитаю Эрика. А что же лежит в source/k тогда за ядро и зачем, если уже есть в К категории?

Автор:  bormant [ 10 ноя 2017 12:31 ]
Заголовок сообщения:  Re: Вопрос по сборке ядра

AlexMak,
В наборе K лежит один пакет с исходниками ядра: kernel-source.
В source/k лежит все необходимое, чтобы тот пакет создать: сценарии, которыми опакечивается собранное ядро, конфиги, с которым оно собирается, описание пакета, что в него укладывается, тарбол исходников с kernel.org...

slackware*/k/
source/k/
И естественно: source/k/README.TXT, который на великом и могучем мог бы выглядеть как-то так:
Код:
Поскольку я должен где-то задокументировать это, ниже процесс
сборки пакета ядра для Slackware.  Я не латаю официальные
исходники ядра, но они не обязательно девственно чисты.

=============================================================
Примечания к версии (если есть):
=============================================================

Для ядер 4.x (сильно проще):

   Рас-tar-ьте исходники от Линуса в /usr/src.
   Смените владельца всех файлов на root:root с разумными разрешениями.
   Добавьте подходящий .config или воспользуйтесь make menuconfig и т.п.

   Примером может послужить один из файлов config* отсюда:
   # cat config-generic-4.4.14 > /usr/src/linux-4.4.14/.config

   Теперь запустите сборку:

   make oldconfig
   make bzImage
   make clean
   make prepare
   rm .version

Всё!  Теперь у вас чистое дерево исходников Linux,
настроенное для Slackware.

Ядро в Slackware поддерживает SMP.  При распространенности
многоядерных процессров выбор представляется очевидным.
Вероятно, эти ядра неплохо подходят и для машин с одним
процессором, если смогут на них работать.

После этого, если используете huge.s или generic.s, со сборкой
модулей ядра проблем быть не должно.

Развлекайтесь! :-)

Pat

Автор:  AlexMak [ 10 ноя 2017 12:56 ]
Заголовок сообщения:  Re: Вопрос по сборке ядра

Извините, туго доходит. Можно мне в образовательных целях скачать только пакет исходников из набора К ? Мне его хватит для сборки? Или мне необходимо еще качать конфиги и сценарии с source/k ? Ничего не читал пока, может вопросы отпадут в процессе чтения...

Автор:  bormant [ 10 ноя 2017 14:14 ]
Заголовок сообщения:  Re: Вопрос по сборке ядра

Цитата:
Можно мне в образовательных целях скачать только пакет исходников из набора К ?
Кто ж вам запретит.
Вопрос в том, нужно ли. В любом случае, скорее это будет пакет не из source/k, а slackware*/k/kernel-source, а если ядро обновлялось, то patches/packages/linux-*/kernel-source.
Вопрос о том, зачем еще одно такой же версии ядро, остался нераскрытым. Впрочем, в нем можно что-то исключить из сборки, что-то добавить, что-то иначе настроить и получить той же версии, но иначе сконфигурированное, бинарно другое.

Автор:  AlexMak [ 10 ноя 2017 19:42 ]
Заголовок сообщения:  Re: Вопрос по сборке ядра

Хорошо, спасибо. Еще вопрос, но не по теме. В момент, когда грузится ядро, срабатывают файлы инициализации и например, какой-то незначительный скрипт инициализации (например сети) не сработал. Но и дальше не идет загрузка, все повисло. Хотелось бы знать: можно как-то пропустить этот "проблемный" скрипт и продолжить загрузку без него? Навроде, CTRL+C, CTRL+Z или типа этого? Даже в DOS'е помню можно было (по F8 вроде). Просто не хочется из-за одной ошибки в конфиге доставать и перегружаться в livecd...

Автор:  bormant [ 10 ноя 2017 20:38 ]
Заголовок сообщения:  Re: Вопрос по сборке ядра

Цитата:
В момент, когда грузится ядро, срабатывают файлы инициализации
Нет такого момента.
В до-UEFI-шные времена было так:
1) по подаче питания выполняется инициализация оборудования (POST -- power on self test -- самотестирование по включению питания)
2) по завершении с загрузочного носителя читается первый (0-й) сектор в 512 байт в память по определенному адресу и туда отдается управление (ага, это и есть загрузчик в MBR)
3) получивший управление код обеспечивает дальнейшую загрузку
3.1) в случае LILO этот код
3.1.1) берет список секторов, где лежат initrd и ядро,
3.1.2) грузит в память первое и второе
3.1.3) передает управление ядру, передав ему ссылку на загруженный initrd
4) ядро, получив управление, инициализирует все обнаруженные устройства
4.1) при наличии initrd считает его корнем
4.2) иначе пытается в качестве корня смонтировать то, что передано параметром root= или зашито в ядро при компиляции
4.3) так или иначе, имея корень, ядро запускает с него процесс init (путь к нему может быть передан параметром init= и/или зашит в код ядра)
5.4) если это был initrd, то в конце он попытается заменить временный / из initrd на реальный /
5) получив управление, процесс init начинает исполнять то, что ему предписано его конфигом. В Slackware это /etc/inittab
6) в /etc/inittab прописано помимо инициализации консолей выполнение сценария начальной загрузки, в Slackware это /etc/rc.d/rc.S. Всё остальное можно проследить из rc.S и из /etc/inittab (слакбук, 4.1.3)

В UEFI-шные времена на смену п.2 пришла другая машинерия, но смысл ровно тот же, подробнее и в популярном изложении есть в википедии.

Для починки достаточно установочного носителя Slackware или загрузочного носителя, сделанного в процессе установки. Если не хочется доставать livecd, положите установочную среду одним из вариантов загрузки:
https://docs.slackware.com/howtos:slack ... l_from_hdd

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