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.

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More