Сборка ядра (Mandriva 2009 Powerpack x64)

PCLinuxOS

Модератор: Bizdelnick

Ответить
Аватара пользователя
Stream
Сообщения: 223
ОС: CentOS 6.4 без дров видео.

Сборка ядра

Сообщение Stream »

В каталог /usr/src вложены следущие каталоги

fglrx-8.522-3mdv2009.0/
linux-2.6.27.7-server-1mnb/
linux-2.6.27-desktop-0.rc8.2mnb/
linux-2.6.27-server-0.rc8.2mnb/

Чем отличаются linux-2.6.27.7-server-1mnb/ от linux-2.6.27-server-0.rc8.2mnb/?
Зачем нужен каталог fglrx-8.522-3mdv2009.0/?

В каталоге /boot присутствуют файлы vmlinuz-2.6.27.7-desktop-1mnb, vmlinuz-2.6.27-desktop-0.rc8.2mnb.
Какое ядро у меня стоит?

Настроил конфиг (ничего с ним не делал).
В каталоге с ядром ввожу

make bzImage

Появляется

make[1]: *** No rule to make target `init/main.o', needed by `init/built-in.o'. Stop.
make: *** [init] Error 2
[root@localhost linux-2.6.27-desktop-0.rc8.2mnb]#

make all
Результат тот же

Что это за проблема со сборкой ядра?

//А README есть там только по ksymoops tool
Спасибо сказали:
olelukoie
Сообщения: 1248
ОС: Linux, Win

Re: Сборка ядра

Сообщение olelukoie »

1. Каталоги linux-2.6.27.7-server-1mnb/ и linux-2.6.27-server-0.rc8.2mnb/ отличаются номерами версий ядра, что не трудно заметить самому ;) .
2. В каталоге fglrx-8.522-3mdv2009.0/ лежат исходники драйвера fglrx, которые используются системой dkms для пересборки этого драйвера под новые версии ядра.
3. В Вашей системе установлены все ядра, которые есть в каталоге /boot :)
4. Какой каталог Вы называете "каталог с ядром", в котором вводите команды make? Приведите полный путь.
Спасибо сказали:
Аватара пользователя
Stream
Сообщения: 223
ОС: CentOS 6.4 без дров видео.

Re: Сборка ядра

Сообщение Stream »

olelukoie

3. Извиняюсь за неточную формулировку словосочетанием "ядро стоит" , имелось ввиду, как проверить какое ядро загрузилось в память и используется в данный момент.
4. Каталог с исходниками ядра, которое хочу собрать.
/usr/src/linux-2.6.27-desktop-0.rc8.2mnb/

/* Оффтоп, а как результат команды make в данной директории вывести в текстовый файл, а то make > example.txt не помогает.
И хотел бы узнать справку по командам ">"*/
Спасибо сказали:
olelukoie
Сообщения: 1248
ОС: Linux, Win

Re: Сборка ядра

Сообщение olelukoie »

Stream писал(а):
17.01.2009 18:23
olelukoie

3. Извиняюсь за неточную формулировку словосочетанием "ядро стоит" , имелось ввиду, как проверить какое ядро загрузилось в память и используется в данный момент.

Командой uname -r или uname -a
4. Каталог с исходниками ядра, которое хочу собрать.
/usr/src/linux-2.6.27-desktop-0.rc8.2mnb/

/* Оффтоп, а как результат команды make в данной директории вывести в текстовый файл, а то make > example.txt не помогает.
И хотел бы узнать справку по командам ">"*/

Это не каталог с исходниками ядра! Все каталоги, в именах которых присутсвует linux-<версия>-desktop, linux-<версия>-server, linux-<версия>-<что-угодно-еще> содержат только заголовочные файлы ядра, необходимые для сборки сторонних драйверов и прикладных программ.
Полные исходники ядра лежат в пакете kernel-source-..., а директория будет /usr/src/kernel-<версия>-<номер-билда> (номер билда имеет вид 1mnb или 2mnb). После сборки этих исходников Вы получите ядро с номером билда 2mnbcustom (см. первые четыре строки в корневом Makefile ядра, и, в частности, строку EXTRAVERSION=...).
И еще - я надеюсь, Вы знаете, зачем Вам надо пересобирать ядро ;) ?

