text : NetExpres og Linux
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.
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.
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)).
wget http://ftp.sunet.se/pub/os/Linux/kernel.org/linux/kernel/v2.4/linux-2.4.18.tar.gz
Så hopper jeg over i /usr/src, sørger for ikke at overskrive den gamle kernekildekode og pakker kernen ud:
mv -i linux linux.old
gzip -dc ~/linux-2.4.18.tar.gz | tar xf -
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):
Så sætter vi kernen til at oversætte - først skal den lave dependencies:
derefter selve kernen og modulerne:
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):
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
(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:
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
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.
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
Lokale kopier:
ppp-2.4.0b2.tar.gz
pppd.patch.240600
pppoatm-pppd-vs-2.4.0b2+240600.diff.gz
Så pakker vi source ud og patcher:
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.
For at oversætte pppd med ATM skal vi bruge nogle headerfiler fra atm-pakken, så først hentes og installeres det nødvendige:
wget ftp://icaftp.epfl.ch/pub/linux/atm/dist/atm-0.78.tar.gz
tar xvzf atm-0.78.tar.gz
cd atm/lib
Så oversætter vi pppd:
cd ../ppp-2.4.0b2
Og installerer:
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
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"
(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)
12xxxxxxxxxx@netexpres.dk       *      DitKodeord
domain opasia.dk
(Nameservernes adresser kan findes på Opasias kundeservices faktaliste).
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[]: Connect: ppp0 <--> 0.101
pppd[]: local  IP address 195.215.252.78
pppd[]: remote IP address 195.249.9.100
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.
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.
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.
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
ATM pakken til Linux
Generelt om GNU/Linux:
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.
Min "menuconfig" (ikke opdateret i et stykke tid):
[*]   ACPI support (NEW)
[*]     RTC stores time in GMT (NEW)
<M>   PC-style hardware (NEW)
[*] Asynchronous Transfer Mode (ATM) (EXPERIMENTAL) (NEW)
[*]     Intel PIIXn chipsets support
[*]       PIIXn Tuning support
[*]     Enable vendor-specific extensions (for SCSI CDROM) (NEW)
(2) Maximum number of CDROM devices that can be loaded as modules (NEW)
(4)   default tagged command queue depth
(32)   maximum number of queued commands
(20)   synchronous transfers frequency in MHz
<*>   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)
<M> Efficient Networks Speedstream 3010 (NEW)
<*>   Keyboard support (NEW)
<*>   Mouse support (NEW)
(1600)    Horizontal screen resolution (NEW)
(1200)    Vertical screen resolution (NEW)
<*>   Event interface support (NEW)
<M> Parallel printer support (NEW)
PCMCIA character device support
<M> Amiga FFS file system support (EXPERIMENTAL)
<M> Apple Macintosh file system support (EXPERIMENTAL)
<*> Codepage 865 (Norwegian, Danish) (NEW)
<*> NLS ISO 8859-15 (Latin 9; Western European Languages with Euro) (NEW)
[*] Support for frame buffer devices (EXPERIMENTAL) (NEW)
<*>   Matrox acceleration (EXPERIMENTAL) (NEW)
[*]     Millennium I/II support (NEW)
<*>   OSS sound modules
[*]       Verbose initialisation (NEW)
<M>   USB HIDBP Keyboard (basic) support (NEW)
<M>   USB HIDBP Mouse (basic) support (NEW)
<M>   USB Scanner support
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.