Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[HOWTO]chroot 32 bit sur amd64
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
marvin rouge
Veteran
Veteran


Joined: 01 Aug 2004
Posts: 1422
Location: Villa Lumierrante, Zonelibre

PostPosted: Wed Mar 23, 2005 9:03 pm    Post subject: [HOWTO]chroot 32 bit sur amd64 Reply with quote


  1. But de ce howto

    J'ai un superbe scanner à négatifs, qui fonctionne pas très bien sous Linux. Pour l'utiliser, soit il faut que je soit sous Windows (bof), soit il faudrait que je code un driver mais je sais pas faire (gnniii !). Donc la seule solution, c'est d'utiliser un soft proprio, donc déjà compilé, donc en 32 bits. Toute mon installation est en 64 bits.

    Bref, toute appli 32 bits non portée 64 bits est susceptible d'être utilisée dans un chroot.
    :arrow: macromedia flash
    :arrow: scanner avec driver proprio
    :arrow: ...
    Donc, en route pour un chroot 32 bits :wink:


  2. Préparation du chroot


    • Préparation du système de base
      Créer une partition de taille suffisante (ici 20 GO), la formater. Comme je la place sur un RAID0, dans la suite ce sera /dev/md2, à adapter en fonction de la config.
      Monter la partition de chroot:
      Code:
      echo "/dev/md2                /mnt/32bit      reiserfs        noauto,noatime  0 0" >> /etc/fstab
      mount /mnt/32bit

      Télecharger dans /mnt/32bit un stage i686 (ici je vais faire un stage 3).
      Décompression !
      Code:
      cd /mnt/32bit
      tar -xvjpf stage3-i686-2004.3.tar.bz2

      On monte /proc /tmp et /dev pour le chroot:
      Code:
      mount -o bind /proc /mnt/32bit/proc
      mount -o bind /tmp /mnt/32bit/tmp
      mount -o bind /dev /mnt/32bit/dev
      mount -o bind /proc/bus/usb /mnt/32bit/proc/bus/usb

      Pour éviter d'avoir 2 arbres portage (et 2 overlays) ainsi que les distfiles en double, on utilise un arbre commun (gain de place, de temps, et de bande passante):
      Code:
      mkdir /mnt/32bit/usr/portage
      mount -o bind /usr/portage/ /mnt/32bit/usr/portage/
      mkdir /mnt/32bit/usr/local/portage
      mount -o bind /usr/local/portage/ /mnt/32bit/usr/local/portage/

      On entre dans le chroot
      Code:
      linux32 chroot /mnt/32bit /bin/bash
      et maintenant on est dans un envirronement 32 bits:
      Code:
      uname -m
      i686


    • Installation du système
      A partir d'ici, la racine est celle du chroot.
      Pour les CFLAGS, il faut vérifier quel est le gcc:
      Code:
      gcc-config -l
      [1] i686-pc-linux-gnu-3.3.4 *
      Pas de chance, on ne pourra pas utiliser -march=k8 d'après [1], donc on se fait un [color]/etc/make.conf[/color] comme ça:
      Code:
      CFLAGS="-O2 -march=i686 -fomit-frame-pointer -msse2 -msse -pipe"
      CHOST="i686-pc-linux-gnu"
      CXXFLAGS="${CFLAGS}"
      ACCEPT_KEYWORDS="~x86"
      GENTOO_MIRRORS="ftp://ftp.proxad.net/mirrors/ftp.gentoo.org/ http://mirror.switch.ch/ftp/mirror/gentoo/ ftp://mirror.switch.ch/ftp/mirror/gentoo/"

      Après, on suis grosso-modo le handbook (on n'a pas besoin de synchroniser l'arbre portage, puisqu'il est commun avec le système hôte)
      Code:
      env-update
      source /etc/profile
      ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime
      echo "PORTDIR_OVERLAY=\"/usr/local/portage\"" >> /etc/make.conf
      echo "sys-libs/glibc userlocales" >> /etc/portage/package.use
      Editer le /etc/locales.build à votre goût. Moi je laisse ça:
      /etc/locales.build wrote:
      en_US/ISO-8859-1
      en_US.UTF-8/UTF-8
      fr_FR/ISO-8859-1
      fr_FR@euro/ISO-8859-15
      fr_FR.UTF-8/UTF-8


      A priori, si on ne boote pas directement sur le chroot (ce qui est possible), on n'a pas besoin de configurer de kernel. Je m'installe quand même les sources d'un kernel, on ne sait jamais ...
      Code:
      emerge -av gentoo-dev-sources


      Le /etc/fstab:
      Code:
      /dev/md2                /               reiserfs        noatime                 0 0
      #/dev/SWAP              none            swap            sw                      0 0
      none                    /proc           proc            defaults                0 0
      none                    /dev/shm        tmpfs           defaults                0 0
      none                    /proc/bus/usb   usbfs           defaults                0 0


      A vérifier/compléter : je ne suis pas sûr du tout que partager les swap soit une bonne idée, donc pas de swap sans ce /etc/fstab, et je n'ai pas copié le /etc/mtab du système 64 bits dans le chroot (ce qui me semble logique ... mais du coup le df -h ne fonctionne plus, et slocate non plus :/ Si quelqu'un a des idées là dessus, je suis interressé.)

      Définir un mot de passe root pour le chroot: passwd
      Ajouter un utilisateur
      Code:
      useradd -m -G users,wheel,audio -s /bin/bash utilisateur
      passwd utilisateur
      Possibilité: faire un bind entre le /home 64 bit et le /home 32 bit du même utilisateur pour le partage des fichiers.

    • Mise à jour
      Régler les USE flags et mettre à jour le système (et aller se boire quelques cafés en attendant):
      Code:

      emerge unmerge linux-headers
      emerge linux26-headers
      emerge glibc
      emerge -avu portage
      emerge -avu world

      Se délogger.



  3. Utiliser le chroot
    En utilisateur normal, en dehors du chroot:
    Code:
    xhost local:localhost

    Se logger en root:
    Code:
    su
    ...
    mount /mnt/32bit
    mount -o bind /proc /mnt/32bit/proc
    mount -o bind /tmp /mnt/32bit/tmp
    mount -o bind /dev /mnt/32bit/dev
    mount -o bind /usr/portage /mnt/32bit/usr/portage
    mount -o bind /usr/local/portage /mnt/32bit/usr/local/portage
    mount -o bind /home /mnt/32bit/home
    mount -o bind /proc/bus/usb /mnt/32bit/proc/bus/usb

    linux32 chroot /mnt/32bit /bin/bash --login

    à compléter: mettre tout ça dans le fstab 64bit pour que tout soit monté automatiquement
    Une fois là, on se re-logge en user dans le chroot:
    Code:
    su - utilisateur
    export DISPLAY=:0.0
    et normalement, c'est bon ! Evidemment, pour lancer une appli gtk dans le chroot, il faudra installer xorg-x11, et les libs gtk ...



  4. Sources et documentation
    [1] La page du projet AMD64 Gentoo
    un thread de la section amd64

    Toute remarque / amélioration est la bienvenue :)


EDIT: correction d'erreurs


Last edited by marvin rouge on Thu Mar 24, 2005 7:23 am; edited 1 time in total
Back to top
View user's profile Send private message
kernelsensei
Bodhisattva
Bodhisattva


Joined: 22 Feb 2004
Posts: 5619
Location: Woustviller/Moselle/FRANCE (49.07°N;7.02°E)

PostPosted: Wed Mar 23, 2005 9:37 pm    Post subject: Reply with quote

waaaa cool !!!

Pour ceux qui voudraient du mplayer 32bits, il n'est pas necessaire de faire un chroot, ya un ebuild de mplayer-bin qui traine sur ce forum, mais je ne sais plus ou !

EDIT: retrouve le lien : http://sh.nu/download/ebuilds/mplayer/
_________________
$ ruby -e'puts " .:@BFegiklnorst".unpack("x4ax7aaX6ax5aX15ax4aax6aaX7ax2aX5aX8 \
axaX3ax8aX4ax6aX3aX6ax3ax3aX9ax4ax2aX9axaX6ax3aX2ax4ax3aX4aXaX12ax10aaX7a").join'
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum