Hardware Questions

Problems With Linux Finding All of a Machine's RAM

Question:

My machine has 128 MB of RAM. However, Linux only sees 64 MB of it. What is going on, and how can I fix it?

Answer:

On most systems, the reason is that the BIOS has a limit of how much memory it will tell the operating system is present in the machine, even though the motherboard can have more. Common limits seen with this problem are 16M, 32M, 64M, and 128M. To get around this, we need to explicitly specify the amount of memory to the kernel at boot time via the mem=<actual_memory_goes_here> flag.

In the following example, we have a 128M machine but only 64M are being seen by Linux. At the LILO: prompt, type:

LILO: linux mem=128M

After the machine boots, we use the free command to see if the larger amount of memory was recognized by the kernel. If so, we can add an append= line to the /etc/lilo.conf file and rerun LILO to make it happen permanently. The example from above would to edit their lilo.conf file to look like the following:

boot=/dev/sda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50

image=/boot/vmlinuz-2.2.12-20
        label=linux
        root=/dev/sda1
        initrd=/boot/initrd-2.2.12-20.img
        read-only
        append="mem=128M"

Do not forget to run /sbin/lilo -v after editing the file.

___________________________________________________________

Problems with Machine Speed and Large Amounts of RAM

Question:

I have over 64 MB in my Pentium or greater machine. However, it seems sluggish when doing anything. If I tell Linux to use only 64 MB with the mem=64M option in the lilo.conf file and rerun lilo -v, it seems to speed up the machine. What is going on and can I do anything about it?

Answer:

The most likely answer to this problem has to do with the motherboard of the computer. Many motherboards limit the L2 cache to be able to access up to 64 MB. The ones that we know of to be affected by this problem are the NX (I believe this was only for Pentium 60-90), FX, VX, and TX boards from Intel. These are limited to a maximum of 512K of L2 cache. There may be other boards that have this problem, but these are our current candidates.

The following is from a user who researched the problem for us:

... typically have a maximum of 512k of L2 cache (either on the motherboard, or
in a COAST module - looks a little like a DIMM, but a bit shorter) and can only
cache up to 64 meg.  If Linux utilizes memory the same way as Microsoft OSes do,
it goes from the top of the memory stack and works its way down.  This can
result in a pretty significant slowdown unless you really need the additional
memory.  The exception to this was the HX chipset, which was also the only
chipset (i think) that could handle dual or quad processor Pentium boards (and
even MMX).  However, the vast majority of HX boards that I have seen also
required a TAG-ram chip to cache over 64 meg, and still had a limit as to how
much it could cache (the exact number escapes me at the moment).

There were ways around this - the most obvious being a non-Intel based
motherboard.  The VIA motherboards are a good option here, and very often can be
found with 1 meg of cache (or even, a little more rarely, 2 meg).  These boards
can cache between 512 and 1 gig of memory, depending on the exact variation of
the chipset.

___________________________________________________________

Getting a Zip Drive to Work

Question:

How can I get my Zip drive to work with Red Hat Linux?

Answer:

There are excellent references in the ZIP HOWTOs at http://www.redhat.com/mirrors/LDP/HOWTO/HOWTO-INDEX/hardware.html#HWJAZZIP.

In Red Hat Linux 6.2, there are a few extra steps needed to get a parallel port Zip drive to work:

Edit your /etc/conf.modules and add:

alias parport_lowlevel parport_pc
alias scsi_hostadapter ppa

Then log in as root and run modprobe ppa command.

Some people have had problems if they daisy chain a Zip drive and connect a printer to it. Currently, we recommend that you use either the printer or the Zip drive.

If you are having problems with an IDE Zip drive, first check and make sure there is a disk in the drive. Also, make sure you are mounting it as partition 4 instead of 1. An example would be hdc4. The reason for this is that Macintosh uses partition 4 for its data partition and has problems if data is on another partition.

___________________________________________________________

Configuring the Jaz Drive and Linux

Question:

How do I configure my Jaz drive under Linux?

Answer:

Documentation on using Jaz with Linux can be found at http://www.redhat.com/mirrors/LDP/HOWTO/Jaz-Drive-HOWTO.html.

___________________________________________________________

Moving Data from a Floppy to a Hard Drive

Question:

How do I get data from a floppy to my hard drive?

Answer:

Most floppies you will run into are DOS-formatted. However, Red Hat Linux defaults to using its native format called ext2. Because of this, you can run into some difficulties unless you are aware of the following points.

If you plan to always look at DOS floppies, it is easy to edit the file /etc/fstab and change the line:

/dev/fd0   /mnt/floppy             ext2    noauto,owner    0 0

to:

/dev/fd0   /mnt/floppy             vfat    noauto,owner    0 0

You will now be able to use the command mount /mnt/floppy to mount the floppy and the command umount /mnt/floppy to unmount the floppy before you eject it.

Otherwise you can manually mount the DOS floppy with the following commands:

mount -t vfat /dev/fd0 /mnt/floppy

to mount the floppy, and

umount /mnt/floppy

before you eject it.

Finally, if you are using the X Window System with either KDE or GNOME, you can use the file managers to mount and unmount your floppy by right-clicking on the floppy icon on the Desktop.

Once the floppy is mounted, you can use the cp command to copy data to the disk:

cp filename /mnt/floppy

___________________________________________________________

Using Your CD-ROM

Question:

How do I mount my CD-ROM drive?

Answer:

If your system was installed properly, typing

