Оптимизирован ли Ubuntu для многоядерных процессоров? Ubuntu оптимизация ядра


Собираем ядро Linux | Losst

Самым основным компонентом операционной системы Linux есть ядро. Именно ядро выступает промежуточным звеном между пользовательскими программами и оборудованием компьютера. Во всех бинарных дистрибутивах нам не нужно заботиться о сборке и настройке ядра, все уже сделали за нас разработчики дистрибутива. Но если мы хотим собрать свой дистрибутив сами или установить самую свежую версию ядра, нам придется собирать ядро вручную.

Первый вариант раньше был актуален для тех кто хотел получить максимальную производительность от своего оборудования, но сейчас, учитывая стремительное увеличение мощности компьютеров увеличение производительности при сборке ядра совсем незаметно. Сейчас сборка ядра может понадобиться пользователям не бинарных дистрибутивов, таких как Gentoo, тем, кто хочет внести некоторые изменения в ядро, получить новую самую свежую версию ядра и, конечно, же тем, кто хочет полностью разобраться в работе своей системы.

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

Содержание статьи:

Получение исходников ядра

Самое первое что нужно сделать - это скачать исходники ядра. Исходники лучшие брать с сайта вашего дистрибутива, если они там есть или официального сайта ядра: kernel.org. Мы рассмотрим загрузку исходников с kernel.org.

Перед тем как скачивать исходники нам нужно определиться с версией ядра которую будем собирать. Есть две основных версии релизов - стабильные (stable) и кандидаты в релизы (rc), есть, конечно, еще стабильные с длительным периодом поддержки (longterm) но важно сейчас разобраться с первыми двумя. Стабильные это, как правило, не самые новые, но зато уже хорошо протестированные ядра с минимальным количеством багов. Тестовые - наоборот, самые новые, но могут содержать различные ошибки.

Итак когда определились с версией заходим на kernel.org и скачиваем нужные исходники в формате tar.xz:

В этой статье будет использована самая новая на данный момент нестабильная версия 4.4.rc7.

Получить исходники ядра Linux можно также с помощью утилиты git. Сначала создадим папку для исходников:

mkdir kernel_sources

Для загрузки самой последней версии наберите:

git clone https://github.com/torvalds/linux

 

Распаковка исходников ядра

Теперь у нас есть сохраненные исходники. Переходим в папку с исходниками:

cd linux_sources

Или если загружали ядро linux с помощью браузера, то сначала создадим эту папку и скопируем в нее архив:

mkdir linux_sources

cp ~/Downloads/linux* ~/linux_sources

Распаковываем архив с помощью утилиты tar:

tar xf linux*

И переходим в папку с распакованным ядром, у меня это:

cd linux-4.4-rc7/

Автоматическая настройка сборки ядра Linux

Перед тем как начнется сборка ядра linux, нам придется его настроить. Как я и говорил, сначала рассмотрим автоматический вариант настройки сборки ядра. В вашей системе уже есть собранное, настроенное производителем дистрибутива, и полностью рабочее ядро. Если вы не хотите разбираться с тонкостями конфигурации ядра, можно просто извлечь уже готовые настройки старого ядра и сгенерировать на их основе настройки для нового. Нам придется лишь указать значения для новых параметров. Учитывая, что в последних версиях не было и не намечается серьезных изменений можно отвечать на все эти параметры как предлагает скрипт настройки.

Параметры используемого ядра хранятся в архиве по адресу /proc/config.gz. Распакуем конфиг и поместим его в нашу папку утилитой zcat:

zcat /proc/config.gz > .config

А дальше запускаем скрипт адаптации настроек:

make oldconfig

В процессе его работы нужно будет ответить на несколько вопросов. Это новые параметры, которые изменились или были добавлены в новое ядро и поддержка нового оборудования, в большинстве случаев можно выбирать вариант по умолчанию. Обычно есть три варианта y - включить, n - не включать, m - включить в качестве модуля. Рекомендованный вариант написан с большой буквы, для его выбора просто нажмите Enter.

На все про-все у вас уйдет около 10-ти минут. После завершения процесса, ядро готово к сборке. Дальше мы рассмотрим настройку ядра вручную, а вы можете сразу перелистать к сборке ядра Linux.

Ручная настройка ядра Linux

Ручная настройка - сложный и трудоемкий процесс, но зато она позволяет понять как работает ваша система, какие функции используются и создать ядро с минимально нужным набором функций под свои потребности. Мы рассмотрим только главные шаги, которые нужно выполнить чтобы ядро собралось и заработало. Со всем остальным вам придется разбираться самому опираясь на документацию ядра. Благо в утилите настройки для каждого параметра есть обширная документация которая поможет вам понять какие еще настройки нужно включить.

Начнем. Для запуска меню настроек ядра linux наберите:

make menuconfig

Откроется вот утилита с интерфейсом ncurses:

Как видите, некоторые обязательные опции уже включены, чтобы облегчить вам процесс настройки. Начнем с самых основных настроек. Чтобы включить параметр нажмите y, чтобы включить модулем - m, для перемещения используйте клавиши стрелок и Enter, возвратиться на уровень вверх можно кнопкой Exit Откройте пункт General Setup.

Здесь устанавливаем такие параметры:

Local Version - локальная версия ядра, будет увеличиваться при каждой сборке на единицу, чтобы новые ядра при установке не заменяли собой старые, устанавливаем значение 1.

