Дошли руки до малин(давно купленных)... и... в /usr/src не увидел linux-headers-XXXX Куда они подевались? Вот версия: Код (Text): bot_gray@pi03:/ $ uname -a Linux pi03 4.9.35-v7+ #1014 SMP Fri Jun 30 14:47:43 BST 2017 armv7l GNU/Linux Странно. На всех машинах с Debian есть, а тут нет. Ядро конечно старенькое, да и гнаться за новыми лень. Драйвер для самодельного USB - устройства надо делать Устройство на at91sam7s256. заготовка драйвера на основе usb-sceleton.c ну и куча всяких примеров. Если не затруднит поделитесь исходниками именно этого ядра - как говориться ткните носом где брать. Можно конечно в "кернел" слазить (там брал 4.8.6 для платы и 2.6.27) лучше конечно заголовки. У меня на малине: Код (Text): root@pi03:/usr/src# ls -l total 12 drwxr-xr-x 4 root root 4096 Apr 7 2018 linux-headers-3.6-trunk-common drwxr-xr-x 4 root root 4096 Apr 7 2018 linux-headers-3.6-trunk-rpi lrwxrwxrwx 1 root root 23 Sep 1 2014 linux-kbuild-3.6 -> ../lib/linux-kbuild-3.6 drwxr-xr-x 3 root root 4096 Mar 3 2017 sense-hat root@pi03:/usr/src# В поисковике ссылка: Код (Text): http://phil.lavin.me.uk/downloads/linux-headers-rpi/ Но именно искомой версии нет.
Вот и не знаю как быть. Вчера на одной малине принудительно обновил ядро. Номер не запомнил... какой-то 6.XX.XX (старое уже не поддерживается). Свалил wifi, но ethernet остался. Я говорю про третью, а рабочий сервер на малине 4 с 8 Гб ОЗУ. На ней же и диск USB на 1 Тб. Там у меня всё: (и GCC, и всякие даташиты через Apache и QEMU - всё работает и я доболен) И smb и nfs. И там же исходники (можно собирать и не с root правами). А вот модули загружаются, как и всегда, с root. Для платы at91sam9260 собирал и ядро 4.8.6 и модули для него. Малина 4 только по ssh и никаких дисплеев и клавиатур. Если кому интересно - сборка модулей: - наличие исходников ядра (именно для чего собирается модуль). Там есть Makefile(в нём есть всё, что надо), которым будет пользоваться наш Makeable (где-то в нашей директории, рядом с исходниками модуля) - примерный наш Makefile: Код (Bash): # obj-m := samhid.o #указываем имя (он же и имя модуля - совпадает с именем файла Си) ## ## тут указываем компилятор (хоть кросс) #CROSS_COMPILE := arm-none-eabi- #указал для платы at91sam9260 CROSS_COMPILE := #не указали - значит родной наш и для нашей системы #!!!! !указать путь к исходникам(заголовкам) ядра!!! #KSRC := ../linux-4.8.6-CH-S_00.01 #заголовки для платы at91sam9260 KSRC := ../../linux-headers-5.10.103-v7l+ # заголовки для малины 4 #ARCH := arm #архитектура, если надо all: modules modules: #$(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KSRC) M=$(shell pwd) modules $(MAKE) -C $(KSRC) M=$(shell pwd) modules clean: #$(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KSRC) M=$(shell pwd) clean $(MAKE) -C $(KSRC) M=$(shell pwd) clean - не забыть сначала сконфигурировать исходники ядра make menuconfig но если заголовки ядра, то там всё готово - поле сбоки модуль (файл с расширением .ko) будет лежать рядом с исходником модуля - всё зависит от Вашего Makefile - испытать (с правами root) загрузить: insmod <имя модуля.ko> выгрузить: rmmod <имя модуля> после того как модуль отлажен и готов к применению - читайте про modprobe PS: примеров куча... но исходники и/или заголовки ядра обязательны... версии соблюдать!!! Но собирают само ядро бывает и без контроля версий... Именно само ядро собирают. Посмотреть параметры модуля по modinfo. Пример: Код (Text): igor@Irpi4:~/coding/GCC/at91sam9260_board/rtl8192eu-linux-driver $ modinfo 8192eu.ko filename: /home/igor/coding/GCC/at91sam9260_board/rtl8192eu-linux-driver/8192eu.ko version: v5.6.4_35685.20191108_COEX20171113-0047 author: Realtek Semiconductor Corp. description: Realtek Wireless Lan Driver license: GPL srcversion: 1EFCDB75C630E976057E1BC #тут видно какие устройства USB подхватит этот драйвер(модуль) alias: usb:v2C4Ep0104d*dc*dsc*dp*ic*isc*ip*in* alias: usb:v2C4Ep0100d*dc*dsc*dp*ic*isc*ip*in* alias: usb:v2019pAB33d*dc*dsc*dp*ic*isc*ip*in* alias: usb:v2357p0126d*dc*dsc*dp*ic*isc*ip*in* alias: usb:v2357p0109d*dc*dsc*dp*ic*isc*ip*in* alias: usb:v2357p0108d*dc*dsc*dp*ic*isc*ip*in* alias: usb:v2357p0107d*dc*dsc*dp*ic*isc*ip*in* alias: usb:v2001p3319d*dc*dsc*dp*ic*isc*ip*in* alias: usb:v2001p3312d*dc*dsc*dp*ic*isc*ip*in* alias: usb:v0BDAp818Cd*dc*dsc*dp*icFFiscFFipFFin* alias: usb:v0BDAp818Bd*dc*dsc*dp*icFFiscFFipFFin* depends: cfg80211 #это значит этот драйвер(модуль) зависит от cfg80211 - значит его надо загрузить до драйвера vermagic: 4.8.6 mod_unload ARMv5 p2v8 #тут собсвенно версия (процессор, ядро, компилятор) parm: rtw_wireless_mode:int parm: rtw_ips_mode:The default IPS mode (int) parm: rtw_lps_level:The default LPS level (int) parm: rtw_lps_chk_by_tp:int parm: rtw_max_bss_cnt:int parm: rtw_usb_rxagg_mode:int parm: rtw_dynamic_agg_enable:int parm: rtw_tx_bw_mode:The max tx bw for 2.4G and 5G. format is the same as rtw_bw_mode (uint) parm: rtw_rx_ampdu_sz_limit_1ss:RX AMPDU size limit for 1SS link of each BW, 0xFF: no limitation (array of uint) parm: rtw_rx_ampdu_sz_limit_2ss:RX AMPDU size limit for 2SS link of each BW, 0xFF: no limitation (array of uint) parm: rtw_rx_ampdu_sz_limit_3ss:RX AMPDU size limit for 3SS link of each BW, 0xFF: no limitation (array of uint) parm: rtw_rx_ampdu_sz_limit_4ss:RX AMPDU size limit for 4SS link of each BW, 0xFF: no limitation (array of uint) parm: rtw_rf_config:int parm: rtw_country_code:The default country code (in alpha2) (charp) parm: rtw_channel_plan:The default chplan ID when rtw_alpha2 is not specified or valid (int) parm: rtw_excl_chs:exclusive channel array (array of uint) parm: rtw_btcoex_enable:BT co-existence on/off, 0:off, 1:on, 2:by efuse (int) parm: rtw_ant_num:Antenna number setting, 0:by efuse (int) parm: rtw_qos_opt_enable:int parm: ifname:The default name to allocate for first interface (charp) parm: if2name:The default name to allocate for second interface (charp) parm: rtw_wowlan_sta_mix_mode:int parm: rtw_pwrtrim_enable:int parm: rtw_initmac:charp parm: rtw_special_rf_path:int parm: rtw_chip_version:int parm: rtw_rfintfs:int parm: rtw_lbkmode:int parm: rtw_network_mode:int parm: rtw_channel:int parm: rtw_mp_mode:int parm: rtw_wmm_enable:int parm: rtw_vrtl_carrier_sense:int parm: rtw_vcs_type:int parm: rtw_busy_thresh:int parm: rtw_ht_enable:int parm: rtw_bw_mode:int parm: rtw_ampdu_enable:int parm: rtw_rx_stbc:int parm: rtw_rx_ampdu_amsdu:int parm: rtw_tx_ampdu_amsdu:int parm: rtw_lowrate_two_xmit:int parm: rtw_power_mgnt:int parm: rtw_smart_ps:int parm: rtw_low_power:int parm: rtw_wifi_spec:int parm: rtw_full_ch_in_p2p_handshake:int parm: rtw_antdiv_cfg:int parm: rtw_antdiv_type:int parm: rtw_drv_ant_band_switch:int parm: rtw_single_ant_path:int parm: rtw_switch_usb_mode:int parm: rtw_enusbss:int parm: rtw_hwpdn_mode:int parm: rtw_hwpwrp_detect:int parm: rtw_hw_wps_pbc:int parm: rtw_check_hw_status:int parm: rtw_max_roaming_times:The max roaming times to try (uint) parm: rtw_mc2u_disable:int parm: rtw_notch_filter:0:Disable, 1:Enable, 2:Enable only for P2P (uint) parm: rtw_hiq_filter:0:allow all, 1:allow special, 2:deny all (uint) parm: rtw_adaptivity_en:0:disable, 1:enable (uint) parm: rtw_adaptivity_mode:0:normal, 1:carrier sense (uint) parm: rtw_adaptivity_th_l2h_ini:th_l2h_ini for Adaptivity (int) parm: rtw_adaptivity_th_edcca_hl_diff:th_edcca_hl_diff for Adaptivity (int) parm: rtw_amplifier_type_2g:BIT3:2G ext-PA, BIT4:2G ext-LNA (uint) parm: rtw_amplifier_type_5g:BIT6:5G ext-PA, BIT7:5G ext-LNA (uint) parm: rtw_RFE_type:default init value:64 (uint) parm: rtw_powertracking_type:default init value:64 (uint) parm: rtw_GLNA_type:default init value:0 (uint) parm: rtw_TxBBSwing_2G:default init value:0xFF (uint) parm: rtw_TxBBSwing_5G:default init value:0xFF (uint) parm: rtw_OffEfuseMask:default open Efuse Mask value:0 (uint) parm: rtw_FileMaskEfuse:default drv Mask Efuse value:0 (uint) parm: rtw_rxgain_offset_2g:default RF Gain 2G Offset value:0 (uint) parm: rtw_rxgain_offset_5gl:default RF Gain 5GL Offset value:0 (uint) parm: rtw_rxgain_offset_5gh:uint parm: rtw_rxgain_offset_5gm:default RF Gain 5GM Offset value:0 (uint) parm: rtw_pll_ref_clk_sel:force pll_ref_clk_sel, 0xF:use autoload value (uint) parm: rtw_tx_pwr_by_rate:0:Disable, 1:Enable, 2: Depend on efuse (int) parm: rtw_tx_pwr_lmt_enable:0:Disable, 1:Enable, 2: Depend on efuse (int) parm: rtw_target_tx_pwr_2g_a:2.4G target tx power (unit:dBm) of RF path A for each rate section, should match the real calibrate power, -1: undefined (array of int) parm: rtw_target_tx_pwr_2g_b:2.4G target tx power (unit:dBm) of RF path B for each rate section, should match the real calibrate power, -1: undefined (array of int) parm: rtw_target_tx_pwr_2g_c:2.4G target tx power (unit:dBm) of RF path C for each rate section, should match the real calibrate power, -1: undefined (array of int) parm: rtw_target_tx_pwr_2g_d:2.4G target tx power (unit:dBm) of RF path D for each rate section, should match the real calibrate power, -1: undefined (array of int) parm: rtw_tsf_update_pause_factor:num of bcn intervals to stay TSF update pause status (int) parm: rtw_tsf_update_restore_factor:num of bcn intervals to stay TSF update restore status (int) parm: rtw_phy_file_path:The path of phy parameter (charp) parm: rtw_load_phy_file:PHY File Bit Map (int) parm: rtw_decrypt_phy_file:Enable Decrypt PHY File (int) parm: rtw_en_napi:int parm: rtw_iqk_fw_offload:int parm: rtw_ch_switch_offload:int
@Igor68, привет. Если меня не подводит чутье https://archive.raspberrypi.org/deb...berrypi-kernel-headers_1.20170702-1_armhf.deb (ядро собрано в пятницу 30 июня в репу залито 2 июля) или смотрите следующее по дате https://archive.raspberrypi.org/debian/pool/main/r/raspberrypi-firmware/
версия вроде та... но вот испытанный на разных платформах тестовый исходник при компиляции даёт: Код (Text): root@pi02:/home/igor/sdb/MOUNT_RPI4/modules/testmod2# make make ARCH=arm CROSS_COMPILE= -C /usr/src/linux-headers-4.9.35-v7+ M=/home/igor/sdb/MOUNT_RPI4/modules/testmod2 modules make[1]: Entering directory '/usr/src/linux-headers-4.9.35-v7+' CC [M] /home/igor/sdb/MOUNT_RPI4/modules/testmod2/lkm_example.o /bin/sh: 1: -Wp,-MD,/home/igor/sdb/MOUNT_RPI4/modules/testmod2/.lkm_example.o.d: not found scripts/Makefile.build:299: recipe for target '/home/igor/sdb/MOUNT_RPI4/modules/testmod2/lkm_example.o' failed make[2]: *** [/home/igor/sdb/MOUNT_RPI4/modules/testmod2/lkm_example.o] Error 127 Makefile:1490: recipe for target '_module_/home/igor/sdb/MOUNT_RPI4/modules/testmod2' failed make[1]: *** [_module_/home/igor/sdb/MOUNT_RPI4/modules/testmod2] Error 2 make[1]: Leaving directory '/usr/src/linux-headers-4.9.35-v7+' Makefile:10: recipe for target 'all' failed make: *** [all] Error 2 по ходу надо ихний Makefile пилить
я сам дурак! увлёкся кроос-компиляцией и многого не заметил. Взял свой пример для родной сборки (на платформе для себя) вот Makefile (сборка двух модулей): Код (Text): # obj-m += mod0.o obj-m += mod1.o all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean ну и модуль(modinfo одного из модулей): Код (Text): igor@pi02:~/sdb/MOUNT_RPI4/modules/testmod3 $ modinfo mod0.ko filename: /home/igor/sdb/MOUNT_RPI4/modules/testmod3/mod0.ko version: 1.01 description: mod0 testing. author: Igor D: 19.08.2021 license: GPL srcversion: 5B0FFD8B89FB9FE15AF89CB depends: vermagic: 4.9.35-v7+ SMP mod_unload modversions ARMv7 p2v8 а это dmesg: Код (Text): [132205.290128] mod0: loading out-of-tree module taints kernel. [132205.290863] mod0 module loaded [132256.796198] Namaskar: ofcd registered [132256.797753] mod1 module loaded! и устройство в /dev (ls /dev -l): Код (Text): crw------- 1 root root 242, 0 Feb 26 18:11 test_mod1 Собралось на малине 3 на примонтированном по nfs диск USB на малине 4 и загрузилось на малине 3. Спасибо @ZAZ-965 ! Теперь можно что-то делать - ведь устройство USB должно работать именно на малине 3.
Доброго времени суток! ...а есть ли возможность поправить репозиторий, в смысле изменить /etc/apt/sources.list? Вдруг стал нужен automake есть кое-что и надо собрать для: Код (Text): 4.1.19+ #858 Tue Mar 15 15:52:03 GMT 2016 armv6l GNU/Linux PS: Это не для того кому я задал вопрос(@ZAZ-965), а для тех кто говорит: "А вот Я...": Самое простое, конечно, это переставить систему... но я не такой модник, чтобы по первому дуновению ветерка бросаться переустанавливать систему, тем более что устройство в сети и является частью её(от неё зависят другие устройства в сети). Да и вообще маникюр и педикюр я не делаю, ногти тоже не крашу... только подстригаю их когда отрастают, как и все нормальные люди.
@Igor68, старые версии перенесены в из archive.raspbian.org (bookworm/bullseye/buster) в legacy.raspbian.org (wheezy/stretch/jessie). Т.е в sources.list поменять archive.raspbian.org или mirrordirector.raspbian.org на legacy.raspbian.org.