Advertisement

Wednesday, December 12, 2007

What's All This about ELF? glibc?

This article is from the Frequently Asked Questions for Linux, the Free/Open Source UNIX-like operating system kernel that runs on many modern computer systems. Maintained by David C. Merrill with numerous contributions by others. (v1.0).
See the ELF HOWTO by Daniel Barlow. Note that this is not the file move-to-elf, which is a blow-by-blow account of how to upgrade to ELF manually.

Linux has two different formats for executables, object files, and object code libraries, known as, "ELF". (The old format is called "a.out".) They have advantages, including better support for shared libraries and dynamic linking.

Both a.out and ELF binaries can coexist on a system. However, they use different shared C libraries, both of which have to be installed.

If you want to find out whether your system can run ELF binaries, look in / lib for a file named, libc.so.5. If it's there, you probably have ELF libraries. If you want to know whether your installation actually is ELF you can pick a representative program, like ls, and run file on it:

 -chiark:~> file /bin/ls                                                   
/bin/ls: Linux/i386 impure executable (OMAGIC) - stripped

valour:~> file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1, stripped

There is a patch to get 1.2.x to compile using the ELF compilers, and produce ELF core dumps, at ftp://tsx-11.mit.edu/pub/packages/GCC/. You do not need the patch merely to run ELF binaries. 1.3.x and later do not need the patch at all.

The GNU glibc2 libraries are essentially more recent versions of ELF libraries that follow most of the same processes for dynamic linking and loading. Upgrade information is contained in How Do I Upgrade the Libraries without Trashing the System?.

Tuesday, December 11, 2007

How Do I Upgrade the Libraries without Trashing the System?

This article is from the Frequently Asked Questions for Linux, the Free/Open Source UNIX-like operating system kernel that runs on many modern computer systems. Maintained by David C. Merrill with numerous contributions by others. (v1.0).

Warning You should always have a rescue disk set ready when you perform this procedure, in the likely event that something goes wrong!This procedure is especially difficult if you're upgrading very old libraries like libc4. But you should be able to keep libc4 on the same system with libc5 libraries for the programs that still need them. The same holds true for upgrading from libc5 to the newer-yet glibc2 libraries.

The problem with upgrading dynamic libraries is that the moment you remove the old libraries, the utilities that you need to upgrade to the new version of the libraries don't work. There are ways around around this. One is to temporarily place a spare copy of the run time libraries, which are in /lib/, in /usr/lib/, or /usr/local/lib/, or another directory that is listed in the /etc/ld.so.conf file.

For example, when upgrading libc5 libraries, the files in /lib/ might look something like:

libc.so.5 libc.so.5.4.33 libm.so.5 libm.so.5.0.9

These are the C libraries and the math libraries. Copy them to another directory that is listed in /etc/ld.so.conf, like /usr/lib/:

$ cp -df /lib/libc.so.5* /usr/lib/
$ cp -df /lib/libm.so.5* /usr/lib/
$ ldconfig

Be sure to run ldconfig to upgrade the library configuration.

The files libc.so.5 and libm.so.5 are symbolic links to the actual library files. When you upgrade, the new links will not be created if the old links are still there, unless you use the -f flag with cp. The -d flag to cp will copy the symbolic link itself, and not the file it points to.

If you need to overwrite the link to the library directly, use the -f flag with ln.

For example, to copy new libraries over the old ones, try this. Make a symbolic link to the new libraries first, then copy both the libraries and the links to /lib/, with the following commands.

$ ln -sf ./libm.so.5.0.48 libm.so.5
$ ln -sf ./libc.so.5.0.48 libc.so.5
$ cp -df libm.so.5* /lib
$ cp -df libc.so.5* /lib

Again, remember to run ldconfig after you copy the libraries.If you are satisfied that everything is working correctly, you can remove the temporary copies of the old libraries from /usr/lib/ or wherever you copied them.

Monday, December 10, 2007

What Is ld.so and How Do I Get It?

