Автор Тема: Realtek8139d  (Прочетена 3482 пъти)

rover65

  • Напреднали
  • *****
  • Публикации: 111
  • Distribution: Debian/Wheezy Kernel 3.2.0-4-amd64
  • Window Manager: KDE 4.8.4
    • Профил
Realtek8139d
« -: Nov 18, 2006, 16:23 »
Здравейте!
Инсталирах SuSE 10.1, но не мога да инсталирам Лан картата - Realtek 8139D. В дискетата, която върви с картата има драйвери за Линукс, изпълнявам инструкциите за инсталиране -  tar xvzf ........; make  и ми изписва следната грешка:
Makefile:37: ***Linux kernel source not configured - missing config.h. Stop.
След команда lspci :
02:05.0 Ethernrt controller: Unknown device 1904:8139 (rev 01)
Активен

neonic

  • Напреднали
  • *****
  • Публикации: 104
    • Профил
Realtek8139d
« Отговор #1 -: Nov 18, 2006, 16:33 »
Това ознава, че не ти е инсталиран kernel-soruce - a. Инсталирай го, след което не би трябвало да ти дава тези проблеми.

По - добре е да пуснеш 8139too, вместо 8139cp, тъй като първият работи по - стабилно, ако може така да се каже.

П.п. В самото ядро би трябвало да има компилирани тези драйвери, така, че мисля дискетата няма да ти е нужна.
Активен

rover65

  • Напреднали
  • *****
  • Публикации: 111
  • Distribution: Debian/Wheezy Kernel 3.2.0-4-amd64
  • Window Manager: KDE 4.8.4
    • Профил
Realtek8139d
« Отговор #2 -: Nov 18, 2006, 17:22 »
Първоначално като стартирах "маке" ми изписа, че нямам инсталиран кернел-сорс, след което го инсталирах и тогава ми даде тази грешка - "Makefile:37: ***Linux kernel source not configured - missing config.h. Stop." Освен ако освен кернел-сорс трябва да инсталрам още нещо.  '<img'>
Активен

senser

  • Напреднали
  • *****
  • Публикации: 1328
    • Профил
Realtek8139d
« Отговор #3 -: Nov 18, 2006, 17:53 »
Освен да инсталираш сорса на ядрото трябва и да го конфигурираш:
влизаш в директорията, където си го инсталирал (най вероятно /usr/src/linux) и изпълняваш "make menuconfig"
Активен

rover65

  • Напреднали
  • *****
  • Публикации: 111
  • Distribution: Debian/Wheezy Kernel 3.2.0-4-amd64
  • Window Manager: KDE 4.8.4
    • Профил
Realtek8139d
« Отговор #4 -: Nov 18, 2006, 18:30 »
А можете ли по-точно какво трябва да настройвам в кернела - последния път слеd опит за компилиране стигнах до "kernel panic..." '<img'>
P.S. Пропуснах да кажа, че се опитах да инсталирам Debian 3.1 и също не можа да ми опознае картата, но там е обяснимо (според мен де) - кернела е 2.4.27....



Активен

senser

  • Напреднали
  • *****
  • Публикации: 1328
    • Профил
Realtek8139d
« Отговор #5 -: Nov 18, 2006, 18:49 »
ако си решил да инсталираш драйвера от дискетата (което не е много добре според мен при положение че си има такъв в кернела) не е нужно да компилираш кернела а само да го конфигурираш - какво точно би трябвало да пише в инструкциите идващи с драйвера

я виж дали имаш файла /proc/confi.gz за да помогнем евентуално с инсталирането на нов кернел
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Realtek8139d
« Отговор #6 -: Nov 18, 2006, 19:15 »
Това нещо и аз наскоро го установих - с ядра >= 2.6.18

Дължи се на фактът че при тях вече не съществува такъв include файл. (include/linux/config.h)

Какво може да се направи по въпроса? Ако не те е страх да бърникаш в сорса на неща които се изпълняват в kernelspace (промяната е абсолютно нищожна, лесна и безболезнена) правиш следното: отваряш сорс-а на модула, който ще се компилира (предполагам се казва нещо от сорта на rtl8139.c или 8139too.c или нещо от сорта). Заменяш #include <linux/config.h> c  #include <linux/autoconf.h>

Копираш Makefile като Makefile.backup и си правиш собствен такъв от сорта на:

Цитат

obj-m += rtl8139.o
all:
        make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules


