Как добавить в ядро драйвер
Скомпилируйте загруженный драйвер в ядро ядра (linux)
Первый, основной способ компиляции драйвера в ядро
Есть два способа скомпилировать драйвер в ядро под linux:
1) Статическая компиляция
2) Динамическая компиляция
Статическая компиляция заключается в интеграции исходного кода загруженного драйвера в исходный код ядра ядра, а затем в настройке соответствующих параметров через графический интерфейс.После настройки параметров сохраните и выйдите, затем скомпилируйте и, наконец, скомпилированный, интегрированный и используемый для записи Записанный файл здесь будет называться uImage.
Динамическая компиляция заключается в компиляции загруженного исходного кода в файл .ko и, наконец, загрузке файла ko на плату с помощью команды insmod.
Выберете ли вы статическую компиляцию или динамическую компиляцию, зависит от ваших потребностей.
Один, статическая компиляция
Я только подробно объясняю, как добавить соответствующие параметры модуля в графический интерфейс. Шаги, предшествующие графическому интерфейсу (make menuconfig), были опущены. Перед этим я просмотрел множество руководств, поэтому я не буду повторять их здесь.
1. О скачанных драйверах
1) Место хранения исходного кода драйвера в исходном коде ядра
В какой каталог должен быть помещен исходный код драйвера в исходный код ядра, это обычно зависит от типа драйвера. Например, если вы загружаете драйвер модуля Wi-Fi, то обычно мы помещаем драйвер модуля Wi-Fi. Поместите исходный код в . /linux-3.10.y/drivers/net/wireless
по этому пути; например, если вы загружаете драйвер символьного типа, он обычно будет помещен в . /linux-3.10.y/drivers/char По этому пути; если вы действительно не знаете, куда его положить, положите . /linux-3.10.y/drivers , Пока вы можете найти его в графическом интерфейсе в конце.
2) Модификация связанных файлов исходного кода драйвера
В исходном коде драйвера нужно изменить только 2 файла:
Kconfig
Файл Kconfig используется для описания информации о связанных параметрах графического интерфейса, например о том, какому типу атрибутов выбора соответствует этот параметр (<> (Д / Н / М), [] [Д / Н ]…), Например, описание информации, относящейся к этой опции и т. Д., Если Kconfig отсутствует, вы должны создать его самостоятельно. Возьмите модуль Wi-Fi в качестве примера. После создания добавьте контент, который вы хотите добавить, следующим образом (если Kconfig уже существует, не изменяйте его):
RTL8821CU Этот макрос можно назвать произвольно, и "Realtek 8821C USB WiFi" Это название этой опции, tristate Средство для установки атрибута выбора этой опции в три состояния, а именно Y / N / M, depends on Чтобы объяснить зависимость, если вы не знаете, что писать, оставьте это depends on , Не нужно добавлять информацию, последняя help Это описание информации о выборе, это необязательно.
Kconfig предназначен для описания параметров, а Makefile - для добавления взаимосвязей между параметрами. Сделайте то же самое, создайте, если нет, то измените следующим образом:
2. Модификации исходного кода ядра.
Как и драйвер, в исходном коде ядра есть только два файла, которые нужно изменить: Kconfig и Makefile. Эти два файла расположены в верхнем каталоге драйвера. Например, путь к исходному коду драйвера drivers/net/wirless/wifi , Вы хотите изменить drivers/net/wirless Kconfig и Makefile по этому пути.
Kconfig
Добавьте следующий код в последнюю строку Kconfig:
Makefile изменяется следующим образом:
После изменения вышеуказанных файлов, когда вы введете команду make menuconfig в терминале telminal и снова войдете в графический интерфейс, вы увидите, что появились соответствующие параметры (как показано ниже). Расположение параметра связано с путем к исходному коду вашего драйвера.Чем глубже путь к драйверу в исходном коде ядра, тем глубже соответствующий путь к параметру в графическом интерфейсе.
Выберите опцию справки, чтобы просмотреть информацию описания:
Два, динамическая компиляция
Вот все же в качестве примера возьмем модуль Wi-Fi. После загрузки соответствующего исходного кода драйвера вам нужно только изменить Makefile. Основные изменения заключаются в следующем:
ARCH Скомпилированная платформа, CROSS_COMPILE Путь, по которому находится цепочка компиляции, обычно передается в ubuntu echo $PATH Команда может видеть путь в цепочке компиляции, KSRC - это путь к исходному коду ядра. После изменения Makefile введите команду make в терминале, чтобы завершить компиляцию, и вы получите файл ko в текущем каталоге, а затем вам нужно только поместить файл ko в конец платы insmod для завершения.
Интеллектуальная рекомендация
Java.nio.Buffer flip () метод jdk Ошибка перевода на китайский язык
Когда я сегодня читал «Идеи программирования на Java», я столкнулся с методом java.nio.Buffer flip (). Дело в том, что «[color = red] переворачивает этот буфер. Сначала установите ог.
Предварительное понимание регулярных выражений Python (4)
Сегодня я продолжу делиться базовыми знаниями о регулярных выражениях Python. В основном я представляю использование специального символа "<>". Ниже приведено конкретное руководство. .
Все белое Введение Сверток Neural Network (CNN)
Использование внутреннего соединения, левого соединения, правого соединения в оракуле
Левое-правое соединение фактически говорит, какая таблица является результатом нашего совместного запроса ~ 1. Взаимосвязь проста select A.*, B.* from A,B where A.id = B.id select A.*, B.* from.
[Код очень подробный] POJ 2492 A Bug's Life (и проверьте коллекцию)
1. Описание заголовка 2. Инструкции по анализу алгоритмов и руководство по написанию кода. Похожие темы:POJ 1182 Решение проблемы пищевой цепи Наблюдается m насекомых и n вязок. Насекомые u и v могут .
Данная статья будет, в основном, полезна новичкам. В ней мы обзорно рассмотрим процесс загрузки системы с передачей ядру дополнительных параметров. Краткий ликбез в рамках принятой в статье терминологии: железо - это аппаратная начинка Вашего устройства (ноутбка, компьютера, пылесоса ); драйвер (он же, суть, модуль ядра) - это такая программная прослойка, которая позволяет Вашему железу работать так, как это задумал его производитель. Ядро linux, на котором построена Ubuntu, конечно содержит в себе модули для работы со многим железом. Однако, следует понимать, что засунуть в него поддержку всех существующих железок физически невозможно. Для этого и предусмотрена возможность установки драйверов от производителя, и просто сторонних драйверов. Вместе с тем, типовая ситуация, часто ставящая в тупик новичков: Вы купили новую видеокарту, или купили себе новый ноутбук, и при попытке установить систему сталкиваетесь с одним из нижеперечисленных явлений:
Типовые проблемы
не удается стартовать с загрузочной флешки, - после экрана GRUB2 [загрузочное меню, из которого Вы выбрали пункт Try Ubuntu without install («Запустить Ubuntu без установки») или Install Ubuntu («Установить Ubuntu»)] сразу возникает черный экран (иногда на нем посередине еще и курсор, который можно двигать - но более ничего не происходит)
сразу после установки системы и последующей перезагрузки Вы попадаете на описанный ранее по тексту черный экран (может с курсором, может - без)
сразу после установки системы и последующей перезагрузки Вы попадаете на экран авторизации (где вводится логин и пароль, и после ввода логина и пароля Вас либо выбрасывает на этот же экран авторизации, либо к уже дважды выше упомянутому черному экрану с возможной демонстрацией курсора). Примечание: не забываем также проверить эту страничку ВИКИ: Проблемы со входом в учетную запись в конкретно этом случае.
С аналогичными проблемами Вы можете столкнуться и при попытке простого обновления проприетарного драйвера до более новой версии, либо при штатном обновлении ядра linux. В особенности это касается тех случаев, когда драйвер установлен с применением PPA производителя.
1. Случай с попыткой запуска системы с загрузочной флешки или загрузочного диска
а). Загрузочный носитель, запущенный в режиме UEFI
В данном случае загрузочное меню GRUB2 при корректно подготовленной загрузочной флешке будет показано автоматически. Бывают экзотические варианты, например при подготовке мультизагрузочных флешек отдельными специализированными утилитами загрузочное меню может быть модифицировано этими самыми утилитами, и там данная методика напрямую может не сработать, однако этот аспект выходит за рамки данной статьи. Итак при загрузке Вы видите загрузочное меню, которое приведено на картинке: По-умолчанию выбран пункт «Try Ubuntu without install» («Запустить Ubuntu без установки») - он нам и нужен. Не давая машине начать загрузку (а времени на размышления у нас 10 секунд, - если ничего не предпринять, начнется загрузка пункта, выбранного по-умолчанию), нажимаем клавишу E (латинская буква) на клавиатуре. Меню GRUB2 превращается в текстовый редактор, внешний вид которого приведен на картинке: Обратите внимание на обратные слеши (знаки \) - их суть лишь в том, что таким образом GRUB2 показывает Вам, что текущая строка на этом не заканчивается, и написанное ниже - продолжение той же самой строки. Иными словами, не обращайте на эти символы внимания, - вводить их с клавиатуры не следует, - GRUB2 Вас не поймет. Фактически здесь мы имеем дело с таким кодом (убраны лишние пробелы - строка стала вмещаться в экран, слеши пропали сами): Подчеркивание, которое стоит в начале самой первой строки - это курсор. Стрелочками [ ← , → , ↑ , ↓ ] на клавиатуре перемещаем курсор к строке, которая начинается со слова linux, и ведем курсор вправо, пока не поставим его в районе слов quiet и splash. Затираем эти два слова (клавишами Backspace или Delete , - по вкусу), и впечатываем туда с клавиатуры параметр ядра, с которым хотим загрузиться. В примере - вписывается параметр nomodeset: Как только редактирование закончено, нажимаем клавишу F10 на клавиатуре, - пойдет загрузка. На сей раз во время загрузки будет показан подробный лог происходящих действий, поскольку мы убрали параметры quiet и splash, и дополнительно к ядру будет применен параметр nomodeset, обеспечивающий возможность загрузки на машинах с проблемной графикой. Если параметр помог - Вы попадете на рабочий стол Ubuntu (системы, запущенной в живом режиме).
б). Загрузочный носитель, запущенный в режиме Legacy
В данном случае загрузочное меню по-умолчанию не показывается. Вместо этого в начале загрузки на 10 секунд пользователю демонстрируется вот такой экран: Как только мы его заметили - следует сразу же нажать клавишу Shift . Если успели - то экран преобразится до такого состояния: Нам предлагают выбрать язык. Язык нас в данном случае мало интересует. А вот задать кастомный параметр ядру хотелось бы. Нажимаем клавишу Esc . Меню выбора языков уходит, и экран становится таким: Как видим, в соответствии с подсказкой (напечатана внизу экрана), для выбора «Other Options» («Другие опции») следует нажать клавишу F6 . Нажимаем ее. Открывается список: Всё для людей! Нам на выбор предлагают несколько параметров, чтобы подставить их в строку инициализации ядра:
acpi=off - не задействовать стандарт для управления питанием (Advanced Configuration and Power Interface). Параметр является крайней мерой, и работать в системе с ним в постоянном режиме не рекомендуется: будут неизбежные проблемы с выключением, уходом в сон и т.п. Применять тогда, когда иные не помогают, и исключительно до тех пор, пока не установите необходимые модули ядра для обеспечения корректной работы Вашего железа.
noapic - отключение расширенного программируемого контроллера прерываний (Advanced Programmable Interrupt Controller). Использование этой опции может привести к тому, что в сеансе, где она применена, не будет задействовано некоторое аппаратное обеспечение Вашего устройства (ноутбука, ПК).
nolapic - отключение локального расширенного программируемого контроллера прерываний (Local Advanced Programmable Interrupt Controller). Действие аналогочно действию noapic, разве что тип контроллера более новый.
edd=on - задействовать расширенный режим работы с дисками (Enhanced Disk Drive) (используется некоторыми материнскими платами для обеспечения корректного функционирования дисковых устройств)
nomodeset - использовать щадящий графический режим. Помогает запустить систему на машинах с проблемными видеоадаптерами, где стандартные модули ядра не справляются.
Стрелочками [ ← , → , ↑ , ↓ ] на клавиатуре выбираем желаемый (в нашем примере это по-прежнему nomodeset), и нажимаем либо клавишу пробел , либо клавишу Enter , - в результате напротив выбранного нами пункта меню появляется звездочка (символ *): При необходимости можно отметить сразу несколько параметров. Снимается отметка с параметра той же клавишей, какой и ставится. Выбрав желаемый для добавления пункт (в контексте примера - это nomodeset), нажмаем клавишу Esc . Это приведет к закрытию меню. Теперь мы видим строку инициализации (кстати, доступную для редактирования руками - если есть в этом необходимость), в которой уже прописан параметр nomodeset: Нажимаем клавишу Enter - пошла загрузка. Будет применен добавленный нами параметр ядра nomodeset. В случае успеха Вы попадете на рабочий стол Ubutnu (системы, запущенной в живом режиме)
в). Особенность загрузочного меню установочного носителя для машин с UEFI начиная с версии 19.04
Начиная с версии 19.04 Disco Dongo, загрузочное меню GRUB2 установочного носителя для машин с UEFI содержит еще по одному дополнительному пункту меню: «Try Ubuntu without install (Safe Graphics)» и «Install Ubuntu (Safe Graphics)». Если для загрузки в Вашем случае достаточно будет добавления параметра nomodeset - выбирайте данный пункт, - указанный параметр ядра в нем уже прописан: Для загрузки с иными параметрами ядра обращайтесь к принципу, описанному в пункте 1а) данной статьи.
2. Случай с попыткой запуска системы, уже установленной на жестком диске Вашего устройства (ПК, ноутбука)
Следует понимать при этом, что загрузка Вашей рабочей машины (ПК, ноутбука) в контексте рассматриваемого здесь вопроса, грубо говоря, происходит в три этапа:
инициализация BIOS/UEFI (это когда Вы видите, к примеру, логотип производителя материнской платы ПК или своего ноутбука),
Итак, имеем один из вышеперечисленных симптомов (черный экран, невозможность авторизации и т.п.). Перезагружаем устройство (ПК, ноутбук), и на этапе инициализации BIOS/UEFI попадаем в загрузочное меню GRUB2. Выглядит оно примерно так: Если на Вашем устройстве (ПК, ноутбук) Ubuntu - единственная система, то по-умолчанию это загрузочное меню не показывается. Для того, чтобы в него попасть в этом случае на этапе инициализации BIOS/UEFI следует либо зажать и держать, либо многократно понажимать клавишу Shift (или клавишу Esc ). Если данная манипуляция все равно не позволяет попасть в загрузочное меню - убедитесь в том, что:
для реального нажатия Shift (или Esc ) на Вашей клавиатуре нет необходимости нажимать его одновременно с Fn (типичная особенность отдельных моделей современных ноутбуков), если такая необходимость есть - попробуйте использовать для доступа к GRUB2 сочетание клавиш Fn + Shift или Fn + Esc .
по клавише Esc или Shift не срабатывает какое-нибудь иное меню, предустановленное производителем Вашего ноутбука (например, штатное загрузочное меню [Boot menu, Startup Menu и тому подобное]) в этом случае следует либо вообще отключить данное меню на период экспеиментов средствами BIOS или предустановленной утилиты конфигурирования UEFI, либо пытаться «ловить момент» - соответствующая клавиша должна быть зажата тогда, когда ее уже не воспринимает Ваш BIOS/UEFI, но еще воспринимает загрузчик GRUB2, стартующий сразу после BIOS/UEFI. В частности, если по клавише Esc у Вас загружается Boot Menu от производителя - можно выбрать в нем пункт, соответствующий запуску Ubuntu, нажать клавишу, соответствующую инициации запуска (обычно, это Enter ), и сразу после этого использовать Shift либо Esc в соответствии с описанной ранее методикой.
Попав в меню GRUB2, видим, что в нем по-умолчанию выбран пункт 'Ubuntu', и времени на размышления у нас 30 секунд. Если ничего не делать - будет выполнена загрузка с этим пунктом. Для добавления дополнительных параметров ядра нажимаем клавишу E (латинская буква), и экран GRUB2 перевоплощается в экран текстового редактора: Вновь обращаю Ваше внимание на обратные слеши (знаки \) - их суть лишь в том, что таким образом GRUB2 показывает Вам, что строка на этом не заканчивается, и написанное ниже - продолжение той же самой строки. Иными словами, не обращайте на эти символы внимания - вводить их с клавиатуры не следует, - GRUB2 Вас не поймет, и этого маневра не оценит. Подчеркивание, которое стоит в начале самой первой строки - это курсор. Стрелочками [ ← , → , ↑ , ↓ ] на клавиатуре перемещаем курсор к строке, которая начинается со слова linux, и ведем курсор вправо, пока не поставим его в районе слов quiet и splash. Затираем эти два слова (клавишами Backspace или Delete , - по вкусу), и впечатываем туда с клавиатуры параметр ядра, с которым хотим загрузиться. В примере - вписывается параметр nomodeset: После того, как редактирование закончено, следует нажать клавишу F10 . Загрузка пойдет в обычном режиме, с тою лишь разницей, что во-первых, за счет того, что мы убрали параметры ядра quiet и splash, вместо неинформативной картинки будет показан подробный лог загрузки, а во-вторых, и это в данном случае главное, - будет применен параметр ядра nomodeset. В случае успеха Вы попадете на рабочий стол своей системы (или на экран авторизации пользователя, с которого на сей раз сумеете авторизоваться, если проблема состояла в этом). После того, как Вам удалось войти в систему таким образом (прописав один из ранее поясненных параметров ядра), - следует приступить к выявлению и устранению проблем, мешающих нормальной загрузке. С высокой долей вероятности, Вам необходимо проверить установлены ли у Вас (и правильно ли установлены) все необходимые модули ядра (драйвера) для обеспечения корректной работы Вашего железа.
Ссылки
Проприетарный драйвер для видеокарт N-Vidia. Статья в Ubuntu wiki (рус.): Проприетарный драйвер для видеокарт Nvidia
в списке драйверов я не нахожу нужного мне драйвера. ОК, иду на сайт производителя и скачиваю архивированный пакет (исходники, makefile итд) нужного мне драйвера под Линукс Теперь вопрос — как мне подсунуть этот драйвер в исходники ядра, чтобы я потом мог увидеть его в списке драйверов.(Android)
Берешь исходники, решительно так читаешь к ним документацию, компилишь модуль. Если надо в ядро вкорячить, решительно так пилишь патч и мержишь с исходниками ядра. Главное, решительность.
мне бы еще решительно понять как все это сделать…. я же еще новичко во всем этом, только один раз пробовал собирать ядро что то я конечно понимаю но…все же
я не настолько новичок)
мне бы еще решительно понять как все это сделать
я понимаю, что у молодежи не в ходу, но:
решительно так читаешь к ним документацию
это предметная область, действуй как в школе - изучай. литература, курсы, то-се.
Anoxemian ★★★★★ ( 09.12.19 17:16:14 )
Последнее исправление: Anoxemian 09.12.19 17:16:34 (всего исправлений: 1)
Ну ладно, пойду читать значит
На примере iwlwifi, который уже в дереве. Драйвер лежит в drivers/net/wireless/intel/iwlwifi. В drivers/net/wireless/intel/iwlwifi/Kconfig лежит его конфигурация, которая используется скриптами сборки ядра. В drivers/net/wireless/intel/Kconfig упоминается Kconfig от iwlwifi, чтобы kbuild нашёл этот файл. В drivers/net/wireless/intel/Makefile в сборку добавляется iwlwifi.
А в Android, скорее всего, есть свой механизм для добавления драйверов, не включённых в исходники ядра. Посмотри готовые примеры конфигураций для плат и сделай аналогично.
i-rinat ★★★★★ ( 09.12.19 17:24:53 )
Последнее исправление: i-rinat 09.12.19 17:26:24 (всего исправлений: 1)
в том то и дело,что там не один файл(в исходниках драйвера). там несколько папок,Makefile и dkms config…
Если повезет может out of tree методом соберется:
собираешь ядро без своего модуля
cd [где лежит Makefile модуля]
export PATH=$PATH:[где бинарники тулчейна]
KSRC=[путь где собранное ядро]
make ARCH=[aarch64 что ли] CROSS_COMPILE=[префикс бинарей в тулчейне] -C $KSRC M= pwd
В данном пошаговом руководстве вы узнаете, как правильно собрать и установить ядро ветвей >2.6 в семействе ОС Ubuntu.
Шаг 1. Получение исходного кода ядра
Исходники ядра Ubuntu можно получить двумя способами:
Установив архив из репозитория, с автоматическим наложением последних официальных патчей. При этом скачается пакет размером ~150 Мб в текущую папку. Чтобы получить исходники ядра, версия которого установлена на компьютере выполните команду:
Или вместо `uname -r` можно указать конкретную версию из имеющихся в репозитории.
Список имеющихся в репозитории версий можно увидеть набрав команду: «apt-get source linux-image-» и, не нажимая Enter , нажать два раза клавишу Tab .
Не забудьте включить общий доступ к исходникам в репозитории ( Параметры системы → Программы и обновления → Программное обеспечение Ubuntu → Исходный код ). Из консоли это сделать можно раскомментировав строки начинающиеся с deb-src в файле /etc/apt/sources.list, а затем выполнить обновление командой: «sudo apt-get update».
Где - имя релиза, например:
Другие ядра
Распакуйте полученный архив, используя команды:
Или в случае с linux-source:
Шаг 2. Получение необходимых для сборки пакетов
Выполните следующие команды для установки основных пакетов:
Далее всё зависит от того, каким способом вы хотите произвести конфигурацию ядра. Это можно сделать несколькими способами.
config - традиционный способ конфигурирования. Программа выводит параметры конфигурации по одному, предлагая вам установить для каждого из них свое значение. Не рекоммендуется для неопытных пользователей.
oldconfig - файл конфигурации создаётся автоматически, основываясь на текущей конфигурации ядра. Рекомендуется для начинающих.
menuconfig - псевдографический интерфейс ручной конфигурации, не требует последовательного ввода значений параметров. Рекомендуется для использования в терминале.
xconfig - графический (X) интерфейс ручной конфигурации, не требует последовательного ввода значений параметров.
gconfig - графический (GTK+) интерфейс ручной конфигурации, не требует последовательного ввода значений параметров. Рекомендуется для использования в среде GNOME.
localmodconfig - файл конфигурации, создающийся автоматически, в который включается только то, что нужно данному конкретному устройству. При вызове данной команды большая часть ядра будет замодулирована
localyesconfig - файл конфигурации, похожий на предыдущий, но здесь большая часть будет включена непосредственно в ядро. Идеальный вариант для начинающих.
В случае, если вы хотите использовать config, oldconfig, defconfig, localmodconfig или localyesconfig, вам больше не нужны никакие дополнительные пакеты. В случае же с оставшимися тремя вариантами необходимо установить также дополнительные пакеты.
Для установки пакетов, необходимых для использования menuconfig выполните следующую команду:
Для установки пакетов, необходимых для использования gconfig выполните следующую команду:
Для установки пакетов, необходимых для использования xconfig выполните следующую команду:
Шаг 3. Применение патчей
Официальные патчи уже наложены на исходники, если ядро получалось описанной выше командой:
Если вы никогда до этого не применяли патчей к исходному коду, то выполните следующую команду:
Эта команда установит программу patch, необходимую для, как можно догадаться, применения патчей. Теперь скачайте файл патча в папку, куда вы распаковали ядро. Это может быть либо архивный файл (напр. Bzip2 или Gzip), либо несжатый patch-файл.
На данный момент подразумевается, что вы уже сохранили файл в ту папку, куда ранее распаковали ядро, и установили программу patch.
Если скачанный вами файл был в формате Gzip (*.gz), тогда выполните следующую команду для распаковки содержимого архива:
Если скачанный вами файл был в формате Bzip2 (*.bz2), тогда выполните следующую команду для распаковки содержимого архива:
где 2.6.x.y - версия патча ядра. Соответствующие команды распакуют файл патча в папку с исходным кодом ядра. Прежде чем применить патч, необходимо удостовериться, что он заработает без ошибкок. Для этого выполните команду:
где 2.6.x.y - версия патча ядра. Эта команда сымитирует применение патча, не изменяя сами файлы.
Если при её выполнении не возникнет ошибок, то изменения можно смело внедрять в сами файлы. Для этого выполните команду:
где 2.6.x.y - версия патча ядра. Если не было никаких ошибок, значит к исходному коду был успешно применён патч.
где 2.6.x.y - версия патча и ваших исходников
Шаг 4. Конфигурация будущей сборки ядра
Перейдите в папку, куда вы распаковали ядро, выполнив команду
где 2.6.x.y - версия загруженного вами ядра.
На данный момент вы уже должны были определиться с методом конфигурации ядра (если нет, то ознакомьтесь с ними в разделе «Получение необходимых для сборки пакетов». В зависимости от этого, выполните следующую команду для запуска выбранного вами способа конфигурации:
config - традиционный способ конфигурирования. Программа выводит параметры конфигурации по одному, предлагая вам установить для каждого из них свое значение. Вызывается командой
oldconfig - файл конфигурации создаётся автоматически, основываясь на текущей конфигурации ядра. Рекомендуется для начинающих. Вызывается командой
defconfig - файл конфигурации создаётся автоматически, основываясь на значениях по-умолчанию для данной конкретной архитектуры. Вызывается командой
menuconfig - псевдографический интерфейс ручной конфигурации, не требует последовательного ввода значений параметров. Рекомендуется для использования в терминале. Вызов:
localmodconfig и localyesconfig - автоматические конфигураторы. Конфиг создается на основе вызванных в данных момент модулей и запущенного ядра. Разница между этими двумя конфигураторами в количестве модулей. В первом случае их будет не менее 50% ядра, а во-втором не больше 2 модулей. Вызов:
После вызова соответствующая программа конфигурации будет запущена. Произведите необходимые настройки в соответствии с вашими потребностями, сохраните файл конфигурации и переходите к следующему шагу.
Шаг 5. Сборка ядра
Итак, приготовления завершены. Теперь можно запустить процесс сборки ядра. Чтобы это сделать, выполните команду:
Сборка ядра может занимать от 20 минут до нескольких часов в зависимости от конфигурации ядра и технических параметров компьютера. Сборка при многодерном процессоре может быть в несколько раз быстрее
Шаг 6. Установка образов и заголовков ядра
Когда сборка ядра подошла к концу, в вашей домашней папке появятся два deb-пакета. Их и необходимо установить. Для этого выполните команды:
где 2.6.x.y - версия собранного ядра, arc - архитектура процессора (i386 - 32-бит, amd64 - 64-бит).
Если вы не знаете точного названия пакета, выведите список файлов в домашнем каталоге командой
и найдите эти самые два пакета.
Шаг 7. Генерация начального RAM-диска
Для корректной работы Ubuntu требует наличия образа начального RAM-диска. Чтобы его создать, выполните команду:
где 2.6.x.y - версия собранного ядра.
Шаг 8. Обновление конфигурации загрузчика GRUB
Для того, чтобы новая версия ядра была доступна для выбора при загрузке компьютера, выполните следующую команду:
Файл menu.lst (для GRUB версии 1) или grub.cfg (для GRUB версии 2) обновится в соответствии с наличием установленных операционных систем и образов ядер.
Этот шаг тоже можно пропустить, потому что во время установки ядра команда update-grub вызывается postinst-скриптом
Шаг 9. Проверка ядра
Сборка и установка ядра успешно выполнены! Теперь перезагрузите компьютер и попробуйте загрузить систему с новым ядром. Чтобы удостовериться, что система запущена с новым ядром, выполните команду
Она выведет на экран используемую версию ядра.
Если всё сделано правильно, то вы можете удалить архивы с исходным кодом и весь каталог linux-2.6.x.y в вашей домашней папке. Это освободит около 5 ГБ на вашем жёстком диске (размер освобождаемого пространства зависит от параметров сборки).
На этом процесс сборки и установки завершён, поздравляю!
Ссылки
Вот хочу я собрать ядро. Скачал, распокавал, делаю make menuconfig, и не вижу своих драйверов в этом меню. Но исходные коды драйвера у меня есть. Могу ли я как-то в это меню добавить нужный мне драйвер?
А по русски? А то не понятно, то ли не нашли свой драйвер в menuconfig, то ли как-то сферически в вакууме добавили свой драйвер.
В menuconfig не обнаружен нужный мне драйвер. Есть его(драйвера) исходные коды. Я хочу собрать ядро так, чтобы этот модуль был собран вместе с ядром, т.е. статически. Но в menuconfig его нет, а исходные коды есть. Можно ли как-то сделать так чтобы я увидел в menuconfig свой драйвер и собрал ядро вместе с ним?
а что за драйвер то?
Нельзя проприентарные драйверы добавлять!
>а исходные коды есть
>fglrx
Так а это, объясните мне что к чему, просто я не понимаю как эта система работает. Можно или нет добавить в make menuconfig нужный мне драйвер?
ХЗ. Наверно Донской.
GPL драйвер добавить можно, но муторно, посмотри как устроены патчи.
Уже нашел пример, спасибо.
>Уже нашел пример, спасибо.
пруфлинк в студию.
и это, не шути с Донским Табаком :)
В menuconfig никакие сторонние драйвера добавлять не надо. Просто там необходимо включить поддержку нужного устройства. А драйвер сам соберется модулем или встроится в ядро (это уже от вашей опции зависит).Обычно в исходниках ядра почти все драйвера есть. Другое дело они могут называтся както иначе, чем вы ожидаете :)
Читайте также: