Ядро .конфігуруйте необхідні параметри


16

Мені цікаво скласти спеціальне ядро ​​для пі. У мене є джерело з архіву github , що включає ціль make для конфігурації за замовчуванням:

make ARCH=arm bcmrpi_defconfig

Але (як і у звичайних ядрах дистрибутива Linux), це включає багато речей, які мені ніколи не знадобляться, і деякі речі, які я хотів би змінити.

Які існують варіанти, які потрібні для того, щоб різні загальнодоступні речі працювали?

Відповіді:


25

Починати з конфігурації за замовчуванням, або ви знаєте, що вже працює, це гарна ідея. Остерігайтеся, що для Pi 2 ви повинні використовувати:

make bcm2709_defconfig

Замість цього bcmrpi_defconfig.

Зауважте, що якщо ви хочете уникнути клобірування існуючої установки ядра тієї ж версії, встановіть Загальна настройка -> Локальна версія - додайте рядок випуску ядра до унікального значення.

Я використовував фактичні мітки .configзвідси, sans CONFIG_ ; якщо ви використовуєте, наприклад,, make menuconfigви можете знайти відповідний варіант за допомогою пошуку (косою рискою вперед /). Ці мітки також використовуються вгорі сторінки "Довідка" для кожного варіанта. Зауважимо, що термін enable (d) позначає те, що викликає появу опції, відмінне від фактичного вибору варіанту для побудови.

Якщо між платами A / B / B + / A + та Pi 2 є відмінності, це вказується. В деяких місцях це різниця між сім'ями Broadcom 2708 та 2709, але в інших місцях Pi 2 використовує той самий варіант 2708 (або 2835), що й інші плати.


Система

Для A / A + / B / B +:

  • ARCH_BCM2708 (Тип системи -> Тип системи зброї -> Сімейство Broadcom BCM2708)

Для Pi 2:

  • ARCH_BCM2709 (Тип системи -> Тип системи зброї -> Сімейство Broadcom BCM2709) ... Це внизу списку і не в алфавітному порядку.
  • SMP (Особливості ядра -> Симетрична багатообробка)
  • NEON (Емуляція з плаваючою точкою -> Розширена підтримка розширення SIMD (Neon)) та "Підтримка NEON в режимі ядра".

Роз'єм пам'яті ядра:

Через проблеми з декількома частинами застарілого програмного забезпечення , конфігурація за замовчуванням може використовувати тут 3G / 1G, що залишить 25% оперативної пам'яті Pi 2 недоступним для простору користувача. Якщо вас це турбує, перевірте можливості kernel -> Memory Split .


флеш-картка

Очевидно, це не можуть бути модулі, оскільки вони потрібні для доступу /lib/modules; вони повинні бути вбудованими. Вони знаходяться в розділі "Драйвери пристроїв" менюconfig.

  • MMC (підтримка карт MMC / SD / SDIO): Необхідно отримати варіанти для драйвера mmc, але недостатньо. У межах цих варіантів:
    • MMC_BCM2835 (підтримка MMC на BCM2835).
    • MMC_BCM2835_DMA (підтримка DMA на контролері BCM2835 Arasan): увімкнено, але не вибрано MMC_BCM2835.
    • MMC_SDHCI (підтримка захищеного інтерфейсу цифрового хост-контролера)

Оскільки кореневий розділ, як правило, відформатований, ви також хочете, щоб він був вбудований:

  • EXT4_FS (Розширена файлова система 4 (ext4)) у розділі "Файлові системи". Можливо, ext2 та ext3 теж є хорошою ідеєю.

Завантажувальний розділ vfat, тому:

  • VFAT_FS (підтримка VFAT (Windows-95) fs) знаходиться у розділі "Файлові системи -> DOS / FAT / NT Filesystems".

Різне

Це різні речі, які вам (майже напевно) потрібні, тому я перерахував їх першими.

  • VFP (математика з плаваючою комою у форматі VFP) у розділі "Емуляція з плаваючою точкою".
  • UNIX (Unix доменних розеток) у розділі "Підтримка мережі". Базове програмне забезпечення системи вимагатиме цього, навіть якщо ви не займаєтесь реальною мережею.
  • BINFMT_ELF (підтримка ядра для бінарних файлів ELF) у розділі "Бінарні формати простору користувача".
  • TTY (Увімкнути TTY) у розділі "Драйвери пристроїв -> Пристрої символів"; це дозволяє включити VT (віртуальний термінал) та UNIX98_PTYS (підтримка Unix98 PTY), які слід вибрати. Потім VT включає VT_CONSOLE (Підтримка консолі на віртуальному терміналі) та CONSOLE_TRANSLATIONS (Увімкнути переклад символів у консолі), які також слід вибрати.
  • PROC_FS , SYSFS і TMPFS у розділі "Файлові системи -> Псевдофайлові системи".
  • SERIAL_AMBA_PL011 (підтримка послідовного порту ARM AMBA PL011) у розділі "Драйвери пристроїв -> Пристрої символів -> Послідні драйвери" та SERIAL_AMBA_PL011_CONSOLE (Підтримка консолі на послідовному порту AMBA). Raspbian системи будуть скаржитися на "/ dev / ttyAMA0: Немає такого файлу чи каталогу" без цього.
  • ЯЩИК і BCM2708_MBOX (на 4.х ядер). Це драйвери пристроїв-> Підтримка апаратної поштової скриньки та опція BCM 2708 у підменю. Дивіться відповідь зуба .

USB

  • USB (Підтримка USB на стороні господаря), в розділі "Драйвери пристроїв -> USB-підтримка", що дозволяє USB_DWCOTG (підтримка хостів Synopsis DWC) вниз по сторінці, яку також слід вибрати.
  • USB_ANNOUNCE_NEW_DEVICES (Драйвери пристроїв -> USB-підтримка -> USB оголошують про нові пристрої).
  • USB_DEFAULT_PERSIST (Драйвери пристрою -> USB-підтримка -> Увімкнути збереження USB за замовчуванням).

Для клавіатур та мишей:

  • HID_GENERIC (Загальний драйвер HID) у "Драйвери пристрою-> HID-підтримка"
  • Потім у "Підтримка USB HID": USB_HID (транспортний шар USB HID)
  • INPUT_MOUSEDEV (Інтерфейс миші) у розділі "Драйвери пристроїв -> Підтримка пристроїв вводу".

Для жорстких дисків:

  • SCSI (підтримка пристроїв SCSI), а потім BLK_DEV_SD (підтримка диска SCSI) у розділі "Драйвери пристроїв -> Підтримка SCSI".
  • USB_STORAGE (підтримка USB Mass Storage) у розділі "Драйвери пристроїв -> USB-підтримка".

Щодо прив’язки пристроїв Android, дивіться мою відповідь тут .


Ethernet

Спочатку потрібно ввімкнути USB.

  • NET (підтримка мережі), варіант верхнього рівня; всередині яких є:

    • ПАКЕТ (розетка пакета).
    • INET (мережа TCP / IP). Це повинно включати різноманітні параметри, пов’язані з IP, які ви можете залишити.
    • NETFILTER (Мережа фільтрації пакетів пакетів), необхідна для брандмауера фільтра пакетів ядра "ip table ".
  • НЕТДЕВІКА (підтримка мережевих пристроїв) у "Драйвери пристроїв", потім:

    • NET_CORE ( мережевого драйвера).
    • USB_NET_DRIVERS (мережеві адаптери USB) ->
      • USB_USBNET (Багатоцільовий мережевий фреймворк USB).
      • USB_NET_SMSC95XX (мережеві пристрої USB 2.0 10/100 на базі SMSC LAN95XX)

Звук

Щоб увімкнути бортовий звук:

  • ЗВУК (у драйверах пристроїв), потім:
    • SND (Advanced Linux Sound Architecture) і в цьому:
    • SND_ARM (звукові пристрої ARM) і нарешті в цьому SND_BCM2835 (драйвер ALMA BCM2835)

Відео

  • CONFIG_BCM2708_VCHIQ (Драйвери пристроїв -> Різні пристрої -> Videocore VCHIQ).

Більше нічого не потрібно для підтримки сервера X; Немає варіантів драйверів DRI для SoC pi.

Якщо ви хочете використовувати фреймбуфер, який дозволяє таким програмам, як fbiі omxplayerвідображати графіку поза X:

  • FB (Драйвери пристроїв -> Підтримка графіки -> Пристрої буфера кадру -> Підтримка буферних пристроїв кадрів), потім у тому самому меню FB_BCM2708 (підтримка кадрового буфера BCM2708).

Якщо ви робите це і хочете, щоб пінгвін (а точніше, малина) на консолі завантаження, пам’ятайте LOGO (логотип Bootup) під графічною підтримкою.

Ви також можете переглянути параметри у розділі Тип системи -> Broadcom2708 (або 9) Реалізації .


GPIO / I 2 C

  • BCM2708_GPIO (Тип системи -> Реалізації Broadcom BCM2708) Або для Pi 2, відповідний варіант BCM2709.
  • GPIO_SYSFS (Драйвери пристроїв -> Підтримка GPIO) для /sys/class/gpioінтерфейсу.
  • I2C (драйвери пристроїв -> підтримка I2C), що дозволяє I2C_CHARDEV (інтерфейс пристрою I2C). Потім у розділі "Підтримка апаратної шини I2C":
    • I2C_BCM2708 (BCM2708 BSC).