Викаш make, ако не се разпищи за грешки копираш rtl8139.ko в /lib/modules/`uname -r`/kernel/drivers/net . Викаш depmod после modprobe rtl8139 и си готов.
Активен

"Knowledge is power" - France is Bacon

rover65

  • Напреднали
  • *****
  • Публикации: 111
  • Distribution: Debian/Wheezy Kernel 3.2.0-4-amd64
  • Window Manager: KDE 4.8.4
    • Профил
Realtek8139d
« Отговор #7 -: Nov 18, 2006, 20:27 »
Цитат (gat3way @ Ноември 18 2006,20:15)
Това нещо и аз наскоро го установих - с ядра >= 2.6.18

Дължи се на фактът че при тях вече не съществува такъв include файл. (include/linux/config.h)

Какво може да се направи по въпроса? Ако не те е страх да бърникаш в сорса на неща които се изпълняват в kernelspace (промяната е абсолютно нищожна, лесна и безболезнена) правиш следното: отваряш сорс-а на модула, който ще се компилира (предполагам се казва нещо от сорта на rtl8139.c или 8139too.c или нещо от сорта). Заменяш #include <linux/config.h> c  #include <linux/autoconf.h>

Копираш Makefile като Makefile.backup и си правиш собствен такъв от сорта на:

Цитат

obj-m += rtl8139.o
all:
        make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules


Викаш make, ако не се разпищи за грешки копираш rtl8139.ko в /lib/modules/`uname -r`/kernel/drivers/net . Викаш depmod после modprobe rtl8139 и си готов.

Файла се казва "sc92031.c" и в него замених #include <linux/config.h> c  #include <linux/autoconf.h>

Но това с Makefile ми дойде множко....Нищо не разбирам от С ! Ако може стъпка по стъпка...  '<img'>

А ето част от config.gz:

# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
CONFIG_MII=m
CONFIG_HAPPYMEAL=m
CONFIG_SUNGEM=m
CONFIG_CASSINI=m
CONFIG_NET_VENDOR_3COM=y
CONFIG_EL1=m
CONFIG_EL2=m
CONFIG_ELPLUS=m
CONFIG_EL16=m
CONFIG_EL3=m
CONFIG_3C515=m
CONFIG_VORTEX=m
CONFIG_TYPHOON=m
CONFIG_LANCE=m
CONFIG_NET_VENDOR_SMC=y
CONFIG_WD80x3=m
CONFIG_ULTRA=m
CONFIG_SMC9194=m
CONFIG_NET_VENDOR_RACAL=y
CONFIG_NI52=m
CONFIG_NI65=m

#
# Tulip family network device support
#
CONFIG_NET_TULIP=y
CONFIG_DE2104X=m
CONFIG_TULIP=m
# CONFIG_TULIP_MWI is not set
# CONFIG_TULIP_MMIO is not set
CONFIG_TULIP_NAPI=y
CONFIG_TULIP_NAPI_HW_MITIGATION=y
CONFIG_DE4X5=m
CONFIG_WINBOND_840=m
CONFIG_DM9102=m
CONFIG_ULI526X=m
CONFIG_PCMCIA_XIRCOM=m
CONFIG_AT1700=m
CONFIG_DEPCA=m
CONFIG_HP100=m
CONFIG_NET_ISA=y
CONFIG_E2100=m
CONFIG_EWRK3=m
CONFIG_EEXPRESS=m
CONFIG_EEXPRESS_PRO=m
CONFIG_HPLAN_PLUS=m
CONFIG_HPLAN=m
CONFIG_LP486E=m
CONFIG_ETH16I=m
CONFIG_NE2000=m
CONFIG_ZNET=m
CONFIG_SEEQ8005=m
CONFIG_NET_PCI=y
CONFIG_PCNET32=m
CONFIG_AMD8111_ETH=m
# CONFIG_AMD8111E_NAPI is not set
CONFIG_ADAPTEC_STARFIRE=m
CONFIG_ADAPTEC_STARFIRE_NAPI=y
CONFIG_AC3200=m
CONFIG_APRICOT=m
CONFIG_B44=m
CONFIG_FORCEDETH=m
CONFIG_CS89x0=m
CONFIG_DGRS=m
CONFIG_EEPRO100=m
CONFIG_E100=m
CONFIG_FEALNX=m
CONFIG_NATSEMI=m
CONFIG_NE2K_PCI=m
CONFIG_8139CP=m
CONFIG_8139TOO=m
# CONFIG_8139TOO_PIO is not set
# CONFIG_8139TOO_TUNE_TWISTER is not set
CONFIG_8139TOO_8129=y
# CONFIG_8139_OLD_RX_RESET is not set
CONFIG_SIS900=m
CONFIG_EPIC100=m
CONFIG_SUNDANCE=m
# CONFIG_SUNDANCE_MMIO is not set
CONFIG_TLAN=m
CONFIG_VIA_RHINE=m
# CONFIG_VIA_RHINE_MMIO is not set
CONFIG_NET_POCKET=y
CONFIG_ATP=m
CONFIG_DE600=m
CONFIG_DE620=m

