Перейти к содержанию

Zlodei

Members
  • Постов

    7
  • Зарегистрирован

  • Посещение

    Никогда

Достижения Zlodei

  1. Народ, кто писал драйвер для символьного устройства под Linux с ядром 2.6 помогите разобраться. 1. Откуда взять функцию scull_follow используемую методами read и write? Или что она хотябы из себя представляет и что в ней должно происходить? 2. У кого сохранились какие либо наработки? Поделитесь пожайлуста. Заранее благодарен!!!
  2. При компиляции выдается следующее сообщение: make -C /lib/modules/2.6.9-1.667asp/build M=/home/Nikolai modules make[1]: Entering directory `/lib/modules/2.6.9-1.667asp/build' CC [M] /home/Nikolai/mydrv.o /home/Nikolai/mydrv.c:24: error: `mydrv_open' undeclared here (not in a function) /home/Nikolai/mydrv.c:24: error: initializer element is not constant /home/Nikolai/mydrv.c:24: error: (near initialization for `mydrv_fops.open') /home/Nikolai/mydrv.c:25: error: `mydrv_release' undeclared here (not in a function) /home/Nikolai/mydrv.c:25: error: initializer element is not constant /home/Nikolai/mydrv.c:25: error: (near initialization for `mydrv_fops.release') /home/Nikolai/mydrv.c: In function `mydrv_open': /home/Nikolai/mydrv.c:92: warning: implicit declaration of function `mydrv_trim' /home/Nikolai/mydrv.c: At top level: /home/Nikolai/mydrv.c:77: warning: `mydrv_setup_cdev' defined but not used make[2]: *** [/home/Nikolai/mydrv.o] Ошибка 1 make[1]: *** [_module_/home/Nikolai] Ошибка 2 make[1]: Leaving directory `/lib/modules/2.6.9-1.667asp/build' make: *** [default] Ошибка 2 Исходник mydrv.c #include <linux/kernel.h> #include <linux/init.h> #include <linux/module.h> #include <linux/ioport.h> #include <linux/errno.h> #include <linux/fs.h> #include <linux/kdev_t.h> #include <linux/types.h> #include "mydirect.h" #include <linux/cdev.h> #include <linux/slab.h> MODULE_LICENSE("DUAL BSD/GPL"); MODULE_AUTHOR ("Dorofeev Nikolai Viktorovich"); MODULE_SUPPORTED_DEVICE ("ADC card"); struct file_operations mydrv_fops = { .owner = THIS_MODULE, /* .llseek = mydrv_llseek, .read = mydrv_read, .write = mydrv_write, .ioctl = mydrv_ioctl, */ .open = mydrv_open, .release = mydrv_release, }; struct mydrv_dev { //POinter to first quantum set struct mydrv_qset *data; //the current quantum size int quantum; //the current array size int qset; //amount of data stored here unsigned long size; //user by sculluid and mydrvpriv unsigned int access_key; //mutual exclusion semaphore struct semaphore sem; //Char device structure struct cdev cdev; }; struct mydrv_qset {void **data; struct mydrv_qset *next; }; int mydrv_major = MYDRV_MAJOR; int mydrv_minor = MYDRV_MINOR; int dev; int result; int mydrv_nr_devs = 1; static int my_init(void) { if (mydrv_major) {dev=MKDEV(mydrv_major,mydrv_minor); result=register_chrdev_region(dev,mydrv_nr_devs,"mydrv"); } else {result=alloc_chrdev_region(&dev,mydrv_minor,mydrv_nr_de vs, "mydrv"); mydrv_major=MAJOR(dev); } if (result<0) {printk(KERN_WARNING "mydrv: can't get major %d\n",mydrv_major); return result; } printk(KERN_ALERT "mydrv: Insert driver\n"); return 0; }; static void mydrv_setup_cdev(struct mydrv_dev *dev,int index) {int err, devno = MKDEV(mydrv_major,mydrv_minor+index); cdev_init(&dev->cdev,&mydrv_fops); dev->cdev.owner = THIS_MODULE; dev->cdev.ops = &mydrv_fops; err = cdev_add(&dev->cdev,devno,1); //Fail gracefully if need be if (err) printk(KERN_NOTICE "Error %d adding mydrv%d",err, index); }; int mydrv_open(struct inode *inode, struct file *filp) {struct mydrv_dev *dev; //device information dev=container_of(inode->i_cdev,struct mydrv_dev,cdev); filp->private_data = dev; //for other methods //now trim to 0 the length of the device if open was write-only if ((filp->f_flags & O_ACCMODE) == O_WRONLY) {mydrv_trim(dev); //ignore errors } return 0;//success }; int mydrv_release(struct inode *inode, struct file *filp) {return 0; }; int mydrv_trim(struct mydrv_dev *dev) {struct mydrv_qset *next, *dptr; int qset = dev->qset; //*"dev" is not-null int i; int mydrv_quantum = MYDRV_QUANTUM; int mydrv_qset = MYDRV_QSET; for (dptr = dev->data; dptr; dptr = next) //all the list items {if (dptr->data) {for (i = 0; i < qset; i++) kfree(dptr->data); kfree(dptr->data); dptr->data = NULL; } next = dptr->next; kfree(dptr); } dev->size = 0; dev->quantum = mydrv_quantum; dev->qset = mydrv_qset; dev->data = NULL; return 0; }; static void my_cleanup(void) { unregister_chrdev_region(dev,mydrv_nr_devs); //unregister_chrdev(mydrv_major,"mydrv"); //if (result<0) //{printk(KERN_WARNING "mydrv: can't unregister dev\n"); //return result; //} printk(KERN_ALERT "mydrv: Remove driver\n"); }; module_init(my_init); module_exit(my_cleanup);
  3. Возникла проблема написания своего драйвера для символьного устройства. При загрузке драйвера выдается сообщение: insmod: error inserting 'mydrv.ko': -1 Unknown symbol in module Сообщения при компиляции: make -C /lib/modules/2.6.9-1.667asp/build M=/home/Nikolai modules make[1]: Entering directory `/lib/modules/2.6.9-1.667asp/build' Building modules, stage 2. MODPOST *** Warning: "mydrv_minor" [/home/Nikolai/mydrv.ko] undefined! *** Warning: "mydrv_major" [/home/Nikolai/mydrv.ko] undefined! make[1]: Leaving directory `/lib/modules/2.6.9-1.667asp/build' Я чтото не доопределил или напутал с определение переменных..... Подскажите: Исходный текст заголовочного файла mydirect.h: #define mydrv_major 0; #define mydrv_minor; Исходный текст модуля mydrv.c: #include <linux/kernel.h> #include <linux/init.h> #include <linux/module.h> #include <linux/ioport.h> #include <linux/errno.h> #include <linux/fs.h> #include <linux/kdev_t.h> #include <linux/types.h> MODULE_LICENSE("DUAL BSD/GPL"); MODULE_AUTHOR ("Dorofeev Nikolai Viktorovich"); MODULE_SUPPORTED_DEVICE ("ADC card"); extern mydrv_major; extern mydrv_minor; int dev; int result; int mydrv_nr_devs; static int __init my_init(void) { if (mydrv_major) {dev=MKDEV(mydrv_major,mydrv_minor); result=register_chrdev_region(dev,mydrv_nr_devs,"mydrv"); }else {result=alloc_chrdev_region(&dev,mydrv_minor,mydrv_nr_de vs, "mydrv"); mydrv_major=MAJOR(dev); } if (result<0) {printk(KERN_WARNING "mydrv: can't get major %d\n",mydrv_major); return result; } printk(KERN_ALERT "Govno\n"); return 0; }; static int my_detect(unsigned int port, unsigned int range) { int err; if ((err=check_region(port,range))<0) return err; request_region(port,range,"skull"); return 0; } static void __exit my_cleanup(void) { result=unregister_chrdev(dev,mydrv_nr_devs); if (result<0) {printk(KERN_WARNING "mydrv: can't unregister dev\n"); return result; } printk(KERN_ALERT "Da\n"); }; module_init(my_init); module_exit(my_cleanup); Исходный текст makefile: ifneq ($(KERNELRELEASE),) obj-m := mydrv.o else KERNELDIR ?= /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) default: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules endif Исходный текст скрипта загрузки модуля mydrv_load: #!/bin/sh module="mydrv" device="ADC" mode="664" # invoke insmod with all arguments we were passed # and use a pathname, as newer modutils don't look in . by default /sbin/insmod -f ./$module.ko $* || exit 1 # remove stale nodes rm -f /dev/${device}[0] major=$(awk "\\$2==\"$module\" {print \\$1}" /proc/devices) mknod /dev/${device}0 c $major 0 # give appropriate group/permissions, and change the group. # Not all distributions have staff; some have "wheel" instead. group="staff" grep -q '^staff:' /etc/group || group="wheel" chgrp $group /dev/${device}[0] chmod $mode /dev/${device}[0] Заранее, благодарен!!!
  4. [root@localhost Nikolai]# dmesg Linux version 2.6.9-1.667asp (build@pylesos.asp-linux.com.ua) (gcc version 3.3.3 20040412 (ASPLinux 3.3.3-7)) #1 Fri Nov 12 22:29:40 EET 2004 BIOS-provided physical RAM map: BIOS-e820: 0000000000000000 - 000000000009fc00 (usable) BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved) BIOS-e820: 00000000000e6000 - 0000000000100000 (reserved) BIOS-e820: 0000000000100000 - 000000000ef2fc00 (usable) BIOS-e820: 000000000ef2fc00 - 000000000ef30000 (ACPI NVS) BIOS-e820: 000000000ef30000 - 000000000ef40000 (ACPI data) BIOS-e820: 000000000ef40000 - 000000000eff0000 (ACPI NVS) BIOS-e820: 000000000eff0000 - 000000000f000000 (reserved) BIOS-e820: 00000000fecf0000 - 00000000fecf1000 (reserved) BIOS-e820: 00000000fed20000 - 00000000feda0000 (reserved) 0MB HIGHMEM available. 239MB LOWMEM available. zapping low mappings. On node 0 totalpages: 61231 DMA zone: 4096 pages, LIFO batch:1 Normal zone: 57135 pages, LIFO batch:13 HighMem zone: 0 pages, LIFO batch:1 DMI 2.3 present. ACPI: RSDP (v000 ACPIAM ) @ 0x000f61b0 ACPI: RSDT (v001 INTEL D865GBF 0x20040622 MSFT 0x00000097) @ 0x0ef30000 ACPI: FADT (v002 INTEL D865GBF 0x20040622 MSFT 0x00000097) @ 0x0ef30200 ACPI: MADT (v001 INTEL D865GBF 0x20040622 MSFT 0x00000097) @ 0x0ef30300 ACPI: ASF! (v016 LEGEND I865PASF 0x00000001 MSFT 0x0100000d) @ 0x0ef345b0 ACPI: TCPA (v001 INTEL TBLOEMID 0x00000001 MSFT 0x00000097) @ 0x0ef34649 ACPI: WDDT (v001 INTEL OEMWDDT 0x00000001 MSFT 0x0100000d) @ 0x0ef3467d ACPI: DSDT (v001 INTEL D865GBF 0x00000001 MSFT 0x0100000d) @ 0x00000000 ACPI: PM-Timer IO Port: 0x408 Built 1 zonelists Kernel command line: root=/dev/hda3 rhgb mapped 4G/4G trampoline to ffff4000. Initializing CPU#0 CPU 0 irqstacks, hard=023e0000 soft=023df000 PID hash table entries: 1024 (order: 10, 16384 bytes) Detected 2794.001 MHz processor. Using tsc for high-res timesource Console: colour VGA+ 80x25 Dentry cache hash table entries: 32768 (order: 5, 131072 bytes) Inode-cache hash table entries: 16384 (order: 4, 65536 bytes) Memory: 238620k/244924k available (2080k kernel code, 5780k reserved, 675k data, 148k init, 0k highmem) Calibrating delay loop... 5521.40 BogoMIPS (lpj=2760704) Security Scaffold v1.0.0 initialized SELinux: Initializing. SELinux: Starting in permissive mode There is already a security framework initialized, register_security failed. selinux_register_security: Registering secondary module capability Capability LSM initialized as secondary Mount-cache hash table entries: 512 (order: 0, 4096 bytes) CPU: After generic identify, caps: bfebfbff 00000000 00000000 00000000 CPU: After vendor identify, caps: bfebfbff 00000000 00000000 00000000 monitor/mwait feature present. using mwait in idle threads. CPU: Trace cache: 12K uops, L1 D cache: 16K CPU: L2 cache: 256K CPU: After all inits, caps: bfebf3ff 00000000 00000000 00000080 Intel machine check architecture supported. Intel machine check reporting enabled on CPU#0. CPU0: Intel P4/Xeon Extended MCE MSRs (12) available CPU: Intel® Celeron® CPU 2.80GHz stepping 04 Enabling fast FPU save and restore... done. Enabling unmasked SIMD FPU exception support... done. Checking 'hlt' instruction... OK. ACPI: IRQ9 SCI: Level Trigger. checking if image is initramfs... it is Freeing initrd memory: 357k freed NET: Registered protocol family 16 PCI: PCI BIOS revision 2.10 entry at 0xf0031, last bus=1 PCI: Using configuration type 1 mtrr: v2.0 (20020519) ACPI: Subsystem revision 20040816 ACPI: Interpreter enabled ACPI: Using PIC for interrupt routing ACPI: PCI Root Bridge [PCI0] (00:00) PCI: Probing PCI hardware (bus 00) PCI: Ignoring BAR0-3 of IDE controller 0000:00:1f.1 PCI: Transparent bridge - 0000:00:1e.0 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P3._PRT] ACPI: Power Resource [uRP1] (off) ACPI: Power Resource [FDDP] (off) ACPI: Power Resource [LPTP] (off) ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 9 10 *11 12 14 15) ACPI: PCI Interrupt Link [LNKB] (IRQs *3 4 5 6 7 9 10 11 12 14 15) ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 *9 10 11 12 14 15) ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 *5 6 7 9 10 11 12 14 15) ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 9 10 *11 12 14 15) ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 7 9 10 11 12 14 15) *0, disabled. ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 9 10 11 12 14 15) *0, disabled. ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 7 9 *10 11 12 14 15) Linux Plug and Play Support v0.97 © Adam Belay usbcore: registered new driver usbfs usbcore: registered new driver hub PCI: Using ACPI for IRQ routing ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 11 ACPI: PCI interrupt 0000:00:02.0[A] -> GSI 11 (level, low) -> IRQ 11 ACPI: PCI interrupt 0000:00:1d.0[A] -> GSI 11 (level, low) -> IRQ 11 ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 5 ACPI: PCI interrupt 0000:00:1d.1 -> GSI 5 (level, low) -> IRQ 5 ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 9 ACPI: PCI interrupt 0000:00:1d.2[C] -> GSI 9 (level, low) -> IRQ 9 ACPI: PCI interrupt 0000:00:1d.3[A] -> GSI 11 (level, low) -> IRQ 11 ACPI: PCI Interrupt Link [LNKH] enabled at IRQ 10 ACPI: PCI interrupt 0000:00:1d.7[D] -> GSI 10 (level, low) -> IRQ 10 ACPI: PCI interrupt 0000:00:1f.1[A] -> GSI 9 (level, low) -> IRQ 9 ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 3 ACPI: PCI interrupt 0000:00:1f.3 -> GSI 3 (level, low) -> IRQ 3 ACPI: PCI interrupt 0000:00:1f.5 -> GSI 3 (level, low) -> IRQ 3 ACPI: PCI Interrupt Link [LNKE] enabled at IRQ 11 ACPI: PCI interrupt 0000:01:08.0[A] -> GSI 11 (level, low) -> IRQ 11 apm: BIOS version 1.2 Flags 0x03 (Driver version 1.16ac) apm: overridden by ACPI. audit: initializing netlink socket (disabled) audit(1144766070.556:0): initialized Total HugeTLB memory allocated, 0 VFS: Disk quotas dquot_6.5.1 Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) SELinux: Registering netfilter hooks Initializing Cryptographic API ksign: Installing public key data Loading keyring - Added public key 5B36F29B439C91FB - User ID: Red Hat, Inc. (Kernel Module GPG key) pci_hotplug: PCI Hot Plug PCI Core version: 0.5 vesafb: probe of vesafb0 failed with error -6 ACPI: Processor [CPU1] (supports C1, 8 throttling states) isapnp: Scanning for PnP cards... isapnp: No Plug & Play device found Real Time Clock Driver v1.12 Linux agpgart interface v0.100 © Dave Jones agpgart: Detected an Intel 865 Chipset. agpgart: Maximum main memory to use for agp memory: 189M agpgart: Detected 16252K stolen memory. agpgart: AGP aperture is 128M @ 0xf0000000 serio: i8042 AUX port at 0x60,0x64 irq 12 serio: i8042 KBD port at 0x60,0x64 irq 1 Serial: 8250/16550 driver $Revision: 1.90 $ 8 ports, IRQ sharing enabled ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A RAMDISK driver initialized: 16 RAM disks of 16384K size 1024 blocksize divert: not allocating divert_blk for non-ethernet device lo Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2 ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx ICH5: IDE controller at PCI slot 0000:00:1f.1 PCI: Enabling device 0000:00:1f.1 (0005 -> 0007) ACPI: PCI interrupt 0000:00:1f.1[A] -> GSI 9 (level, low) -> IRQ 9 ICH5: chipset revision 2 ICH5: not 100% native mode: will probe irqs later ide0: BM-DMA at 0xffa0-0xffa7, BIOS settings: hda:DMA, hdb:pio ide1: BM-DMA at 0xffa8-0xffaf, BIOS settings: hdc:DMA, hdd:pio Probing IDE interface ide0... hda: WDC WD800BB-00CAA1, ATA DISK drive Using cfq io scheduler ide0 at 0x1f0-0x1f7,0x3f6 on irq 14 Probing IDE interface ide1... hdc: E5SA CDROM, ATAPI CD/DVD-ROM drive ide1 at 0x170-0x177,0x376 on irq 15 Probing IDE interface ide2... ide2: Wait for ready failed before probe ! Probing IDE interface ide3... ide3: Wait for ready failed before probe ! Probing IDE interface ide4... ide4: Wait for ready failed before probe ! Probing IDE interface ide5... ide5: Wait for ready failed before probe ! hda: max request size: 128KiB hda: 156301488 sectors (80026 MB) w/2048KiB Cache, CHS=65535/16/63, UDMA(100) hda: cache flushes not supported hda: hda1 hda2 < hda5 hda6 > hda3 hda4 hdc: ATAPI CD-ROM drive, 128kB Cache, UDMA(33) Uniform CD-ROM driver Revision: 3.20 ide-floppy driver 0.99.newide usbcore: registered new driver hiddev usbcore: registered new driver usbhid drivers/usb/input/hid-core.c: v2.0:USB HID core driver mice: PS/2 mouse device common for all mice input: AT Translated Set 2 keyboard on isa0060/serio0 input: GenPS/2 Genius Wheel Mouse on isa0060/serio1 md: md driver 0.90.0 MAX_MD_DEVS=256, MD_SB_DISKS=27 NET: Registered protocol family 2 IP: routing cache hash table of 512 buckets, 16Kbytes TCP: Hash tables configured (established 16384 bind 4681) Initializing IPsec netlink socket NET: Registered protocol family 1 NET: Registered protocol family 17 ACPI: (supports S0 S1 S4 S5) ACPI wakeup devices: TANA P0P3 AC97 USB0 USB1 USB2 USB3 USB7 UAR1 SLPB Freeing unused kernel memory: 148k freed kjournald starting. Commit interval 5 seconds EXT3-fs: mounted filesystem with ordered data mode. SELinux: Disabled at runtime. SELinux: Unregistering netfilter hooks inserting floppy driver for 2.6.9-1.667asp Floppy drive(s): fd0 is 1.44M FDC 0 is a National Semiconductor PC87306 e100: Intel® PRO/100 Network Driver, 3.0.27-k2-NAPI e100: Copyright© 1999-2004 Intel Corporation ACPI: PCI interrupt 0000:01:08.0[A] -> GSI 11 (level, low) -> IRQ 11 divert: allocating divert_blk for eth0 e100: eth0: e100_probe: addr 0xff8ff000, irq 11, MAC addr 00:11:11:5E:8F:05 ACPI: PCI interrupt 0000:00:1f.5 -> GSI 3 (level, low) -> IRQ 3 PCI: Setting latency timer of device 0000:00:1f.5 to 64 intel8x0_measure_ac97_clock: measured 49433 usecs intel8x0: clocking to 48000 hw_random hardware driver 1.0.0 loaded ACPI: PCI interrupt 0000:00:1d.7[D] -> GSI 10 (level, low) -> IRQ 10 ehci_hcd 0000:00:1d.7: EHCI Host Controller PCI: Setting latency timer of device 0000:00:1d.7 to 64 ehci_hcd 0000:00:1d.7: irq 10, pci mem 1187ec00 ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 1 PCI: cache line size of 128 is not supported by device 0000:00:1d.7 ehci_hcd 0000:00:1d.7: USB 2.0 enabled, EHCI 1.00, driver 2004-May-10 hub 1-0:1.0: USB hub found hub 1-0:1.0: 8 ports detected USB Universal Host Controller Interface driver v2.2 ACPI: PCI interrupt 0000:00:1d.0[A] -> GSI 11 (level, low) -> IRQ 11 uhci_hcd 0000:00:1d.0: UHCI Host Controller PCI: Setting latency timer of device 0000:00:1d.0 to 64 uhci_hcd 0000:00:1d.0: irq 11, io base 0000dc00 uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 2 hub 2-0:1.0: USB hub found hub 2-0:1.0: 2 ports detected ACPI: PCI interrupt 0000:00:1d.1 -> GSI 5 (level, low) -> IRQ 5 uhci_hcd 0000:00:1d.1: UHCI Host Controller PCI: Setting latency timer of device 0000:00:1d.1 to 64 uhci_hcd 0000:00:1d.1: irq 5, io base 0000e000 uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 3 hub 3-0:1.0: USB hub found hub 3-0:1.0: 2 ports detected ACPI: PCI interrupt 0000:00:1d.2[C] -> GSI 9 (level, low) -> IRQ 9 uhci_hcd 0000:00:1d.2: UHCI Host Controller PCI: Setting latency timer of device 0000:00:1d.2 to 64 uhci_hcd 0000:00:1d.2: irq 9, io base 0000e400 uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 4 hub 4-0:1.0: USB hub found hub 4-0:1.0: 2 ports detected ACPI: PCI interrupt 0000:00:1d.3[A] -> GSI 11 (level, low) -> IRQ 11 uhci_hcd 0000:00:1d.3: UHCI Host Controller PCI: Setting latency timer of device 0000:00:1d.3 to 64 uhci_hcd 0000:00:1d.3: irq 11, io base 0000e800 uhci_hcd 0000:00:1d.3: new USB bus registered, assigned bus number 5 hub 5-0:1.0: USB hub found hub 5-0:1.0: 2 ports detected md: Autodetecting RAID arrays. md: autorun ... md: ... autorun DONE. NET: Registered protocol family 10 Disabled Privacy Extensions on device 02373a00(lo) IPv6 over IPv4 tunneling driver divert: not allocating divert_blk for non-ethernet device sit0 ACPI: Power Button (FF) [PWRF] ACPI: Sleep Button (CM) [sLPB] EXT3 FS on hda3, internal journal device-mapper: 4.1.0-ioctl (2003-12-10) initialised: dm@uk.sistina.com Adding 1027648k swap on /dev/hda4. Priority:-1 extents:1 parport0: PC-style at 0x378 [PCSPP,TRISTATE] Linux Kernel Card Services options: [pci] [cardbus] [pm] ip_tables: © 2000-2002 Netfilter core team ip_tables: © 2000-2002 Netfilter core team e100: eth0: e100_watchdog: link up, 10Mbps, half-duplex i2c /dev entries driver parport0: PC-style at 0x378 [PCSPP,TRISTATE] lp0: using parport0 (polling). lp0: console ready eth0: no IPv6 routers present ACPI: PCI interrupt 0000:00:02.0[A] -> GSI 11 (level, low) -> IRQ 11 [drm] Initialized i915 1.1.0 20040405 on minor 0: mtrr: base(0xf0020000) is not aligned on a size(0x180000) boundary ISO 9660 Extensions: Microsoft Joliet Level 3 ISOFS: changing to secondary root mydrv: no version for "struct_module" found: kernel tainted. mydrv: version magic '2.6.9y PENTIUM4 gcc-3.3' should be '2.6.9-1.667asp 686 REGPARM 4KSTACKS gcc-3.3'
  5. После компиляции модуля образовался файл mydrv.ko Но при его инсталяции появляется ошибка: [root@localhost Nikolai]# insmod ./mydrv.ko insmod: error inserting './mydrv.ko': -1 Invalid module format Что это значит?
  6. Скачал исходник ядра kernel-2.6.9-1.667asp.src.rpm. Запускаю его... в результате мне выдает кучу сообщений 1:kernel предупреждение: пользователь build не существует - используется root предупреждение: группа build не существует - используется root предупреждение: пользователь build не существует - используется root Что делать? За ранее благодарен!
  7. Я первый раз с этим сталкиваюсь. Просто возникла необходимость написания драйвера для диплома. Когда я пробую собрать модулю по примерам то че то у меня не получается! Пожайлуста направте на путь истинный. ___________________________ Файл mydrv.c #include <linux/module.h> #include <linux/init.h> MODULE_LICENSE("GPL"); static int __init my_init(void) { printk("<1>Da\n"); return 0; }; static void __exit my_cleanup(void) { printk("<1>Net\n"); return; }; module_init(my_init); module_exit(my_cleanup); Файл makefile obj-m += mydrv.c Команда для компиляции: make -C /lib/modules/`uname -r` SUBDIRS=$PWD makefile После чего не выдается ни каких ошибок и сообщений вообще. И получается какбудто команда выполнена. Хотя объектного файла mydrv.o я не нахожу ни где. makefile и mydrv.c расположены в одной папке /home/Nikolai. Компилирую тоже из этой папки. ОС ASP Linux 2.6.9-1.667 ________________________ Немного сдвинулось. Изменил makefile на: obj-m := mydrv.c KDIR := /lib/modules/$(shell uname -r)/build PWD := $#(shell pwd) default: $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules Командная строка (из директории с makefile): make -f makefile Теперь выдает следующее: [root@localhost Nikolai]# make -f makefile make -C /lib/modules/2.6.9-1.667asp/build SUBDIRS= modules make[1]: Entering directory `/lib/modules/2.6.9-1.667asp/build' CHK include/linux/version.h SPLIT include/linux/autoconf.h -> include/config/* CHK include/asm-i386/asm_offsets.h HOSTCC scripts/genksyms/genksyms.o HOSTCC scripts/genksyms/lex.o HOSTCC scripts/genksyms/parse.o HOSTLD scripts/genksyms/genksyms CC scripts/mod/empty.o MKELF scripts/mod/elfconfig.h HOSTCC scripts/mod/file2alias.o HOSTCC scripts/mod/modpost.o HOSTCC scripts/mod/sumversion.o HOSTLD scripts/mod/modpost make[2]: *** Нет правила для сборки цели `arch/i386/kernel/msr.c', требуемой для `arch/i386/kernel/msr.o'. Останов. make[1]: *** [arch/i386/kernel] Ошибка 2 make[1]: Leaving directory `/lib/modules/2.6.9-1.667asp/build' make: *** [default] Ошибка 2 _____________ В чем проблема? _________________________________ Заранее благодарен!!!
×
×
  • Создать...