Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Ядро Ubunu ?  (Прочитано 3186 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Garre

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Ядро Ubunu ?
« : 25 Ноября 2011, 19:08:30 »
Скажите как собрать ядро системы ?

с чего начать ?

Оффлайн Valter

  • Активист
  • *
  • Сообщений: 320
    • Просмотр профиля
Re: Ядро Ubunu ?
« Ответ #1 : 25 Ноября 2011, 19:28:07 »
ASUS X55VD
Intel Core i3-3110M CPU @ 2.4GHz x4, RAM 3.8

Оффлайн tuft

  • Активист
  • *
  • Сообщений: 715
  • Я просто не берегу силы на обратный путь © Гаттака
    • Просмотр профиля
Re: Ядро Ubunu ?
« Ответ #2 : 25 Ноября 2011, 19:39:38 »
А зачем собирать?
В любом деле следует проявлять больше дерзости, чем осмотрительности. Жизнь - женщина, и всегда предпочтёт воина © Ф.В. Ницше

Оффлайн Garre

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Ядро Ubunu ?
« Ответ #3 : 25 Ноября 2011, 19:51:05 »
А https://www.kernel.org/  на русском есть ?

собирать для сибя !

Это получица посматрите :Пошаговая инструкция по сборке ядра в Ubuntu.
Поиск и подготовка ядра

1. Для начала скачиваем последнюю стабильную версию ядра (примерно 60 МиБ). Я скачивал linux-2.6.32.6, но у вас может оказаться более свежая версия.
 2. Скачанный файл надо разархивировать в произвольную папку (некоторые эксперты рекомендуют использовать /usr/src/, но на самом деле это не играет какой-то значимой роли). Я выбрал /home/user/temp, где после извлечения появилась папка linux-2.6.32.6.
Подготовка к сборке.

1. Необходимо установить через Synaptic следующие пакеты:

gcc
 libc6-dev
 kernel-package
 libncurses5-dev
 fakeroot
 build-essential

которые потребуются при компиляции ядра. И пакеты (со всеми предложенными зависимостями):

qt3-dev-tools
 libqt3-mt-dev

Эти пакеты необходимы для запуска GUI конфигуратора ядра xconfig.
 2. Даем ядру имя. Заходим в папку с ядром (у меня это - /home/user/temp/linux-2.6.32.6) и в файле Makefile прописываем значение строки EXTRAVERSION, например:

EXTRAVERSION=-mynewkernel.ver.1

Значение этого поля можеты быть любым. Его предназначение - это помочь вам не запутаться в куче ядер, если вы будете перекомпилировать его несколько раз.

Теперь мы готовы к сборке. Осталось только выяснить, что же мы будем собирать. Как я говорил выше, для оптимизации ядра надо исключить из него все лишнее, а для этого надо точно знать, какие устройства используются в системе, и какие будут использоваться в будущем. Т.е. нам нужна информация об оборудовании.
Сбор сведений об устройствах в Linux

Теперь выясняем параметры следующего:
процессор(ы)
оперативная память
чипсет материнской платы
видеокарта
сетевая карта(ы)
звуковая карта и прочее мультимедийное оборудование
жесткие диски и CD/DVD приводы
устройства ввода/вывода (клавиатура, мышь, планшеты и т.д.)
файловые системы
параметры сети (протоколы разных уровней)
системы и алгоритмы шифрования
usb-устройства и т.д.

Этот список не полон. Если говорить коротко, то надо знать о системе ВСЕ!!! Вернее сказать - желательно. Чем больше вы знаете о своем компьютере, тем эффективнее вы сможете собрать ядро. Я бы рекомендовал постепенно накапливать информацию и пересобирать ядро в свете новых сведений, улучшая его день за днем.

Для получения сведений о подключенных устройствах можно использовать следующие команды

lspci
 lsusb

lspci выводит список PCI устройств: чипсет, контроллеры видео, сетевые конроллеры и т.д.

Рекомендую использовать так:

lspci -v

Ключ -v означает verbose, т.е сильно подробно. Например, для сетевой карты я получил такой ответ:

04:00.0 Network controller: Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev 01)
 Subsystem: Device 1a3b:1089
 Flags: bus master, fast devsel, latency 0, IRQ 18
 Memory at febf0000 (64-bit, non-prefetchable) [size=64K]
 Capabilities: <access denied>
 Kernel driver in use: ath9k
 Kernel modules: ath9k

В строке "Kernel driver in use" указан используемый драйвер ядра. Эта информация нам в дальнейшем очень пригодится.