Automatically append version information to the version string - добавлять версию в название файла ядра.

Kernel Compression Mode - режим сжатия образа ядра, самый эффективный lzma.

Default Hostname - имя компьютера, отображаемое в приглашении ввода

POSIX Message Queues - поддержка очередей POSTIX

Support for paging of anonymous memory  - включаем поддержку swap

Control Group support - поддержка механизма распределения ресурсов между группами процессов

Kernel .config support и Enable access to .config through /proc/config.gz- включаем возможность извлечь конфигурацию ядра через /proc/config.gz

Здесь все, возвращаемся на уровень вверх и включаем Enable loadable module support, эта функция разрешает загрузку внешних модулей, дальше открываем его меню и включаем:

Module unloading - поддержка отключения модулей

Forced module unloading - принудительное отключение модулей

Опять возвращаемся назад и открываем Processor type and features:

Processor family (Opteron/Athlon64/Hammer/K8) - выбираем свой тип процессора.

Опять возвращаемся и переходим в раздел File systems, тут установите все нужные галочки.

Обязательно включите The Extended 3 (ext3) filesystem и The Extended 4 (ext4) filesystem - для поддержки стандартных ext3 и ext4 файловых систем

Возвращаемся и идем в Kernel hacking.

Здесь включаем Magic SysRq key - поддержка магических функций SysRq, вещь не первой необходимости, но временами полезная.

Остался еще один пункт, самый сложный, потому что вам его придется пройти самому.  Device Drivers - нужно пройтись по разделам и повключать драйвера для своего оборудования. Под оборудованием я подразумеваю нестандартные жесткие диски, мышки, USB устройства, веб-камеры, Bluetooth, WIFI адаптеры, принтеры и т д.

Посмотреть какое оборудование подключено к вашей системе можно командой:

lspci

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

Чтобы сохранить настройки переместите указатель с помощью стрелок вправо-влево, з позиции Select в позицию Save и нажмите Enter, потом еще раз подтвердите сохранение:

Чтобы выйти нажмите пару раз кнопку Exit.

Сборка ядра Linux

После завершения всех приготовлений может быть выполнена сборка ядра linux. Для начала процесса сборки выполните:

make && make modules

Теперь можете идти пить кофе или гулять, потому что процесс сборки длинный и займет около получаса.

Установка нового ядра

Когда ядро и модули будут собраны новое ядро можно устанавливать. Можно вручную скопировать файл ядра в папку загрузчика:

cp arch/x86_64/boot/bzImage /boot/vmlinuz

А можно просто выполнить установочный скрипт, сразу установив заодно и модули:

sudo make install && sudo make modules_install

После установки не забудьте обновить конфигурацию загрузчика Grub:

grub-mkconfig -o /boot/grub/grub.cfg

И перезагружаем компьютер чтобы увидеть новое ядро в работе:

sudo reboot

Выводы

Вот и все. В этой статье мы подробно рассмотрели как собрать ядро Linux из исходников. Это будет полезно всем желающим лучшие понять свою систему, и тем, кто хочет получить самую новую версию ядра в своей системе. Если остались вопросы, задавайте комментарии!

losst.ru

Оптимизирован ли Ubuntu для многоядерных процессоров? Ubuntu Linux

Использует ли Ubuntu многоядерные процессоры (как говорят Windows 7)?

Другими словами, оптимизирована ли многозадачность, чтобы пользователи могли использовать 4-х ядерные процессоры?

Да, Ubuntu оптимизирован для многоядерных процессоров и существует уже много лет.

Некоторые предпосылки :

«Версия 2.0 (ядра Linux) была выпущена 9 июня 1996 года. В этой серии было 41 релиз. Главной особенностью 2.0 была поддержка SMP (то есть симметричная мультипроцессорная обработка в одной системе) и поддержка большего числа типов процессоров «.

Ubuntu – это операционная система, дистрибутив Linux. Операционная система состоит из нескольких программных компонентов, таких как ядро, библиотеки , службы / демоны, приложения и т. Д.

Ubuntu использует ядро Linux, которое использует симметричную многопроцессорную обработку (SMP) и несколько ядер. Он очень хорошо масштабируется от однопроцессорных однопроцессорных систем с одним процессором до высокопроизводительных кластеров суперкомпьютеров с тысячами многоядерных процессоров.

Ubuntu поставляется с сотнями библиотек, некоторые из которых являются многопоточными и потокобезопасными, некоторые из которых не являются. В некоторых случаях для них имеет смысл многопоточность, в других – неприменимо, вообще возможно или не имеет большого смысла.

Ubuntu поставляется с сотнями приложений, некоторые из них кодируются, чтобы использовать многоядерные процессоры, а некоторые нет. В некоторых случаях имеет смысл кодировать приложение как таковое, в других случаях его невозможно. Не все приложения, которые могут или должны использовать несколько ядер, делают это.

Например, имеет смысл использовать игру с несколькими ядрами для графики, звука, сети, физики и т. Д. Однако для калькулятора, скриншота, suduko или редактора меню нет смысла знать многоядерность.

Ядро Ubuntu поддерживает несколько процессоров в течение длительного времени, на самом деле не имеет большого значения, если его многоядерные или многократные процессоры в одной системе, они будут обрабатываться идеально.

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

Чтобы приложение могло использовать несколько процессоров / ядер одновременно, оно должно быть создано для совместного использования нагрузки процесса над этими CPU / ядрами.

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