mount /mnt/cdrom

should work. If it does not, you must edit your /etc/fstab file and add a line that refers to your CD-ROM device.

Here's an example:

/dev/hdc           /mnt/cdrom     iso9660 noauto,ro 0 0

(CD-ROM device)    (mount point)  (filesystem type and options)

In more recent versions of Red Hat Linux, your CD-ROM is more likely to be something like /dev/cdrom. To find out what the CD-ROM device is for your system, type

dmesg | more

and scan it for information regarding your CD-ROM.

If you wish to mount the CD-ROM without adding this to your /etc/fstab, just type:

mount -t iso9660 /dev/hdc /mnt/cdrom

___________________________________________________________

Using Two Ethernet Cards

Question:

I have two Ethernet cards. How can I get both of them recognized?

Answer:

First, make certain that both cards are supported. Check the hardware compatibility list at http://hardware.redhat.com.

This further depends on whether the cards use the same driver or if they use different drivers. If they use different drivers, you simply need to set up the second network interface and edit your /etc/conf.modules (Red Hat Linux 6.2 and earlier) or /etc/modules.conf (Red Hat Linux 7.0 and greater) file to point to the specific driver for the second card. If they use the same driver, you may need to recompile your kernel, but several modules now allow for multiple cards. It may be that you just need to use boot time arguments, such as:

boot: linux ether=11,0x300,eth0 ether=5,0x340,eth1

This option can be made permanent so that you do not have to re-enter it every time your system boots. See the LILO configuration option append= in the lilo.conf man page.

The Ethernet HOWTO is an excellent source of information on how to do this. It can be found at http://www.redhat.com/mirrors/LDP/HOWTO/Ethernet-HOWTO.html.

___________________________________________________________

Ethernet Card Detection

Question:

How can I tell if my Ethernet card is being recognized?

Answer:

There are two commands you can run to verify that your network interface is running properly: ifconfig or netstat.

You can also go through some of your files in the /proc directory, such as /proc/interrupts, /proc/pci, and others to see if you can find information about your card there.

___________________________________________________________

WinModems (TM) and Linux

Question:

How can I get my WinModem(TM) to work with Linux?

Answer:

Unfortunately, WinModems(TM) are completely incompatible with Red Hat Linux version 6.0 and earlier. There is no work-around for this issue at this time. The problem is that WinModems(TM) and similar type modems use the CPU to emulate various hardware that is removed to save on costs. These hardware parts that are removed would have to be "emulated" by the Linux kernel and would require the hardware maker of the modem to write such drivers.

There are a few (very few) winmodem chipsets that are compatible with the 6.x versions of Red Hat Linux. The best place to go for more information on these versions is the www.linmodems.org and http://www.idir.net/~gromitkc/winmodem.html. Both have links to information and drivers for various WinModems(TM).

For Red Hat 7, there is, unfortunately, even less support. This is because many of the drivers available (such as the popular ltmodem driver) are compiled for versions of the Linux kernel that are old by today's standard. Red Hat 7 ships with the 2.2.16-22 kernel which has shown some trouble with some of the drivers. The ltmodem driver, which was compiled for kernel 2.2.12-20 seems to become unstable at 2.2.14-12 (the errata release kernel for Red Hat 6.2) though it seems to be usable.

We have no direct knowledge of other modem drivers, however, and welcome more information (see the contact information at the top of this document).

___________________________________________________________

Printers and Red Hat Linux

Question:

How do I get my printer to work with Red Hat Linux?

Answer:

First make certain that your printer is a supported device. Check http://www.redhat.com/support/hardware/index.html for that information. If it is supported, log into the GUI mode (X Window System) as the root user, open your Control Panel and start Printtool or select Printer Configuration from the main GNOME or KDE menu to set up the proper /etc/printcap settings.

Additional information is available at the following sites:

In Red Hat Linux 6.1, there are a few extra steps needed to get a parallel port printer to work. This step is no longer necessary under Red Hat Linux 6.2:

Edit your /etc/conf.modules and add:

alias parport_lowlevel parport_pc

Then log in as root and run modprobe lp.

Some people have had problems if they daisy chain a printer through a parallel port Zip drive. Currently, we recommend that you use either the printer or the Zip drive.

___________________________________________________________

System Freezes When Trying to Shutdown or Reboot

Question:

Whenever I try to shutdown my machine or reboot it with the commands (reboot, halt, shutdown -r now, or shutdown -h now), the shutdown process executes correctly, but then the display blanks and the system hangs. Only way to recover is to use a hard reset.

Answer:

At the point the system hangs, the control has been handed back from Linux to the firmware, and it is up to the firmware to reboot the system correctly. There are some possible workarounds as Linux lets you pick multiple reboot methods to try and deal with broken BIOSes or hardware.

At the LILO: boot prompt, you can specify:

reboot=X,Y

where X is either

hard - reboot by reset line 

bios - reboot by bios vector

and Y is either

warm - warm boot (similar to [Ctrl]-[Alt]-[Del]) 

cold - cold boot (similar to  power on)

So if you boot with

LILO: linux reboot=bios,warm

Linux will reboot by the BIOS vector with a warm reboot.

You can hopefully find a boot sequence that does not trip the bugs in the system BIOS. The append="reboot=..." option in /etc/lilo.conf will let you set it by default by adding:

append="reboot=bios,warm"

into lilo.conf for the Linux image.

Then rerun /sbin/lilo -v to write the change to your boot device.