Download

If you want to see all this stuff at once like a FTP directory, click  here

First of all, you need to patch your kernel:

  uid32.patch
You also need to patch the header files in glibc:
 glibc_headers.patch
And you need one minor patch to glibc itself:
 glibc-uid32.patch
You have to recompile the kernel and actually be running it before you can recompile glibc. This is because the build procedure for glibc compiles a utility program (rpcgen) which is linked against the being-built glibc, and then uses this program to build the rest of the library. Unfortunately this means that the utility program will be linked against a library which requires a 32-bit UID kernel...
This could be fixed by making glibc understand if it is being run on a 16-bit UID or a 32-bit UID kernel and act accordingly.
I guess this means that glibc can't be cross-compiled, though.
 
 

Alternately, you can just install these nice pre-compiled RPM files. (compiled on a Red Hat 5.1 system)

 kernel-2.0.35-3.i386.rpm
 kernel-headers-2.0.35-3.i386.rpm
 kernel-ibcs-2.0.35-3.i386.rpm
 kernel-pcmcia-cs-2.0.35-3.i386.rpm
 kernel-source-2.0.35-3.i386.rpm

 glibc-2.0.7-20.i386.rpm
 glibc-debug-2.0.7-20.i386.rpm
 glibc-devel-2.0.7-20.i386.rpm
 glibc-profile-2.0.7-20.i386.rpm
 

Remember to install the kernel and boot from it before you install the glibc. I recommend leaving your old kernel in place just in case. (unfortunately, you can't really leave the old glibc in place that easily)
I developed this by using a system with two hard drives so I could boot to a stable system and access the development system's hard disk just as a mount point.

If you don't trust binaries compiled by strange people like me you can just re-generate these RPMs from source:

 kernel-2.0.35-3.src.rpm
 glibc-2.0.7-20.src.rpm

This should be obvious, but just to make it clear:

  • Since these are patch files and modifications to someone else's work, the terms of distribution are naturally the same as the original work.
  • In the case of the modified Linux kernel, that is under the same license and terms as the Linux kernel; the  GNU General Public License
  • In the case of the modified C library, that is under the same license and terms of the GNU C library;the  GNU Library General Public License

  • ( I know, I didn't label every source file I changed explicitly as having being changed. So  sue  me...)
     
     
     

    - Chris Wing - wingc@engin.umich.edu - 12/1/1998