То же самое происходит с Linux Kernel и дистрибутивом Ubuntu, если приложение создано для одного потока, тогда больше ничего CPU не будет делать.

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

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

Да, он отлично работает для меня, и у меня есть несколько процессоров и гиперпоточность, что я забыл, что это значит, но я уверен, что это означает, что каждый процессор может выполнять несколько потоков, что в сочетании с тем, что каждый процессор имеет 2 ядра, казалось бы, проблема. Единственная проблема, с которой я столкнулся до сих пор, заключается в том, что программы на ubuntu, как правило, замерзают. Я делал это случаться реже, уменьшая swappiness, так как у меня 6 ГБ ОЗУ.

ubuntu.fliplinux.com

Настройка ядра linux | Losst

Ядро Linux - очень гибкая вещь, позволяющая настроить очень много параметров. Такие параметры, как поддерживаемые устройства и функции настраиваются при сборке ядра. Но сегодня не будет рассматриваться компиляция ядра Linux. Мы поговорим о более тонкой настройке параметров ядра на лету, прямо во время его работы.

Да, мы не можем включать добавлять неподдерживаемые модули и драйвера устройств, но мы можем настроить такие параметры ядра Linux, как особенности работы процессора, памяти, виртуального пространства памяти, планировщика ядра, сетевой стек и многое другое. Все эти настройки доступны через файловую систему proc. Мы рассматривали подробно ее в предыдущей статье, теперь же остановимся только на директории /proc/sys, с помощью которой мы и будем настраивать ядро.

Содержание статьи:

Как выполняется настройка?

Здесь все предельно просто. В этом каталоге и его подкаталогах лежат файлы, это и есть параметры, а значения в файлах нам и нужно изменять. Для этого можно использовать самую простую конструкцию из команды echo и оператора перенаправления вывода:

echo "1" > /proc/sys/net/ipv4/ip_forward

Значение 1 будет записано в файл ipv4_forward. Но измененные таким способом параметры не сохраняются после перезагрузки. Перед тем как рассматривать как сохранить параметры ядра linux из proc рассмотрим еще один способ их модификации.

Для работы с параметрами ядра есть утилита sysctl. Она представляет все параметры в виде переменных. Имена этих переменных соответствуют адресу файла в папке /proc/sys только слеш заменен точкой. Например:

net.ipv4.ip_forward

Вы можете установить значение параметра такой командой:

sysctl net.ipv4.ip_forward=1

Но это изменение тоже не сохранится, чтобы сохранить настройку после перезагрузки нужно добавить опцию -w:

sysctl -w net.ipv4.ip_forward=1

Вы можете также сразу посмотреть все доступные переменные с помощью опции -a:

sysctl -a

abi.vsyscall32 = 1debug.exception-trace = 1dev.cdrom.autoclose = 0dev.cdrom.autoeject = 0dev.cdrom.check_media = 0dev.cdrom.debug = 0...

vm.stat_interval = 1vm.swappiness = 60vm.user_reserve_kbytes = 131072vm.vfs_cache_pressure = 100vm.zone_reclaim_mode = 0

Все эти переменные сохраняются в обычные конфигурационные файлы для сохранения между перезагрузками. Переменные, в зависимости от назначения распределяются между этими файлами:

Вы также можете вручную добавлять переменные и их значения в эти файлы. Если вы хотите вернуть значения переменных до состояния сохраненного в файлах и удалить свои изменения выполните:

sysctl --system

* Applying /boot/sysctl.conf-4.1.21-14-default ...kernel.hung_task_timeout_secs = 0kernel.msgmax = 65536kernel.msgmnb = 65536kernel.shmmax = 0xffffffffffffffffkernel.shmall = 0x0fffffffffffff00vm.dirty_ratio = 20

Теперь вы знаете как работать с переменными, дальше мы рассмотрим значение некоторых, самых важных переменных, с помощью которых может быть выполнена настройка ядра linux.

Настройка ядра Linux

abi.vsyscall32

Если установлено 1, разрешает выполнение 32 битных программ в 64 битной системе. По умолчанию включено, можете отключить, а затем попробовать запустить, например, skype.

debug.exception-trace

При возникновении ошибки в ядре выводить значения регистров процессора и стек вызовов процедур. По умолчанию включено.

dev.cdrom.autoclose

Ваш CDROM будет автоматически закрыт при попытке его монтирования, по умолчанию отключено.

dev.cdrom.autoeject

CDROM будет открыт после размонтирования содержащегося там диска с помощью команды umount.

dev.hpet.max-user-freq

Максимальная частота генерации прерываний от системного таймера High Precision Event Timer (HPET), который пришел на замену таймеру реального времени RTC. По умолчанию 64.

fs.aio-nr

Количество асинхронных операций ввода и вывода в вашей файловой системе.

fs.file-max

Максимальное количество дескрипторов файлов, которые может создать и обрабатывать ядро. Если вы часто получаете сообщения об ошибке из-за невозможности создать дескриптор файла увеличьте этот лимит. По умолчанию установлено значение 10 % от вашей оперативной памяти.

fs.inotify.max_queued_events

Подсистема ядра inotify позволяет следить за изменениями в файловой системе. Этот параметр устанавливает максимальное количество событий, которые могут находиться в очереди, перед тем как их обработает программа.

fs.inotify.max_user_instances