Ако не върши работа, после ще поставя целия...
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Realtek8139d
« Отговор #8 -: Nov 19, 2006, 01:22 »
А...това 2.4 ядро...

Хм, значи предполагам нямаш пакета kernel-headers за твоята версия на ядрото.
Активен

"Knowledge is power" - France is Bacon

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Realtek8139d
« Отговор #9 -: Nov 19, 2006, 01:27 »
apt-get install kernel-heafers ?
Активен

"Knowledge is power" - France is Bacon

kamos

  • Напреднали
  • *****
  • Публикации: 243
    • Профил
Realtek8139d
« Отговор #10 -: Nov 19, 2006, 07:43 »
Защо не опиташ пъро през YAST да конфигурираш мрежовата карта?
Активен

rover65

  • Напреднали
  • *****
  • Публикации: 111
  • Distribution: Debian/Wheezy Kernel 3.2.0-4-amd64
  • Window Manager: KDE 4.8.4
    • Профил
Realtek8139d
« Отговор #11 -: Nov 19, 2006, 17:10 »
През Яста не става нищо, пробвал съм.

gat3way - Сорса на модула е sc92031.c и в него замених #include <linux/config.h> c  #include <linux/autoconf.h>. Заместих оргиналния файл с променения. И до тук. Има един Makefile, но не разбрах какво трябва да направя с него(нищо не разбирам от програмиране на С).
 
Ето и съдържанието на Makefile:

# Driver files
SRC = sc92031.c
TARGET = sc92031.o

