Ядро CentOS6-Linux компилировать подробные шаги

Ядро CentOS6-Linux компилировать подробные шаги

фон

Win10 виртуальная машина с VMwareWorkstation взять
CentOS6.5, версия ядра 2.6.32-431.el6.x86_64
обновления в среде до 4.9.195 версии (выбрать один), а также информацию скомпилированной версии (информация о версии внутри плюс мой номер школы _ имя)

И определить информацию о версии ядра

[root@ymhadoop ~]# uname -r
2.6.32-431.el6.x86_64
[root@ymhadoop ~]# cat /etc/centos-release 
CentOS release 6.5 (Final)

Построение среды сборки


#逐条运行命令 
sudo yum groupinstall "Development Tools" 
sudo yum install ncurses-devel  
sudo yum install qt-devel
sudo yum install openssl-devel          //后文全部默认在root权限下输入命令(即省略sudo)
  • Если вы используете ошибку команды Sudo:
    . Ххх не в sudoers file.This в The Incident Сообщил будет
    Решение см ниже [1]

  • Средства разработки «: она используется для обновления среды сборки, чтобы убедиться, что все, что нужно, чтобы иметь время для компиляции исходного кода ядра времени компиляции коды
  • Ncurses-разви: сделать конфигурации убедитесь, что последовательность команд выполняется правильно
  • кварты-Devel, OpenSSL-разви 同上

Загрузить ядро

  • Официальный веб - сайт ядра Linux: https://www.kernel.org . На сайте перечислены только все версии долгосрочной, последнюю стабильную версию, текущую версию магистралью. 
  • Я скачал с другого веб - сайта, хранить все версии ядра Linux, это очень удобно: https://www.kernel.org/pub/linux/kernel .
    Загрузить пакет исходного кода является: линукс-4.9.195.tar.gz.
  • Перемещение файлов из окна в виртуальную машину, некоторые файлы можно перетаскивать непосредственно из окна на рабочих столах виртуальных машин. Обычно выбор SSH или WinSCP. Исходный архив прямо на столе на линии.

Извлеките ядро

Под источником CentOS6 на / URC / SRC / ядра / папки, так что я должен распаковать архив непосредственно под траекторией, получить папку Linux-4.9.195.

cd /usr/src/kernels/
tar -zxvf ~/installer/linux/src/linux-4.9.195.tar.gz

Настройка источника

  • С моей миссии на борту потребность присоединиться к моему номер студента _ во имя информации исходный код версии, мы должны использовать только сделать команду конфигурационного меню -> Эта команда позволяет настроить источник, работающий на визуальном интерфейсе.
  • сделать команду конфигурационного меню для настройки среды сборки до времени после трех утверждений тесно, в противном случае она выдаст сообщение об ошибке:
    Makefile: 546: Рецепта для целевого «конфигурационного меню» Сбой
    Решения см ниже [3]

  • После просмотра меню меню введите Общие настройки, в настройки, чтобы найти локальную версию - добавление к ядру релиза после версии ядра указует на строку версии плюс пользовательскую (менее 64 символов), может быть «uname -a / - г «команды, чтобы увидеть
  • Нажмите Enter: _xxxxxxxx_ym

Компиляция исходного кода

  • В корневой директории источника, а именно /usr/src/kernels/linux-4.9.195/, выполнять операторы компиляции сделать
cd /usr/src/kernels/linux-4.9.195/
make -j 4
  • 4 показывает 4 потоков компиляции, скорость компиляции называется немного быстрее, или использовать результаты, собранные в течение почти часа.
  • создают проблемы , скорее всего , причина в том , что компилятор не совместим с версией ядра, ошибка:
    сделать [1]: * [скрипты / Kconfig / mconf.o] ОШИБКА **
    Решение смотрите ниже [2]
  • Если многоядерный процессор, вы можете выбрать многоядерный компилятор, использовать
    cat /proc/cpuinfoдля просмотра информации центрального процессора.
    Найти один «процессор: [Digital]» указывает количество ЦП, нумерация начинается с 0, так что найти последний «процессор: [числа],» [Digital] + 1 является номер вашего процессора. Моя машина последнего процессор номер «процессор: 0», так что мой компьютер является одноядерным.
  • В общем случае время компиляции в течение почти часа, мы должны обратить внимание на ожидания виртуальной машины, казалось бы, не продолжать компилировать в фоновом режиме.

Источник установки

  1. Установка модуля ядра
make modules_install
  1. После установки модуля ядра модуля ядра исполняемый файл будет отображаться в / Библиотека / модули / папку, введите каталог вы можете увидеть файлы, которые мы установили версию ядра папки
  2. элементы запуска регистрации