Максимальное количество объектов inotify, которые может создать один пользователь.

fs.inotify.max_user_watches

Максимальное количество файлов и директорий, за которыми может наблюдать один объект inotify.

cad_pid

PID процесса, который получит сигнал, если будет нажато сочетание клавиш Ctrl+Alt+Del

kernel.ctrl-alt-del

Если значение параметра 0, система отправляет сигнал процессу Init или тому, который вы назначили в предыдущей переменной, чтобы выполнить правильную перезагрузку. Если значение больше нуля, будет выполнена немедленная перезагрузка.

kernel.domainname

Позволяет установить доменное имя NIS (Network Internet Services) и YP (Yellow Pages). Но не путайте это доменное имя с DNS, это совсем разные вещи.

kernel.hostname

Имя вашего компьютера. Это самый простой способ изменить имя компьютера прямо сейчас, без перезагрузки.

kernel.modules_disabled

Позволяет отключить загрузку модулей ядра.

kernel.panic

Указывает количество секунд после ошибки в ядре (kernel panic) до перезагрузки.

kernel.pid_max

Максимальное значение PID процесса. Когда PID достигает этого значения, ядро переходит опять к минимальному. Значения больше этого не выделяются.

kernel.random.boot_id

Этот файл доступен только для чтения и содержит уникальный, случайный идентификатор загрузки. Генерируется для каждой загрузки.

kernel.random.uuid

При каждом запросе генерирует случайный UUID. Тоже доступен только для чтения.

kernel.randomize_va_space

Рандомизация адресного пространства это функция увеличивающая безопасность вашей системы. Она защищает от атак на переполнение буфера. По умолчанию включена.

kernel.sysrq

Позволяет включить или отключить управление ядром с помощью SysRQ. Доступны такие параметры:

kernel.threads-max

Максимальное количество запущенных потоков для процессов.

net.ipv4.icmp_echo_ignore_all

Если включено, ядро будет игнорировать все icmp запросы. Рекомендуется для защиты от DDOS атак.

net.ipv4.icmp_echo_ignore_broadcasts

Так же, как и в предыдущем варианте, только игнорироваться будут только широковещательные icmp запросы.

net.ipv4.ip_default_ttl

Максимальное количество узлов, через которые может пройти отправленный пакет перед тем, как достигнет цели.

net.ipv4.ip_forward

Разрешить проходящие пакеты через этот компьютер. Обычно такая настройка параметров ядра Linux нужна для роутеров.

net.ipv4.ip_local_port_range

Диапазон локальных портов, которые могут быть использованы вашими программами.

net.ipv4.tcp_rfc1337

Установите 1 чтобы защитить компьютер от атаки TCP TimeWait.

net.ipv4.tcp_fin_timeout

Таймаут ожидания завершения соединения после отправки пакета FIN. Рекомендовано 15.

net.ipv4.tcp_keepalive_time

Поддерживать соединение активным определенное время, например, 300 секунд. По истечении этого времени TCP соединение будет разорвано.

net.core.rmem_default

Указывает размер по умолчанию буфера для сокета получения данных по сети.

net.core.rmem_max

Максимальный размер буфера сокета для получения данных по сети.

net.core.wmem_default

Размер сокета по умолчанию для отправки данных по сети.

net.core.wmem_max

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

net.ipv4.tcp_rmem

Количество памяти, доступной для работы TCP.

vm.dirty_background_ratio

Указывает процент от общей системной памяти, когда фоновый демон pdflush записи данных начнет переписывать кешированные данные на диск. По умолчанию установлено 10, но в быстрых системах такое частое сбрасывание не нужно, поэтому этот параметр можно увеличить.

vm.dirty_ratio

Похожий параметр. Только на этот раз он указывает сколько общей оперативной памяти должно быть занято, чтобы процесс, который ведет запись данных на диск инициировал запись кэшированных данных непосредственно на жесткий диск.

vm.laptop_mode

Функция laptop mode позволяет не сразу записывать данные на жесткий диск после запроса, а хранить их указанное время в оперативной памяти. Может быть полезно если вы экономите заряд батареи и не хотите, чтобы жесткий диск всегда вращался.

vm.swappiness

Устанавливает процент свободной памяти, по достижении которого данные начинают переноситься на swap раздел, для систем с большим количеством памяти рекомендовано значение 10.

Выводы

Мы рассмотрели далеко не все параметры ядра linux, здесь описаны лишь самые интересные из них. Более подробную информацию и еще больше переменных вы можете найти в официальной документации по ядру Linux. И будьте осторожны, конфигурация ядра Linux - дело серьезное. Если я упустил какой-то важный параметр, напишите в комментариях!

losst.ru

Свое ядро в *ubuntu, или Зачем и как компилировать ядро в Linux

Когда мне говорят о жесточайших тормозах Линукса по сравнению с виндой, установленной на одной и той же машине, я задаю один единственный вопрос: «У вас ядро самосборное или то раздутое до невозможности, что поставляется в дистрибутиве по умолчанию?» Обычно ответ: «Естественно, то что в дистрибутиве!»