This article is from the Frequently Asked Questions for Linux, the Free/Open Source UNIX-like operating system kernel that runs on many modern computer systems. Maintained by David C. Merrill with numerous contributions by others. (v1.0).
ld.so is the dynamic library loader. Each binary using shared libraries used to have about 3K of start-up code to find and load the shared libraries. Now that code has been put in a special shared library, /lib/ld.so, where all binaries can look for it, so that it wastes less disk space, and can be upgraded more easily.

ld.so can be obtained from http://tsx-11.mit.edu/pub/linux/packages/GCC/ and mirror sites. The latest version at the time of writing is ld.so.1.9.5.tar.gz.

/lib/ld-linux.so.1 is the same thing for ELF ("What's all this about ELF? ") and comes in the same package as the a.out loader.

Saturday, December 8, 2007

Where Can I Find Linux System Specifications?

This article is from the Frequently Asked Questions for Linux, the Free/Open Source UNIX-like operating system kernel that runs on many modern computer systems. Maintained by David C. Merrill with numerous contributions by others. (v1.0).

As a start, look at the Linux Standards Base, http://www.linuxbase.org. The site contains information about test software, file system organization, and shared library naming conventions.

Where Can I Find Linux System Specifications?

This article is from the Frequently Asked Questions for Linux, the Free/Open Source UNIX-like operating system kernel that runs on many modern computer systems. Maintained by David C. Merrill with numerous contributions by others. (v1.0).

As a start, look at the Linux Standards Base, http://www.linuxbase.org. The site contains information about test software, file system organization, and shared library naming conventions.

Friday, December 7, 2007

How Do I Add Temporary Swap Space?

This article is from the Frequently Asked Questions for Linux, the Free/Open Source UNIX-like operating system kernel that runs on many modern computer systems. Maintained by David C. Merrill with numerous contributions by others. (v1.0).
In addition to a swap partition, Linux can also use a swap file. Some programs, like g++, can use huge amounts of virtual memory, requiring the temporary creation of extra space. To install an extra 64 MB of swap space, for example, use the following shell commands:
# dd if=/dev/zero of=/swap bs=1024 count=65535                              
# mkswap /swap
# swapon /swap

The count= argument to dd determines how big the swap file will be. In this example the swap file's name is /swap, but the name and location are, generally, arbitrary, depending only on the file system's available space and your having write permissions in the directory.

When you don't need the swap space any more, remove it with the following statements:

# swapoff /swap                                                             
# rm /swap

Take a look also at the Installation HOWTO and Installation & Getting Started for detailed instructions.

If that still doesn't provide enough swap space, refer to How To Have More Than 128Mb of Swap.

Thursday, December 6, 2007

Why Isn't My Virtual Memory Swap Area Working?

This article is from the Frequently Asked Questions for Linux, the Free/Open Source UNIX-like operating system kernel that runs on many modern computer systems. Maintained by David C. Merrill with numerous contributions by others. (v1.0).

When you boot (or enable swapping manually) you should see Adding Swap: NNNNk swap-space If you don't see any messages at all you are probably missingswapon -av(the command to enable swapping) in your /etc/rc.local or /etc/rc.d/* (the system startup scripts), or have forgotten to make the right entry in /etc/ fstab:/dev/hda2 none swap sw

for example.
If you see:Unable to find swap-space signature you have forgotten to run mkswap. See the manual page for details; it works much like mkfs.
Running the command free, in addition to showing free memory, should display:
total used free Swap: 10188 2960 7228
If typing cat /proc/swaps reveals only file or partition names, but no swap space information, then the swap file or partition needs re-initialization.Use fdisk (as root) to determine which partition on a hard drive has been designated as the swap partition. The partition still needs to be initialized with mkswap before enabling it with swapon.


Wednesday, December 5, 2007

Where Is the Journalling File System on the Net?

This article is from the Frequently Asked Questions for Linux, the Free/Open Source UNIX-like operating system kernel that runs on many modern computer systems. Maintained by David C. Merrill with numerous contributions by others. (v1.0).

Linux actually supports several journalling file systems. ext3 is now included in current 2.4.x kernels.A: The journalling file system named Reiserfs has just been released from testing. It is said to make Linux even faster than Linux with the Ext2 file system installed, particularly when dealing with many small files.Complete information is available at http://devlinux.org/namesys/.A: JFS is still under development.

