Netexpres og Linux
Vejledning til Linux 2.4.18
Bemærk: Denne vejledning handler om at få den gamle udgave af NetExpres (hvor man bruger et ATM-kort) til at køre med GNU/Linux.
Hvis du har en nyere NetExpres-forbindelse (af den slags hvor man får en router med og ikke bruger et ATM-kort) er denne vejledning ikke interessant for dig - så skal du jo bare sætte ethernet-stikket i.
De gamle vejledninger (til 2.4.7, 2.4.0-test4 og 2.3.39) er stadig tilgængelige.
Siden januar 2000 har man kunnet bruge NetExpres ADSL-forbindelser fra TDC under GNU/Linux. Denne side gennemgår hvordan man får forbindelse med Linux 2.4.18.
Det kræver at man er inde i et par GNU/Linux-ting - det kører ikke bare uden videre endnu.
Du skal:
- Kunne konfigurere og oversætte en ny Linux-kerne
- Kunne installere en ny Linux-kerne
- Bruge patch
Sagt på en anden måde: Hvis du ikke kan bluffe dig igennem spørgsmål som: "Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) [Y/n/?]", "Symmetric multi-processing support (CONFIG_SMP) [N/y/?]" og "Kernel support for a.out binaries (CONFIG_BINFMT_AOUT) [M/n/y/?]", så skal du vente med at gå i gang, til du har øvet dig i det.
Bemærk: Kommandoerne i de blå kasser herunder er til inspiration - man skal også tænke lidt selv!
Linux-driveren virker på SMP-maskiner. Jeg har kun én processor selv, så jeg har ikke prøvet det, men andre har.
Kernen
Først hentes kernen på nærmeste mirror (du kan finde mirrors på kernel.org). Jeg bruger wget til at hente filer med (wget findes også til DOS/Windows, men hvilken som helst browser kan bruges (så længe den ikke ændrer på filerne)).
Så hopper jeg over i /usr/src, sørger for ikke at overskrive den gamle kernekildekode og pakker kernen ud:cd /usr/src mv -i linux linux.old gzip -dc ~/linux-2.4.18.tar.gz | tar xf - cd linux
Så kommer vi til det der oftest giver problemer - at vælge de rigtige ting i opsætningen af kerneoversættelsen.
Få en ekspert til at hjælpe dig hvis du har problemer (jeg har hverken overskud eller evner til at hjælpe med dette punkt udover det der står på denne side - mine valg (som afhænger af hardware) kan ses i appendix 1):
make menuconfig
Så sætter vi kernen til at oversætte - først skal den lave dependencies:
make dep
derefter selve kernen og modulerne:
make bzImage make modules
Så installerer vi kernen og modulerne, som root (hvor du lægger de forskellige ting og hvad de hedder afhænger af distribution og/eller ordenssans):
su cp -i arch/i386/boot/bzImage /boot/vmlinuz-2.4.18 ln -sf /boot/vmlinuz-2.4.18 /boot/vmlinuz cp -i System.map /boot/System.map-2.4.18 ln -sf /boot/System.map-2.4.18 /boot/System.map emacs /etc/lilo.conf /sbin/lilo make modules_install
(Jeg bruger "emacs" som teksteditor i eksemplerne - brug den editor du bedst kan lide).
Så er det tid til at prøve den nye kerne (vær sikker på at du har en boot/rescue-disk parat, hvis nu et eller andet skulle gå galt!) - reboot:
reboot
Efter genstarten prøver vi at indsætte lanai-modulet og pppoatm-modulet:
(Nogle melder om problemer med modulerne hvis de ikke oversætter/installerer dem mens de kører den nye kerne, så hvis du får problemer med at indsætte lanai.o, installer modulerne en gang til og se om det hjælper).
modprobe lanai modprobe pppoatm
I /var/log/syslog (filen kan hedde noget andet på dit system, messages f.ex.) skulle kernen/modulet så gerne spytte noget i stil med det følgende ud:
kernel: lanai: In lanai_dev_open() kernel: lanai: PCI says board_id=0, board_rev=1 kernel: lanai: about to reset board kernel: lanai: register says board_id=0, board_rev=1 kernel: lanai(itf 0): *NOT* reading EEPROM kernel: lanai: testing SRAM kernel: lanai: clearing SRAM kernel: lanai: allocated service buffer at 0xC0887000, size 4096(2) kernel: lanai(itf 0): LOCD changed from off to on kernel: lanai(itf 0): LED changed from off to on kernel: lanai(itf 0): rev.0, base=0xc9046000, irq=12 (00-00-00-00-00-00) kernel: lanai(itf 0): LANAIHB, serialno=0(0x0), board_rev=1 kernel: lanai(itf 0): LOCD changed from on to off
Hvis den gør er der hul igennem ATM-kortet - så skal vi bare have bygget en pppd der kender til atm over ppp.
pppd
Det ser ikke ud til at patche'sne passer til den nyeste ppp, så vi tager en ældre udgave hvor de virker (gad vide om der er nogen der får tid til at lave patches til den nyeste pppd en dag?)...
Først hentes kildekode og patches:
wget ftp://ftp.samba.org/pub/ppp/ppp-2.4.1b2.tar.gz wget http://www.math.uwaterloo.ca/~mostrows/pppd.patch.240600 wget http://www.sfgoth.com/~mitch/linux/atm/pppoatm/pppoatm-pppd-vs-2.4.0b2+240600.diff.gz
Så pakker vi source ud og patcher:
cd /usr/src gzip -dc ~/ppp-2.4.0b2.tar.gz | tar xvf - cd ppp-2.4.0b2 patch -p1 < ~/pppd.patch.240600 gzip -dc ~/pppoatm-pppd-vs-2.4.0b2+240600.diff.gz | patch -p1
ppp-2.4.0b2 har en fejl der gør, at den ikke kan startes automatisk fra scripts. En grim midlertidig løsning er at udkommentere to linier i ppp-2.4.0b2/pppd/main.c som vist her:
using_pty = notty || ptycommand != NULL || pty_socket != NULL; /* asjo-hack: if (!using_pty && default_device) no_device_given_hook(); */ /* * Parse the tty options file and the command line.
Så gør det.
For at oversætte pppd med ATM skal vi bruge nogle headerfiler fra atm-pakken, så først hentes og installeres det nødvendige:
cd .. wget ftp://icaftp.epfl.ch/pub/linux/atm/dist/atm-0.78.tar.gz tar xvzf atm-0.78.tar.gz cd atm/lib make su make install exit
Så oversætter vi pppd:
cd ../ppp-2.4.0b2 ./configure make
Og installerer:
su make install cp -i pppd/plugins/pppoatm.so /usr/lib/pppd/plugins/
Så skal ppp og dns konfigureres:
emacs /etc/ppp/peers/netexpres emacs /etc/ppp/pap-secrets emacs /etc/resolv.conf
Eksempler på konfigurationsfiler
/etc/ppp/peers/netexpres:
plugin /usr/lib/pppd/plugins/pppoatm.so 0.101 qos cbr,aal5:tx:pcr=115.6kbps,rx:pcr=512kbps user "12xxxxxxxxxx@netexpres.dk" noauth defaultroute name siemens nobsdcomp nodeflate nopcomp novj novjccomp noipdefault
(115.6kpbs og 512kbps er til en 128 op/512 ned NetExpress-forbindelse. Jeg fået at vide at 115.6 kan skiftes ud med 128 uden problemer, men jeg har ikke selv testet det).
(Bemærk: Tidligere skulle man skrive "@tele.dk" efter sit abonnementsnummer. Det er senere ændret til "@netexpres.dk" i stedet)
/etc/ppp/pap-secrets:
12xxxxxxxxxx@netexpres.dk * DitKodeord
/etc/resolv.conf:
domain opasia.dk nameserver 194.239.134.83 nameserver 193.162.153.164
(Nameservernes adresser kan findes på Opasias kundeservices faktaliste).
Opret forbindelse
Så er det ellers bare om at bede pppd om at åbne forbindelsen:
/usr/sbin/pppd call netexpres
Herefter skulle der gerne komme nogle linier i stil med disse i loggen:
pppd[]: Plugin /usr/lib/pppd/plugins/pppoatm.so loaded. pppd[]: PPPoATM plugin_init pppd[]: PPPoATM setdevname_pppoatm pppd[]: PPPoATM setdevname_pppoatm - SUCCESS pppd[]: pppd 2.4.0b1 started by asjo, uid 1000 kernel: atm_connect (TX: cl 2,bw 0-0,sdu 16386; RX: cl 2,bw 0-0,sdu 1502,AAL 5) kernel: lanai: lanai(itf 0): open 0.101 kernel: lanai: Allocated 8192 byte RX buffer kernel: lanai: Allocated 65536 byte TX buffer kernel: lanai: Binding vci 101 kernel: lanai: pcr_to_cbricg: pcr=301 rounddown=Y icg=3134 pppd[]: Using interface ppp0 pppd[]: Connect: ppp0 <--> 0.101 pppd[]: local IP address 195.215.252.78 pppd[]: remote IP address 195.249.9.100
Voila!
Tips
- Sig ja til "Code maturity level options/Prompt for development and/or incomplete code/drivers" (ellers kan du ikke vælge PPP over ATM og Speedstream 3010-driveren).
- Husk at vælge "Network device support/PPP support for sync tty ports" (ellers får man en "No device found"-fejlmeddelelse).
- pppoatm.so plugin'en til pppd kopieres ikke automatisk nogen steder hen - derfor gøres det i hånden ovenfor.
- Hele stien til pppoatm.so skal angives i options til pppd.
- Hvis du har problemer med at få patch til at køre uden fejlmeddelelser, er det muligt at det skyldes at du har fået gemt patch-filerne i DOS-format (med CRLF som linieskift i stedet for LF). Fjern alle CR'erne fra patch-filerne, eller kør evt. patch med "-l" tilføjet som option.
Fejlfinding
pppd[]: Can't parse QoS
pppd kan ikke forstå den qos-linie du har i /etc/ppp/peers/netexpres. Prøv at ændre 115.6 til 115. Hvis det ikke hjælper, så prøv at udkommentere qos-linien helt.pppd[]: ioctl(ATM_SETBACKEND): No such device
Da jeg fik den fejlmeddelelse, var det fordi jeg havde glemt at sige ja tak til PPP over ATM i "make menuconfig" - eller glemt "modprobe pppoatm" (duh!)pppd siger: "/usr/sbin/pppd: This system lacks kernel support for PPP. [...]"
Check at /dev/ppp eksisterer ("ls -l /dev/ppp"). Hvis ikke, så læs README.linux i /usr/src/ppp-2.4.0b2/ hvordan man laver /dev/ppp.Når jeg kører "modprobe lanai" kan Linux ikke finde en irq til kortet
Har du slået "PNP Aware Operating System" eller lignende til i BIOS? Det kan muligvis hjælpe at slå det fra (dette er naturligvis afhængigt af bundkort, BIOS og maskine, men det er et forsøg værd).Kommandoen lex mangler?!
På mit system er /usr/bin/lex et link til flex. Installér flex på din maskine og prøv igen.Efter kernen er pakket ud fryser maskinen
Dette kan skyldes at du har valgt en anden processor i "make menuconfig" end den du rent faktisk har i maskinen.Husk altid
Skriv ikke email tid udviklerne (Axboe, Blank eller andre) hvis du har problemer - de har travlt nok i forvejen! Prøv først at se om vi ikke kan løse problemerne i fællesskab, enten i dk.edb.system.unix, tele.internet.adsl eller via email til mig.Referencer
- kernel.org mirrors.
- Jens Axboes PPPoATM kerne-patches.
-
Mitchell Blanks pppd-patch og beskrivelse.
- ppp-pakkens hjemsted.
- Netfilter homepage (iptables kildekoden findes her - den skal bruges til NAT/masquerading).
- Netfilter NAT-HOWTO
- SSLUG - med bl.a. Linuxbøgerne.
- Linux Documentation Project mirror'et på sunsite.dk.
- dk.edb.system.unix - dansk nyhedsgruppe om unix (inkl. Linux).
- Netexpres på OpenBSD, Jakob Stoklund Olesen.
Appendix 1
Min "menuconfig" (ikke opdateret i et stykke tid):
Code maturity level options [*] Prompt for development and/or incomplete code/drivers Loadable module support [*] Enable loadable module support [*] Set version information on all module symbols [*] Kernel module loader Processor type and features (Pentium-Pro/Celeron/Pentium-II) Processor family (off) High Memory Support [*] MTRR (Memory Type Range Register) support General setup [*] Networking support [*] PCI support (Any) PCI access mode [*] PCI device name database [*] Support for hot-pluggable devices [*] System V IPC [*] Sysctl support (ELF) Kernel core (/proc/kcore) format <M> Kernel support for a.out binaries <*> Kernel support for ELF binaries <M> Kernel support for MISC binaries [*] Power Management support [*] ACPI support (NEW) <*> Advanced Power Management BIOS support [*] RTC stores time in GMT (NEW) Memory Technology Devices (MTD) Parallel port support <M> Parallel port support <M> PC-style hardware (NEW) Plug and Play configuration Block devices <*> Normal PC floppy disk support <*> Loopback device support Multi-device support (RAID and LVM) Networking options <*> Packet socket [*] Kernel/User netlink socket [*] Network packet filtering (replaces ipchains) [*] Socket Filtering <*> Unix domain sockets [*] TCP/IP networking [*] IP: multicasting [*] IP: TCP syncookie support (disabled per default) IP: Netfilter Configuration <M> Connection tracking (required for masq/NAT) (NEW) <M> FTP protocol support (NEW) <M> IP tables support (required for filtering/masq/NAT) (NEW) <M> limit match support (NEW) <M> MAC address match support (NEW) <M> netfilter MARK match support (NEW) <M> Multiple port match support (NEW) <M> TOS match support (NEW) <M> Connection state match support (NEW) <M> Unclean match support (EXPERIMENTAL) (NEW) <M> Packet filtering (NEW) <M> REJECT target support (NEW) <M> MIRROR target support (EXPERIMENTAL) (NEW) <M> Full NAT (NEW) <M> MASQUERADE target support (NEW) <M> REDIRECT target support (NEW) <M> Packet mangling (NEW) <M> TOS target support (NEW) <M> MARK target support (NEW) <M> LOG target support (NEW) [*] Asynchronous Transfer Mode (ATM) (EXPERIMENTAL) (NEW) <M> Appletalk protocol support QoS and/or fair queueing Telephony Support ATA/IDE/MFM/RLL support <*> ATA/IDE/MFM/RLL support IDE, ATA and ATAPI Block devices <*> Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support <*> Include IDE/ATA-2 DISK support <M> Include IDE/ATAPI CDROM support [*] CMD640 chipset bugfix/support [*] RZ1000 chipset bugfix/support [*] Generic PCI IDE chipset support [*] Sharing PCI IDE interrupts support [*] Generic PCI bus-master DMA support [*] Use PCI DMA by default when available [*] Intel PIIXn chipsets support [*] PIIXn Tuning support SCSI support <*> SCSI support <*> SCSI disk support (40) Maximum number of SCSI disks that can be loaded as modules <M> SCSI tape support <*> SCSI CD-ROM support [*] Enable vendor-specific extensions (for SCSI CDROM) (NEW) (2) Maximum number of CDROM devices that can be loaded as modules (NEW) <M> SCSI generic support [*] Enable extra checks in new queueing code [*] Probe all LUNs on each SCSI device [*] Verbose SCSI error reporting (kernel size +=12K) SCSI low-level drivers <*> SYM53C8XX SCSI support (4) default tagged command queue depth (32) maximum number of queued commands (20) synchronous transfers frequency in MHz PCMCIA SCSI adapter support IEEE 1394 (FireWire) support I2O device support Network device support [*] Network device support <M> Dummy net driver support Ethernet (10 or 100Mbit) [*] Ethernet (10 or 100Mbit) [*] EISA, VLB, PCI and on board controllers <*> EtherExpressPro/100 support <*> PPP (point-to-point protocol) support <*> PPP support for async serial ports (NEW) <*> PPP support for sync tty ports (NEW) <*> PPP Deflate compression (NEW) <*> PPP BSD-Compress compression (NEW) <*> PPP over Ethernet (EXPERIMENTAL) (NEW) <*> PPP over ATM (EXPERIMENTAL) Wan interfaces PCMCIA network device support ATM drivers <M> Efficient Networks Speedstream 3010 (NEW) Amateur Radio support IrDA (infrared) support ISDN subsystem Old CD-ROM drivers (not SCSI, not IDE) Input core support <*> Input core support <*> Keyboard support (NEW) <*> Mouse support (NEW) (1600) Horizontal screen resolution (NEW) (1200) Vertical screen resolution (NEW) <*> Event interface support (NEW) Character devices [*] Virtual terminal [*] Support for console on virtual terminal <*> Standard/generic (8250/16550 and compatible UARTs) serial support [*] Unix98 PTY support (256) Maximum number of Unix98 PTYs in use (0-2048) <M> Parallel printer support (NEW) I2C support Mice Joysticks Watchdog Cards <*> Enhanced Real Time Clock Support Ftape, the floppy tape device driver [*] Direct Rendering Manager (XFree86 DRI support) PCMCIA character device support Multimedia devices File systems <M> Reiserfs support <M> Amiga FFS file system support (EXPERIMENTAL) <M> Apple Macintosh file system support (EXPERIMENTAL) <M> DOS FAT fs support <M> MSDOS fs support <M> VFAT (Windows-95) fs support <*> ISO 9660 CDROM file system support [*] Microsoft Joliet CDROM extensions [*] /proc file system support [*] /dev/pts file system for Unix98 PTYs <*> Second extended fs support Network File Systems Partition Types Native Language Support <*> Codepage 437 (United States, Canada) (NEW) <*> Codepage 850 (Europe) (NEW) <*> Codepage 865 (Norwegian, Danish) (NEW) <*> NLS ISO 8859-1 (Latin 1; Western European Languages) (NEW) <*> NLS ISO 8859-15 (Latin 9; Western European Languages with Euro) (NEW) <*> NLS UTF8 (NEW) Console drivers [*] VGA text console [*] Video mode selection support Frame-buffer support [*] Support for frame buffer devices (EXPERIMENTAL) (NEW) <*> Matrox acceleration (EXPERIMENTAL) (NEW) [*] Millennium I/II support (NEW) Sound <*> Sound card support <*> OSS sound modules [*] Verbose initialisation (NEW) USB support <M> Support for USB [*] USB verbose debug messages <M> UHCI Alternate Driver (JE) support <M> USB Mass Storage support <M> USB Modem (CDC ACM) support <M> USB Printer support <M> USB Human Interface Device (full HID) support (NEW) <M> USB HIDBP Keyboard (basic) support (NEW) <M> USB HIDBP Mouse (basic) support (NEW) <M> USB Scanner support Kernel hacking
Appendix 2
Ændringer
- 27. april 2002: Vejledning opdateret 2.4.18 (lanai-driveren og andet er nu inkluderet i kernen, så den skal slet ikke patches). Der kommer næppe flere opdateringer af denne vejledning.
- 22. september 2001: Tilføjet bemærkning til indledningen om ATM vs. nyere udgaver af NetExpres.
- 28. Juli 2001: Vejledning opdateret fra 2.4.6 til 2.4.7.
- 8. Juli 2001: Vejledning opdateret fra 2.4.5 til 2.4.6. Patch-patch tilføjet.
- 2. Juni 2001: Tilføjet (semi-)lokale kopier af tre af de nødvendige filer.
- 26. Maj 2001: Vejledning opdateret fra 2.4.4 til 2.4.5.
- 28. April 2001: Vejledning opdateret fra 2.4.3 til 2.4.4.
- 30. Marts 2001: Vejledning opdateret fra 2.4.2 til 2.4.3.
- 25. februar 2001: Vejledning opdateret fra 2.4.1 til 2.4.2.