По оффтопу - ошибки обычно пишутся в поток err, а не в поток out, потому оператор > и не работает. Чтобы направить оба потока в файл, надо использовать чуть более сложную команду:
#make > file.txt 2>&1
Спасибо сказали:
Аватара пользователя
Stream
Сообщения: 223
ОС: CentOS 6.4 без дров видео.

Re: Сборка ядра

Сообщение Stream »

olelukoie писал(а):
17.01.2009 18:41
Полные исходники ядра лежат в пакете kernel-source-


Поскольку в "Software Menedgement" у меня выбор из нескольких ядер, то какое лучше аыбрать?
Скриншоты прилагаются.

Пока что охота выбрать для конкретных целей то, которое установлено - RC 8.2
Видимо, остальные более старые.
А зачем они нужны?
Вложения
core_2.jpeg
core1.jpg
Спасибо сказали:
olelukoie
Сообщения: 1248
ОС: Linux, Win

Re: Сборка ядра

Сообщение olelukoie »

Конечно то, которое новее! Поставьте пакет kernel-source-latest версии 2.6.27.7 для своей архитектуры (видимо x86_64). Но этот Ваш вопрос снова вызвал у меня тот же встречный вопрос: Вы точно знаете, зачем Вам нужны исходники ядра?

Нет, остальные как раз новее - сперва идут релиз-кандидаты (2.6.27-rc1 - 2.6.27-rc9), потом релиз (2.6.27), а потом "патч-левел" к нему (2.6.27.1 - 2.6.27.х, где х - произвольное число.)
Спасибо сказали:
Аватара пользователя
Stream
Сообщения: 223
ОС: CentOS 6.4 без дров видео.

Re: Сборка ядра

Сообщение Stream »

olelukoie писал(а):
17.01.2009 19:07
ы точно знаете, зачем Вам нужны исходники ядра?


Хочу посмотреть на отсутсвие ошибок при перепрошивке ядра на тоже самое при конфигурации, автоматичечески установленной системой.
Мне охота, чтобы система была под моим управлением, и я имел возможность конфигурировать ее под себя любым образом.
Пока (я начинающий) я не полезу что - то менять в ядре. У меня нет таких целей.
Но саму возможность проверить стоит.


Но возникает вопрос, что я получу введя команду make bZImage - ту же конфигурацию ядра (без модулей), что и при установке или - совсем не то?

А что за пакеты kernel-source-latest?
Virtual RPM for latest kernel source
//This package is a virtual rpm that aims to make sure you always have the latest kernel-source installed

Каким образом он убедит пользователя в том, что у него последняя версия ядра?
Спасибо сказали:
olelukoie
Сообщения: 1248
ОС: Linux, Win

Re: Сборка ядра

Сообщение olelukoie »

Stream писал(а):
17.01.2009 19:28
olelukoie

olelukoie писал(а):
17.01.2009 19:07
Поставьте пакет kernel-source-latest версии 2.6.27.7


Получается, что kernel-source-latest версии 2.6.27.-0.rc8.2mnb (установленная у меня) старее чем 2.6.27.7 .

См. мой предыдущий пост, я там ке-что добавил.
olelukoie писал(а):
17.01.2009 19:07
ы точно знаете, зачем Вам нужны исходники ядра?


Хочу посмотреть на отсутсвие ошибок при перепрошивке ядра на тоже самое при конфигурации, автоматичечески установленной системой.
Мне охота, чтобы система была под моим управлением, и я имел возможность конфигурировать ее под себя любым образом.
Пока (я начинающий) я не полезу что - то менять в ядре. У меня нет таких целей.
Но саму возможность проверить стоит.


Но возникает вопрос, что я получу введя команду make bZImage - ту же конфигурацию ядра (без модулей), что и при установке или совсем не то?