Распікам

  • MEDIA_CAMERA_SUPPORT (Драйвери пристроїв -> Мультимедійна підтримка -> Підтримка камер / відеозаписувачів).
  • V4L_PLATFORM_DRIVERS ( пристроїв-> Мультимедійна підтримка -> Пристрої платформи V4L "). Це дозволяє підменю, де потрібно вибрати:
    • CONFIG_SOC_CAMERA (підтримка камери SoC).
    • CONFIG_VIDEO_BCM2835 (драйвер інтерфейсу камери Broadcom BCM2835). Це дозволяє "драйвер інтерфейсу камери Broadcom BM2835 MMAL ( CONFIG_VIDEO_BCM2835_MMAL ), який ви також повинні вибрати.

Тепловий датчик

Ви маєте вибір тут; якщо ви спробуєте вибрати обидва, перший буде скасовано (хоча ви можете створити один як модуль, змінити конфігурацію, побудувати інший і використовувати їх обоє, якщо ви дійсно хочете).

  • SENSORS_BCM2835 ( Драйвери пристрою-> Підтримка апаратного моніторингу-> Драйвер Broadcom BCM2835 HWMON). Це внизу списку, якщо ви не вибираєте "BCM2835 Thermal Driver" внизу. Це дає вам доступ до теплових матеріалів в /sys/devices/platform/bcm2835_hwmon- temp1_inputі temp1_max. Перший - той самий /sys/devices/virtual/thermal/thermal_zone0/temp; останній завжди 85000 (тобто 85 ° C).
  • THERMAL_BCM2835 ( Драйвери пристрою-> Загальний драйвер термічного sysfs-> BCM2835 Thermal Driver). Також виберіть Драйвери пристрою-> Підтримка апаратного моніторингу (але не окремий драйвер у цьому меню), щоб тут з'явилося "Викрити теплові датчики як пристрій hwmon", і ви можете вибрати це (у 4.0.y, схоже, цього немає). Якщо вибрати це, ви знімете SENSORS_BCM2835 вище. Це дає вам доступ до легшого запам'ятовування та пошуку, /sys/class/devices/virtual/thermal/thermal_zone0що включає tempі trip_point_0_temp(те саме temp1_max, що вище). Можливо, різні монітори простору користувачів віддадуть перевагу цьому і можуть не працювати без нього.

5

Коментар до чудової публікації goldilock:

Просто хотілося додати одне, що я спостерігаю із відділенням rpi-4.1.y (05376fce25aaab4f47182a5af04928bfa06f30d6): для того, щоб USB працював (до цього входить мережа, підключена до USB), потрібно також включити BCM2708_MBOX (Драйвери пристрою -> Підтримка апаратної поштової скриньки- > Поштова скринька Broadcom BCM2708 (vcio)).

Без цієї опції USB починає ініціалізуватись, але створює лише купу страшних повідомлень, таких як:

[    1.193854] WARN::dwc_otg_core_reset:5109: dwc_otg_core_reset() HANG! Soft Reset GRSTCTL=80000001
[    1.441137] WARN::dwc_otg_hcd_init:1047: FIQ DMA bounce buffers: virt = 0x9fc0c000 dma = 0x5d5e4000 len=9024

Btw. BCM2708_MBOX також є необхідною умовою для THERMAL_BCM2835 та SND_BCM2835 .


2

Відео (фреймбуфер)

Окрім підтримки для відео, схоже, вам потрібно включити:

Device Drivers ->
  DMA Engine support ->
    BCM2835 DMA engine support (CONFIG_DMA_BCM2835)

Щоб правильно завантажити драйвер framebuffer. Ви можете ввімкнути його без включення DMA, але він не завантажиться.

Вбудований бездротовий зв'язок

Для того, щоб мати інтегрований бездротовий зв'язок (RPi 3 та Pi Zero W), потрібно вибрати наступне:

Networking support ->
  Wireless ->
    cfg80211 - wireless configuration API (CONFIG_CFG80211)

Device Drivers ->
  Network device support ->
    Wireless LAN ->
      Broadcom IEEE802.11n embedded FullMAC WLAN driver (CONFIG_BRCMFMAC)

0

Може бути старим, але я потрапив сюди за допомогою пошуку. Для SDHC-картки вам додатково потрібна

Device Drivers -> -> MMC block device driver )CONFIG_MMC_BLOCK)

інакше ваше ядро ​​виявить SDHC-карту, але на ній немає розділів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.