Tuesday, December 4, 2007

How Do I Resize a Partition Non-Destructively?

This article is from the Frequently Asked Questions for Linux, the Free/Open Source UNIX-like operating system kernel that runs on many modern computer systems. Maintained by David C. Merrill with numerous contributions by others. (v1.0).
A: Use the FIPS.EXE program, included with most Linux distributions,under MS-DOS.

A: GNU parted, a partition editor, is stable enough for non-guru, mere-mortal use with relative confidence. Source code for the latest version is at: ftp:/ /ftp.gnu.org/pub/gnu/parted/. There's also a boot disk image for resizing root partitions and for running parted on non-Linux machines. The disk image may be easier for beginners. Building from source could require some extra configuration.

Parted also has tutorial-style, plain-text documentation for Linux and FAT (MS-DOS) file systems.

A: Also, some commercial distributions come with their own partitioning software, like Partition Magic.

Monday, December 3, 2007

How Do I Create a File System on a Floppy?

This article is from the Frequently Asked Questions for Linux, the Free/Open Source UNIX-like operating system kernel that runs on many modern computer systems. Maintained by David C. Merrill with numerous contributions by others. (v1.0).
If you are running recent Gnome or KDE desktops, you have a GUI tool that makes formatting floppies easy.

A: To format a 3.5-inch, high density floppy at the command prompt:
$ fdformat /dev/fd0H1440
$ mkfs -t ext2 -m 0 /dev/fd0H1440 1440
For a 5.25 inch floppy, use /dev/fd0h1200 and 1200 as appropriate. For the B: drive use /dev/fd1 instead of /dev/fd0.

The -m 0 option tells mkfs.ext2 not to reserve any space on the disk for the superuserusually the last 10% is reserved for root.The first command performs a low-level format. The second creates an empty file system. You can mount the floppy like a hard disk partition and simply cp and mv files, etc.Device naming conventions generally are the same as for other unices. They can be found in Matt Welsh's Installation and Getting Started guide. Refer to Where Is the Documentation?. A more detailed and technical description is Linux Allocated Devices by H. Peter Anvin, hpa@zytor.com, which is included in LaTeX and ASCII form in the kernel source distribution (probably in /usr/ src/kernel/Documentation/), as devices.tex and devices.txt.

Saturday, December 1, 2007

Can Linux Access MacIntosh File Systems?

This article is from the Frequently Asked Questions for Linux, the Free/Open Source UNIX-like operating system kernel that runs on many modern computer systems. Maintained by David C. Merrill with numerous contributions by others. (v1.0).
There is a set of user-level programs that read and write the older Macintosh Hierarchical File System (HFS). It is available at metalab.unc.edu/ pub/Linux/utils/disk-management/.Access to the newer, HFS+ file systems is still under development.

Thursday, November 29, 2007

Can Linux Access Amiga File Systems?

This article is from the Frequently Asked Questions for Linux, the Free/Open Source UNIX-like operating system kernel that runs on many modern computer systems. Maintained by David C. Merrill with numerous contributions by others. (v1.0).
The Linux kernel has support for the Amiga Fast File System (AFFS) version 1.3 and later, both as a compile-time option and as a module. The file Documentation/filesystems/affs.txt in the Linux kernel source distribution has more information.See How To Upgrade/Recompile a Kernel.Linux supports AFFS hard-drive partitions only. Floppy access is not supported due to incompatibilities between Amiga floppy controllers and PC and workstation controllers. The AFFS driver can also mount disk partitions used by the Un*x Amiga Emulator, by Bernd Schmidt.

Wednesday, November 28, 2007

Can Linux Access OS/2 HPFS Partitions?

This article is from the Frequently Asked Questions for Linux, the Free/Open Source UNIX-like operating system kernel that runs on many modern computer systems. Maintained by David C. Merrill with numerous contributions by others. (v1.0).
Yes, but Linux access to HPFS partitions is read-only. HPFS file system access is available as an option when compiling the kernel or as a module. See the Documentation/filesystems/hpfs.txt file in the kernel source distribution. See How To Upgrade/Recompile a Kernel. Then you can mount HPFS partition, using, for example:

