Глава 4. Linux SDK - инструкция по сборке OrangePi
4.4. Как скомпилировать ядро Linux
1) Запустите скрипт build.sh, не забудьте добавить разрешение sudo
test@test:~/orangepi-build$ sudo ./build.sh
2) Выберите пакет ядра, затем нажмите Enter
Img
4.9
3) Затем вас спросят, нужно ли отображать интерфейс конфигурации ядра.
Если вам не нужно изменять конфигурацию ядра, выберите первое. Если вам
нужно изменить конфигурацию ядра, выберите второй.
Img
4.10
4) Затем выберите модель платы
Img
4.11
5) Затем выберите тип ветки исходного кода ядра
a. Текущая ветка будет компилировать исходный код ядра Linux5.4
b. Следующая ветка будет компилировать исходный код ядра Linux6.1
Img
4.12
6) Если вы выберете отображение меню конфигурации ядра (второй
вариант) на шаге 3), появится всплывающий интерфейс конфигурации ядра,
открытый makemenuconfig. В это время вы можете напрямую изменить
конфигурацию ядра, сохранить и выйти после модификации.
Да, после выхода начнется компиляция исходного кода ядра.
Img
4.13
a. Если вам не нужно изменять параметры конфигурации ядра, при запуске
скрипта build.sh передайте KERNEL_CONFIGURE=no, чтобы временно
заблокировать всплывающий интерфейс конфигурации ядра.
test@test:~/orangepi-build$ sudo ./build.sh KERNEL_CONFIGURE=no
b. Вы также можете установить KERNEL_CONFIGURE=no в конфигурационном
файле Orangepi-build/userpatches/config-default.conf, что может навсегда
отключить эту функцию.
c. Если при компиляции ядра отображается следующая ошибка, это связано с
тем, что терминальный интерфейс ПК с Ubuntu слишком мал для отображения
интерфейса makemenuconfig. Разверните терминал ПК с Ubuntu и снова
запустите скрипт build.sh
Img
4.14
7) Часть информации, запрашиваемой при компиляции исходного кода ядра
следующей ветки, выглядит следующим образом.
a. Версия исходного кода ядра Linux
[ o.k. ] Compiling current kernel [ 6.1.31 ]
b. Используемая версия набора инструментов для кросс-компиляции
[ o.k. ] Compiler version [ aarch64-linux-gnu-gcc 11 ]
c. Файл конфигурации, используемый ядром по умолчанию, и путь, по которому он хранится, следующие:
[ o.k. ] Using kernel config file
[ orangepi-build/external/config/kernel/linux-6.1-sun50iw9-next.config ]
d. Путь к пакету deb, относящемуся к ядру, сгенерированному при компиляции
[ o.k. ] Target directory [ output/debs/ ]
e. Имя пакета deb-пакета скомпилированного образа ядра.
[ o.k. ] File name [ linux-image-next-sun50iw9_x.x.x_arm64.deb ]
f. Время, затраченное на компиляцию
[ o.k. ] Runtime [ 10 min ]
g. Наконец, будет показана команда компиляции для повторной компиляции
ядра, выбранного в последний раз. Используйте следующую команду, чтобы
начать компиляцию исходного кода ядра напрямую, без выбора через
графический интерфейс
[ o.k. ] Repeat Build Options [ sudo ./build.sh BOARD=orangepizero3
BRANCH=next BUILD_OPT=kernel KERNEL_CONFIGURE=no ]
8) Просмотр пакета deb, связанного с ядром, сгенерированным при компиляции.
a. linux-dtb-next-sun50iw9_x.x.x_arm64.deb Содержит файлы dtb,
используемые ядром
b. linux-headers-next-sun50iw9_x.x.x_arm64.deb Включить заголовки ядра
c. linux-image-next-sun50iw9_x.x.x_arm64.deb Содержит образы ядра и модули ядра
test@test:~/orangepi-build$ ls output/debs/linux-*
output/debs/linux-dtb-next-sun50iw9_x.x.x_arm64.deb
output/debs/linux-headers-next-sun50iw9_x.x.x_arm64.deb
output/debs/linux-image-next-sun50iw9_x.x.x_arm64.deb
9) Когда система компиляции Orangepi-bulid компилирует исходный код ядра
linux, она сначала синхронизирует исходный код ядра linux с исходным кодом
ядра linux сервера github, поэтому, если вы хотите изменить исходный код
ядра linux, вам сначала нужно отключить функцию обновления исходного кода.
Ядро linux нужно полностью скомпилировать один раз. Эту функцию можно
отключить только после исходников, иначе будет выдаваться сообщение о том,
что исходники ядра linux не найдены. В противном случае внесенные
изменения будут восстановлены, метод следующий:
Установите для переменной IGNORE_UPDATES в userpatches/config-default.conf
значение "yes"
test@test:~/orangepi-b
10) Если ядро было изменено, можно использовать следующий метод для
обновления ядра и модулей ядра системы Linux на плате
a. Загрузите пакет deb скомпилированного ядра Linux в систему Linux платы
test@test:~/orangepi-build$ cd output/debs
test@test:~/orangepi-build/output/debs$ scp \
linux-image-next-sun50iw9_x.x.x_arm64.deb root@192.168.1.xxx:/root
b. Установите только что загруженный пакет deb нового ядра Linux.
orangepi@orangepi:~$ sudo dpkg -i linux-image-next-sun50iw9_x.x.x_arm64.deb
c. Затем перезапустите плату и проверьте, вступили ли в силу
изменения, связанные с ядром.
orangepi@orangepi:~$ sudo reboot