Кроме того, при этом воспринимается с огромным удивлением, что для улучшения работы системы не мешало бы пересобрать ядро под свой конкретный компьютер, дабы отключить в нем огромное количество того, что абсолютно не нужно для вашего железа, а лишь тормозит его работу… Сразу возникает резонный вопрос, зачем же разработчики дистрибутива включили в него настолько тормозное ядро, что обычный пользователь, установивший себе этот дистрибутив, должен сам перекомпилировать его?.. И вопрос вроде бы логичен, да не совсем…Разработчики дистрибутивов обычно включают в него такое ядро, которое могло бы без проблем распознать максимально возможное железо, как на компьютере, который покупал еще ваш дедушка, дабы в свободное от просмотра новостей по телеку порезаться в «Call of duty», так и новейшую систему, купленную для выжимания максимума из возможностей компьютера. Естественно, при этом ядро получается раздутым донельзя, и при работе жутко тормозит, ибо системе приходится каждый раз «ковыряться» в большой куче записей и драйверов внутри ядра, что не может радовать ни вас, ни ваш компьютер… А компиляция собственного ядра позволяет отключить все ненужное, оставив только необходимую функциональность… Дело в том, что при работе операционной системы Linux, ядро — единственный участок памяти, который не свопуется, поэтому вполне логично сделать его как можно меньше. Надеюсь, я научно-популярно объяснил абсолютную необходимость пересобрания ядра?..

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

Итак, как и обещал ранее, расскажу о процессе настройки и компиляции собственного ядра… Поехали!

Первое, что нам понадобится, - это собственно исходники нового ядра, под управлением которого скоро будет работать ваш Линукс. Скачать можно совершенно свободно на http://www.kernel.org. Качать необходимо последнее стабильное ядро (оно обычно первое в списке, там где написано «The latest stable version of the Linux kernel is…»). Советую брать архив tar.bz2, но всего лишь потому, что он меньше по размеру. Если вы уже собирали ядро, то вам можно будет просто докачать заплатки, то есть патчи, чтобы не качать довольно большое по объему ядро целиком… На самом деле, я рекомендую использовать полное ядро, ибо читал, что при заплаточном собирании ядра могут возникать различные проблемы, зачастую напрямую связанные с простой кривизной рук, однако, без соответствующих знаний лучше не рисковать…

Итак, ядро скачано… Задаем команду:

sudo chmod 777 /usr/src

После этого, забрасываем его (скачанный архив) в папку /usr/src. Распаковываем архив командой:

tar -jxvf xxxxx.tar.bz2

В этой команде xxxxx.tar.bz2 - это название файла архива с ядром… Как только закончится распаковка, ваши исходники будут находиться в каталоге /usr/src/xxxxx.

Прежде, чем приступить к настройке ядра, точно выяснить спецификации вашего компьютера:1) тип процессора,2) чипсет материнской платы,3) тип видеокарты,4) тип сетевой платы,5) тип саунд-карты,6) тип жестких дисков,7) usb-устройства и прочее…

Далее, перед сборкой ядра необходимо установить сопроводительные пакеты: gcc, libc6-dev, kernel-package, libncurses5-dev, fakeroot и build-essential.

Когда все установлено и изучено, можно приступать собственно к конфигурированию ядра.

Заходим в директорию /boot, и видим там файл примерно такого названия config-2.6.24-19-generic. Он нам и нужен. Копируем его в каталог с исходниками /usr/src/xxxxx и переименовываем его в .config.

Также предварительно открываем файл Makefile, и в строчке "EXTRAVERSION=" дописываем свое название для ядра, например, EXTRAVERSION=-mykernel. Никакой другой функции эта строчка не несет, кроме, как удобства в опознании собственного ядра.

Далее запускаем конфигуратор ядра, для чего, находясь в папке /usr/src/xxxxx, даем команду:

make menuconfig

Эта команда запускает консольный интерфейс настройки. Ежели вам более по душе графический конфигуратор, то для его запуска нужно использовать команду:

make xconfig

Есть еще вариант консольной настройки:

make oldconfig

Этот вариант очень полезен только тогда, когда уже имеется сформированный файл настроек .config (можно использовать файл настроек от старого ядра). В этом варианте задаются только вопросы по возможностям, появившимся с той версии ядра, для которой сделан файл настроек.

Если вы хотите, чтобы ядро работало стабильно и максимально быстро, ответственно подойдите к вопросу настройки. Внимательно читайте каждый пункт. Если чего-то не понимаете, то ищите ответы в интернете. Например, здесь, можно найти описание многих настроек и советы по оптимальному их использованию. Кстати, там же в разделе "3.4 Пример настройки ядра" имеется и несколько советов по оптимизации ядра.

После настройки выбираем пункт "Сохранить конфигурацию в новый файл", где указываем имя файла, отличного от .config, например .config_mykernel. Затем переименовываем .config в .config_old. И у вас получается два файла - .config_old и .config_mykernel. Кстати, есть возможность посмотреть различия между стандартной и вашей конфигурацией так:

diff .config .config_mykernel

Теперь копируем вашу конфигурацию .config_mykernel как .config. Т.е. у вас получится три файла конфигурации. При компиляции будет использоваться файл .config. Файлы .config_ubuntu и .config_mykernel нам помогут в будущем для новой компиляции. Это на тот случай, если новое ядро окажется неработоспособным.

Далее приступим к компиляции. Перед этим, нужно очистить мусор командой:

make-kpkg clean

Компиляцию ядра стоит делать под суперпользователем. Для чего становимся рутом и запускаем процесс сборки ядра:

sudo -s -Hmake-kpkg --initrd --revision=mykernel.1 kernel_image kernel_headers