lsusb - список USB устройств: клавиатуры, мышки, вэб-камеры и т.д.
 Обе эти команды можно использовать с ключом -v для получения более подробной информации об устройствах.
 Так же можно использовать команду dmesg для получения сведений об устройстве или группе устройств, например подробные сведения о процессоре можно получить так:

dmesg | grep CPU

Но я всегда отдаю предпочтение программам с GUI. Рекомендую использовать одну (или обе сразу) из приведенных ниже программ. Они есть в стандартном репозитории Ubuntu.
Sysinfo

Очень простой и понятный интерфейс. Если вы не никогда не собирали информацию о своей системе и не компилировали ядро, то эта программа для вас.


Здесь нам наиболее важен пункт Hardware (в левой колонке). Выбрать тип оборудования можно в выпадающем меню справа вверху.

System Profiler and Benchmark

Вот эту программу я рекомендую для сбора информации о своем компьютере.


В отличии от sysinfo информация об устройствах здесь несколько лучше структурирована и более полна: в описании устройства указано, какой модуль за него отвечает (на скриншоте видно, что драйвер Wi-Fi карты находится в модуле ath9). Но самое важно для нас находится в пункте Kernel Modules. Здесь перечислены все (почти) модули, загруженные ядром, т.е. мы можем быть уверены на 90%, что эти устройства есть в системе.



Конфигурирование ядра я рекомендую делать с открытым System Profiler and Benchmark, постоянно сверяясь с ним.
Конфигурирование и сборка ядра.

Теперь, когда все готово, можно приступать к созданию своей конфигурации.

Сначала находим в папке /boot файл с названием config-2.6.XX-XX-generic, копируем его в папку с ядром и переименовываем в .config.

Копируем в папку с ядром следующий скрипт build-kernel.sh:

#!/bin/sh

# Запускаем графическую утилиту конфигурирования ядра xconfig
 # Можно заменить команду на gconfig (GTK версия)
 # После внесения изменений сохранитесь и закройте конфигуратор
 make xconfig

# Очищаем папку от мусора (если он есть)
 sudo make-kpkg clean

# Собираем ядро в .deb пакеты
 sudo make-kpkg --initrd kernel_image kernel_headers

# Очищаем папку с исходниками от "мусора". Будут удалены все скомпилированные компоненты и файл настроек .config
 # Прежде чем ответить "Да" рекомендуется сохранить копию .config
 read  -p "Очистить от временных файлов включая .config? (эта операция необратима, рекомендуется сохранить копию .config. Если не уверены, ответьте НЕТ) [y/n]: " myyn
 case "$myyn" in
 [ДдYy]   ) echo "Начало очистки папки ядра...";sudo make mrproper;;
 [НнNn]   ) echo "Пропускаем...";;
 *      ) echo "Пропускаем...";;
 esac

# Выходим из режима суперпользователя
 exit

и присваиваем ему соответствующие права:

chmod +x build-kernel.sh

Запускаем скрипт build-kernel.sh командой:

./build-kernel.sh

Если получите ошибку запуска xconfig/gconfig, то надо удовлетворить требуемые зависимости (опять лезем в Synaptic и выбираем указанные в ошибке пакеты). Если все условия выполнены, то первое, что мы увидим это окно графического конфигуратора:



Все параметры (за исключением лишь некоторых) имееют 3 возможных состояния: включить в ядро (галочка в чекбоксе), скомпилировать как модуль (точка в чекбоксе), не подключать никак (пустой чекбокс).



В gconfig состояние пакета отмечается галочкой в одном из 3х столбцов: N - не устанавливать, M - установить модулем, Y - установить в основное ядро.

Какую утилиты выбрать - это дело каждого, но я предпочитаю xconfig.

Отмечаем нужные нам параметры для установки.
Советы и подсказки по конфигурированию ядра.
Перед сборкой нового ядра убедитесь, что абсолютно все устройства вашей текущей конфигурации работаю нормально (это очень сильно облегчит вам жизнь).
При первом запуске конфигуратор будет использовать файл настроек вашего текущего ядра, т.к. обнаружит файла .config в папке с новым ядром. Поэтому, если все устройства в системе работают нормально, то НЕ ДОБАВЛЯЙТЕ ни какие пакеты, т.к. они ТОЧНО не будут использоваться в системе.
Если вы не уверены в необходимости того или иного модуля/драйвера, выбирайте "установить модулем". Тогда есть шанс, что он не будет мешать системе, даже если он не требуется.
Внимательно вчитывайтесь в описание модулей (и учите английский), если там есть рекомендации, то прислушайтесь к ним.
Удаляйте только то, что вы уверены вам не пригодится. Например, если у вас процессор от Intel, то все связанное с процессорами AMD можно удалять (и наоборот).
Используйте поиск. Сначала включите в меню Show all для отображения скрытых элементов (вложенные элементы, родитель которых не помечен для установки). Например, у меня ноутбук Asus, поэтому я ввел название марки в поиск и последовательно включил все, касающееся ноутбуков Asus. Аналогичным образом можно исключать модули, которые вам не нужны. Например, я нашел все модули для ноутбуков Dell, Compaq, Toshiba и др. и убрал их из конфигурации.
Не поленитесь прогнать поиском все модули, которые вы нашли с помощью System Profiler and Benchmark и убедитесь, что они включены в ядро (полностью включены, а не как модули), это даст прирост в производительности компьютера.

