Hello,
I'd like to announce a release of a CentOS 5 DVD image, with i386 and x86_64 installations.
This is an independent work, so please don't bother CentOS lists with bugs related to the installer only.
Summary of changes: * i686 and x86_64 install from a single dvd (automatic detection on boot) * updates as of 2007-04-26 * no kdelibs-api-docs, openoffice.org, tetex-doc and most *-javadoc
sha1sum: 63885249695c60a87443e304212d6cf9af678165 centos5_32and64.iso md5sum: 0db291c3e4f7dc4fb4e6ea052b77e95d centos5_32and64.iso torrent: ftp://ftp.gil.di.uminho.pt/pub/users/strange/centos/c5_32+64.torrent iso: ftp://ftp.gil.di.uminho.pt/pub/users/strange/centos/centos5_32and64.iso
Detailed changes: * All rpms are the originals from CentOS 5. However, the *.i386.rpm and *.noarch.rpm for the x86_64 are the ones from the i386 DVD, not from the x86_64, as the contents are the same and the rpm headers differ only on the Build Date and/or Signature.
* each install (x86_64 or i386) only has knowledge of rpms originally in their DVDs, so x86_64 installs won't be bloated with more i386 packages than the originals.
* Some packages are missing. It's a pity some subpackages that don't depend on %arch are still built as .%arch.rpm, but there's nothing I'm willing to do about that. The missing packages are: - openoffice.org - tetex-doc - kdelibs-apidocs - Deployment_Guide, except for en_US and pt-BR - *-javadoc, except for: - java-1.4.2-gcj-compat-javadoc (required by eclipse) - bsh-javadoc and xmlrpc-javadoc (part of java-devel group)
Note that both Deployment_Guide and openoffice.org have updates, so if you don't care about kdelibs-apidocs, tetex-doc and *-javadoc, you can still use this image as a local base.
* The updates as of 2007-04-26 from CentOS replace their originals: - autofs-5.0.1-0.rc2.43.0.2 - bind-9.3.3-8 - cups-1.2.4-11.5.1 - Deployment_Guide-(en-US and pt_BR)-5.0.0-21 - dhcp-3.0.5-5 - ekiga-2.0.2-7.0.2 - emacs-21.4-18.1 - evolution-data-server-1.8.0-15.0.2 - file-4.17-9 - firefox-1.5.0.10-2.el5 - freetype-2.2.1-17 - gcc-4.1.1-52.el5.2 - gnupg-1.4.5-13 - kernel-2.6.18-8.1.1 - krb5-1.5-23 - libwpd-0.8.7-3 - libX11-1.0.3-8.0.1 - libXfont-1.2.2-1.0.2 - module-init-tools-3.3-0.pre3.1.16.0.1 - net-snmp-5.3.1-14.0.1 - nss-3.11.5-3.el5 - php-5.1.6-11 - postgresql-8.1.8-1 - samba-3.0.23c-2.el5.2 - spamassassin-3.1.8-2 - squid-2.6.STABLE6-4 - thunderbird-1.5.0.10-1.el5 - tzdata-2007d-1 - virt-manager-0.2.6-7.0.2 - wireshark-0.99.5-1 - xen-3.0.3-25.0.3 - xorg-x11-apps-7.1-4.0.1 - xorg-x11-server-1.1.1-48.13.0.1 - yelp-2.16.0-14.0.1
* automatic detection on boot for i386 or x86_64 install - default label linux now calls com32 module l32or64 (attachment l32or64.c) that selects 32 or 64 bits kernel according to long_mode flag in cpuid - new boot targets linux32 and linux64 that force 32 bit or 64 kernel
* single 32 bits initrd for i386 and x86_64 - new /init (attachment renmod.c), that symlinks /modules to the correct version - /modules.i386 with the original modules from the i386 initrd - /modules.x86_64 with the original modules from the x86_64, but with the paths in modules.cgz changed to $kver/i686/ instead of the original $kver/x86_64/, as the anaconda loader was looking there for the modules (it's probably ignoring the run-time arch and relying on the compile time one) - the space savings from using a single initrd aren't that much (1.5), so using the two separated initrds is still feasible (and l32or64 supports it), but the x86_64 initrd needs it's .buildstamp replaced with the one from i386.
* single 32 bits minstage2 and stage2 - anaconda support for space separated list of available archs in .discinfo (attachment discinfo.patch) (anaconda has at least 4 different places where it parses the .discinfo file. something should be done about that!) - yum support for repodata.%arch location (attachment repodata.arch.patch): -> repodata.i386 and repodata.x86_64 (there was a supposed fallback to repodata if no repodata.%arch existed, but it didn't work in my tests, so you won't be able to use these stages with original repositories for network installs (ln -s repodata repodata.x86_64 or repodata.i386 should be enough, though)) - runtime replacing of usr/lib/rpm/macros with the correct one for the arch (attachment rpm_macros.patch) usr/lib/rpm/macros.i386 from i386/images/stage2/usr/lib/rpm/macros usr/lib/rpm/macros.x86_64 from x86_64/images/stage2/usr/lib/rpm/macros ln -fs /tmp/rpmmacros usr/lib/rpm/macros - symlinks for directories or files with i386/i686 in their name, with i386/i686 replaced with x86_64 (not sure if this was needed, but I didn't feel like making more tests): ln -s i686-redhat-linux-gnu etc/gtk-2.0/x86_64-redhat-linux-gnu ln -s i386-redhat-linux-gnu etc/pango/x86_64-redhat-linux-gnu ln -s keymaps-override-i386 usr/lib/anaconda-runtime/keymaps-override-x86_64 ln -s screenfont-i386.gz usr/lib/anaconda-runtime/screenfont-x86_64.gz ln -s i386-redhat usr/share/grub/x86_64-redhat
To recreate the image with your own packages or comps.xml: 1. populate the CentOS rpm directory with the rpms of your choosing; 2. call createrepo in the iso root dir: createrepo -g path_to_comps.xml . 3. rename repodata to repodata.i386 or repodata.x86_64 and fix the relative paths in repodata.%arch/repomd.xml: perl -pi -e 's/repodata/repodata.i386/g' repodata.i386/repomd.xml 4. repeate for the other arch. 5. create the iso: mkisofs -o ../centos5_32and64.iso -b isolinux/isolinux.bin \ -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table \ -r -pad -J -joliet-long -V "CentOS" . 6. add checksum to iso: implantisomd5 ../centos5_32and64.iso 7. record it: growisofs -Z /dev/cdrom=../centos5_32and64.iso
Sorry for replying to my own post, but I was unable to submit the mail from my home server, and the workaround I used corrupted some patches ('\t' -> ' '), so I've made them available on: http://ftp.gil.di.uminho.pt/pub/users/strange/centos/patches/