koldfront

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:

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)).

cd
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:
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
Lokale kopier:

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

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

Generelt om GNU/Linux: Andet:

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

0.0020 s
webcustodian@koldfront.dk