$ mkdir /hpfs
$ mount -t hpfs /dev/hda5 /hpfs

Tuesday, November 27, 2007

Can Linux Use Stacked/DBLSPC/Etc. DOS Drives?

This article is from the Frequently Asked Questions for Linux, the Free/Open Source UNIX-like operating system kernel that runs on many modern computer systems. Maintained by David C. Merrill with numerous contributions by others. (v1.0).

A: Until recently, not very easily. You can access DOS 6.X volumes from the DOS emulator ("What software does Linux support? "), but it's harder than accessing a normal DOS volume via the DOS kernel option, a module, or mtools.

There is a recently added package, dmsdos, that reads and writes compressed file systems like DoubleSpace/DriveSpace in MS-DOS 6.x and Win95, as well as Stacker versions 3 and 4. It is a loadable kernel module. Look at ftp:// metalab.unc.edu/pub/Linux/system/filesystems/dosfs/.

Monday, November 26, 2007

Does Linux Support Compressed Ext2 File Systems?

This article is from the Frequently Asked Questions for Linux, the Free/Open Source UNIX-like operating system kernel that runs on many modern computer systems. Maintained by David C. Merrill with numerous contributions by others. (v1.0).

The ext2compr project provides a kernel patch Information about them is located at http://e2ompr.memalpha.cx/e2compr/.

There is also a Web site for the e2compr patches. The code is still experimental and consists of patches for the 2.0 and 2.1 kernels. For more information about the project, including the latest patches, and the address of the mailing list, look up the URL at http://debs.fuller.edu/e2compr/.