Нет, ядро получится немного другим. Причина - разные конфиги. Мандрива из одних и тех же исходников собирает как минимум два варианта ядер - desktop и server (раньше еще были laptop и desktop586, но сейчас я их не вижу). Делается это путем изменения конфигов и, возможно, добавления спец. патчей. Если хотите узнать, что именно там делается, скачайте пакет kernel-2.6.27.7-1mnb2.src.rpm и изучите spec-файл из него. В пакете же kernel-source лежат некие "усредненные исходники", да еще и без какого-либо конфига (там нет файла .config). Именно по этой причине к номеру билда для этих исходников и добавляется слово custom ("пользовательский").
Спасибо сказали:
Аватара пользователя
Stream
Сообщения: 223
ОС: CentOS 6.4 без дров видео.

Re: Сборка ядра

Сообщение Stream »

olelukoie писал(а):
17.01.2009 19:40
Нет, ядро получится немного другим. Причина - разные конфиги. Мандрива из одних и тех же исходников собирает как минимум два варианта ядер - desktop и serve


Я не могу обнаружить именно 2 таких варианта ядер, собранных у себя в системе.

Я отправил текстовый файл с наименованиемя содержимого каталога /boot
В нем нет упоминания о Server, зато есть RC2.
//Не понятно, зачем нужен RC2

olelukoie писал(а):
17.01.2009 19:40
В пакете же kernel-source лежат некие "усредненные исходники", да еще и без какого-либо конфига (там нет файла .config).


Получается, что я не могу воспользоваться конфигурацией ядра, которое установлено?
Хотелось бы ту конфигурацию (config) ядра используемого системой, использовать при его изменении.
Не настраивать ее с нуля с усредненных исходников, а только править.
// В моем примере вообще не править :-)

olelukoie писал(а):
17.01.2009 19:40
Нет, ядро получится немного другим.


Сильно ли будет различаться то ядро, которое используется в системе после ее первой установки и другое - "усредненное", собранное из исходников?
После первой установки с диска ядро настроено под конкретный компьютер или нет?
Вложения
boot.txt
(434 байт) 23 скачивания
Спасибо сказали:
olelukoie
Сообщения: 1248
ОС: Linux, Win

Re: Сборка ядра

Сообщение olelukoie »

Stream писал(а):
17.01.2009 20:19
olelukoie писал(а):
17.01.2009 19:40
Нет, ядро получится немного другим. Причина - разные конфиги. Мандрива из одних и тех же исходников собирает как минимум два варианта ядер - desktop и serve


Я не могу обнаружить именно 2 таких варианта ядер, собранных у себя в системе.

Я отправил текстовый файл с наименованиемя содержимого каталога /boot
В нем нет упоминания о Server, зато есть RC2.
//Не понятно, зачем нужен RC2

Судя по текстовому файлу у Вас реально установлены только два ядра, и оба типа desktop. Директория /usr/src/linux-2.6.27.7-server-1mnb/ появилась в результате установки пакета kernel-devel для соотв. ядра и сейчас Вы можете сделать следующее:
1. Введите команду rpm -qf /usr/src/linux-2.6.27.7-server-1mnb и посмотрите, что она напишет.
2. Если будет написано, что эта директория не принадлежит ни одному пакету, то просто удалите ее (она должна быть пустой или почти пустой). Если будет написано имя пакета, удалите этот пакет (через "установку и удаление программ").
RC8 (а не RC2) остался в системе, так как ядро, в отличие от остальных пакетов, никогда не обновляется. Оно всегда ставится параллельно со всеми предыдущими - на тот случай, если Вы не сможете его загрузить и Вам потребуется откат на предыдущую версию. Просто мера предосторожности. Если с новым ядром все ОК, то можете удалить старое через "установку и удаление программ".
Получается, что я не могу воспользоваться конфигурацией ядра, которое установлено?
Хотелось бы ту конфигурацию (config) ядра используемого системой, использовать при его изменении.
Не настраивать ее с нуля с усредненных исходников, а только править.

Использовать конфиг текущего ядра можно, только его надо скопировать из /proc.
Сильно ли будет различаться то ядро, которое используется в системе после ее первой установки и другое - "усредненное", собранное из исходников?
После первой установки с диска ядро настроено под конкретный компьютер или нет?

