home Sonstiges Linux OpenBSD Links

Installation von Linux auf einer SGI Indy

Wenn man keinen Monitor für die Indy hat, kann man sie auch über ein serielles Nullmodemkabel administrieren. Wie man so ein Kabel selber baut, steht hier.

Zum Testen habe ich Hyperterminal von Windows 95 verwendet. Dort eine Direktverbindung eingerichtet mit 9600 Bits pro Sekunde, 8 Datenbits, keine Parität, 1 Stopbit und als Protokoll "Hardware".
Selbstverständlich kann man auch minicom oder sonst was benutzen, aber ich habe das Nullmodemkabel nicht so lang gebaut, das es bis zum Linuxrechner reicht ;). Wenn alles angeschlossen ist, die Indy einschalten und nach circa 30 Sekunden sollte sich folgendes zeigen:

System Maintenance Menu

1) Start System 2) Install System Software 3) Run Diagnostics 4) Recover System 5) Enter Command Monitor

Option? 5 Command Monitor. Type "exit" to return to the menu. >> printenv eaddr eaddr=08:00:69:07:db:29 >> setenv netaddr 192.168.44.55 >> off

Die MAC-Adresse und die IP-Adresse notieren, sie werden später noch gebraucht!

Zur Installation bootet man am besten Linux über das Netzwerk. Damit sich die Indy den Kernel ziehen kann, muß es einen TFTP-Server im selben Subnetz geben. Der TFTP-Server ist bei den meisten Linux Distributionen schon installiert, allerdings nicht aktivert. Unter Debian 2.1 muß man die Datei /etc/inetd.conf editieren und dort folgenden Eintrag einfügen (oder den bestehenden ändern):

tftp         dgram   udp     wait   nobody  /usr/sbin/tcpd  /usr/sbin/in.tftpd -l /indy
Der inetd muß noch neu gestartet werden mit:
www:~# killall -HUP inetd
Natürlich muß es auch das Verzeichnis /indy geben. In diesen wird der Kernel entpackt. Einen fertigen Kernel kann man zum Beispiel von ftp://ftp.rfc822.org/pub/local/debian-mips/kernel/ runterladen. Ich habe den Kernel kernel-image-2.4.3-ip22-r4k.tgz verwendet.
www:~# mkdir /indy
www:~# cd /indy
www:/indy# tar xvfz /von/wo/auch/immer/kernel-image-2.4.3-ip22-r4k.tgz
Da das PROM (so wird das BIOS der Indy bezeichnet) allerdings nur Portnummern bis 32767 unterstützt, kann es zu Problemen beim Booten kommen. Dann ist folgender Befehl unter Linux anzuwenden:
www:~# echo 2048 32767 > /proc/sys/net/ipv4/ip_local_port_range
Damit wird dem Kernel mitgeteilt, das er nur Ports von 2048 bis 32767 benutzen darf.

Eventuell kann es auch zu Problemen mit der PATH MTU DISCOVERY kommen. Wenn man nachher beim Booten eine Fehlermeldung ähnlich

Unable to execute bootp():vmlinux-2.4.3.ecoff: invalid argument
erhält, sollte man folgenden Befehl nutzen, um die PATH MTU abzuschalten:
www:~# echo 1 > /proc/sys/net/ipv4/ip_no_pmtu_disc
Als nächstes braucht man auch ein minimalistisches System, damit zumindest die Platte in der Indy partitionieren und formatieren kann. Dieses gibt es fertig unter ftp://ftp.uni-mainz.de/pub/Linux/debian-local/mips/ zum runterladen. Ich habe das base2_2.2.tgz verwendet. Entpackt ist es circa 60 MB groß. Allerdings ist dieses System noch nicht so perfekt, so gibt es zum Beispiel Probleme mit den Passwörtern. Aber zum partionieren reicht es aus.
www:~# mkdir /indynfs2
www:~# cd /indynfs2
www:/indynfs# tar xvfz /von/wo/auch/immer/base2_2.2.tgz
www:/indynfs# cp /von/wo/auch/immer/base2_2.2.tgz .
www:/indynfs# cp /indy/vmlinux-2.4.3.ecoff .
In das Verzeichnis /indynfs wird nun noch ein Verzeichnis erstellt, wo das eigentlich Basesystem abgelegt wird in gepackter Form. Dieses Basesystem kann unter ftp://ftp.foobazco.org/pub/people/wesolows/mips-linux/rootfs/ gezogen werden. Es werden die Dateien base.tar.gz, devel.tar.gz, doc.tar.gz und extras.tar.gz benötigt.
www:/indynfs# mkdir packages
www:/indynfs# cd packages
www:/indynfs/packages# cp /von/wo/auch/immer/base.tar.gz .
www:/indynfs/packages# cp /von/wo/auch/immer/devel.tar.gz .
www:/indynfs/packages# cp /von/wo/auch/immer/doc.tar.gz .
www:/indynfs/packages# cp /von/wo/auch/immer/extras.tar.gz .
Wie man NFS grundsätzlich einrichtet, steht hier. Es muß noch das Verzeichnis /indynfs freigegeben werden. Dazu folgende Zeile in Datei /etc/exports eintragen und den NFS-Dienst neu starten oder mit exportfs -va dazu zwingen, die Datei neu zu lesen:
/indynfs 192.168.44.55(rw)
Die IP 192.168.44.55 soll die Indy später bekommen, dazu muß noch der DHCP-Server eingerichtet werden. Grundsätzliches zur Installation steht hier. So sieht meine /etc/dhcpd.conf aus:
option domain-name "marty44.net";
option domain-name-servers 192.168.44.1;
default-lease-time 43200;
max-lease-time 86400;
log-facility local7;
ddns-update-style none;
subnet 192.168.44.0 netmask 255.255.255.0 {
  range 192.168.44.2 192.168.44.43;
  option routers 192.168.44.1;
  host indy {
    hardware ethernet 08:00:69:07:db:29;
    fixed-address 192.168.44.55;
    option domain-name-servers 192.168.44.1;
    option routers 192.168.44.1;
    option root-path "/indy";
    server-name="192.168.44.1";
  }
}
Die Angaben zur IP, Ethernet-Adresse, etc. muß man natürlich seinen eigenen anpassen ;).

