Сборка ядра (Mandriva 2009 Powerpack x64)
Модератор: Bizdelnick
-
Stream
- Сообщения: 223
- ОС: CentOS 6.4 без дров видео.
Сборка ядра
В каталог /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
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: Сборка ядра
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? Приведите полный путь.
2. В каталоге fglrx-8.522-3mdv2009.0/ лежат исходники драйвера fglrx, которые используются системой dkms для пересборки этого драйвера под новые версии ядра.
3. В Вашей системе установлены все ядра, которые есть в каталоге /boot
4. Какой каталог Вы называете "каталог с ядром", в котором вводите команды make? Приведите полный путь.
-
Stream
- Сообщения: 223
- ОС: CentOS 6.4 без дров видео.
Re: Сборка ядра
olelukoie
3. Извиняюсь за неточную формулировку словосочетанием "ядро стоит" , имелось ввиду, как проверить какое ядро загрузилось в память и используется в данный момент.
4. Каталог с исходниками ядра, которое хочу собрать.
/usr/src/linux-2.6.27-desktop-0.rc8.2mnb/
/* Оффтоп, а как результат команды make в данной директории вывести в текстовый файл, а то make > example.txt не помогает.
И хотел бы узнать справку по командам ">"*/
3. Извиняюсь за неточную формулировку словосочетанием "ядро стоит" , имелось ввиду, как проверить какое ядро загрузилось в память и используется в данный момент.
4. Каталог с исходниками ядра, которое хочу собрать.
/usr/src/linux-2.6.27-desktop-0.rc8.2mnb/
/* Оффтоп, а как результат команды make в данной директории вывести в текстовый файл, а то make > example.txt не помогает.
И хотел бы узнать справку по командам ">"*/
-
olelukoie
- Сообщения: 1248
- ОС: Linux, Win
Re: Сборка ядра
Командой 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: Сборка ядра
Поскольку в "Software Menedgement" у меня выбор из нескольких ядер, то какое лучше аыбрать?
Скриншоты прилагаются.
Пока что охота выбрать для конкретных целей то, которое установлено - RC 8.2
Видимо, остальные более старые.
А зачем они нужны?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
olelukoie
- Сообщения: 1248
- ОС: Linux, Win
Re: Сборка ядра
Конечно то, которое новее! Поставьте пакет 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.х, где х - произвольное число.)
Нет, остальные как раз новее - сперва идут релиз-кандидаты (2.6.27-rc1 - 2.6.27-rc9), потом релиз (2.6.27), а потом "патч-левел" к нему (2.6.27.1 - 2.6.27.х, где х - произвольное число.)
-
Stream
- Сообщения: 223
- ОС: CentOS 6.4 без дров видео.
Re: Сборка ядра
Хочу посмотреть на отсутсвие ошибок при перепрошивке ядра на тоже самое при конфигурации, автоматичечески установленной системой.
Мне охота, чтобы система была под моим управлением, и я имел возможность конфигурировать ее под себя любым образом.
Пока (я начинающий) я не полезу что - то менять в ядре. У меня нет таких целей.
Но саму возможность проверить стоит.
Но возникает вопрос, что я получу введя команду 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: Сборка ядра
См. мой предыдущий пост, я там ке-что добавил.
Хочу посмотреть на отсутсвие ошибок при перепрошивке ядра на тоже самое при конфигурации, автоматичечески установленной системой.
Мне охота, чтобы система была под моим управлением, и я имел возможность конфигурировать ее под себя любым образом.
Пока (я начинающий) я не полезу что - то менять в ядре. У меня нет таких целей.
Но саму возможность проверить стоит.
Но возникает вопрос, что я получу введя команду 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: Сборка ядра
Я не могу обнаружить именно 2 таких варианта ядер, собранных у себя в системе.
Я отправил текстовый файл с наименованиемя содержимого каталога /boot
В нем нет упоминания о Server, зато есть RC2.
//Не понятно, зачем нужен RC2
Получается, что я не могу воспользоваться конфигурацией ядра, которое установлено?
Хотелось бы ту конфигурацию (config) ядра используемого системой, использовать при его изменении.
Не настраивать ее с нуля с усредненных исходников, а только править.
// В моем примере вообще не править :-)
Сильно ли будет различаться то ядро, которое используется в системе после ее первой установки и другое - "усредненное", собранное из исходников?
После первой установки с диска ядро настроено под конкретный компьютер или нет?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
olelukoie
- Сообщения: 1248
- ОС: Linux, Win
Re: Сборка ядра
Судя по текстовому файлу у Вас реально установлены только два ядра, и оба типа 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-файле. Я его не изучал, если Вам интересно, займитесь сами
Под кокретный комп ядро в дистрибутиве, конечно же, не настраивается. Настраивается только выбор server/desktop и загрузка доп. модулей.
Кстати, поскольку версия ядра при его пересборке сменится с mnb на mnbcustom, все модули также потребуется пересобрать, иначе они не загрузятся.
-
Stream
- Сообщения: 223
- ОС: CentOS 6.4 без дров видео.
Re: Сборка ядра
olelukoie писал(а): ↑17.01.2009 21:02RC8 (а не RC2) остался в системе, так как ядро, в отличие от остальных пакетов, никогда не обновляется. Оно всегда ставится параллельно со всеми предыдущими - на тот случай, если Вы не сможете его загрузить и Вам потребуется откат на предыдущую версию. Просто мера предосторожности. Если с новым ядром все ОК, то можете удалить старое через "установку и удаление программ".
Меня это заинтересовало, так как результат выполнения команды uname-r
2.6.27.7-desktop-1mnb
//В посте №5 я спутал RC с резултатом написал не о том ядре.
Ядро я в этой системе не обновлял.
Но зачем системе хранить релиз кандидат, когда сразу было установлено более новое ядро.
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). */
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
olelukoie
- Сообщения: 1248
- ОС: Linux, Win
Re: Сборка ядра
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: Сборка ядра
Так и сделал.
В /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: Сборка ядра
make -j4 не помогло
(С) Установка Мандривы с другими Linux'ами Сообщение 4
А как Мандрива делает? Что она делает?
Кстати, что это за символьная ссылка по умолчанию на ее System.map?
Как дать информацию системе о System.map другого ядра?
Созданный после компиляции System.map я перемещу в /boot под другим именем (именем созданного ядра).
Но как передать ОС инфу о нем?
Как я понял, одного копирования файла ядра недостаточно и прописывания строк в GRUB. А что нужно еще?
(Juliette) писал(а):Просто, скажем, если в системе много ядер, то нужно их аккуратно прописывать для каждого ядра со своими циферками и прочее, и явно тогда прописывать в конфиге. А если так, как, скажем, Мандрива делает -- т.е. одна единственная симв. ссылка по умолчанию на её собственный System.map, то, потенциально, может возникнуть kernel oops из-за несоответствия System.map загружаемому ядру.
(С) Установка Мандривы с другими Linux'ами Сообщение 4
А как Мандрива делает? Что она делает?
Кстати, что это за символьная ссылка по умолчанию на ее System.map?
Как дать информацию системе о System.map другого ядра?
Созданный после компиляции System.map я перемещу в /boot под другим именем (именем созданного ядра).
Но как передать ОС инфу о нем?
Как я понял, одного копирования файла ядра недостаточно и прописывания строк в GRUB. А что нужно еще?
-
olelukoie
- Сообщения: 1248
- ОС: Linux, Win
Re: Сборка ядра
Не помогло сделать что?
Кстати, что это за символьная ссылка по умолчанию на ее 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
- Сообщения: 223
- ОС: CentOS 6.4 без дров видео.
Re: Сборка ядра
Стала доступна версия
kernel-source-2.6.27.8-0.uc1mnb
А что означает uc1mnb?
kernel-source-2.6.27.8-0.uc1mnb
А что означает uc1mnb?
-
olelukoie
- Сообщения: 1248
- ОС: Linux, Win
Re: Сборка ядра
Ответил в соседней ветке.
И не поможет - эта команда просто запускает утилиту make в четыре потока. Если У Вас 4-хядерный проц, то сборка бинарника из сырцов будет происходить в 4 (примерно) раза быстрее, вот и все.
Она не прописывается. Файл System.map из текущих исходников ядра копируется в /boot под более сложным именем, содержащим номер версии ядра, а собственно файл /boot/System.map является симлинком на него. Вот и все.
-
Stream
- Сообщения: 223
- ОС: CentOS 6.4 без дров видео.
Re: Сборка ядра
так как -j4 относится к команде make. а не к настройкам ядра.
Кстати, а ядро с http://www.kernel.org/ как пойдет на Мандриве?