View previous topic :: View next topic |
Author |
Message |
marvin rouge Veteran
Joined: 01 Aug 2004 Posts: 1422 Location: Villa Lumierrante, Zonelibre
|
Posted: Wed Mar 23, 2005 9:03 pm Post subject: [HOWTO]chroot 32 bit sur amd64 |
|
|
- 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.
macromedia flash
scanner avec driver proprio
...
Donc, en route pour un chroot 32 bits
- 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:
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.
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 ...
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 |
|
|
kernelsensei Bodhisattva
Joined: 22 Feb 2004 Posts: 5619 Location: Woustviller/Moselle/FRANCE (49.07°N;7.02°E)
|
Posted: Wed Mar 23, 2005 9:37 pm Post subject: |
|
|
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 |
|
|
|
|
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
|
|