в этой строчке mykernel.1 обозначает название ядра. Можно писать все что душе угодно.

Операция компиляции занимает довольно продолжительное время, зависящее от мощности компьютера, у меня оно обычно занимало около получаса…

По окончании процесса создадутся два deb-файла с ядром, сконфигурированным конкретно под ваши нужды. Поздравляю, ядро готово.

Теперь необходимо установить собранное ядро в систему:

sudo dpkg -i linux-image-xxxxx.debsudo dpkg -i linux-headers-xxxxx.deb

Замените на точные названия созданных вами deb-файлов. Далее перегружаемся и видим, в меню свое ядро. Если у вас все загрузилось как положено, я думаю, вы сразу ощутите прирост производительности. Однако, если у вас установлена, например, карточка от nVidia, скорее всего на этом все и закончится… У меня, например, после запуска моей версии ядра просто был черный экран и ноль эмоций…

Исправилось это установкой проприетарных драйверов от nVidia. Есть два варианта их установки: под новое ядро (при этом графический сервер будет работать только под вашим ядром (рекомендуется, если вы не планируете работать ни в каком ядре, кроме своего) и под несколько существующих у вас ядер (в таком случае система будет грузиться как в новом, созданном вами ядре, так и в предыдущем). Но это уже совсем другая история…

pingvinoff.net

Ядро | Русскоязычная документация по Ubuntu

Ядро (англ. kernel) – то, вокруг чего строится всё остальное. Именно оно и называется Linux. Сейчас словом Linux в быту называют построенную на нём операционную систему, хотя по-хорошему она называется GNU/Linux (ядро Linux и ПО от проекта GNU, многие десятилетия находящейся в разработке).

В Ubuntu исппользуется ядро с большим количеством патчей, часть из которых добавляет нестабильные и экспериментальные возможности1).

Каждый релиз Ubuntu имеет собственную версию ядра. LTS-релизы начиная с 10.04 получили возможность обновить ядро до версий, входящих в состав более новых релизов.

Версия UbuntuВерсия ядра
4.10 2.6.9
5.04 2.6.11
5.10 2.6.13
6.06 LTS 2.6.15
6.10 2.6.18
7.04 2.6.19
7.10 2.6.20
8.04 LTS 2.6.24
8.10 2.6.27
9.04 2.6.28
9.10 2.6.31
10.04 LTS 2.6.32
10.10 2.6.35
11.04 2.6.38
11.10 3.0.4
12.04 LTS 3.2
12.10 3.5
13.04 3.8
13.10 3.11
14.04 LTS 3.13
14.10 3.16
15.04 3.19

Форки

Установка

Ядро является одним из жизненно важных компонентов каждого дистрибутива Linux. В Ubuntu ядро содержится в пакетах linux-image-версия_ядра-тип_ядра. Для простоты обновления так же имеется пакет linux-image-тип_ядра, в зависимостях которого указана последняя версия ядра имеющеяся в репозитории.

Нумерация версий ядра Ubuntu и на сайте kernel.org не совпадает, так как для обозначения добавленных патчей разработчики из Canonical добавляют микроверсию. Например, версия 3.2.0-23 будет означать, что ядро базируется на ветке 3.2, на которую было наложено 23 патча.

В репозитории Ubuntu поддерживаются следующие типы ядер:

generic-pae ядро позволяет 32-битной системе использовать до 64ГБ общего объёма оперативной памяти, выделяя под нужды конкретного процесса не более 4ГБ, в то время как простое ядро generic работает не более чем с 4ГБ ОЗУ.

64-битное ядро позволяет адресовать до 1ТБ памяти, потребляемой процессами.

Если требуется обновить ядро на более новую мажорную версию4) (обычно это связано с тем, что в новых версиях добавляется поддержка нового оборудования, устраняются регрессии) можно воспользоватся официально поддерживаемым архивом http://kernel.ubuntu.com/~kernel-ppa/mainline/.

Компиляция ядра

Сборка ядра из исходных кодов требует некоторых навыков и знаний о работе ОС.

Перед началом сборки ядра необходимо установить следующие пакеты:

build-essential fakeroot ncurses-dev libssl-dev

Все дальнейшие действия необходимо выполнять от лица суперпользователя:

sudo su

Получение исходного кода

Исходный код ядра, используемого в Ubuntu можно получить установив пакет linux-source:

apt-get install linux-source

После установки в директории /usr/src появится архив называющийся linux-source-верися_ядра.tar.bz2.

Так же можно скачать архив и с исходным кодом ядра с сайта kernel.org.

Скачивая ядро с сайта kernel.org, вам придётся наложить на него патчи

Конфигурирование

Распакуйте полученый архив5) и, для удобства, создайте символическую ссылку на полученую в результате директорию:

cd /usr/src tar xjf ./linux-source-3.2.0.tar.bz2 ln -s ./linux-source-3.2.0 ./linux cd ./linux

Для упрощения процесса конфигурации ядра можно скопировать настройки текущего:

cp /boot/config-`uname -r` .config

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

make oldconfig

Начиная с версии ядра 2.6.32 появилась возможность обновлять конфигурацию только тех модулей, которые используются в данной системе:

make localmodconfig

Существует три основных варианта конфигурирования ядра:

Сборка

Сборка ядра производится командой

fakeroot make-kpkg -j 5 --initrd --append-to-version=-custom kernel_image kernel_headers #-j <количество ядер процессора>+1

