OVH Community, votre nouvel espace communautaire.

Migrer/convertir son linux Gentoo 32 bits en 64 bits


sevicecomputer
12/09/2007, 15h17
Bonjour à tous,
en cherchant bien, j'ai vu que TOUS les processeur de nos amis OVH sont bien des 64 bits.
Pour cux qui, comme moi, on installé leur OS en 32 bits, voici un tuto qui permet de convertir son OS.

Pour info, je l'ai appliqué en partant d'un kimsufi vers un start 100, le kernel utilisé est le 2.6.20-xen:

Migration GENTOO 32 bits -> 64 bits
1) booter sur un système 64 bits (rescue-pro)
- definir le profil (ln -s ../usr/portage/profiles/default-linux/amd64/2007.0 /etc/make.profile)
2) mettre à jour ce systeme
- emerge sync
- emerge system
- gcc-config x86_64-pc-linux-gnu-4.1.2
- fix_libtool_files.sh 3.4.6
- emerge --oneshot -av libtool
- emerge -eav system
- emerge -eav world
3) rebooter pour valider l'upgrade
4) definir les variables d'environnement
- export ROOT="/mnt/Gentoo32bits"
- export GENTOO_PORTAGEROOT="/mnt/Gentoo32bits"
- mount -o bind /usr/portage /mnt/Gentoo32bits/usr/portage
- mount -o bind /dev /mnt/Gentoo32bits/dev
- mount -t proc none /mnt/Gentoo32bits/proc

- mv /mnt/Gentoo32bits/lib /mnt/Gentoo32bits/lib64
- ln -s lib64 /mnt/Gentoo32bits/lib

- mv /mnt/Gentoo32bits/usr/lib /mnt/Gentoo32bits/usr/lib64
- ln -s lib64 /mnt/Gentoo32bits/usr/lib

- mv /mnt/Gentoo32bits/usr/local/lib /mnt/Gentoo32bits/usr/local/lib64
- ln -s lib64 /mnt/Gentoo32bits/usr/local/lib
5) modifier le profile de l'environnement cible
- ln -s ../usr/portage/profiles/default-linux/amd64/2007.0 /mnt/Gentoo32bits/etc/make.profile
- modifier le make.conf:

# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /etc/make.conf.example for a more detailed example.
CFLAGS="-O3 -march=k8 -pipe -mno-tls-direct-seg-refs"
CHOST="x86_64-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"
# This should not be changed unless you know exactly what you are doing. You
# should probably be using a different stage, instead.
FEATURES="-sandbox"
USE="-tcpd -python -gdbm -acl -ncurses -berkdb -ipv6 -X -kde -qt -gnome -gtk -gpm -fortran -nptl -nptlonly mmx sse sse2 multilib "
PORTDIR_OVERLAY="/opt/gentoo-overlay"
GENTOO_MIRRORS="http://mirror.ovh.net/gentoo-distfiles/ ftp://mirror.ovh.net/gentoo-distfiles/";

pour éviter des risques d'incohérence entre les 2 environnements, vérifier que /etc/make.conf et /mnt/Gentoo32bits/etc/make.conf sont identiques.
idem pour /etc/portage/package.* et /mnt/Gentoo32bits/etc/portage/package.*

et ne pas oublier les PORTDIR_OVERLAY.

attention: ccache semble poser problème pour la recompilation de sandbox, il faut le unmerger et supprimer les liens /usr/bin/i686* et /usr/bin/i484*

4) cross-compiler le système 32bits sans chroot
- emerge -eav system
- gcc-config x86_64-pc-linux-gnu-4.1.2
- fix_libtool_files.sh 3.4.6
- (Pour une raison obscure, le WORLD semble etre modifié) => faire un regenworld
- emerge -eav world
5) finir la conversion
- recompiler le noyau
- ajouter le nouvel hardware eventuel
- selectionner le processeur PENTIUM4 dans le fichier /usr/src/linux/.config
- modifier le fstab (si le nomage des partition change)
- réinstaller grub

pour info:
lors de ma migration, ma carte réseau voulait absolument se placer en eth1. Le problème à été résolu et supprimant les lignes de configuration de udev dans le fichier:
/etc/udev/rules.d/70-persistent-net.rules