Я думаю, что для начала этого хватит. В идеале, конечно же, внимательно прочитать информацию о каждом модуле и определить для себя, нужен ли он. Но для этого нужно хорошее знание английского, глубокое понимание принципов работы компьютера, знание железа и не меньше суток свободного времени, чтобы все это прочитать и осознать. Я рекомендую начинать с реализации пп.1-7, и лишь потом (если все нормально) начинать эксперементировать с оставшимися модулями. Лично у меня ушел месяц на сборку ядра, которое мне нравится, но и в нем еще много лишнего (думаю, что еще полгода я буду его вычищать).
 Теперь можно переходить к сборке ядра. Все, что для этого нужно - сохранить полученный конфигурационный файл .config и закрыть конфигуратор. Скрипт автоматически выполнит очистку системы и запустит процесс сборки ядра. Ядро с параметрами по умолчанию от Ubuntu у меня собирается за 1,5 часа, а оптимизированное под мои нужды - 30 мин.


В результате работы скрипта build-kernel.sh в папке, где лежит папка с ядром (у меня /home/user/temp/) должны появиться два файла:

linux-headers-2.6.32.6_бла-бла-бла.deb
 linux-image-2.6.32.6_бла-бла-бла.deb

Это заголовки и образ ядра. Теперь устанавливаем эти .deb пакеты привычным способом (лучше сначала установите headers).
 Теперь можно перезагружаться.В меню grub вы увидите свое ядро. Скорее всего оно не подцепит графику, поэтому драйверы видеокарты придется ставить заново (это если вы пользуетесь проприетарными драйверами). Вот теперь все. Поздравляю - вы собрали свое ядро с нуля!
 Но не радуйтесь сильно, даже если все завелось с первой попытки (так тоже бывает - мне рассказывали).
Советы по работе с ядром
Не кидайтесь сразу еще раз собирать ядро, урезав его еще сильнее. Подождите 2-3 дня усиленной работы на компьютере, фиксируя все сбои и нестандартное/непривычное поведение системы. Когда же вы дозреете до следующего этапа сборки, то сохраняйте конфигурационный файл .config, чтобы всегда иметь возможность откатиться к рабочей версии.
Не стоит держать большое количество собранных ядер, поэтому не забывайте очищать систему от ядерного переизбытка.
При выходе новой версии ядра, смело кидайте ему свой .config, тогда вам придется лишь внимательно просмотреть изменения в новом ядре и выбрать нужное модули.
Перед сборкой нового ядра сделайте бэкап файла .config (он в папке с ядром). И выполните в папке с ядром команду sudo make mrproper, чтобы удалить все файлы, оставшиеся от предыдущей компиляции.

Вот так все просто!

 как ?  ;D

Оффлайн gregory5

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5085
    • Просмотр профиля
Re: Ядро Ubunu ?
« Ответ #4 : 25 Ноября 2011, 19:54:29 »
Ядро вам почти ничего не даст (за исключением некоторых патчей)
Сюда http://www.gentoo.ru/ сходите, есть простор для оптимизации всей системы

Оффлайн Garre

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Ядро Ubunu ?
« Ответ #5 : 25 Ноября 2011, 20:27:45 »
Тоесть нужна linux gentoo ?

Оффлайн tuft

  • Активист
  • *
  • Сообщений: 715
  • Я просто не берегу силы на обратный путь © Гаттака
    • Просмотр профиля
Re: Ядро Ubunu ?
« Ответ #6 : 25 Ноября 2011, 21:45:43 »
собирать для сибя !

А что это даст? Скиллзы?
В любом деле следует проявлять больше дерзости, чем осмотрительности. Жизнь - женщина, и всегда предпочтёт воина © Ф.В. Ницше

Оффлайн Кровавый

  • Старожил
  • *
  • Сообщений: 1626
  • Логика творит чудеса!
    • Просмотр профиля