Вместо ваша_версия подставьте название для вашей версии ядра.

Процесс сборки может занять некоторое время. По его окончанию появятся пакеты содержащие скомпилированное ядро и заголовочные файлы. Их можно будет установить при помощи dpkg.

Модули ядра

Смотрите также

Ссылки

help.ubuntu.ru

Системная оптимизация - Система - Каталог статей

Изменим поведение Ubuntu в отношении использования ОЗУ и подкачки. Есть такой параметр vm.swappiness, который по умолчанию имеет значение 60, и контролирует процент свободной памяти, при которой начнется активный сброс страниц в раздел swap. Иными словами, при 100-60=40% занятой памяти, Ubuntu уже начнет использовать раздел swap. При большом количестве ОЗУ в компьютере, лучше изменить параметр vm.swappiness до 10 и тем самым приказать Ubuntu не использовать swap пока занятая ОЗУ не достигнет 100-10=90%. В консоли введите следующую команду:

Хорошо по оптимизации написано еще тут

После загрузки ядра, в ubuntu начинает загружаться образ рам-диска (initial ramdisk, initrd). Если распаковать этот образ, можно убедится, что там очень много чего лишнего и распакованный он занимает чуть-ли не 25 мегабайт. Поэтому, желательно пересобрать все initrd-образы в системе только с необходимыми модулями. Но все не так сложно, как кажется. Открываем файл:

sudo nano /etc/initramfs-tools/initramfs.conf

там строчку

MODULES=most

и заменяем ее на:

MODULES=dep

Все, теперь надо запустить команду:

sudo update-initramfs -k all -u

Она пересоберет для всех установленных ядер все найденные образы initrd. В будущем, для новоустановленного ядра, initrd будет генерироваться уже сам с этими параметрами, так что это нужно сделать всего один раз. Теперь файлы initrd будут весить примерно по 3 мегабайта запакованными и по 6-7 мегабайт – распакованными. Это частично сократит время загрузки и при этом не повлияет отрицательно на систему.

Скорость загрузки ОС также напрямую зависит от файловой системы, на которой стоит ОС. Дело в том, что с мелкими файлами лучше работает новая ext4 и старый reiserfs. Собственно, в дистрибутиве больше всего мелких файлов. Поэтому, рекомендую полностью переходить на ext4 – это намного уменьшит скорость не только загрузки ОС, но и саму работу с системой, программами и файлами.

Так-же, можно отключить предварительную проверку разделов жесткого диска во время загрузки ОС. Журналируемые файловые системы уже давно безопасны и проверять их желательно лишь после достаточно долгого использования, после небезопасного выключения компьютера, после глюков, ну и по желанию собственно. Отключать надо в файле "/etc/fstab”. Там в конце каждой строчки стоят две цифры. Нам нужна только последняя цифра, она и отвечает за проверку жесткого диска во время запуска ОС. Меняем эту цифру на ноль на нужных файловых системах. И все, больше ничего трогать не нужно.

++++++++++++++++++++++++++++++++++++++++

При загрузке Ubuntu автоматически устанавливается политика Ondemand – то есть саморегуляция с помощью ядра. Естественно частота процессора падает до минимальной, что полностью не устраивает. Но можно по умолчанию включить политику Performance (максимальная частота процессора)

Выполняется команда

sudo update-rc.d -f ondemand remove

и перезагрузка.

На системе атлон64. Тормозил thunderbird, firefox. В режиме перфоманс эти программы работают заметно быстрее

Запуск часто используемых Вами приложений можно ускорить с помощью установки программы preload. Установить её можно командой:

sudo aptitude install preload

Программа preload представляет собой фоновый процесс, наблюдающий за тем, какие именно приложения Вы используете чаще всего. Программа ведёт список приложений, которые используются наиболее активно и заранее загружает в память некоторые их части, заметно ускоряя их запуск.

Настройка для preload обычно не требуется.

Обратите внимание! Если у Вас мало оперативной памяти, работа этой программы будет неэффективной.

Удалить программу можно командой

sudo aptitude purge preload

эти маленькие винтики добавят вам скорости в работе... другие винтики можно найти в интернете , но будте осторожны в настройке.

linuxfree.my1.ru

Как собрать ядро linux? Сборка ядра Linux

Сборка ядра Linux Здравствуйте, уважаемые читатели. Сегодня я расскажу о таком интересном занятии как сборка ядра Linux. Зачем может понадобиться самостоятельно собирать ядро? На самом деле причин может быть множество: необходимость задействовать дополнительные возможности ядра, оптимизировать ядро под ваш компьютер, обновить ядро до самой свежей версии. В этой статье я продемонстрирую процесс получения исходных кодов, настройки, компиляции и установки в систему ядра Linux, в рамках решения задачи включения в ядро поддержки cryptoloop(петлевые шифрующие устройства).

Получение исходного кода В первую очередь мы должны получить исходный код, это можно сделать разными способами и из разных источников. Я предлагаю рассмотреть только два: системные репозитории, официальный сайт ядра. В репозиториях, скорее всего, будут версии ядра более старые чем он официальном сайте, но в эти исходники должны быть включены патчи и исправления от производителя вашего дистрибутива Linux. Такой подход предпочтительнее если вы не нуждаетесь в какой-то новой технологии или возможности, которая поддерживается только более новыми ядрами. Просмотреть все версии исходников ядра, которые содержатся в репозиториях вашей системы, вы можете введя в терминале(справедливо для Ubuntu Linux, в других дистрибутивах название пакета может отличаться):