А вот насколько полученное после компиляции ядро будет отличаться от оригинального, зависит от того, что содержится в упомянутом мной spec-файле. Я его не изучал, если Вам интересно, займитесь сами :) . Чтобы получить точно такое же ядро (кроме timestamp, который будет соответствовать времени сборки и Вы ничего с эти поделать не сможете), надо в точности воспроизвести команды сборки, имеющиеся в разделе %build этого spec-файла и относящиеся к сборке desktop-версии ядра (я имею в виду не только make && make modules, но и предшествующие им дополнительные команды, которые там могут быть). Также посмотрите, что и в каком виде запаковывается в kernel-source, может там какие-то патчи пропущены или еще что-то не так.
Под кокретный комп ядро в дистрибутиве, конечно же, не настраивается. Настраивается только выбор server/desktop и загрузка доп. модулей.
Кстати, поскольку версия ядра при его пересборке сменится с mnb на mnbcustom, все модули также потребуется пересобрать, иначе они не загрузятся.
Спасибо сказали:
Аватара пользователя
Stream
Сообщения: 223
ОС: CentOS 6.4 без дров видео.

Re: Сборка ядра

Сообщение Stream »

olelukoie писал(а):
17.01.2009 21:02
RC8 (а не RC2) остался в системе, так как ядро, в отличие от остальных пакетов, никогда не обновляется. Оно всегда ставится параллельно со всеми предыдущими - на тот случай, если Вы не сможете его загрузить и Вам потребуется откат на предыдущую версию. Просто мера предосторожности. Если с новым ядром все ОК, то можете удалить старое через "установку и удаление программ".


Меня это заинтересовало, так как результат выполнения команды uname-r
2.6.27.7-desktop-1mnb
//В посте №5 я спутал RC с резултатом написал не о том ядре.
Ядро я в этой системе не обновлял.

Но зачем системе хранить релиз кандидат, когда сразу было установлено более новое ядро.

olelukoie писал(а):
17.01.2009 21:02
1. Введите команду rpm -qf /usr/src/linux-2.6.27.7-server-1mnb и посмотрите, что она напишет.


rpm -qf /usr/src/linux-2.6.27-server-0.rc8.2mnb/
результат
kernel-server-devel-2.6.27-0.rc8.2mnb-1-1mnb2

/* К сожалению, я не могу выполнить все операции сейчас и ответить про их работу, так как
когда я зашел в центр управления KDE, поставил галочку на пакете kernel-source-latest версии 2.6.27.7.
Скачивание пакета (37MB) из интернета остановилось на последней секунде.
Перезагрузка системы и повторная попытка скачать привели к тому же результату.
Я нажимаю выход из окна закачки.
Пытаюсь в том же центре управления удалить пакет kernel-server-devel-2.6.27-0.rc8.2mnb-1-1mnb2
Появляется сообщение: "RPM database is locked (Another program is already using it). */
Вложения
error_center.jpeg
Спасибо сказали:
olelukoie
Сообщения: 1248
ОС: Linux, Win

Re: Сборка ядра

Сообщение olelukoie »

Stream писал(а):
17.01.2009 21:50
/* К сожалению, я не могу выполнить все операции сейчас и ответить про их работу, так как
когда я зашел в центр управления KDE, поставил галочку на пакете kernel-source-latest версии 2.6.27.7.
Скачивание пакета (37MB) из интернета остановилось на последней секунде.
Перезагрузка системы и повторная попытка скачать привели к тому же результату.
Я нажимаю выход из окна закачки.
Пытаюсь в том же центре управления удалить пакет kernel-server-devel-2.6.27-0.rc8.2mnb-1-1mnb2
Появляется сообщение: "RPM database is locked (Another program is already using it). */

Видимо запущена утилита автоматической проверки обновлений пакетов. Выполните команду 'ps -A | grep rpm' и убейте все процессы, которые она найдет (если найдет). Также отключите mdkapplet или полностью удалите пакет mdkonline - автоматические обновления станут недоступны, но оно особо и не надо, можно периодически проверять обновления вручную через "установку и удаление программ".
Спасибо сказали:
Аватара пользователя
Stream
Сообщения: 223
ОС: CentOS 6.4 без дров видео.