[Roderich Schupp, Peter Moulder

A: zlibc is a program that allows existing applications to read compressed (GNU gzip'ed) files as if they were not compressed. Look at ftp:// metalab.unc.edu/pub/Linux/libs/. The author is Alain Knaff.

A: There is also a compressing block device driver, "DouBle," by Jean-Marc Verbavatz, which can provide on-the-fly disk compression in the kernel. The source-only distribution is located at ftp://metalab.unc.edu/pub/Linux/ patches/diskdrives/. This driver compresses inodes and directory information as well as files, so any corruption of the file system is likely to be serious.

A: There is also a package called tcx (Transparently Compressed Executables), which allows you to keep infrequently used executables compressed and only uncompress them temporarily when in use. It is located at ftp:// metalab.unc.edu/pub/Linux/utils/compress/.

Sunday, November 25, 2007

How Do I Access Files on a MS-DOS Partition or Floppy?

This article is from the Frequently Asked Questions for Linux, the Free/Open Source UNIX-like operating system kernel that runs on many modern computer systems. Maintained by David C. Merrill with numerous contributions by others. (v1.0).
Use the DOS file system, type, for example:

$ mkdir /dos
$ mount -t msdos -o conv=text,umask=022,uid=100,gid=100 /dev/hda3 /dos

If it's a floppy, don't forget to umount it before ejecting it!

You can use the conv=text/binary/auto, umask=nnn, uid=nnn, and gid=nnn options to control the automatic line-ending conversion, permissions and ownerships of the files in the DOS file system as they appear under Linux. If you mount your DOS file system by putting it in your /etc/fstab, you can record the options (comma-separated) there, instead of defaults.

Alternatively, you can use mtools, available in both binary and source form on the FTP sites. See Where Are the Linux FTP Archives?.

A kernel patch (known as the fd-patches) is available which allows floppies with nonstandard numbers of tracks and/or sectors to be used; this patch is included in the 1.1 alpha testing kernel series.

Saturday, November 24, 2007

Can Linux Use the Same Hard Drive as MS-DOS? OS/2? 386BSD? Win95?

This article is from the Frequently Asked Questions for Linux, the Free/Open Source UNIX-like operating system kernel that runs on many modern computer systems. Maintained by David C. Merrill with numerous contributions by others. (v1.0).
Yes. Linux supports many, many filesystems, including the standard MS-DOS partitioning scheme, so it can share your disk with other operating systems.Linux supports all known versions of the Microsoft FAT and VFAT file systems, including those used by Windows 95, Windows 98, Windows NT, Windows 2000 and Windows ME through loadable kernel modules. In a correctly configured system, they should load automatically when the partitions are mounted.

Note, however, that many other operating systems may not be exactly compatible. DOS's FDISK.EXE and FORMAT.EXE, for example, can overwrite data in a Linux partition, because they sometimes incorrectly use partition data from the partition's boot sector rather than the partition table.In order to prevent programs from doing this, it is a good idea to zero out under Linux the start of a partition you created, before you use MS-DOS or whatever to format it. Type:

$ dd if=/dev/zero of=/dev/hdXY bs=512 count=1 where hdXY is the relevant partition; e.g., /dev/hda1 for the first partition of the first (IDE) disk.Linux can read and write the files on your DOS and OS/2 FAT partitions and floppies using either the DOS file system type built into the kernel or mtools.There is reportedly a GPL'd OS/2 device driver that will read and write Linux ext2 partitions.

For information about FAT32 partition support, see http://bmrc.berkeley.edu/ people/chaffee/fat32.html.See What Software does Linux Support? for details and status of the emulators for DOS, MS Windows, and System V programs.See also, "Can Linux access Amiga file systems?", "Can Linux access Macintosh file systems?", "Can Linux access BSD, SysV, etc., UFS?", and "Can Linux access SMB file systems?"There are said to be NTFS drivers under development, which should support compression as a standard feature.

Friday, November 23, 2007

Does Linux Support Virtualized File Systems Like RAID?

This article is from the Frequently Asked Questions for Linux, the Free/Open Source UNIX-like operating system kernel that runs on many modern computer systems. Maintained by David C. Merrill with numerous contributions by others. (v1.0).
The most recent Linux kernels support software RAID, and they will work with RAID disk controllers.An automounter for NFS partitions is part of most Linux distributions.In addition, several virtual file system projects exist. One of them, the Linux Logical Volume Manager, is located at http://linux.msede.com/lvm/.

Thursday, November 22, 2007

How Can I Get Linux to Work With My Disk?

This article is from the Frequently Asked Questions for Linux, the Free/Open Source UNIX-like operating system kernel that runs on many modern computer systems. Maintained by David C. Merrill with numerous contributions by others. (v1.0).

If your disk is an IDE or EIDE drive, you should read the file /usr/src/ linux/drivers/block/README.ide (part of the Linux kernel source code). This README contains many helpful hints about IDE drives. Many modern IDE controllers do translation between "physical" cylinders/heads/sectors, and "logical" ones.SCSI disks are accessed by linear block numbers. The BIOS invents some "logical" cylinder/head/sector fiction to support DOS.Older IBM PC-compatible BIOS's will usually not be able to access partitions which extend beyond 1024 logical cylinders, and will make booting a Linux kernel from such partitions using LILO problematic at best.You can still use such partitions for Linux or other operating systems that access the controller directly.It's recommend that you create at least one Linux partition entirely under the 1024 logical cylinder limit, and boot from that. The other partitions will then be okay.Also there seems to be a bit of trouble with the newer Ultra-DMA drives. I haven't gotten the straight scoop on thembut they are becoming a very common problem at the SVLUG installfests. When you can get 8 to 12 Gig drives for $200 to $300 it's no wonder.

Wednesday, November 21, 2007

Why Doesn't the AHA1542C Card Work With Linux?

This article is from the Frequently Asked Questions for Linux, the Free/Open Source UNIX-like operating system kernel that runs on many modern computer systems. Maintained by David C. Merrill with numerous contributions by others. (v1.0).
A: The option to allow disks with more than 1024 cylinders, which the AHA1542C card can recognize, is only required as a workaround for a PC-compatible BIOS misfeature and should be turned off under Linux. For older Linux kernels you need to turn off most of the advanced BIOS options all but the one about scanning the bus for bootable devices.

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More