Toon posts:

Mandrake 10.1 en kernel drivers HOWTO ?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ben al enige tijd bezig om de op mijn Lanparty pro875B bord aanwezige Highpoint controller onder een Linux distro aan de praat te krijgen. Heb eerst Suse92 geprobeerd, maar ben toch weer teruggekomen op mijn eerste Linux liefde Mandrake. Welnu, heb een aantal keren met Highpoint gemaild en geprobeerd de raid controller aan de praat te krijgen. Hieronder een verslag van dat proces (realiseer je dat ik eerst Suse geinstalleerd heb en nu met Mandrake 10.1 draai) :


V1) On Mon, 6 Dec 2004 21:02:16 +0000 (GMT)


I want to install Suse linux 9.2 on my computer with a lanparty pro875B motherboard. Kernel 2.6 which comes with suse 9.2 does not support the hpt372. Are you going to bring out drivers for the raid controller which can be used with the linux kernel 2.6 ?
Thx in advance

A1) You can use the OpenSource driver to build the driver for the HPT372 under SuSE 9.2 system. You may refer the attached file to do it.

V2 ) On Sat, 11 Dec 2004 09:08:36 +0000 (GMT)
When I try to compile I get these errors :

#suse92:~/hpt/hpt3 # make KERNELDIR=/usr/src/linux
cat: /usr/src/linux/include/linux/version.h: No such file or directory
gcc -DDRIVER_VERSION=\"2.0\" -DLIST_H_INCLUDED
-DMODVERSIONS -DMODULE -DLINUX -D_LINUX_
-D__KERNEL__=1 -DCONFIG_PCI -DNO_CROSS_CTRL=1
-DSUPPORT_ARRAY -DSUPPORT_OLD_ARRAY -Wall -O2
-Wstrict-prototypes -fomit-frame-pointer -I.
-I/usr/src/linux/include -I/usr/src/linux/drivers/scsi
-c hpt.c -o hpt.o
In file included from hpt.c:2:
/usr/include/linux/version.h:2:2: #error
"======================================================="
/usr/include/linux/version.h:3:2: #error "You should
not include /usr/include/{linux,asm}/ header"
/usr/include/linux/version.h:4:2: #error "files
directly for the compilation ofkernel modules."
/usr/include/linux/version.h:5:2: #error ""
/usr/include/linux/version.h:6:2: #error "glibc now
uses kernel header files from a well-defined"
/usr/include/linux/version.h:7:2: #error "working
kernel version (as recommended by Linus Torvalds)"
/usr/include/linux/version.h:8:2: #error "These files
are glibc internal and may not match the"
/usr/include/linux/version.h:9:2: #error "currently
running kernel. They shouldonly be"
/usr/include/linux/version.h:10:2: #error "included
via other system header files - user space"
/usr/include/linux/version.h:11:2: #error "programs
should not directly include
> or"
/usr/include/linux/version.h:12:2: #error "
as well."
/usr/include/linux/version.h:13:2: #error ""
/usr/include/linux/version.h:14:2: #error "To build
kernel modules please do the following:"
/usr/include/linux/version.h:15:2: #error ""
/usr/include/linux/version.h:16:2: #error " o Have the
kernel sources installed"
/usr/include/linux/version.h:17:2: #error ""
/usr/include/linux/version.h:18:2: #error " o Make
sure that the symbolic link"
/usr/include/linux/version.h:19:2: #error "
/lib/modules/`uname -r`/build exists and points to"
/usr/include/linux/version.h:20:2: #error " the
matching kernel source directory"
/usr/include/linux/version.h:21:2: #error ""
/usr/include/linux/version.h:22:2: #error " o
Configure kernel sources:"
/usr/include/linux/version.h:23:2: #error " - cd
/usr/src/linux"
/usr/include/linux/version.h:24:2: #error " - make
mrproper"
/usr/include/linux/version.h:25:2: #error " - make
cloneconfig"
/usr/include/linux/version.h:26:2: #error " - make
dep"
/usr/include/linux/version.h:27:2: #error ""
/usr/include/linux/version.h:28:2: #error " o When
compiling, make sure to use the following"
/usr/include/linux/version.h:29:2: #error " compiler
option to use the correct include files:"
/usr/include/linux/version.h:30:2: #error ""
/usr/include/linux/version.h:31:2: #error "
-I/lib/modules/`uname -r`/build/include"
/usr/include/linux/version.h:32:2: #error ""
/usr/include/linux/version.h:33:2: #error " instead
of"
/usr/include/linux/version.h:34:2: #error ""
/usr/include/linux/version.h:35:2: #error "
-I/usr/include/linux"
/usr/include/linux/version.h:36:2: #error ""
/usr/include/linux/version.h:37:2: #error " Please
adjust the Makefile accordingly."
/usr/include/linux/version.h:38:2: #error
"======================================================="
hpt.c:4:41: missing binary operator before token "("
hpt.c:7:41: missing binary operator before token "("
In file included from /usr/include/asm/smp.h:18,
from
/usr/src/linux/include/linux/smp.h:17,
from
/usr/src/linux/include/linux/sched.h:23,
from
/usr/src/linux/include/linux/module.h:10,
from hpt.c:11:
/usr/include/asm/mpspec.h:6:25: mach_mpspec.h: No such
file or directory
In file included from /usr/include/asm/smp.h:18,
from
/usr/src/linux/include/linux/smp.h:17,
from
/usr/src/linux/include/linux/sched.h:23,
from
/usr/src/linux/include/linux/module.h:10,
from hpt.c:11:
/usr/include/asm/mpspec.h:8: error: `MAX_MP_BUSSES'
undeclared here (not in a function)
/usr/include/asm/mpspec.h:9: error: `MAX_MP_BUSSES'
undeclared here (not in a function)
/usr/include/asm/mpspec.h:10: error: `MAX_MP_BUSSES'
undeclared here (not in a function)
/usr/include/asm/mpspec.h:12: error: `MAX_MP_BUSSES'
undeclared here (not in a function)
/usr/include/asm/mpspec.h:20: error: `MAX_MP_BUSSES'
undeclared here (not in a function)
/usr/include/asm/mpspec.h:20: error: conflicting types
for `mp_bus_id_to_type'
/usr/include/asm/mpspec.h:8: error: previous
declaration of `mp_bus_id_to_type'
/usr/include/asm/mpspec.h:22: error: `MAX_IRQ_SOURCES'
undeclared here (not in a function)
/usr/include/asm/mpspec.h:24: error: `MAX_MP_BUSSES'
undeclared here (not in a function)
/usr/include/asm/mpspec.h:24: error: conflicting types
for `mp_bus_id_to_pci_bus'
/usr/include/asm/mpspec.h:12: error: previous
declaration of `mp_bus_id_to_pci_bus'
In file included from /usr/include/asm/smp.h:20,
from
/usr/src/linux/include/linux/smp.h:17,
from
/usr/src/linux/include/linux/sched.h:23,
from
/usr/src/linux/include/linux/module.h:10,
from hpt.c:11:
/usr/include/asm/io_apic.h:160: error:
`MAX_IRQ_SOURCES' undeclared here (not in a function)
/usr/include/asm/io_apic.h:160: error: conflicting
types for `mp_irqs'
/usr/include/asm/mpspec.h:22: error: previous
declaration of `mp_irqs'
In file included from
/usr/src/linux/include/linux/smp.h:17,
from
/usr/src/linux/include/linux/sched.h:23,
from
/usr/src/linux/include/linux/module.h:10,
from hpt.c:11:
/usr/include/asm/smp.h:71:26: mach_apicdef.h: No such
file or directory
hpt.c:13:43: linux/modversions.h: No such file or
directory
hpt.c:19:40: missing binary operator before token "("
In file included from
/usr/src/linux/include/linux/irq.h:20,
from /usr/include/asm/hardirq.h:6,
from
/usr/src/linux/include/linux/hardirq.h:8,
from
/usr/src/linux/include/linux/interrupt.h:11,
from hpt.c:29:
/usr/include/asm/irq.h:16:25: irq_vectors.h: No such
file or directory
In file included from /usr/include/asm/hardirq.h:6,
from
/usr/src/linux/include/linux/hardirq.h:8,
from
/usr/src/linux/include/linux/interrupt.h:11,
from hpt.c:29:
/usr/src/linux/include/linux/irq.h:70: error:
`NR_IRQS' undeclared here (not ina function)
In file included from
/usr/src/linux/include/linux/irq.h:72,
from /usr/include/asm/hardirq.h:6,
from
/usr/src/linux/include/linux/hardirq.h:8,
from
/usr/src/linux/include/linux/interrupt.h:11,
from hpt.c:29:
/usr/include/asm/hw_irq.h:28: error: `NR_IRQ_VECTORS'
undeclared here (not in afunction)
/usr/include/asm/hw_irq.h:32: error: `NR_IRQS'
undeclared here (not in a function)
/usr/include/asm/hw_irq.h: In function
`x86_do_profile':
/usr/include/asm/hw_irq.h:87: error: `prof_buffer'
undeclared (first use in this function)
/usr/include/asm/hw_irq.h:87: error: (Each undeclared
identifier is reported only once
/usr/include/asm/hw_irq.h:87: error: for each function
it appears in.)
/usr/include/asm/hw_irq.h:100: error: `prof_shift'
undeclared (first use in this function)
/usr/include/asm/hw_irq.h:106: error: `prof_len'
undeclared (first use in this function)
In file included from
/usr/src/linux/include/linux/interrupt.h:11,
from hpt.c:29:
/usr/src/linux/include/linux/hardirq.h:12:1: warning:
"PREEMPT_MASK" redefined
In file included from
/usr/src/linux/include/linux/hardirq.h:8,
from
/usr/src/linux/include/linux/interrupt.h:11,
from hpt.c:29:
/usr/include/asm/hardirq.h:42:1: warning: this is the
location of the previous definition
In file included from
/usr/src/linux/include/linux/interrupt.h:11,
from hpt.c:29:
/usr/src/linux/include/linux/hardirq.h:13:1: warning:
"HARDIRQ_MASK" redefined
In file included from
/usr/src/linux/include/linux/hardirq.h:8,
from
/usr/src/linux/include/linux/interrupt.h:11,
from hpt.c:29:
/usr/include/asm/hardirq.h:43:1: warning: this is the
location of the previous definition
In file included from
/usr/src/linux/include/linux/interrupt.h:11,
from hpt.c:29:
/usr/src/linux/include/linux/hardirq.h:14:1: warning:
"SOFTIRQ_MASK" redefined
In file included from
/usr/src/linux/include/linux/hardirq.h:8,
from
/usr/src/linux/include/linux/interrupt.h:11,
from hpt.c:29:
/usr/include/asm/hardirq.h:44:1: warning: this is the
location of the previous definition
hpt.c:37:40: missing binary operator before token "("
hpt.c:46:40: missing binary operator before token "("
In file included from hpt.c:49:
/usr/src/linux/drivers/scsi/hosts.h:1:2: warning:
#warning "This file is obsolete, please use
instead"
hpt.c:55:41: missing binary operator before token "("
hpt.c: In function `sd_inuse':
hpt.c:105: error: structure has no member named
`host_queue'
hpt.c:107: error: structure has no member named
`access_count'
hpt.c:109: error: structure has no member named `next'
hpt.c:116:41: missing binary operator before token "("
hpt.c:118:43: missing binary operator before token "("
In file included from entry.c:7,
from hpt.c:129:
oslinux.h:117:41: missing binary operator before token
"("
oslinux.h:131:40: missing binary operator before token
"("
In file included from hpt.c:129:
entry.c:19:49: missing binary operator before token
"("
entry.c:27:41: missing binary operator before token
"("
entry.c:38:80: missing binary operator before token
"("
entry.c:42:41: missing binary operator before token
"("
entry.c:91:41: missing binary operator before token
"("
entry.c:94:40: missing binary operator before token
"("
entry.c:101:41: missing binary operator before token
"("
entry.c:124:40: missing binary operator before token
"("
In file included from hpt.c:129:
entry.c: In function `OsSendCommand':
entry.c:264: error: structure has no member named
`channel'
entry.c:264: error: structure has no member named
`target'
entry.c: In function `hpt3xx_QueueCommand':
entry.c:372: error: structure has no member named
`channel'
entry.c:372: error: structure has no member named
`target'
entry.c:372: error: structure has no member named
`lun'
entry.c:375: error: structure has no member named
`channel'
entry.c:375: error: structure has no member named
`target'
entry.c:451:40: missing binary operator before token
"("
entry.c:458:40: missing binary operator before token
"("
entry.c: In function `hpt3xx_Detect':
entry.c:479: warning: implicit declaration of function
`scsi_init_malloc'
entry.c:479: warning: assignment makes pointer from
integer without a cast
entry.c:519:40: missing binary operator before token
"("
entry.c:528:41: missing binary operator before token
"("
entry.c:550:40: missing binary operator before token
"("
entry.c:559:41: missing binary operator before token
"("
entry.c:582:40: missing binary operator before token
"("
entry.c:591:41: missing binary operator before token
"("
entry.c:649:41: missing binary operator before token
"("
entry.c:653:40: missing binary operator before token
"("
entry.c: In function `hpt3xx_Reset':
entry.c:689: error: structure has no member named
`target'
entry.c:689: error: structure has no member named
`lun'
entry.c:689: error: structure has no member named
`flags'
entry.c: In function `hpt3xx_Abort':
entry.c:737: error: structure has no member named
`target'
entry.c:737: error: structure has no member named
`lun'
entry.c:737: error: structure has no member named
`flags'
entry.c: In function `hpt3xx_cleanup':
entry.c:762: warning: implicit declaration of function
`unregister_reboot_notifier'
entry.c:762: error: `hpt_notifier' undeclared (first
use in this function)
entry.c:779: warning: implicit declaration of function
`scsi_init_free'
entry.c:804:41: missing binary operator before token
"("
entry.c:834:41: missing binary operator before token
"("
entry.c:854:41: missing binary operator before token
"("
entry.c:880:41: missing binary operator before token
"("
entry.c:882:43: missing binary operator before token
"("
entry.c: In function `fOsBuildSgl':
entry.c:887: error: structure has no member named
`address'
entry.c:1050:41: missing binary operator before token
"("
entry.c:1052:43: missing binary operator before token
"("
entry.c: In function `hpt_worker_thread':
entry.c:1059: error: structure has no member named
`session'
entry.c:1060: error: structure has no member named
`pgrp'
entry.c:1200:40: missing binary operator before token
"("
entry.c:1207:42: missing binary operator before token
"("
entry.c: At top level:
entry.c:1217: error: `hpt3xx_ProcInfo26' undeclared
here (not in a function)
entry.c:1217: error: initializer element is not
constant
entry.c:1217: error: (near initialization for
`driver_template.proc_info')
entry.c:1224:40: missing binary operator before token
"("
entry.c:1335:41: missing binary operator before token
"("
entry.c:1357:41: missing binary operator before token
"("
In file included from hpt.c:130:
hptproc.c:10:40: missing binary operator before token
"("
hptproc.c:452:40: missing binary operator before token
"("
In file included from hpt.c:130:
hptproc.c: In function `get_sd_name':
hptproc.c:470: warning: implicit declaration of
function `get_bdev'
hptproc.c:470: warning: initialization makes pointer
from integer without a cast
hptproc.c:474: error: parse error before "__BDEV_RAW"
hptproc.c:579:41: missing binary operator before token
"("
make: *** [hpt.o] Error 1
# suse92:~/hpt/hpt3 #

Please help....

A2) From the information, you didn't have version.h file. You can do "make" after you "make oldconfig". After you get the version.h file, you can stop it and do "make KERNELDIR=/usr/src/linux".

V3) On Mon, 13 Dec 2004 12:22:40 +0000 (GMT)
I did do a make cloneconfig just like it says in the document.

A3) As you didn't get the version.h file, you need do "make" after you "make cloneconfig".

V4) On Mon, 13 Dec 2004 23:21:54 +0000 (GMT)
I have succeded in building the kernel drivers (see below) and what do I haven to do furthermore to get my hpt372 working ??

#suse92:~/downloads/hpt/hpt3
# make KERNELDIR=/usr/src/linux
cp -f raid.o raid.obj
make -C /usr/src/linux SUBDIRS=`pwd` modules
make[1]: Entering directory
`/usr/src/linux-2.6.8-24.5'

WARNING: Symbol version dump
/usr/src/linux-2.6.8-24.5/Module.symvers is missing, modules will have CONFIG_MODVERSIONS disabled.

CC [M] /root/downloads/hpt/hpt3/hpt.o
In file included from /root/downloads/hpt/hpt3/hpt.c:49:
drivers/scsi/hosts.h:1:2: warning: #warning "This file is obsolete, please use <scsi/scsi_host.h> instead"
LD [M] /root/downloads/hpt/hpt3/hpt37x2.o
Building modules, stage 2.
MODPOST
CC /root/downloads/hpt/hpt3/hpt37x2.mod.o
LD [M] /root/downloads/hpt/hpt3/hpt37x2.ko
make[1]: Leaving directory `/usr/src/linux-2.6.8-24.5'

A4) Your kernel source directory may be /usr/src/linux-2.6.8-24.5.
If yes, you need do "make KERNELDIR=/usr/src/linux-2.6.8-24.5".
If you didn't have version.h file, you must do "make" after you "make
oldconfig".

V5) On Tue, 14 Dec 2004 15:04:26 +0000 (GMT)
I said it maked the modules, but how do I load the during system startup...
In other words what are the next steps to have my suse recognize the hpt
controller ? When I do a make menuconfig I do not see the newly build kernel
drivers from highpoint.

A5) If you do "make oldconfig", you needn't do "make menuconfig".
After you get hpt37x2.ko, you can do "modprobe sd_mod, scsi_mod", then
"insmod hpt37x2.ko".

V6) On Wed, 15 Dec 2004 17:30:13 +0000 (GMT)

When I do a "modprobe sd_mod, scsci_mod" this is the result :

#suse92:/usr/src/linux/drivers/scsi # modprobe sd_mod, scsi_mod
FATAL: Module sd_mod, not found.

And when I do a "modprobe scsi_mod" this is the result :
#suse92:/usr/src/linux/drivers/scsi # modprobe scsi_mod
#suse92:/usr/src/linux/drivers/scsi #

And then "insmod hpt37x2.ko" then it only works when I
do it from the directory where I downloaded the open
source divers (in which I did a make KERNELDIR="/usr/src/linux"

How do I save it so that it remembers the drivers when I reboot ?

A6) You can do the following steps:
  • #modprobe sd_mod
  • #modprobe scsi_mod
  • #modprobe hpt37x2.ko
  • Configure System to Automatically Load the Driver
  • Most likely, you will not want to type in "insmod hpt37x2.ko" each time
  • you boot up the system. You can add the driver to the initial RAM disk image to load the driver
  • at boot time:
  • 1) Edit file /etc/sysconfig/kernel and add hpt372 module to the line
  • INITRD_MODULES=... , e.g:
  • INITRD_MODULES="reiserfs hpt372"?2) Run mkinitrd to update the initrd file:
  • # mkinitrd
  • 3) If you are using lilo boot loader, run lilo again:
  • # lilo
Wat ik wil is de driver builden, laden als module en ervoor zorgen dat de module elke keer gestart wordt wanneer ik mijn Linux boot.
Er zitten (nog) geen raid configuraties aan de controller. Wel gewoon master en slave hd's.

  • Bananenplant
  • Registratie: Januari 2001
  • Laatst online: 20:38
Uh... ik kan slecht kijken, maar waar wordt die module in /lib/modules neergezet? Misschien handig gewoon eens te lezen wat alles nou echt betekent wat die beste mensen je aan uitleg geven :) .

❤️‍🩹 Bezuinigen op armen en zieken 🤕 ? Welnee, Zucmantaks, nu 💰 !


  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 16:46
het lijkt erop alsof je module sd_mod niet meegecompiled is in je kernel (of iig niet als module), hij kan hem nl. niet laden. Dus controleer dat eens. En als die werkt, kun je daarna die module hpt37x2 laden gok ik. Als dat dan werkt, kun je die drie modules toevoegen aan /etc/modules.autoload/kernel26 geloof ik dat het heet (oid, verschilt ook per distro)

Verwijderd

Topicstarter
ucchan schreef op dinsdag 01 februari 2005 @ 01:58:
Uh... ik kan slecht kijken, maar waar wordt die module in /lib/modules neergezet? Misschien handig gewoon eens te lezen wat alles nou echt betekent wat die beste mensen je aan uitleg geven :) .
Als ik de driver gecompileerd heb zie ik het hpt37x2.ko bestand wel staan in de directory waar ik de files heb geuntarred en waar ik de drivers heb gecompileerd, maar niet in /lib/modules. En ik heb gelezen wat die mensen schreven, maar kwam er niet uit. Daarom heb ik hier een vraag gesteld.

Verwijderd

Topicstarter
Paultje3181 schreef op dinsdag 01 februari 2005 @ 10:22:
het lijkt erop alsof je module sd_mod niet meegecompiled is in je kernel (of iig niet als module), hij kan hem nl. niet laden. Dus controleer dat eens. En als die werkt, kun je daarna die module hpt37x2 laden gok ik. Als dat dan werkt, kun je die drie modules toevoegen aan /etc/modules.autoload/kernel26 geloof ik dat het heet (oid, verschilt ook per distro)
Je gaat een beetje te snel voor mij... "En als dat werkt ..." hoe krijg ik dat voor elkaar ?
Als ik in Mandrake "make oldconfig doe" en die in de nieuwe kernelversie laat krijg ik allemaal foutmeldingen bij het booten.

Waarheen moet de hpt37x2.ko gekopieerd zijn als alles succesvol is gecompileerd ?

  • sebas
  • Registratie: April 2000
  • Laatst online: 16-12-2025
Ergens in /lib/modules/`uname -r` (gebruik find!). Als die er nergens is, kopieer je hem in een zinvolle directory, draai je depmod -ae en probeer je de driver te laden door middel van modprobe.

code:
1
2
3
4
5
6
7
8
9
10
11
# #modprobe hpt37x2.ko
# Configure System to Automatically Load the Driver
# Most likely, you will not want to type in "insmod hpt37x2.ko" each time
# you boot up the system. You can add the driver to the initial RAM disk image to load the driver
# at boot time:
# 1) Edit file /etc/sysconfig/kernel and add hpt372 module to the line
# INITRD_MODULES=... , e.g:
# INITRD_MODULES="reiserfs hpt372"?2) Run mkinitrd to update the initrd file:
# # mkinitrd
# 3) If you are using lilo boot loader, run lilo again:
# # lilo

Wat snap je hiervan niet?

Everyone complains of his memory, no one of his judgement.


  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 16:46
#suse92:/usr/src/linux/drivers/scsi # modprobe sd_mod, scsi_mod
FATAL: Module sd_mod, not found.
Hieruit blijkt dat sd_mod er niet is. Of iig niet als module.
Wat je dus doet: cd /usr/src/linux en dan make menuconfig
Dan ga je op zoek naar sg_mod. En dan kijk je of die als module gecompiled is, of dat ie vast in de kernel zit (maar daar lijkt het niet op)
Enniehoe, je compileerd hem dus mee als module ( make && make install)
en dan hercompilleer je die nieuwe module en dan laadt je ze. (modprobe sd_mod, scsi_mod, hpt37x2)
En dan zou het moeten werken. En als het dan werkt, dan zet je in /etc/modules.autoload/kernel26 de woorden sg_mod, scsi_mod en hpt37x2. En dan starten ze volgende keer op.

Verwijderd

Topicstarter
Is iemand bereid voor mij een stappenplan te maken hoe ik van de gedownloade bestanden tot een gecompileerde kernelnmodule kan komen ? Het liefst iemand die ook MAndrake 10.1 gebruikt.

Verwijderd

Ik denk dat je niet helemaal begrijpt wat je aan het doen bent. Je hebt alle informatie al om het werkend te krijgen. :) Je hebt meer aan een vertaling:

De hardware heeft drivers nodig. In linux heten drivers modules. Meestal komen die met de distro (in dit geval Mandrake) maar soms, als het ongewone hardware is of nieuwe, wordt het nog niet ondersteund. Dan moet jezelf modules (drivers dus) compileren. Dat heb je dus gedaan.

Daarna moet de driver geinstalleerd worden. In linux heet dat de modules geladen moeten worden. Met het commando modprobe (laad alles in 1x( of insmod (laad alleen de module die je aangeeft) installeer je de driver (module). Als de module geladen is kan je de hardware gebruiken. Het is niet nodig om te rebooten.

Het laden van de modules kan ook automatisch. Dit kan op verschillende manieren maar in dit geval omdat het om een HS moet je het advies van de helpdesk opvolgen. Gewoon overtypen dus.

Lees nu de hele draad nog eens door en ga aan de slag.

Succes.

  • smokalot
  • Registratie: Juni 2001
  • Laatst online: 15-01 22:00

smokalot

titel onder

kleine toevoeging bij bovenstaand verhaal: je kunt drivers als module compileren, maar ze kunnen ook statisch in de kernel gecompileerd worden. een module is gewoon een stukje code dat in en uit een draaiende kernel gehaald kan worden. dat gaat natuurlijk niet lukken met een statische kernel. nadeel van modules kan zijn dat het in een bestand staat, en dat bestand staat op een harde schijf met filesystem, dat kan lastige problemen opleveren, aangezien je drivers moet hebben voor controller en filesystem voor je dat bestand kunt lezen, maarja, wat nu als je de driver uit dat bestand juist nodig hebt daarvoor? is wel omheen te werken hoor, met wat trucs.

maar goed, dit was op zich niet nodig voor jou nu, maar het is wel nuttig om wat meer te leren over hoe een kernel eigenlijk werkt.

It sounds like it could be either bad hardware or software


Verwijderd

Topicstarter
Ok ik ga het straks nog eens proberen, de resultaten post ik hier. Bij modprobe gaf hij voorheen wel FATAL : module hpt37x2.ko NOT FOUND of zoiets.

Verwijderd

Topicstarter
Ok ik ga opnieuw beginnen :
Eerst wat info over systeem :

Linux localhost 2.6.8.1-12mdksmp #1 SMP Fri Oct 1 11:24:45 CEST 2004 i686 Intel(R) Pentium(R) 4 CPU 3.00GHz unknown GNU/Linux

[root@localhost src]# ls -al
total 2
drwxr-xr-x 4 root root 136 Jan 8 20:42 ./
drwxr-xr-x 13 root root 336 Jan 8 21:27 ../
lrwxrwxrwx 1 root root 19 Jan 8 20:42 linux -> linux-2.6.8.1-12mdk/
drwxr-xr-x 22 root root 1496 Feb 3 00:23 linux-2.6.8.1-12mdk/
drwxr-xr-x 3 root root 72 Jan 8 21:22 RPM/


1) Ik controleer eerst of alle modules geladen kunnen worden :

[root@localhost src]# modprobe sd_mod
[root@localhost src]# modprobe scsi_mod
[root@localhost src]# insmod hpt37x2.ko
insmod: can't read 'hpt37x2.ko': No such file or directory

[root@localhost downloads]# cd /home/laagladen/hpt3xx-opensource-v2.0
[root@localhost hpt3xx-opensource-v2.0]# insmod hpt37x2.ko
insmod: error inserting 'hpt37x2.ko': -1 Invalid module format

Dit werkt dus al niet (WAT NU?) :

A5) If you do "make oldconfig", you needn't do "make menuconfig".
After you get hpt37x2.ko, you can do "modprobe sd_mod, scsi_mod", then
"insmod hpt37x2.ko".

Moet ik nu de hpt37x2.ko file ergens naartoe kopieren ?

2) Volgens highpoint moet ik nu de htp drivers met modprobe laden :

A6) You can do the following steps:


* #modprobe sd_mod
* #modprobe scsi_mod
* #modprobe hpt37x2.ko
* Configure System to Automatically Load the Driver
* Most likely, you will not want to type in "insmod hpt37x2.ko" each time
* you boot up the system. You can add the driver to the initial RAM disk image to load the driver
* at boot time:
* 1) Edit file /etc/sysconfig/kernel and add hpt372 module to the line
* INITRD_MODULES=... , e.g:
* INITRD_MODULES="reiserfs hpt372"?2) Run mkinitrd to update the initrd file:
* # mkinitrd
* 3) If you are using lilo boot loader, run lilo again:
* # lilo

[root@localhost hpt3xx-opensource-v2.0]# modprobe hpt37x2.ko
FATAL: Module hpt37x2.ko not found.

En wat nu ? Als ik een ls opvraag van /lib/modules/2.6.8.1-12mdksmp/kernel/drivers/ide/pci/ krijg ik het volgende te zien :
[root@localhost hpt3xx-opensource-v2.0]# ls -al /lib/modules/2.6.8.1-12mdksmp/kernel/drivers/ide/pci/
total 36
drwxr-xr-x 2 root root 304 Feb 3 00:57 ./
drwxr-xr-x 4 root root 232 Jan 8 21:23 ../
-rw-r--r-- 1 root root 5044 Oct 1 11:26 aec62xx.ko.gz
-rw-r--r-- 1 root root 2813 Oct 1 11:26 cs5520.ko.gz
-rw-r--r-- 1 root root 3310 Oct 1 11:26 cs5530.ko.gz
-rw-r--r-- 1 root root 3612 Oct 1 11:26 it8212.ko.gz
-rw-r--r-- 1 root root 1290 Oct 1 11:26 rz1000.ko.gz
-rw-r--r-- 1 root root 3997 Oct 1 11:26 slc90e66.ko.gz
-rw-r--r-- 1 root root 2511 Oct 1 11:26 triflex.ko.gz
-rw-r--r-- 1 root root 2264 Oct 1 11:26 trm290.ko.gz

[ Voor 3% gewijzigd door Verwijderd op 03-02-2005 01:04 ]


Verwijderd

insmod: can't read 'hpt37x2.ko': No such file or directory
[root@localhost hpt3xx-opensource-v2.0]# insmod hpt37x2.ko
insmod: error inserting 'hpt37x2.ko': -1 Invalid module format

Dit werkt dus al niet (WAT NU?) :
Als het niet werkt moet je niet verder gaan maar eerst het probleem oplossen. Het bakken van die module is niet goed gegaan. Probeer het eens opnieuw (volg de aanwijzingen in deze draad over het compileren). Als je een foutmelding krijgt niet verder gaan maar eerst oplossen. :D

Verwijderd

Topicstarter
Heb nu gedaan :

#cd /usr/src/linux
#make oldconfig
# cd naar de dir waar de opensource drivers zijn gedownload


en dan gecompileerd :

[root@localhost hpt3xx-opensource-v2.0]# make KERNELDIR="/usr/src/linux"
cp -f raid.o raid.obj
make -C /usr/src/linux SUBDIRS=`pwd` modules
make[1]: Entering directory `/usr/src/linux-2.6.8.1-12mdk'
LD [M] /home/bobby/hpt3xx-opensource-v2.0/hpt37x2.o
Building modules, stage 2.
MODPOST
LD [M] /home/bobby/hpt3xx-opensource-v2.0/hpt37x2.ko
make[1]: Leaving directory `/usr/src/linux-2.6.8.1-12mdk'


Aanwijzingen van de helpdesk van highpoint :


A6) You can do the following steps:

* #modprobe sd_mod
* #modprobe scsi_mod
* #modprobe hpt37x2.ko

En dan nu als IK het doe :
[root@localhost hpt3xx-opensource-v2.0]# modprobe sd_mod
[root@localhost hpt3xx-opensource-v2.0]# modprobe scsi_mod
[root@localhost hpt3xx-opensource-v2.0]# modprobe hpt37x2.ko
FATAL: Module hpt37x2.ko not found.


Vervolgens de aanwijzing van sebas :

[root@localhost hpt3xx-opensource-v2.0]# uname -r
2.6.8.1-12mdksmp

Als ik een locate doe met de term "hpt" krijg ik het volgende resultaat :

[root@localhost 2.6.8.1-12mdksmp]# locate hpt
/lib/modules/2.4.27-0.pre2.1mdk/kernel/drivers/ide/raid/hptraid.o.gz
/usr/src/linux-2.6.8.1-12mdk/drivers/ide/pci/.hpt366.ko.cmd
/usr/src/linux-2.6.8.1-12mdk/drivers/ide/pci/.hpt366.o.cmd
/usr/src/linux-2.6.8.1-12mdk/drivers/ide/pci/.hpt366.mod.o.cmd
/usr/src/linux-2.6.8.1-12mdk/drivers/ide/pci/.hpt34x.o.cmd
/usr/src/linux-2.6.8.1-12mdk/drivers/ide/pci/hpt366.c
/usr/src/linux-2.6.8.1-12mdk/drivers/ide/pci/hpt366.h
/usr/src/linux-2.6.8.1-12mdk/drivers/ide/pci/hpt366.o
/usr/src/linux-2.6.8.1-12mdk/drivers/ide/pci/hpt34x.c
/usr/src/linux-2.6.8.1-12mdk/drivers/ide/pci/hpt34x.h
/usr/src/linux-2.6.8.1-12mdk/drivers/ide/pci/hpt34x.o
/usr/src/linux-2.6.8.1-12mdk/drivers/ide/pci/hpt366.ko
/usr/src/linux-2.6.8.1-12mdk/drivers/ide/pci/hpt366.mod.c
/usr/src/linux-2.6.8.1-12mdk/drivers/ide/pci/hpt366.mod.o
/usr/src/linux-2.6.8.1-12mdk/.tmp_versions/hpt366.mod
/usr/src/linux-2.6.8.1-12mdk/include/config/blk/dev/hpt366
/usr/src/linux-2.6.8.1-12mdk/include/config/blk/dev/hpt366/module.h
/usr/src/linux-2.6.8.1-12mdk/include/config/blk/dev/hpt34x.h
/usr/src/linux-2.6.8.1-12mdk/include/config/highpte.h
/usr/src/linux-2.6.8.1-12mdk/include/config/hpt34x
/usr/src/linux-2.6.8.1-12mdk/include/config/hpt34x/autodma.h


Moet ik nu handmatig de .ko.cmd de .o.cmd en de .c .h .mod.c .mod.o en de .ko van de hpt37x2 naar /usr/src/linux-2.6.8.1-12mdk kopieren, of kan het ook anders. Als de files daar staan zijn ze dan met modprobe te activeren of moeten ze eerst met "make menuconfig" in de kernel als module aangezet worden ?
Wat zijn de volgende te nemen stappen ?

Verwijderd

Na 'make' geef je 'make install'. Daarna doe je modprobe etcetc.

Verwijderd

Verwijderd schreef op donderdag 03 februari 2005 @ 23:10:
Na 'make' geef je 'make install'. Daarna doe je modprobe etcetc.
'make' en 'make install' in de downoald directory van de opensource drivers of in de /usr/src/linux. 'make' doet ie wel, maar 'make install' doet ie niet in de opensource drivers dir. Bij 'make install' zegt ie 'no target....'.

  • smokalot
  • Registratie: Juni 2001
  • Laatst online: 15-01 22:00

smokalot

titel onder

even zodat je iets beter snapt wat modprobe en insmod doen: insmod neemt een bestand (een .ko bestand), en "voert" deze aan de kernel, en doet ook niets meer dan dat. Als de kernel dat bestand niet lust (omdat het niet past zeg maar, zoals bij een puzzel) krijg je de foutmelding die jij dus te zien kreeg.

modprobe is een stukje intelligentie bovenop insmod. modprobe weet van sommige drivers dat ze dependen op een andere. hoe die dependencies zijn zie je in /lib/modules/"$kernelversie"/modules.dep, en daar zie je ook hoe de driver heet die in het .ko bestand zit. als je "modprobe $driver" uitvoert kijkt ie welk bestand er hoort bij $driver, en zegt ie tegen insmod dat ie dat bestand moet proberen te laden. als er dependencies zijn probeert ie die eerst te laden, op dezelfde manier.

It sounds like it could be either bad hardware or software


Verwijderd

Alleen hpt37x2.ko moet je kopieeren maar niet naar /usr/src maar naar /lib/modules/2.6.8.1-10mdkcustom/kernel/drivers/scsi/

Daarna als root: depmod -ae (om de kernel te laten weten dat er een nieuwe module beschikbaar is). En dan weer modprobe.

Succes.

Verwijderd

Verwijderd schreef op vrijdag 04 februari 2005 @ 09:02:
Alleen hpt37x2.ko moet je kopieeren maar niet naar /usr/src maar naar /lib/modules/2.6.8.1-10mdkcustom/kernel/drivers/scsi/

Daarna als root: depmod -ae (om de kernel te laten weten dat er een nieuwe module beschikbaar is). En dan weer modprobe.

Succes.
Ejj augustinus het heeft geholpen wat jij zei.
Heb de kernel opnieuw gecompileerd, geboot met de nieuwe kernel, daarna de drivers van highpoint opnieuw gecompileerd en hpt37x2.ko gecopieerd naar /usr/lib/2.6.8.1-10mdkcustum/kernel/drivers/ide/pci. Daarna modprobe hpt37x2 (zonder de .ko extensie) en ik kon de schijven benaderen die aan de hpt raid hangen. Nu wil ik graag dat modprober automatisch geladen wordt als ik mandrake start. Welk bestand moet ik daaarvoor aanpassen ?
Het bestand waarover highpoint het heeft (/etc/sysconfig/kernel) bestaat in Mandrake niet .

  • smokalot
  • Registratie: Juni 2001
  • Laatst online: 15-01 22:00

smokalot

titel onder

ik start konqueror op, tik in "boot automatically load module mandrake" (google's I'm feeling lucky) en druk op enter, scroll twee pagina's naar beneden, en zie meteen het antwoord. wellicht dat jij een wat minder functionele browser hebt, en eerst nog "www.google.com" in moet tikken, maar lijkt me dat je dit toch zelf wel had moeten kunnen vinden.

It sounds like it could be either bad hardware or software


Verwijderd

smokalot schreef op zaterdag 05 februari 2005 @ 20:45:
ik start konqueror op, tik in "boot automatically load module mandrake" (google's I'm feeling lucky) en druk op enter, scroll twee pagina's naar beneden, en zie meteen het antwoord. wellicht dat jij een wat minder functionele browser hebt, en eerst nog "www.google.com" in moet tikken, maar lijkt me dat je dit toch zelf wel had moeten kunnen vinden.
Heb gevonden wat je bedoelde en het bestandje /etc/modprobe.preload geedit en een regel toegevoegd met sd_mod en met hpt37x2. Maar als ik de computer opnieuw opstart moet ik weer 'modprobe hpt37x2' intypen als root anders vindt Mandrake de hpt372 niet. Iemand een idee hoe ik dit automatisch kan laten gebeuren ?
Pagina: 1