Re: Ядро Ubunu ?
« Ответ #7 : 25 Ноября 2011, 22:05:40 »
А что это даст? Скиллзы?

+ прирост производительности от 15% до 25%, если делать это с головой.
Подробней тут.
Железо: AMD FX8350 4.2Ghz + 2x4Gb Kingston HeyperX + Asus M5A97 R2.0 + HDD WD WZ10EZEX 1TB 7200 rpm + SSD 128 GB + Win 10 x64.

Оффлайн Garre

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Ядро Ubunu ?
« Ответ #8 : 25 Ноября 2011, 23:24:04 »
Сборка и установка pf-kernel для Ubuntu

 Качаем ядро своей версии с kernel.org. Внимание: качать нужно версию без стабилизационных патчей (в случае с 2.6.38.11 качать нужно просто 2.6.38).
 Качаем pf-kernel для этой версии ядра отсюда.
 Распаковываем архивы и ставим патч.
patch -p1 < (адрес pfkernel патча)

 Копируем свой конфиг в папку с ядром.
cp /boot/config-`uname -r` .config

 При желании можно сделать localmodconfig, который отключит все лишние модули, это может сильно ускорить сборку ядра.

make localmodconfig
 если будет ругаться на то что нет /sbin/lsmod
ln -s /bin/lsmod /sbin/lsmod

 Настраиваем ядро
make menuconfig
 Нужно включить BFS, BFQ и tuxonice при желании, а также во вкладке о процессоре стоит выбрать оптимизацию под свой процессор.

 Ставим патч для ядер с kernel.org
sed -rie 's/echo "\+"/#echo "\+"/' scripts/setlocalversion

 Очищаем директорию
make-kpkg clean

 Собираем
CONCURRENCY_LEVEL=`getconf _NPROCESSORS_ONLN` fakeroot make-kpkg --initrd --append-to-version=-pf kernel_image kernel_headers

 Вот собственно и все. Ставим ядро командой dpkg -i *.deb, перезагружаемся и выбираем его в загрузчике

 Кто проверит ?

Оффлайн Кровавый

  • Старожил
  • *
  • Сообщений: 1626
  • Логика творит чудеса!
    • Просмотр профиля
Re: Ядро Ubunu ?
« Ответ #9 : 26 Ноября 2011, 12:57:37 »
А что тут проверять?
Мануал рабочий. Собирал по нему 3.1 с патчем для энергосбережения. Со второго раза даже более менее нормально получилось.
Только так и не смог драйвера на видеокарту NVIDIA поставить.
Но ОЗУ жрало, вместо обычных 450-500, где-то около 200-300. И это в KDE 4.7.
Железо: AMD FX8350 4.2Ghz + 2x4Gb Kingston HeyperX + Asus M5A97 R2.0 + HDD WD WZ10EZEX 1TB 7200 rpm + SSD 128 GB + Win 10 x64.

Оффлайн Garre

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Ядро Ubunu ?
« Ответ #10 : 26 Ноября 2011, 15:33:56 »
Видать чегото не то собрали и начье быболобы быстрее !

Пользователь решил продолжить мысль 26 Ноября 2011, 23:26:14:
Что скажите ?
« Последнее редактирование: 26 Ноября 2011, 23:26:14 от Garre »

Оффлайн MooSE

  • Старожил
  • *
  • Сообщений: 1117
    • Просмотр профиля
Re: Ядро Ubunu ?
« Ответ #11 : 27 Ноября 2011, 05:32:22 »
Годный вброс:)

Оффлайн Garre

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Ядро Ubunu ?
« Ответ #12 : 27 Ноября 2011, 12:17:00 »
не понятно !

Оффлайн Кровавый

  • Старожил
  • *
  • Сообщений: 1626
  • Логика творит чудеса!
    • Просмотр профиля
Re: Ядро Ubunu ?
« Ответ #13 : 27 Ноября 2011, 13:59:51 »
Видать чегото не то собрали и начье быболобы быстрее !

Собрал то. Много лишнего во время конфигурирования включил, это раз. Не нашёл заголовочных пакетов для сборки модулей NVIDIA, это два.
Железо: AMD FX8350 4.2Ghz + 2x4Gb Kingston HeyperX + Asus M5A97 R2.0 + HDD WD WZ10EZEX 1TB 7200 rpm + SSD 128 GB + Win 10 x64.

Оффлайн Garre

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Ядро Ubunu ?
« Ответ #14 : 27 Ноября 2011, 14:46:47 »
и как выключить ?

 

Страница сгенерирована за 0.059 секунд. Запросов: 25.