Nun sollte dem ersten Start eigentlich nichts mehr im Wege stehen. Noch mal prüfen, ob TFTP, NFS und DHCP läuft und dann die Indy starten:

System Maintenance Menu

1) Start System 2) Install System Software 3) Run Diagnostics 4) Recover System 5) Enter Command Monitor

Option? 5 Command Monitor. Type "exit" to return to the menu. >> boot -f bootp()vmlinux-2.4.3.ecoff init=/bin/bash console=ttyS0 nfsroot=192.168.44.1:/indynfs Setting $netaddr to 192.168.44.55 (from server 192.168.44.1) Obtaining vmlinux-2.4.3.ecoff from server 192.168.44.1 1503232+0+147092 entry: 0x880025a8 ARCH: SGI-IP22 PROMLIB: ARC firmware Version 1 Revision 10 CPU: MIPS-R4600 FPU ICACHE DCACHE Loading R4000 MMU routines. CPU revision is: 00002010 Primary instruction cache 16kb, linesize 32 bytes. Primary data cache 16kb, linesize 32 bytes. Linux version 2.4.3 (flo@paradigm) (gcc version 3.0 20010303 (prerelease)) #1 Th u Apr 12 22:38:03 CEST 2001 MC: SGI memory controller Revision 3 Determined physical RAM map: memory: 00001000 @ 00000000 (reserved) memory: 00001000 @ 00001000 (reserved) memory: 00193000 @ 08002000 (reserved) memory: 005ab000 @ 08195000 (usable) memory: 000c0000 @ 08740000 (ROM data) memory: 01800000 @ 08800000 (usable) On node 0 totalpages: 40960 zone(0): 40960 pages. zone(1): 0 pages. zone(2): 0 pages. Kernel command line: init=/bin/bash console=ttyS0 nfsroot=192.168.44.1:/indynfs Calibrating system timer... 500000 [100.00 MHz CPU] NG1: Revision 3, 8 bitplanes, REX3 revision B, VC2 revision A, xmap9 revision A, cmap revision C, bt445 revision A NG1: Screensize 1040x768 Console: colour SGI Newport 130x48 zs0: console input Console: ttyS0 (Zilog8530) Calibrating delay loop... 99.73 BogoMIPS Memory: 27792k/30380k available (1311k kernel code, 2588k reserved, 83k data, 72 k init) Dentry-cache hash table entries: 32768 (order: 6, 262144 bytes) Buffer-cache hash table entries: 8192 (order: 3, 32768 bytes) Page-cache hash table entries: 65536 (order: 6, 262144 bytes) Inode-cache hash table entries: 16384 (order: 5, 131072 bytes) Checking for 'wait' instruction... available. POSIX conformance testing by UNIFIX Linux NET4.0 for Linux 2.4 Based upon Swansea University Computer Society NET3.039 Starting kswapd v1.8 initialize_kbd: Keyboard reset failed, no ACK pty: 256 Unix98 ptys configured keyboard: Timeout - AT keyboard not present? keyboard: Timeout - AT keyboard not present? DS1286 Real Time Clock Driver v1.0 streamable misc devices registered (keyb:150, gfx:148) block: queued sectors max/low 17994kB/5998kB, 64 slots per queue sgiseeq.c: David S. Miller (dm@engr.sgi.com) eth0: SGI Seeq8003 08:00:69:07:db:29 SCSI subsystem driver Revision: 1.00 wd33c93-0: chip=WD33c93B/13 no_sync=0xff no_dma=0 debug_flags=0x00 setup_args=,,,,,,,,, Version 1.25 - 09/Jul/1997, Compiled Apr 12 2001 at 22:38:57 scsi0 : SGI WD93 sending SDTR 0103013f0csync_xfer=2c Vendor: SEAGATE Model: ST15150N Rev: 0019 Type: Direct-Access ANSI SCSI revision: 02 Detected scsi disk sda at scsi0, channel 0, id 1, lun 0 SCSI device sda: 8388315 512-byte hdwr sectors (4295 MB) Partition check: sda:<4>Dev 08:00 SGI disklabel: csum bad, label corrupted sda1 SGI Zilog8530 serial driver version 1.00 tty00 at 0xbfbd9830 (irq = 21) is a Zilog8530 tty01 at 0xbfbd9838 (irq = 21) is a Zilog8530 NET4: Linux TCP/IP 1.0 for NET4.0 IP Protocols: ICMP, UDP, TCP IP: routing cache hash table of 1024 buckets, 8Kbytes TCP: Hash tables configured (established 16384 bind 32768) Sending BOOTP requests.... OK IP-Config: Got BOOTP answer from 192.168.44.1, my address is 192.168.44.55 NET4: Unix domain sockets 1.0/SMP for Linux NET4.0. Looking up port of RPC 100003/2 on 192.168.44.1 Looking up port of RPC 100005/2 on 192.168.44.1 VFS: Mounted root (nfs filesystem) readonly. Freeing prom memory: 768kb freed Freeing unused kernel memory: 72k freed init-2.04# dd if=/dev/zero of=/dev/sda count=2048 bs=512 init-2.04# fdisk /dev/sda