apt-cache search linux-source

Команда выведет список доступных пакетов:

Как видите, у меня есть только пакет с текущей версией и пакет с версией 3.5 (на самом деле текущая версия ядра тоже 3.5). Расширить список ядер, доступных таким образом, стоит подключить дополнительные репозитории. Получить ядро мы можем командой: sudo apt-get install linux-source

linux-source — имя пакета с исходным кодом, в вашем случае может быть другим. После завершения работы команды в директории /usr/src появится файл, в моем случае — linux-source-3.5.0.tar.bz2. Перейдем в папку, распакуем архив и ради удобства создадим символическую ссылку:

cd /usr/src sudo tar -xjvf linux-source-3.5.0.tar.bz2 sudo ln -s linux-source-3.5.0 linux

Если же вам нужна самая свежая версия ядра, то её всегда можно скачать с сайта kernel.org. Стоит заметить, что на сайте выкладываются как стабильные версии ядер так и версии предназначенные для тестирования и доработки(обычно в их названии есть содержится аббревиатура «RC» — Release candidate). Если вы не желаете лишних проблем с системой, советую скачивать стабильную версию:

Сохраним архив с исходниками в папку /usr/src. Чтобы распаковать полученный архив вам может понадобиться установить дополнительные утилиты:

sudo apt-get install xz-utils

Теперь, как и в случае с загрузкой ядра из репозиториев, мы должны распаковать архив с исходниками и создать ссылку:

cd /usr/src sudo tar -xpJf linux-3.8.5.tar.xz sudo ln -s linux-3.8.5.tar.xz linux

Конфигурация и компиляция. Вот мы и подошли к самому интересному. Прежде чем начать, установим несколько дополнительных пакетов:

&#65279;sudo apt-get install build-essential kernel-package libncurses-dev

Будем создавать новую конфигурацию, на основе используемого системой в данный момент ядра:

cd /usr/src/linux sudo make oldconfig

Если вы конфигурируете более новую версию ядра чем есть в системе, то вполне вероятно что в ней появились параметры, которых нет в конфигурации нынешнего ядра. В таком случае программа будет просит сделать выбор вас, вы можете оставлять значения по умолчанию просто нажимая клавишу Enter. В любом случае конфигурирование ещё не завершено. Теперь мы можем выполнить нужные нам настройки через меню создания конфигурации:

sudo make menuconfig

В терминале запустится программа конфигурирования:

Здесь параметры конфигурации разделены на разделы, чтобы в них было удобнее ориентироваться. Как я уже говорил выше, мне нужно включить в ядро поддержку cryptoloop. Для этого нужно перейти в раздел «Device Drivers», а из него в подраздел «Block Devices»:

Находим параметр «Cryptoloop Support», рядом с ним стоит буква «М» что означает что поддержка шифрующих устройств будет добавлена как модуль ядра, который можно будет включить командой modprobe. Нам же надо включить поддержку данной технологии непосредственно в ядро, чтобы она поддерживалась всегда. Переводим фокус на параметр «Cryptoloop Support» и нажимаем на пробел. Буква «М» должна смениться символом "*" это означает что поддержка данной технологии будет «вшита» в ядро. Осторожно, пробел означает что технология вообще поддерживаться не будет.

Нажимаем клавишу «Tab» и нажимаем на кнопку «Exit» до тех пор пока не появится запрос на сохранение изменений:

Отвечаем «Yes». Мы успешно закончили конфигурирование! Приступим к компиляции. Сначала удаляем файлы оставшиеся от предыдущих сборок, если вы запускаете сборку впервые выполнять эту команду не обязательно: sudo make-kpkg clean

Запускаем компиляцию:

sudo make-kpkg -j4 --initrd --append-to-version=-mykernel kernel_image kernel_headers

-j4 — флаг, указывает какое количество потоков использовать для компиляции. Позволит сильно ускорить компиляцию на многоядерных процессорах. Цифра 4 тут указывает на 4 потока. Ставьте столько потоков сколько ядер вашего процессора «видит» система. -mykernel — префикс указывающий что ядро было собрано вручную, можете его изменить, фактически ни на что не влияет.

Вот и начался процесс компиляции. Он может занять от 10 минут, до нескольких часов в зависимости от того насколько мощный у вас компьютер:

Установка ядра в систему

После завершения компиляции, в директории /usr/src должны появится два файла с расширением «deb» они являются установочными пакетами нашего нового ядра и установить их можно с помощью утилиты dpkg:

sudo dpkg -i linux-image-3.8.5-mykernel_3.8.5-mykernel-10.00.Custom_i386.deb sudo dpkg -i linux-headers-3.8.5-mykernel_3.8.5-mykernel-10.00.Custom_i386.deb

Поздравляю! Ядро установлено, теперь система будет загружаться с этим ядром по умолчанию, но если у вас возникнут проблемы с новым ядром вы всегда можете загрузится со старым выбрав его на экране загрузки — Grub. На этом я завершаю сегодняшнюю статью и желаю успехов, вам, уважаемые читатели!

Вебинар: «Конфигурирование, сборка и установка ядра Linux»

ubuntolog.ru


Prostoy-Site | Все права защищены © 2018 | Карта сайта