Руководство пользователя Orange Pi Zero 2

  Описание    Запуск    ОС Линукс      SDK Линукс      ОС Андроид    SDK Андроид    Фото  

Глава 4. SDK Линукс - Linux SDK
Страница:   26    27    28    29    30    31  

4.4. Компиляция ядра Linux (Compile the Linux kernel)
  • 1) Запустите скрипт build.sh, не забудьте добавить sudo permissions

    test@test:~/orangepi-build$ sudo ./build.sh
  • 2) Выберите пакет ядра, затем нажмите Enter.



  • 3) Затем выберите модель макетной платы



  • 4) Затем появится интерфейс конфигурации ядра, открытый через make menuconfig. В это время вы можете напрямую изменить конфигурацию ядра. Если вам не нужно изменять конфигурацию ядра, просто выйдите напрямую. После выхода исходный код ядра будет скомпилирован



  • 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) Если при компиляции ядра появляется следующая ошибка (display is too small), это связано с тем, что интерфейс терминала ПК с Ubuntu слишком мал и интерфейс make menuconfig не отображается.

    Настройте терминал ПК с Ubuntu на максимум, а затем повторно запустите скрипт build.sh




  • 5) При компиляции исходного кода ядра будет запрошена следующая информация
  • a) Версия исходного кода ядра

    [ o.k. ] Compiling legacy kernel [ 4.9.170 ]
  • b) Версия инструмента кросс-компиляции

    [ o.k. ] Compiler version [ aarch64-none-linux-gnu-gcc 9.2.1 ]
  • c) Файл конфигурации по умолчанию, используемый ядром, и путь его хранения

    [ o.k. ] Using kernel config file [ config/kernel/linux-sun50iw9-legacy.config ]
  • d) Если KERNEL_CONFIGURE = yes, последний файл конфигурации .config, используемый ядром, будет скопирован в output/config. Если конфигурация ядра не изменяется, окончательный файл конфигурации согласуется с файлом конфигурации по умолчанию.

    [ o.k. ] Exporting new kernel config [ output/config/linux-sun50iw9-legacy.config ]
  • e) Путь к пакету deb, относящемуся к скомпилированному ядру [o.k. ] Целевой каталог [output / debs /]

    [ o.k. ] Target directory [ output/debs/ ]
  • f) Имя пакета скомпилированного образа ядра deb-пакета

    [ o.k. ] File name [ linux-image-legacy-sun50iw9_2.0.8_arm64.deb ]
  • g) Время компиляции

    [ o.k. ] Runtime [ 5 min ]
  • h) В конце концов, он отобразит команду компиляции для перекомпиляции ядра, выбранного в прошлый раз. Используйте следующую команду без выбора через графический интерфейс, вы можете напрямую начать компиляцию исходного кода ядра

    [ o.k. ] Repeat Build Options [ sudo ./build.sh BOARD=orangepizero2 BRANCH=legacy BUILD_OPT=kernel KERNEL_CONFIGURE=yes ]
  • 6) Просмотрите пакет .deb, связанный с ядром, созданным при компиляции.
  • a) linux-dtb-legacy-sun50iw9_2.0.8_arm64.deb еще не используется, не волнуйтесь об этом
  • b) linux-headers-legacy-sun50iw9_2.0.8_arm64.deb содержит файлы заголовков ядра
  • c) linux-image-legacy-sun50iw9_2.0.8_arm64.deb содержит образ ядра и модуль ядра

    test@test: ~/orangepi-build$ ls output/debs/linux-* output/debs/linux-dtb-legacy-sun50iw9_2.0.8_arm64.deb output/debs/linux-headers-legacy-sun50iw9_2.0.8_arm64.deb output/debs/linux-image-legacy-sun50iw9_2.0.8_arm64.deb
  • 7) В созданном deb-пакете linux-image содержатся файлы:

    Используйте следующие команды, чтобы распаковать пакет deb


    test@test:~/orangepi-build$ cd output/debs test@test: ~/orangepi_build/output/debs$ mkdir test test@test: ~/orangepi_build/output/debs$ cp \ linux-image-legacy-sun50iw9_2.0.8_arm64.deb test/ test@test: ~/orangepi_build/output/debs$ cd test test@test: ~/orangepi_build/output/debs/test$ dpkg -x \ linux-image-legacy-sun50iw9_2.0.8_arm64.deb . test@test: ~/orangepi_build/output/debs/test$ ls boot etc lib linux-image-legacy-sun50iw9_2.0.8_arm64.deb usr

    Распакованные файлы выглядят следующим образом (8 каталогов, 4 файла) :


    test@test: ~/orangepi_build/output/debs/test$ tree -L 2

    . boot config-4.9.170-sun50iw9 System.map-4.9.170-sun50iw9 vmlinuz-4.9.170-sun50iw9 etc kernel lib modules linux-image-legacy-sun50iw9_2.0.8_arm64.deb usr lib share
  • 8) Когда ОС сборки orangepi-bulid компилирует исходный код ядра Linux, она сначала синхронизирует исходный код ядра Linux с исходным кодом ядра Linux на сервере github, поэтому, если вы хотите изменить исходный код ядра Linux, вы сначала необходимо отключить функцию обновления исходного кода в противном случае внесенные изменения будут восстановлены.

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

    Установите для переменной IGNORE_UPDATES в userpatches/config-default.conf значение «no»


    test@test:~/orangepi-build$ vim userpatches/config-default.conf IGNORE_UPDATES="no"
  • 9) Если вы модифицируете ядро, вы можете использовать следующие методы для обновления ядра и модулей ядра ОС Linux на плате разработки.
  • a) Загрузите скомпилированный пакет linux deb в ОС linux платы разработки

    test@test: ~/orangepi-build$ cd output/debs test@test: ~/orangepi-build/output/debs$ scp \ linux-image-legacy-sun50iw9_2.0.8_arm64.deb root@192.168.1.207:/root
  • b) Затем войдите на доску разработки, удалите установленный пакет deb u-boot

    root@orangepi: ~# apt purge -y linux-image-legacy-sun50iw9
  • c) Установите только что загруженный новый пакет u-boot deb

    root@orangepi: ~# dpkg -i linux-image-legacy-sun50iw9_2.0.8_arm64.deb
  • d) Затем перезапустите плату разработки и проверьте, вступили ли в силу изменения, связанные с ядром.

  • Страница:   26    27    28    29    30    31