# Kernel Search Path
KSP :=  /lib/modules/$(shell uname -r)/build \
        /usr/src/linux-$(shell uname -r) \
        /usr/src/linux-$(shell uname -r | sed 's/-.*//''<img'> \
        /usr/src/kernel-headers-$(shell uname -r) \
        /usr/src/kernel-source-$(shell uname -r) \
        /usr/src/linux-$(shell uname -r | sed 's/\([0-9]*\.[0-9]*\'<img'>\..*/\1/''<img'> \
        /usr/src/linux

# prune the list down to only values that exist
# and have an include/linux sub-directory
test_dir = $(shell [ -e $(dir)/include/linux ] && echo $(dir))
KSP := $(foreach dir, $(KSP), $(test_dir))

# use this first valid entry in the search path
KSRC := $(firstword $(KSP))

# if Linux kernel source is set up?
ifeq (,$(KSRC))
  $(error Linux kernel source not found)
endif

SRCDIR := $(KSRC)/drivers/net

VERSION_FILE := $(KSRC)/include/linux/version.h
CONFIG_FILE  := $(KSRC)/include/linux/config.h

ifeq (,$(wildcard $(VERSION_FILE)))
  $(error Linux kernel source not configured - missing version.h)
endif

ifeq (,$(wildcard $(CONFIG_FILE)))
  $(error Linux kernel source not configured - missing config.h)
endif

# pick a compiler
ifneq (,$(findstring egcs-2.91.66, $(shell cat /proc/version)))
  CC := kgcc gcc cc
else
  CC := gcc cc
endif

test_cc = $(shell which $(cc) > /dev/null 2>&1 && echo $(cc))
CC := $(foreach cc, $(CC), $(test_cc))
CC := $(firstword $(CC))

# standard flags for module builds
CFLAGS += -Wall -DLINUX -D -DMODULE -DEXPORT_SYMTAB -D -O2 -pipe
CFLAGS += -I$(KSRC)/include -I. -Wstrict-prototypes -fomit-frame-pointer
CFLAGS += $(shell [ -f $(KSRC)/include/linux/modversions.h ] && \
            echo "-DMODVERSIONS -include $(KSRC)/include/linux/modversions.h")

# get the kernel version
KVER := $(shell $(CC) $(CFLAGS) -E -dM $(VERSION_FILE) | grep UTS_RELEASE | \
          awk '{ print $$3 }' | sed 's/\"//g''<img'>
          
ifneq ($(KVER),$(shell uname -r))
  $(warning ***)
  $(warning *** Warning: kernel source version ($(KVER)))
  $(warning *** does not match running kernel  ($(shell uname -r)))
  $(warning *** Continuing with build,)
  $(warning *** resulting driver may not be what you want)
  $(warning ***)
endif

# pick an appropriate install path
ifneq (,$(wildcard /lib/modules/$(KVER)/kernel))
  INSTDIR := /lib/modules/$(KVER)/kernel/drivers/net
else
  INSTDIR := /lib/modules/$(KVER)/net
endif

# look for SMP in config.h
SMP := $(shell $(CC) $(CFLAGS) -E -dM $(CONFIG_FILE) | \
         grep CONFIG_SMP | awk '{ print $$3 }''<img'>
ifneq ($(SMP),1)
  SMP := 0
endif

ifneq ($(SMP),$(shell uname -a | grep SMP > /dev/null 2>&1 && echo 1 || echo 0))
  $(warning ***)
  ifeq ($(SMP),1)
     $(warning *** Warning: kernel source configuration (SMP))
     $(warning *** does not match running kernel (UP))
  else
     $(warning *** Warning: kernel source configuration (UP))
     $(warning *** does not match running kernel (SMP))
  endif
  $(warning *** Continuing with build,)
  $(warning *** resulting driver may not be what you want)
  $(warning ***)
endif          

ifeq ($(SMP), 1)
  CFLAGS += -D
endif          

#enable or disable debug
DEBUG = n
ifeq ($(DEBUG),y)
   CFLAGS += -g -DSILAN_DEBUG -DSILAN_NDEBUG
endif

.SILENT: $(TARGET) clean

$(TARGET):
   echo
   echo "*****************************"
   echo " $(TARGET) built for $(KVER)"
   echo -n "   SMP "   
   if [ "$(SMP)" = "1" ];\
   then echo "Enabled ";\
   else echo "Disabled";\
   fi
   echo "*****************************"
   echo
   $(CC) $(CFLAGS) -c $(SRC)

install: $(SRC) $(TARGET)
   mkdir -p $(MOD_ROOT)$(SRCDIR)
   install -m 644 -o root $(SRC) $(MOD_ROOT)$(SRCDIR)
   mkdir -p $(MOD_ROOT)$(INSTDIR)
   install -m 644 -o root $(TARGET) $(MOD_ROOT)$(INSTDIR)
   

ifeq (,$(MOD_ROOT))
   /sbin/depmod -a || true
else
   /sbin/depmod -b $(MOD_ROOT) -a || true
endif


uninstall:
   if [ -e $(INSTDIR)/$(TARGET) ]; then \
        rm -f $(INSTDIR)/$(TARGET);\
   fi
   
   if [ -e $(SRCDIR)/$(SRC) ]; then \
        rm -f $(SRCDIR)/$(SRC);\
   fi

   /sbin/depmod -a


clean:
   rm -f $(TARGET) *~
Активен

senser

  • Напреднали
  • *****
  • Публикации: 1328
    • Профил
Realtek8139d
« Отговор #12 -: Nov 19, 2006, 18:44 »
изпълни "make" в директорията на Makefile-a
Активен

rover65

  • Напреднали
  • *****
  • Публикации: 111
  • Distribution: Debian/Wheezy Kernel 3.2.0-4-amd64
  • Window Manager: KDE 4.8.4
    • Профил
Realtek8139d
« Отговор #13 -: Nov 19, 2006, 19:09 »
В директорията в която съм разархивирал драйвера за картата (sl_linux.tgz) при изпълнение на "make" ми дава следната грешка:
Makefile:37: ***Linux kernel source not configured - missing config.h. Stop.
Активен

plamen_f

  • Напреднали
  • *****
  • Публикации: 1246
    • Профил
Realtek8139d
« Отговор #14 -: Nov 19, 2006, 22:45 »
Освен ако не се бориш за спорта - мислйа че ще тие по-лесно да смениш това 8139D '<img'>
За моя радост като гледам аз съм 8139С и такива проблеми просто нямам...
Активен