Kompajlirao sam driver za modem. Dobio sam .ko modul, koju uvijek iznova ubacujem u kernel, pravim device pomoću mknod itd, pošto instalaciona skripta većinu distribucija koje koristim ne prepoznaje.
Da li je moguće nekako podesiti modul da se automatski učitava, te da li je potrebno uvijek iznova praviti device?
Ako jeste, kako da skriptu koju sam napravio sistem automatski pokrene pri bootanju? (kopirao sam je u /etc/init.d, ali se ne pokrene)
mora moći hehe, kaži nam koja je distro… pošto nije kod svih distro isti folder/fajl sa pokretačkim skirptama
npr. na ubuntu/debain imaš fajl ‘/etc/modules’, ako se tvoj modul zove ‘nekimodul.ko’, na slacku je ja mislim /etc/rc.modules nejse
npr ti staviš samo ‘nekimodul’, bez.ko
[code]# /etc/modules: kernel modules to load at boot time.
This file contains the names of kernel modules that should be loaded
at boot time, one per line. Lines beginning with “#” are ignored.
fuse
lp
sbp2
nekimodul[/code]
a za pravljenje /dev sa mknod… možeš ubaciti u skriptu ‘/etc/rc.local’ (na ubuntu) komande koje ti trebaju i one se izvrše prilikom bootanja, npr mknod -c 3424 /dev/ovo-ono, ili samo ubaciš putanju do tvoje skripte (npr. /home/guru/skripta) umjesto komandi, pa će se kompletna skripta izvršiti kao jedna komanda, pazi da je executable (chmod 755)
uglavnom javi koja je distro pa će ti neko od usera reći… jer ima malo odstupanja od distro do distro, samo se ti nemoj sekirat hehe
ps:
note: ja bi promijenio naslov topica da bude otprilike “pokretačke skripte na linuxu”
Distribucije su Debian, Ubuntu, Mepis. Hvala na pomoći.
jel proradilo? ako jeste stavi još [RIJEŠENO]
Nije proradilo. Datoteku modula sam stavio u /lib/modules/…/pci, nije se automatski učitao. /etc/rc.local kod mene ne postoji.
Nakon instalacije novih kernel modula, treba pokrenuti 'depmod -aq’
Na većini novijih deistribucija ne treba više ništa raditi jer kernel može sam pronaći i učitati dati modul. Te pomoću udev podsistema kreirati potrebne datoteke uređaja (stavke u /dev direktoriju).
na ubuntu ima 100% /etc/modules i /etc/rc.local (na debianu mislim da nema rc.local, ali zato ima neka druga), obriši
u /etc/modules stavi samo ime modula i on će se bootati
u /etc/rc.local upiši komande koje hoćeš da se izvrše
npr:
mknod /dev/536ep c 240 1
echo “hello world”
#itd
Adis je u pravu, ti samo stavi ime modula u /etc/modules i kopiraj modul.ko u /lib/modules/(kernel-version)/misc folder, depmod -a i /dev će se sam napraviti nakon bootanja, AFAIK
/etc/modules nije standardno, koristi se /etc/modprobe.conf ili /etc/modprobe.d/file …
pod /etc/modprobe.d/file mozes kreirati bilo koji file u njega staviti da se ucita module , za vise informacija izvrsi komandu:
man modprobe.d
u konzoli , tamo pise sve detaljno —
Na Debianu, dodao sam ime modula u /etc/modules, kopirao sam .ko u /lib/modules/…/misc, pokrenuo depmod -a, ali nakon svakog restarta izbriše mi se linija koju sam dodao u /etc/modules (!?)
ok, to je onda dobro, ako ucita module…
sad samo napravi skriptu ovog tipa
#!/bin/sh
mknod c XXX YYY /dev/my_device
i kopiraj je u /etc/init.d/mojmodem
pokreni komandu:
update-rc.d mojmodem defaults
to bi bilo to
PS: ova zadnja komanda je vezana za debian i ona pravi simbolicke linkove od fajla /etc/init.d/mojmodem do run-level-a … npr to mozes i rucno uraditi (za runlevel 3):
cd /etc/rc3.d/
ln -s …/init.d/mojmodem ./S20mojmodem
Nažalost, modul nije učitan. Da li postoji neki razlog zbog koga bi se ime modula izbrisalo iz /etc/modules ?
možda ako je blacklistovan… al ne vjerujem da je baš baksuz taj tvoj…
/etc/modprobe.d/blacklist
hint:
irc.freenode.net → #debian