mit d erst mal alles löschen (von 1 bis 16)
die folgenden Einstellungen beziehen sich auf eine 4GB-SCSI-Platte
Command (m for help): x

Expert command (m for help): g Building a new SGI disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content will be unrecoverably lost.

Expert command (m for help): r

Command (m for help): n Partition number (1-16): 1 First cylinder (5-1016, default 5): 5 Last cylinder (5-1016, default 1016): 380
Command (m for help): n Partition number (1-16): 2 First cylinder (381-1016, default 381): 381 First cylinder (381-1016, default 381): 400
Command (m for help): n Partition number (1-16): 3 First cylinder (401-1016, default 401): 401 &nsbp;Last cylinder (401-1016, default 1016): 1016
Command (m for help): t Partition number (1-16): 2 Hex code (type L to list codes): 82 Changed system type of partition 2 to 82 (Linux swap)
Command (m for help): p

Disk /dev/sda (SGI disk label): 133 heads, 62 sectors, 1017 cylinders Units = cylinders of 8246 * 512 bytes

----- partitions ----- Device Info Start End Sectors Id System /dev/sda1 boot 5 380 3100496 83 Linux native /dev/sda2 swap 381 400 164920 82 Linux swap /dev/sda3 401 1016 5079536 83 Linux native /dev/sda9 0 4 41230 0 SGI volhdr /dev/sda11 0 1016 8386182 6 SGI volume ----- bootinfo ----- Bootfile: /unix ----- directory entries -----

Command (m for help): w The partition table has been altered!

Calling ioctl() to re-read partition table. SCSI device sda: 8388315 512-byte hdwr sectors (4295 MB) sda: sda1 sda2 sda3 sda4 sda5 SCSI device sda: 8388315 512-byte hdwr sectors (4295 MB) sda: sda1 sda2 sda3 sda4 sda5 Syncing disks. init-2.04# mke2fs /dev/sda1 mke2fs 1.19, 13-Jul-2000 for EXT2 FS 0.5b, 95/08/09 Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 193920 inodes, 387562 blocks 19378 blocks (5.00%) reserved for the super user First data block=0 12 block groups 32768 blocks per group, 32768 fragments per group 16160 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912

Writing inode tables: done Writing superblocks and filesystem accounting information: done init-2.04# mkswap /dev/sda2 Setting up swapspace version 1, size = 84434944 bytes init-2.04# mount /dev/sda1 /mnt/ init-2.04# cd /mnt/ init-2.04# cp /vmlinux-2.4.3.ecoff . init-2.04# dvhtool -d /dev/sda --unix-to-vh vmlinux-2.4.3.ecoff linux init-2.04# tar xvfz /packages/base.tar.gz init-2.04# tar xvfz /packages/devel.tar.gz init-2.04# tar xvfz /packages/doc.tar.gz init-2.04# tar xvfz /packages/extras.tar.gz init-2.04# cd / init-2.04# umount /mnt

Nun die Indy ausschalten und dann testen. Vorher müssen noch einige Einstellungen im PROM getätigt werden:
>> setenv OSLoadPartition /dev/sda1
>> setenv OSLoader linux
>> setenv OSLoadFilename /linux
>> exit
und nun mit 1 das System starten. Nach circa 30 Sekunden sollte folgendes erscheinen:
Welcome to steel-penguin [Simple Linux/MIPS 0.1 (kernel 2.4.3)]

steel-penguin login: root Password: Enter
Man hat nun ein minimales Linuxsystem zur Verfügung, es fehlt noch einiges, aber es hat einen Compiler und wäre somit ein guter Ansatz für Linux from Scratch (siehe http://www.linuxfromscratch.org).

Diese Anleitung basiert in weiten Teilen auf http://www.stafwag.f2s.com/indy/?lang=eng


zurück zur Linuxübersicht
Letzte Aktualisierung dieser Seite: 10. Juni 2005