Re: Сборка ядра

Сообщение Stream »

olelukoie писал(а):
18.01.2009 12:05
или полностью удалите пакет mdkonline

Так и сделал.
В /usr/src , как и должно было быть, появился каталог usr/src/linux-2.6.27.7-1mnb/.

Конфиг .config взял из proc
Выполнил make bZimage
make modules

Содержимое папки /lib/modules после make modules стало таким
2.6.27.7-desktop-1mnb/ - это каталог, созданный непосредственно после выполнения команды
2.6.27-desktop-0.rc8.2mnb/ - а этот каталог уже был в системе. Видимо, создан для использования ядром RC8.2, вместо которого грузится 2.6.27.7.

Скопировал и переименовал файл ядра в /boot/Coretest.7-desktop-1mnb

Теперь хочу прописать в /grub/menu.lst инфу об ядре.

Так выглядит одна из его секций

title linux
kernel (hd1,5)/boot/vmlinuz BOOT_IMAGE=linux root=UUID=d7261582-3774-4a11-9920-f053f6a044ac splash=silent vga=788
initrd (hd1,5)/boot/initrd.img
//Я откопировал её

Не ясно, что означает "BOOT_IMAGE=linux root=UUID=d7261582-3774-4a11-9920-f053f6a044ac splash=silent vga=788".

Добавил строку
title Coretest
kernel (hd1,5)/boot/Coretest.7-desktop-1mnb BOOT_IMAGE=linux root=UUID=d7261582-3774-4a11-9920-f053f6a044ac splash=silent vga=788
initrd (hd1,5)/boot/initrd.img

Пробовал и

kernel (hd1,5)/boot/Coretest.7-desktop-1mnb BOOT_IMAGE=linux root=/dev/sda6 splash=silent vga=788

При загрузке ядра появляется черный экран без надписей.
Это ошибка ядра или неправильно настроенный GRUB?
Спасибо сказали:
Аватара пользователя
Stream
Сообщения: 223
ОС: CentOS 6.4 без дров видео.

Re: Сборка ядра

Сообщение Stream »

make -j4 не помогло

(Juliette) писал(а):Просто, скажем, если в системе много ядер, то нужно их аккуратно прописывать для каждого ядра со своими циферками и прочее, и явно тогда прописывать в конфиге. А если так, как, скажем, Мандрива делает -- т.е. одна единственная симв. ссылка по умолчанию на её собственный System.map, то, потенциально, может возникнуть kernel oops из-за несоответствия System.map загружаемому ядру.


(С) Установка Мандривы с другими Linux'ами Сообщение 4

А как Мандрива делает? Что она делает?
Кстати, что это за символьная ссылка по умолчанию на ее System.map?
Как дать информацию системе о System.map другого ядра?

Созданный после компиляции System.map я перемещу в /boot под другим именем (именем созданного ядра).
Но как передать ОС инфу о нем?

Как я понял, одного копирования файла ядра недостаточно и прописывания строк в GRUB. А что нужно еще?
Спасибо сказали:
olelukoie
Сообщения: 1248
ОС: Linux, Win

Re: Сборка ядра

Сообщение olelukoie »

Stream писал(а):
20.01.2009 12:43
make -j4 не помогло

Не помогло сделать что?
Кстати, что это за символьная ссылка по умолчанию на ее System.map?
Как дать информацию системе о System.map другого ядра?

Созданный после компиляции System.map я перемещу в /boot под другим именем (именем созданного ядра).
Но как передать ОС инфу о нем?

Как я понял, одного копирования файла ядра недостаточно и прописывания строк в GRUB. А что нужно еще?

Ссылка на правльный файл System.map создается автоматически. Вообще у ядра (исходников) есть команда make install, которая (в теории) копирует ядро и System.map в /boot под нужными именами и прописывает это ядро в начальном загрузчике. Я ею не пользовался, потому о качестве ее работы ничего сказать не могу.
Выполнил make bZimage
make modules

Содержимое папки /lib/modules после make modules стало таким ...

