Fórum Root.cz
Ostatní => Odkladiště => Téma založeno: novak_josef_2019 18. 11. 2020, 11:46:15
-
Netušíte, jak si ze zdrojáků kernelu zkompiluji pouze modules a modules-extra?
U příkazu 'fakeroot debian/rules binary-modules' to vypíše, že pro to neexistuje žádné pravidlo a 'fakeroot debian/rules binary-generic' trvá hodně dlouho.
-
A klasicky rucni pristup nefunguje?
cd /usr/src/linux
make modules
sudo make modules_install
-
Dík, to funguje, ale ta doba kompilace je o hodně delší, než úplně celého jádra pomocí toho fakeroot, který to nakonec vše zabalí do *.deb.
Kdybych chtěl zkompilovat jenom atheros wireless ovladače, které jsem si před tím patchnul, tak by to šlo také specifikovat?
Když totiž vjedu do drivers/net/wireless/ath, tak tam sice soubor Makefile je, ale když dám make, tak se nic nestane a stahovat všechny atheros ovladače z gitu, které mají 2.5 GB, by byl opruz.
-
Ahoj ked vravis o tej rychlosti. Napada ma a kompiloval si to paralerne na vsetkych jadrach?
parameter pre make -j(number of cores+1) a este si pamatam ze som pridaval parameter -O2
A ohladom toho ci ide iba jeden modul. Skus mrknut sem
https://yoursunny.com/t/2018/one-kernel-module/
-
Děkuji moc, to kompilování je aspoň o polovinu rychlejší.
Když nakopíruji ten přejmenovaný .config a Module.symvers do drivers/net/wireless/ath, tak stejně v tom adresáři je Makefile, ve kterém není vše potřebné, protože má jen 542 bajtů, tím pádem žádný make neprojde.
-
Našel jsem, že by to mohlo být tohle
make modules SUBDIRS=drivers/net/wireless/ath
ale zkompilovalo se (velmi rychle) těhle 13 modulů
LD [M] drivers/thermal/intel/x86_pkg_temp_thermal.ko
LD [M] fs/efivarfs/efivarfs.ko
LD [M] net/ipv4/netfilter/iptable_nat.ko
LD [M] net/ipv4/netfilter/nf_log_arp.ko
LD [M] net/ipv4/netfilter/nf_log_ipv4.ko
LD [M] net/ipv6/netfilter/nf_log_ipv6.ko
LD [M] net/netfilter/nf_log_common.ko
LD [M] net/netfilter/xt_LOG.ko
LD [M] net/netfilter/xt_MASQUERADE.ko
LD [M] net/netfilter/xt_addrtype.ko
LD [M] net/netfilter/xt_mark.ko
LD [M] net/netfilter/xt_nat.ko
LD [M] ubuntu/xr-usb-serial/xr_usb_serial_common.ko
což nechápu.
-
Našel jsem, že by to mohlo být tohle
make modules SUBDIRS=drivers/net/wireless/ath
ale zkompilovalo se (velmi rychle) těhle 13 modulů
LD [M] drivers/thermal/intel/x86_pkg_temp_thermal.ko
LD [M] fs/efivarfs/efivarfs.ko
LD [M] net/ipv4/netfilter/iptable_nat.ko
LD [M] net/ipv4/netfilter/nf_log_arp.ko
LD [M] net/ipv4/netfilter/nf_log_ipv4.ko
LD [M] net/ipv6/netfilter/nf_log_ipv6.ko
LD [M] net/netfilter/nf_log_common.ko
LD [M] net/netfilter/xt_LOG.ko
LD [M] net/netfilter/xt_MASQUERADE.ko
LD [M] net/netfilter/xt_addrtype.ko
LD [M] net/netfilter/xt_mark.ko
LD [M] net/netfilter/xt_nat.ko
LD [M] ubuntu/xr-usb-serial/xr_usb_serial_common.ko
což nechápu.
Podle vypisu se v tomto momente nekompiluje, jen linkuje jiz prelozena cast (by se prekladala znova pokud zmenite drasticky .config, nebo verzi prekladace/stroj kde to delate, nebo udelate make clean).
Pokud to chcete pouzit, tak je potreba pak nejak dostat tyto .ko do zive instalace (v /lib/modules/VERZE/cesta...) a jeste pustit na ten adresar prikaz depmod s nejakymi parametry.
Ohledne .config - pokud pouzivate nejake hotove binarni jadro a jen stahnete zdrojaky kernelu stejne verze, tak ten config lze rozbalit z /proc/config.gz
-
Chtěl bych jen zkompilovat atheros ovladače, depmod znám a vím že musím ovladač odebrat 'modprobe -r', nahradit .ko, použít 'depmod -a' a nahodit přes 'modprobe'.
Ono v tom /usr/src/ mi to ani zkompilovat nejde, vyhazuje to chyby. Mám Ubuntu 18.04 HWE, takže si stáhnu zdrojáky (https://launchpad.net/ubuntu/+source/linux-hwe-5.4/) ručně, rozbalím pomocí 'dpkg-source -x *.dsc', použiji patch, vytvořím si .config 'make oldconfig' a chtěl bych jenom zkompilovat zmíněné ovladače.
Někde jsem objevil ještě tohle
make oldconfig
make prepare
make modules_prepare
make modules SUBDIRS=scripts
make modules SUBDIRS=scripts/mod
make modules SUBDIRS=drivers/net/wireless/ath
ale to také nepomáhá a zkompiluje to těch 13 modulů, které jsem již zmínil.
-
Ohledne .config - pokud pouzivate nejake hotove binarni jadro a jen stahnete zdrojaky kernelu stejne verze, tak ten config lze rozbalit z /proc/config.gz
Tohle vyžaduje zapnutý příslušný konfig. Ubuntu (20.04) jej má vypnutý, ale zase ukládá config do /boot/config-xxx.
-
Zkusím to shrnout, je to přibližná směska všeho, co tu zaznělo, takže všem zůčastněným děkuji.
Po stažení zdrojáků (https://launchpad.net/ubuntu/+source/linux-hwe-5.4/) a rozbalení 'dpkg-source -x *.dsc', jdou (pouze) atheros ovladače zkompilovat takhle:
make clean && make mrproper
cp /lib/modules/$(uname -r)/build/Module.symvers ./
cp /boot/config-$(uname -r) ./.config
make oldconfig && make prepare
make scripts
make M=drivers/net/wireless/ath -j 4
-
Tak jsem to zkoušel naostro, ale spuštění toho ovladače kolabuje
modprobe: ERROR: could not insert 'ath': Exec format error
Když vezmu ath.ko ze zkompilovaného .deb, tak má 37kB a ten nynější má 3,3MB. Jsem z toho pako, proč to nejde zkompilovat tou přímou metodou.
-
Tak jsem to zkoušel naostro, ale spuštění toho ovladače kolabuje
modprobe: ERROR: could not insert 'ath': Exec format error
Když vezmu ath.ko ze zkompilovaného .deb, tak má 37kB a ten nynější má 3,3MB. Jsem z toho pako, proč to nejde zkompilovat tou přímou metodou.
co vypise file SOUBOR - na stary a novy zpusob pripravy?
-
Netuším, co je myšleno výpisem file SOUBORu?
V dmesg mám tohle:
ath: version magic '5.4.65 SMP mod_unload ' should be '5.4.0-54-generic SMP mod_unload '
Zdrojáky používám stále stejné, ze kterých po zkompilování celého jádra do .deb vše funguje, ale na to používám tohle:
fakeroot debian/rules clean
fakeroot debian/rules binary-generic
-
Když ten svůj návod okleštím na tohle, tak to projde, ale výsledek je stejný.
make clean && make mrproper
make oldconfig && make prepare
make M=drivers/net/wireless/ath -j 4