make install
  • Эта команда регистрируется в программу загрузки ядра, загрузка при загрузке программы вызовов, зарегистрированные на нее ядро ​​для загрузки системы, если есть несколько ядер, из которых пользователи могут выбрать загрузку ядра
  • Бегите на этот шаг, он склонен к ошибке:
    ОШИБКА: MODINFO: не могут найти модуль XXX
    решения и конкретные причины не смотри ниже [4]
    Но независимо от того, установлена ошибка не влияет на ядро, для абсолютно никакой последующей операции проблема.
  1. После установки ядра изменения запуска по умолчанию: Открыть случай /etc/grub.conf просмотр ядра системы, изменить последовательность загрузки GRUB, так что вновь установленное ядро, как ядро ​​по умолчанию.
    • появляется цифровая Просмотр командной строки текста, то можно увидеть, что есть две версии ядра,
    • Решил использовать параметр загрузки версии ядра, чтобы сделать, это начать по умолчанию, по умолчанию 0 в файле grub.conf (представители последней загрузки ядра, версия ядра представлена ​​сверху донизу 0, 1, 2 и т.д.)
    • В этом примере, если вы хотите, чтобы выбрать ядро ​​для запуска из старой системы, то есть начало ядра, положить значение по умолчанию 0, а затем перезапустить сервер для загрузки с новым ядром
vi /etc/grub.conf

#boot=/dev/sda
default=0       //此处需要将1修改成0;一般新安装的内核在第一个位置,所以设置default=0。
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (3.10.58)
    root (hd0,0)
   ......
  • Здесь нужно обратить внимание на : CentOS 7.0 системы , чтобы изменить последовательность загрузки ядра и систему CentOS 6.x , чтобы изменить последовательность загрузки ядра по - разному, CentOS использование 7 GRUB2 в качестве программы начальной загрузки, которая является модификацией CenOS6.x /etc/grub.conf для изменения запуска пункты. Так как модифицировать ядро загрузки последовательность действий совершенно другая, CenOS7 и 6 работают , чтобы сделать определенное различие так: [Нажмите здесь]
  1. Перезагрузите компьютер, чтобы посмотреть новую версию ядра
reboot      //重启命令

uname -r    //查看内核版本信息

4.9.195_xxxxxxxxx_ym    //显示内核版本信息

Могут возникнуть проблемы

1.xxx не в sudoers file.This инциденте будет сообщено.

Команда Судо дается с использованием корневого уровня , так как нормальная командой пользователя является
простым решением для первоначальной операции , чтобы перейти непосредственно су укоренить команду, но следует удалить исходную команду Sudo
других обычных пользователей могут разрешить решение Судо [нажмите на это]

2.make [1]: *** [скрипты / Kconfig / mconf.o] 错误

сделать [1]: *** [скрипты / Kconfig / mconf.o] Ошибка 1
марку: *** [конфигурационного меню] Ошибка 2
обычно вызвана несовместимостью вследствие ССЗ и версии ядра.

3.Makefile: 546: рецепт для цели «конфигурационного меню» не удалось

сделать [1]: *** [скрипты / Kconfig / mconf.o] Ошибка 1
Makefile: 546: рецепт для цели 'конфигурационного меню' не удалось
делают: *** [конфигурационного меню] Ошибка 2

Это происходит потому, что ошибка нужно сделать конфигурационного меню (Ubuntu) libssl-DEV / (CentOS) OpenSSL-разви

4.ERROR: MODINFO: не может найти модуль *

  • Вы можете увидеть детали в этой статье [ОШИБКА: MODINFO: может не поиск модуля *] .
  • Короче говоря, есть три причины:
    1. Действительно, отсутствие модуля
    2. Вновь собранное ядро ​​должно быть скомпилировано в ядро
    3. Он изменил название модуля
  • В большинстве случаев относятся к третьей причине. Какой модуль ошибка не может найти, можно найти текущую работу модуля ядра с помощью команды lsmod, вы можете проверить модуль примерно найти команду не переименовываются, или больше не будет использоваться в последующих версиях
[root@ymhadoop ~]# lsmod | grep [module_name]     //For example :lsmod | grep sco


[root@ymhadoop ~]# find  /lib/ -name "*sco.ko"

справочный материал

[ Сообщение об ошибке: MODINFO: Не может найти Module1 *]
[ядро модернизирует 6.x CentOS (2.6.32 -> 3.10.58) процесс записи]
[порядок загрузки ядра Linux , чтобы изменить CentOS]
[CentOS7 компилируется ядро подробных шагов]
[Установка в CentOS libssl-не устр нет времени для libssl-DEV Доступн Штраф пакета для]
[система CentOS 6.X изменяет последовательность загрузки ядра]
[CentOS 7.3 вручную скомпилировать и установить последнюю версию ядра Linux]

рекомендация

отwww.cnblogs.com/ymjun/p/11705138.html