How can I find out if Linux/MIPS can run on my system?
First make sure that your system really is powered by a Mips CPU.
Then check if your system is ARC compliant. ARC means "Advanced
Risc Computing" and is a standard for computer systems able to
run Windows NT.
In short, if you have Windows NT already running, your computer
probably conforms to the ARC standard. Chances to run Linux/MIPS on such
a system are quite good and you should continue with the section
How do I make a boot disk for my ARC compliant Mips box .
If you cannot run Windows NT on your computer, please refer to the section
What's about old Mips boxes with R3000 CPUs .
How do I make a boot disk for my ARC compliant Mips box?
An important step in checking Linux/MIPS on your computer is to
run
MILO,
the Linux/MIPS bootstrap loader. MILO is the link between the ARC BIOS
(a.k.a. firmware) and the Linux/MIPS kernel.
The ARC BIOS is usually able to read files from FAT (MSDOS) and ISO9660
(CD-ROM) file systems, so the easiest way to check MILO is to run it
from a MSDOS floppy.
Download the latest
MILO
distribution and unpack it using gzip and tar. Then get a DOS formatted
floppy and copy the files "milo" and "vmlinux" onto it. You may also
issue the command 'make disk'
to copy the files.
Users without access to a DOS box can also download an image of an
empty 1.44M floppy available as
floppy.gz.
Just do 'gzip -cd floppy.gz | dd of=/dev/fd0'
(or whatever
the floppy device is called on your box) to create a usable boot disk.
Please note that some systems, such as the Deskstation Tyne, refuse to
read from floppies formatted with Unix mtools.
Once you've created the floppy disk and put milo and vmlinux onto it, you
need to boot from this disk. Bring your NT box down to the BIOS prompt,
and have your BIOS run that program (or setup your bios to boot it).
Usually, you need to select the 'Run a program'
item of
the BIOS menu, and then enter `a:milo'
to start the loader.
You can also put Milo etc. onto the FAT partition that is used to boot NT,
if you desire.
After startup, MILO will try to figure out on what kind of system it
is running on. Besides many other information, such as the CPU type,
cache sizes etc., MILO will print a string like
"ARC system identified as: [Acer PICA-61]"
or something similar.
In case your system is not known to MILO, "not identified"
will be printed. In this case, please refer to the section
How to add a new system to MILO.
In case your system was sucessfully identified we're already working on a port for your system -- congratulations! Please contact us at linux-mips@fnet.fr to get information about the state of this specific port of Linux/MIPS.
A final note for Mips Magnum 4000 owners: To run MILO on this machine you need to reconfigure it to little endian mode. In case you are a proud owner of a Magnum 4000, please read the Mips Magnum 4000 HOWTO for further information.
How to add a new system to MILO
Adding a new system to MILO isn't that hard -- at a first glance.
We need all the information MILO printed to make MILO identifying
your system. If you don't want to do this yourself, contact us at
linux-mips@fnet.fr.
We will include your system in future MILO releases. However, we
cannot promise that Linux/MIPS or even MILO will run just after
adding these information. If you are really interested in having
Linux/MIPS running on your computer, you should consider to join
our development team.
In case you decided to start working on MILO and the Linux/MIPS
kernel, you need to install a cross compilation environment. Please
refer to the section
How to install the cross-development tools,
then continue reading here.
Take a look at the file `identify.c'
. Add your system
by filling in a C structure containing following elements:
bi.machtype
: The ID of your system. You need to
add this ID in the kernel include file bootinfo.h
. bi.cputype
: Normally filled in automatically,
except when MILO had no knowledge of your specific processor. bi.memlower
: The start address of the main memory.
Normally KSEG0
which equals to 0x8000000. bi.memupper
: The end address of the main memory.
A common way to determine the main memory size hasn't been found yet,
so you need to hardcode this value. bi.scache_size
: The size of a L2 cache, if present.
A common way to determine the L2 cache size hasn't been found yet,
so you need to hardcode this value. bi.dma_cache_size
: The size of the DMA buffer, if
present. We have found DMA buffers only in Deskstation Tyne systems
yet, so you probably can hardcode this to 0x0. This will disable
DMA buffering. bi.vram_base
: The start address of your video frame
buffer. This entry is very important since the Linux/MIPS console
driver needs to know where your video adaptor lives. A common way
to find the frame buffer location hasn't been found yet, so you need
to ask the manufacturer for details. You may also try to find it
by guessing. A usual place is the address range between 0xe0000000
and 0xe1000000.bi.tlb_entries
: The number of TLB entries of the
memory management unit of your CPU. You can safely set this to 48,
which is valid for all R4x00 processor.
After filling in the numbers, you need to recompile MILO. If everything
went fine, MILO should at least know about your system now. Continue
the boot process and try to start the dummy kernel included in the
MILO package. If your guesses regarding the video card were correct,
the dummy kernel should print numerous "hello world"'s and then stop.
If not, well, then you should really get in touch with us.
Send a message to
linux-mips@fnet.fr and
don't hesitate to ask for help!
Download the appropriate Compiler and Linker binaries plus
the latest kernel sources and the include- and library
patches. If you want to build your crossdevelopment tools yourself or
have a system for which no binaries are available, there is a more
detailed document about how to build crossdevelopment
tools.
Now unpack the compiler and linker archives. The default location
is /usr/mips-linux, so issue the commands
You may also install the packages in other locations, but
then you'll need to link these directories to the standard
locations.
Next, find a location for the Linux/MIPS kernel, include and library
sources. A directory somewhere in your home directory might be a good
choice. Unpack the include tree within the newly created directory
by issuing the commands
Finally you need to patch the library. Issue the commands
It might also be necessary to apply kernel diffs to upgrade
your source tree to the latest version.
Now you're ready to start working on Linux/MIPS.
First try to recompile MILO. If everything went fine, continue
with compiling the kernel. In case you have problems, please
carefully check each step as described above, and if everything
fails, contact us at
linux-mips@fnet.fr.
If you own a Mips RC3xxx, a DEC 3100, 5000 or similar, or even
a Sony or SGI machine, please let us know. We know of many other
owners of old R2000/3000 boxes interested in Linux/MIPS, and we
would appreciate any help.
How to install the cross-development tools
Precompiled Cross-Dev tools are currently available only for
Linux/i386, SunOs 4.1.3 and Solaris2.3. Binaries are available from
following ftp sites:
cd /
tar zxvf binutils-2.5.2.tar.gz
tar zxvf gcc-2.6.3.tar.gz
cd linux-dir
(or any newer Linux/MIPS kernel)
tar zxvf linux-1.2.0.tar.gz
tar zxvf libc-4.6.27.tar.gz
tar zxvf inc-4.6.27.tar.gz
mv usr/include include-4.6.27
rmdir usr
cd linux-dir
zcat libc-linux-4.6.27.diffs.gz | patch -p
zcat include-4.6.27.diffs.gz | patch -p
What's about old Mips boxes with R3000 CPUs?
Currently, there is no support for older R3000-based Mips systems.
However, we plan to support as many as possible of them. One of
the first things to do would be writing bootstrap loaders, as we
already have done for ARC systems.
Another major problem is that some of these older systems run in
native little endian mode (DEC), while others are fixed to big endian
mode (Mips, SGI). Some of them can be change the user-code endianess
on the fly, while other's can't.
We therefor must distuingish between three cases:
Last changed 3-Feb-1996 Ralf Bächle