После выполнения этих команд содержимое /lib/modules не меняется. Чтобы установить модули, надо выполнить команду make modules_install :) .

Не ясно, что означает "BOOT_IMAGE=linux root=UUID=d7261582-3774-4a11-9920-f053f6a044ac splash=silent vga=788".

Добавил строку
title Coretest
kernel (hd1,5)/boot/Coretest.7-desktop-1mnb BOOT_IMAGE=linux root=UUID=d7261582-3774-4a11-9920-f053f6a044ac splash=silent vga=788
initrd (hd1,5)/boot/initrd.img

В строке, которая Вам непонятна, идут параметры загрузки ядра. Первый параметр (BOOT_IMAGE=linux) я не знаю, зачем нужен, а дальше идет указание на корневой раздел (в форме UUID), опция splash=silent, заставляющая вывести графическую заставку при загрузке ядра, и опция vga=788, задающая разрешение экрана, при котором идет загрузка и которое затем выставляется для текстовых консолей.

А вот со строкой initrd (hd1,5)/boot/initrd.img более сложно. Это мини-образ системы, включающий ядро, который загружается перед основным ядром. Из этого образа грузятся драйвера IDE/SATA/SCSI, необходимые для корректной работы с дисками. Для каждого нового ядра его необходимо собирать отдельно. Для этого есть команда mkinitrd, полный ее синтаксис посмотрите в скриптах установки пакета kernel-desktop. Там же можно посмотреть, как мандряшное ядро себя прописывает в загрузчике (grub или lilo).
Спасибо сказали:
Аватара пользователя
Stream
Сообщения: 223
ОС: CentOS 6.4 без дров видео.

Re: Сборка ядра

Сообщение Stream »

olelukoie писал(а):
20.01.2009 20:47
Не помогло сделать что?


Загрузить новое ядро.

olelukoie писал(а):
20.01.2009 20:47
а дальше идет указание на корневой раздел (в форме UUID)


olelukoie писал(а):
20.01.2009 20:47
Ссылка на правльный файл System.map создается автоматически.


А если без автоматики, то где эта ссылка прописывается?
Спасибо сказали:
Аватара пользователя
Stream
Сообщения: 223
ОС: CentOS 6.4 без дров видео.

Re: Сборка ядра

Сообщение Stream »

Стала доступна версия
kernel-source-2.6.27.8-0.uc1mnb

А что означает uc1mnb?
Спасибо сказали:
olelukoie
Сообщения: 1248
ОС: Linux, Win

Re: Сборка ядра

Сообщение olelukoie »

Stream писал(а):
28.01.2009 18:16
Стала доступна версия
kernel-source-2.6.27.8-0.uc1mnb

А что означает uc1mnb?

Ответил в соседней ветке.

Stream писал(а):
20.01.2009 21:36
olelukoie писал(а):
20.01.2009 20:47
Не помогло сделать что?


Загрузить новое ядро.

И не поможет - эта команда просто запускает утилиту make в четыре потока. Если У Вас 4-хядерный проц, то сборка бинарника из сырцов будет происходить в 4 (примерно) раза быстрее, вот и все.
olelukoie писал(а):
20.01.2009 20:47
а дальше идет указание на корневой раздел (в форме UUID)


olelukoie писал(а):
20.01.2009 20:47
Ссылка на правльный файл System.map создается автоматически.


А если без автоматики, то где эта ссылка прописывается?

Она не прописывается. Файл System.map из текущих исходников ядра копируется в /boot под более сложным именем, содержащим номер версии ядра, а собственно файл /boot/System.map является симлинком на него. Вот и все.
Спасибо сказали:
Аватара пользователя
Stream
Сообщения: 223
ОС: CentOS 6.4 без дров видео.

Re: Сборка ядра

Сообщение Stream »

olelukoie писал(а):
28.01.2009 22:28
И не поможет - эта команда просто запускает утилиту make в четыре потока.

так как -j4 относится к команде make. а не к настройкам ядра.

Кстати, а ядро с http://www.kernel.org/ как пойдет на Мандриве?
Спасибо сказали:
Ответить