Difference between revisions of "64-bit FAQ (Italiano)"
m (aggiunto template internazionale) |
|||
(42 intermediate revisions by 13 users not shown) | |||
Line 1: | Line 1: | ||
[[Category:Arch64 (Italiano)]] | [[Category:Arch64 (Italiano)]] | ||
− | [[ | + | [[ar:Arch64 FAQ]] |
+ | [[cs:Arch64 FAQ]] | ||
+ | [[de:Arch64 FAQ]] | ||
+ | [[el:Arch64 FAQ]] | ||
+ | [[en:Arch64 FAQ]] | ||
+ | [[es:Arch64 FAQ]] | ||
+ | [[ja:Arch64 FAQ]] | ||
+ | [[ru:Arch64 FAQ]] | ||
+ | [[sr:Arch64 FAQ]] | ||
+ | [[uk:Arch64 FAQ]] | ||
+ | [[zh-CN:Arch64 FAQ]] | ||
+ | Di seguito è riportato un elenco di domande frequenti su Arch Linux a 64-bit. | ||
− | + | ==Come posso determinare se il mio processore è compatibile con un sistema x86_64?== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | === Untenti Linux === | |
+ | |||
+ | Lanciare il seguente comando: | ||
+ | |||
+ | $ less /proc/cpuinfo | ||
+ | |||
+ | Controllare la voce {{ic|flags}}. Se tra le varie voci è presente {{ic|lm}}, allora il vostro processore è x86_64 compatibile. | ||
+ | |||
+ | In alternativa potete eseguire questo comando: | ||
+ | |||
+ | $ grep -q "^flags.*\blm\b" /proc/cpuinfo && echo "x86_64" || echo "not x86_64" | ||
+ | |||
+ | === Untenti Windows === | ||
+ | |||
+ | Utilizzando il programma gratuito [http://www.cpuid.com/cpuz.php CPU-Z] è possibile determinare se il vostra CPU sia un processore 64-bit compatibile. | ||
+ | I processori AMD con set di istruzioni "AMD64" o le soluzioni Intel "EM64T" risultano compatibili con la versione x86_64 e i relativi pacchetti binari. | ||
+ | |||
+ | ==Devo utilizzare una versione a 32-bit o a 64-bit di Arch Linux?== | ||
+ | |||
+ | Se il vostro processore è [[wikipedia:it:X86-64|x86_64]] compatibile è necessario considerare l'utilizzo di Arch64. | ||
==Come faccio a installare Arch64?== | ==Come faccio a installare Arch64?== | ||
− | |||
− | ==A che punto è il | + | Basta utilizzare il nostro [https://www.archlinux.org/download/ CD di installazione ufficiale]. |
− | I repository | + | |
+ | ==A che punto è il trasferimento del software?== | ||
+ | |||
+ | Arch64 è pronto per l'uso quotidiano in un ambiente desktop o server. | ||
+ | |||
+ | ==Avrò tutti i pacchetti della mia versione 32-bit di Arch che sono abituato ad utilizzare?== | ||
+ | |||
+ | I repository sono tutti stati migrati e praticamente tutto dovrebbe funzionare come previsto. | ||
− | + | Raramente un vecchio pacchetto presente in [[AUR (Italiano)|AUR]] potrebbe contenere solo l'architettura {{ic|'i686'}}, ma spesso è in grado di essere compilato sui sistemi a 64-bit, basta aggiungere {{ic|'x86_64'}}. | |
− | ==64 bit | + | ==Perché 64-bit?== |
− | |||
− | |||
− | + | È solitamente più veloce nella maggior parte delle ciscostanze ed inoltre è leggermente più sicuro a causa della natura dell'[[wikipedia:it:ASLR|Address space layout randomization (ASLR)]] in combinazione con [[wikipedia:Position-independent code| Position-independent code (PIC)]] e [[wikipedia:it:NX Bit | NX Bit]] che non è disponibile nel kernel i686 a causa di disabilità PAE. Se nel vostro computer sono presenti 4GB di RAM o più utilizzabile, dovreste seriamente considerare l'utilizzo della versione a 64-bit, poichè il quantitativo di RAM superiore ai 3GB non verrà utilizzato da un sistema operativo a 32-bit. | |
− | + | Anche i programmatori tendono sempre meno ad interessarsi all'architettura 32-bit ("legacy"), così come le "nuove" CPU x86 di solito supportano le estensioni a 64-bit. | |
− | + | Ci sono molti altri motivi che potremmo elencare qui per dirvi di evitare 32-bit, ma tra kernel, ambiente userspace e programmi individuali, risulta impraticabile elencare ogni cosa che un sistema a 64-bit fa molto meglio. | |
− | + | Per ulteriori dettagli si può consultare il nostro [https://www.archlinux.org/packages/differences/ report delle differenze]. Dove potrete trovare una lista di comparazione della versione dei pacchetti 32/64-bit. | |
− | == | + | ==Come faccio a segnalare un bug?== |
− | |||
− | + | Semplicemente utilizzando Arch's [https://bugs.archlinux.org/ Flyspray], ma selezionate {{ic|x86_64}} nel campo dell'architettura se pensate che sia un problema relativo al port del programma. | |
− | |||
− | == | + | ==Quali repository dovrei utilizzare per pacman?== |
− | + | Tutti i repository sono supportati per la versione 64-bit. | |
− | == | + | ==Come posso modificare i PKGBUILD per usarli con Arch64?== |
− | + | Aggiungere ad ogni pacchetto la variabile: | |
− | = | + | arch=('i686' ''''x86_64'''') |
− | |||
− | + | Aggiungete piccole patch direttamente ai sorgenti e all'area md5 ma usate sorgenti completamente differenti rispetto a quelle per i686: | |
− | |||
− | |||
− | |||
− | |||
− | |||
[ "$CARCH" = "x86_64" ] && source=(${source[@]} 'other source') | [ "$CARCH" = "x86_64" ] && source=(${source[@]} 'other source') | ||
[ "$CARCH" = "x86_64" ] && md5sums=(${md5sums[@]} 'other md5sum') | [ "$CARCH" = "x86_64" ] && md5sums=(${md5sums[@]} 'other md5sum') | ||
− | + | ||
− | [ "$CARCH" = "x86_64" ] && (patch -Np0 -i ../foo_x86_64.patch | + | Per qualsiasi piccolo fix, usate questo nella sezione 'build': |
− | + | ||
+ | [ "$CARCH" = "x86_64" ] && (patch -Np0 -i ../foo_x86_64.patch) | ||
+ | |||
+ | O quando avete bisogno di più cambiamenti: | ||
+ | |||
if [ "$CARCH" = "x86_64" ]; then | if [ "$CARCH" = "x86_64" ]; then | ||
configure/patch/sed # for x86_64 | configure/patch/sed # for x86_64 | ||
else configure/patch/sed # for i686 | else configure/patch/sed # for i686 | ||
fi | fi | ||
− | |||
− | |||
− | |||
− | == | + | ==Cosa mi mancherà in Arch64?== |
− | |||
− | + | Niente. Quasi tutte le applicazioni supportano 64-bit per ora o sono nella fase di transizione per diventare a 64-bit compatibile. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | Il problema più grande sono i pacchetti che sono '''closed source''' o contiene x86 specifico assembly che è ingombrante per essere trasposto a 64-bit (tipico per gli emulatori). | ||
− | + | Alcune applicazioni erano problematiche, ma sono ora disponibili su [[AUR (Italiano)|AUR]] e funzionano bene: | |
− | + | * Acrobat Reader non è disponibile in 64-bit, ma è possibile eseguire la versione a 32-bit in modalità compatibile. Ci sono anche molte altre alternative open source che si possono utilizzare per leggere i file PDF. | |
− | + | Tutto il resto dovrebbe funzionare perfettamente bene. Se vi dovesse mancare un pacchetto Arch32 nel nostro repository e si sa che si può compilare su x86_64 (forse l'avete trovato come pacchetti nativi in un altra distribuzione a 64-bit), basta contattare gli sviluppatori o richiedere un nuovo pacchetto nel forum. | |
− | + | ==Posso eseguire applicazioni 32-bit all'interno di Arch64?== | |
− | + | ||
− | + | Certamente. | |
− | + | ||
− | + | * Potete installare le librerie {{ic|1= lib32-*}} dal repsository {{ic|[multilib]}}. Per poter usare questo repositorio de-commentare le seguenti linee al proprio {{ic|/etc/pacman.conf}}. | |
− | + | ||
− | + | [multilib] | |
+ | SigLevel = PackageRequired | ||
+ | Include = /etc/pacman.d/mirrorlist | ||
+ | |||
+ | Attualmente (dicembre 2011) [multilib] contiene wine e Skype. Inoltre è disponibile un compilatore in multilib. | ||
− | + | * In alternativa potete creare un sistema a 32-bit con chroot (si veda [[Arch64 Install bundled 32bit system]]): | |
− | |||
− | |||
− | + | Avviare il sistema Arch64, aprire un terminale e digitare: | |
− | |||
− | + | $ xhost +local: | |
− | + | $ su | |
+ | # mount /dev/sda1 /mnt/arch32 | ||
+ | # mount --bind /proc /mnt/arch32/proc | ||
+ | # chroot /mnt/arch32 | ||
+ | # su il-proprio-32bit-nomeutente | ||
+ | $ /usr/bin/comando che volete # ad esempio: /opt/mozilla/bin/firefox | ||
− | + | Alcune applicazioni a 32-bit (come OpenOffice) possono richiedere ulteriori binding. Le righe seguenti può essere posizionato in {{ic|/etc/rc.local}} per essere sicuri di ottenere tutto il necessario per le applicazioni a 32-bit (si presuppone che {{ic|/mnt/arch32}} sia montato in {{ic|/etc/fstab}}): | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
mount --bind /dev /mnt/arch32/dev | mount --bind /dev /mnt/arch32/dev | ||
mount --bind /dev/pts /mnt/arch32/dev/pts | mount --bind /dev/pts /mnt/arch32/dev/pts | ||
Line 119: | Line 133: | ||
mount --bind /sys /mnt/arch32/sys | mount --bind /sys /mnt/arch32/sys | ||
mount --bind /tmp /mnt/arch32/tmp | mount --bind /tmp /mnt/arch32/tmp | ||
− | # | + | #commentare la linea successiva se non si vuole utilizzare la cartella home |
mount --bind /home /mnt/arch32/home | mount --bind /home /mnt/arch32/home | ||
− | |||
− | |||
− | |||
− | == | + | Ora è possibile digitare in un terminale: |
− | No. | + | |
+ | $ xhost +localhost | ||
+ | $ sudo chroot /mnt/arch32 su il-proprio-32bit-nomeutente /opt/openoffice/program/soffice | ||
+ | |||
+ | ==Posso compilare un pacchetto 32-bit per architettura i686 all'interno di Arch64?== | ||
+ | |||
+ | Certamente, è possibile utilizzare: | ||
+ | * le versioni multilib dei pacchetti interessati dal repository [multilib] | ||
+ | * una sessione chroot i686 | ||
+ | |||
+ | === Deposito [[Multilib]] === | ||
+ | |||
+ | Per utilizzare il repository [multilib], editare il proprio {{ic|/etc/pacman.conf}} e decommentare quanto segue: | ||
+ | |||
+ | [multilib] | ||
+ | SigLevel = PackageRequired | ||
+ | Include = /etc/pacman.d/mirrorlist | ||
+ | |||
+ | Aggiornare il sistema con {{ic| pacman -Syu}} e installare il pacchetto {{pkg|gcc-multilib}}. | ||
+ | |||
+ | {{nota| | ||
+ | * Se nel sistema è installato il gruppo {{ic|base-devel}}, gli utenti devono sostituire le versioni [extra] con le versioni presenti in [multilib], come mostrato in seguito. | ||
+ | * {{pkg|gcc-multilib}} è in grado di costruire codice a 32-bit e 64-bit. Si può installare {{ic|multilib-devel}} e sostituire i pacchetti indicati qui di seguito, ma {{ic | base-devel}} è ancora necessario per gli altri pacchetti che include. Vedere <nowiki>https://bbs.archlinux.org/viewtopic.php?id=102828</nowiki> per ulteriori informazioni.}} | ||
+ | |||
+ | {{hc|# pacman -S gcc-multilib|2= | ||
+ | resolving dependencies... | ||
+ | warning: dependency cycle detected: | ||
+ | warning: lib32-gcc-libs will be installed before its gcc-libs-multilib dependency | ||
+ | looking for inter-conflicts... | ||
+ | :: gcc-libs-multilib and gcc-libs are in conflict. Remove gcc-libs? [y/N] y | ||
+ | :: binutils-multilib and binutils are in conflict. Remove binutils? [y/N] y | ||
+ | :: gcc-multilib and gcc are in conflict. Remove gcc? [y/N] y | ||
+ | :: libtool-multilib and libtool are in conflict. Remove libtool? [y/N] y | ||
+ | |||
+ | Remove (4): gcc-libs-4.6.1-1 binutils-2.21.1-1 gcc-4.6.1-1 libtool-2.4-4 | ||
+ | |||
+ | Total Removed Size: 87.65 MB | ||
+ | |||
+ | Targets (7): lib32-glibc-2.14-4 lib32-gcc-libs-4.6.1-1 gcc-libs-multilib-4.6.1-1 binutils-multilib-2.21.1-1 | ||
+ | gcc-multilib-4.6.1-1 lib32-libtool-2.4-2 libtool-multilib-2.4-2 | ||
+ | |||
+ | Total Download Size: 25.04 MB | ||
+ | Total Installed Size: 108.27 MB | ||
+ | |||
+ | Proceed with installation? [Y/n] | ||
+ | }} | ||
+ | |||
+ | Compilare un pacchetto su x86_64 per architettura i686 risulta semplice aggiungendo le seguenti linee in un file di configurazione alternativo, ad esempio {{ic|~/.makepkg.i686.conf}}. | ||
+ | |||
+ | CARCH="i686" | ||
+ | CHOST="i686-pc-linux-gnu" | ||
+ | CFLAGS="-m32 -march=i686 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2" | ||
+ | CXXFLAGS="${CFLAGS}" | ||
+ | |||
+ | E successivamente invocare {{ic|makepkg}} come segue: | ||
+ | |||
+ | $ linux32 makepkg -src --config ~/.makepkg.i686.conf | ||
+ | |||
+ | ===Chroot=== | ||
+ | {{out of date|In questa sezione è menzionato il pacchetto "linux32" che non esiste più.}} | ||
+ | |||
+ | Per utilizzare un chroot i686 (Un modo veloce e raccomandato è quello di effettuare una installazione con una iso i686 "QuickInstall" all'interno Arch64 o vedere [[Arch64 Install bundled 32bit system]]), installare il corrente pacchetto "linux32" per il wrapper per fare il chroot e si comporterà come un vero e proprio sistema i686. Quindi utilizzare questo script per il login nell'ambiente chroot come root: | ||
+ | |||
+ | #!/bin/bash | ||
+ | mount --bind /dev /path-to-your-chroot/dev | ||
+ | mount --bind /dev/pts /path-to-your-chroot/dev/pts | ||
+ | mount --bind /dev/shm /path-to-your-chroot/dev/shm | ||
+ | mount -t proc none /path-to-your-chroot/proc | ||
+ | mount -t sysfs none /path-to-your-chroot/sys | ||
+ | linux32 chroot /path-to-your-chroot | ||
+ | |||
+ | Se si mantengono i sorgenti sul sistema host x86_64 si può aggiungere | ||
+ | |||
+ | mount --bind /percorso-dei-sorgenti-d'origine /percorso-del-chroot/percorso-dei-sorgenti-di-destinazione | ||
+ | |||
+ | per poter condividere i sorgenti dal sistema host al sistema chroot per poter compilare i pacchetti utilizzando {{ic|/etc/makepkg.conf}}. | ||
+ | |||
+ | ==Posso aggiornare/migrare il mio sistema da i686 a x86_64 senza reinstallare?== | ||
+ | |||
+ | No. In senso stretto alcun tipo di migrazione implica che tutti i pacchetti o quasi tutti i pacchetti devono essere reinstallati per l'architettura più recente. Tuttavia, è possibile spostare il sistema senza eseguire una nuova installazione, anche all'interno dell'installazione corrente . Una [https://bbs.archlinux.org/viewtopic.php?id=64485 discussione] sul forum è stata creata e che delinea misure adottate per migrare con successo un'installazione 32/64-bit, senza perdere alcun file di configurazione/impostazioni/dati. Nota: un grande disco esterno è stato utilizzato per il trasferimento. | ||
+ | |||
+ | Tuttavia, è anche possibile avviare il sistema con l'installazione Arch64 CD, montare il disco, è consigliato effettuare un backup di qualsiasi cosa che non sia un binario a 32-bit (ad esempio: {{ic|/home}} e {{ic|/etc}}), e installare. | ||
+ | |||
+ | Si consiglia inoltre di leggere [[Migrating Between Architectures Without Reinstalling |Migrazione tra architetture senza dover reinstallare]]. |
Revision as of 10:43, 28 July 2013
zh-CN:Arch64 FAQ Di seguito è riportato un elenco di domande frequenti su Arch Linux a 64-bit.
Contents
- 1 Come posso determinare se il mio processore è compatibile con un sistema x86_64?
- 2 Devo utilizzare una versione a 32-bit o a 64-bit di Arch Linux?
- 3 Come faccio a installare Arch64?
- 4 A che punto è il trasferimento del software?
- 5 Avrò tutti i pacchetti della mia versione 32-bit di Arch che sono abituato ad utilizzare?
- 6 Perché 64-bit?
- 7 Come faccio a segnalare un bug?
- 8 Quali repository dovrei utilizzare per pacman?
- 9 Come posso modificare i PKGBUILD per usarli con Arch64?
- 10 Cosa mi mancherà in Arch64?
- 11 Posso eseguire applicazioni 32-bit all'interno di Arch64?
- 12 Posso compilare un pacchetto 32-bit per architettura i686 all'interno di Arch64?
- 13 Posso aggiornare/migrare il mio sistema da i686 a x86_64 senza reinstallare?
Come posso determinare se il mio processore è compatibile con un sistema x86_64?
Untenti Linux
Lanciare il seguente comando:
$ less /proc/cpuinfo
Controllare la voce flags
. Se tra le varie voci è presente lm
, allora il vostro processore è x86_64 compatibile.
In alternativa potete eseguire questo comando:
$ grep -q "^flags.*\blm\b" /proc/cpuinfo && echo "x86_64" || echo "not x86_64"
Untenti Windows
Utilizzando il programma gratuito CPU-Z è possibile determinare se il vostra CPU sia un processore 64-bit compatibile. I processori AMD con set di istruzioni "AMD64" o le soluzioni Intel "EM64T" risultano compatibili con la versione x86_64 e i relativi pacchetti binari.
Devo utilizzare una versione a 32-bit o a 64-bit di Arch Linux?
Se il vostro processore è x86_64 compatibile è necessario considerare l'utilizzo di Arch64.
Come faccio a installare Arch64?
Basta utilizzare il nostro CD di installazione ufficiale.
A che punto è il trasferimento del software?
Arch64 è pronto per l'uso quotidiano in un ambiente desktop o server.
Avrò tutti i pacchetti della mia versione 32-bit di Arch che sono abituato ad utilizzare?
I repository sono tutti stati migrati e praticamente tutto dovrebbe funzionare come previsto.
Raramente un vecchio pacchetto presente in AUR potrebbe contenere solo l'architettura 'i686'
, ma spesso è in grado di essere compilato sui sistemi a 64-bit, basta aggiungere 'x86_64'
.
Perché 64-bit?
È solitamente più veloce nella maggior parte delle ciscostanze ed inoltre è leggermente più sicuro a causa della natura dell'Address space layout randomization (ASLR) in combinazione con Position-independent code (PIC) e NX Bit che non è disponibile nel kernel i686 a causa di disabilità PAE. Se nel vostro computer sono presenti 4GB di RAM o più utilizzabile, dovreste seriamente considerare l'utilizzo della versione a 64-bit, poichè il quantitativo di RAM superiore ai 3GB non verrà utilizzato da un sistema operativo a 32-bit.
Anche i programmatori tendono sempre meno ad interessarsi all'architettura 32-bit ("legacy"), così come le "nuove" CPU x86 di solito supportano le estensioni a 64-bit.
Ci sono molti altri motivi che potremmo elencare qui per dirvi di evitare 32-bit, ma tra kernel, ambiente userspace e programmi individuali, risulta impraticabile elencare ogni cosa che un sistema a 64-bit fa molto meglio.
Per ulteriori dettagli si può consultare il nostro report delle differenze. Dove potrete trovare una lista di comparazione della versione dei pacchetti 32/64-bit.
Come faccio a segnalare un bug?
Semplicemente utilizzando Arch's Flyspray, ma selezionate x86_64
nel campo dell'architettura se pensate che sia un problema relativo al port del programma.
Quali repository dovrei utilizzare per pacman?
Tutti i repository sono supportati per la versione 64-bit.
Come posso modificare i PKGBUILD per usarli con Arch64?
Aggiungere ad ogni pacchetto la variabile:
arch=('i686' 'x86_64')
Aggiungete piccole patch direttamente ai sorgenti e all'area md5 ma usate sorgenti completamente differenti rispetto a quelle per i686:
[ "$CARCH" = "x86_64" ] && source=(${source[@]} 'other source') [ "$CARCH" = "x86_64" ] && md5sums=(${md5sums[@]} 'other md5sum')
Per qualsiasi piccolo fix, usate questo nella sezione 'build':
[ "$CARCH" = "x86_64" ] && (patch -Np0 -i ../foo_x86_64.patch)
O quando avete bisogno di più cambiamenti:
if [ "$CARCH" = "x86_64" ]; then configure/patch/sed # for x86_64 else configure/patch/sed # for i686 fi
Cosa mi mancherà in Arch64?
Niente. Quasi tutte le applicazioni supportano 64-bit per ora o sono nella fase di transizione per diventare a 64-bit compatibile.
Il problema più grande sono i pacchetti che sono closed source o contiene x86 specifico assembly che è ingombrante per essere trasposto a 64-bit (tipico per gli emulatori).
Alcune applicazioni erano problematiche, ma sono ora disponibili su AUR e funzionano bene:
- Acrobat Reader non è disponibile in 64-bit, ma è possibile eseguire la versione a 32-bit in modalità compatibile. Ci sono anche molte altre alternative open source che si possono utilizzare per leggere i file PDF.
Tutto il resto dovrebbe funzionare perfettamente bene. Se vi dovesse mancare un pacchetto Arch32 nel nostro repository e si sa che si può compilare su x86_64 (forse l'avete trovato come pacchetti nativi in un altra distribuzione a 64-bit), basta contattare gli sviluppatori o richiedere un nuovo pacchetto nel forum.
Posso eseguire applicazioni 32-bit all'interno di Arch64?
Certamente.
- Potete installare le librerie
lib32-*
dal repsository[multilib]
. Per poter usare questo repositorio de-commentare le seguenti linee al proprio/etc/pacman.conf
.
[multilib] SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist
Attualmente (dicembre 2011) [multilib] contiene wine e Skype. Inoltre è disponibile un compilatore in multilib.
- In alternativa potete creare un sistema a 32-bit con chroot (si veda Arch64 Install bundled 32bit system):
Avviare il sistema Arch64, aprire un terminale e digitare:
$ xhost +local: $ su # mount /dev/sda1 /mnt/arch32 # mount --bind /proc /mnt/arch32/proc # chroot /mnt/arch32 # su il-proprio-32bit-nomeutente $ /usr/bin/comando che volete # ad esempio: /opt/mozilla/bin/firefox
Alcune applicazioni a 32-bit (come OpenOffice) possono richiedere ulteriori binding. Le righe seguenti può essere posizionato in /etc/rc.local
per essere sicuri di ottenere tutto il necessario per le applicazioni a 32-bit (si presuppone che /mnt/arch32
sia montato in /etc/fstab
):
mount --bind /dev /mnt/arch32/dev mount --bind /dev/pts /mnt/arch32/dev/pts mount --bind /dev/shm /mnt/arch32/dev/shm mount --bind /proc /mnt/arch32/proc mount --bind /proc/bus/usb /mnt/arch32/proc/bus/usb mount --bind /sys /mnt/arch32/sys mount --bind /tmp /mnt/arch32/tmp #commentare la linea successiva se non si vuole utilizzare la cartella home mount --bind /home /mnt/arch32/home
Ora è possibile digitare in un terminale:
$ xhost +localhost $ sudo chroot /mnt/arch32 su il-proprio-32bit-nomeutente /opt/openoffice/program/soffice
Posso compilare un pacchetto 32-bit per architettura i686 all'interno di Arch64?
Certamente, è possibile utilizzare:
- le versioni multilib dei pacchetti interessati dal repository [multilib]
- una sessione chroot i686
Deposito Multilib
Per utilizzare il repository [multilib], editare il proprio /etc/pacman.conf
e decommentare quanto segue:
[multilib] SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist
Aggiornare il sistema con pacman -Syu
e installare il pacchetto gcc-multilib.
- Se nel sistema è installato il gruppo
base-devel
, gli utenti devono sostituire le versioni [extra] con le versioni presenti in [multilib], come mostrato in seguito. - gcc-multilib è in grado di costruire codice a 32-bit e 64-bit. Si può installare
multilib-devel
e sostituire i pacchetti indicati qui di seguito, mabase-devel
è ancora necessario per gli altri pacchetti che include. Vedere https://bbs.archlinux.org/viewtopic.php?id=102828 per ulteriori informazioni.
# pacman -S gcc-multilib
resolving dependencies... warning: dependency cycle detected: warning: lib32-gcc-libs will be installed before its gcc-libs-multilib dependency looking for inter-conflicts... :: gcc-libs-multilib and gcc-libs are in conflict. Remove gcc-libs? [y/N] y :: binutils-multilib and binutils are in conflict. Remove binutils? [y/N] y :: gcc-multilib and gcc are in conflict. Remove gcc? [y/N] y :: libtool-multilib and libtool are in conflict. Remove libtool? [y/N] y Remove (4): gcc-libs-4.6.1-1 binutils-2.21.1-1 gcc-4.6.1-1 libtool-2.4-4 Total Removed Size: 87.65 MB Targets (7): lib32-glibc-2.14-4 lib32-gcc-libs-4.6.1-1 gcc-libs-multilib-4.6.1-1 binutils-multilib-2.21.1-1 gcc-multilib-4.6.1-1 lib32-libtool-2.4-2 libtool-multilib-2.4-2 Total Download Size: 25.04 MB Total Installed Size: 108.27 MB Proceed with installation? [Y/n]
Compilare un pacchetto su x86_64 per architettura i686 risulta semplice aggiungendo le seguenti linee in un file di configurazione alternativo, ad esempio ~/.makepkg.i686.conf
.
CARCH="i686" CHOST="i686-pc-linux-gnu" CFLAGS="-m32 -march=i686 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2" CXXFLAGS="${CFLAGS}"
E successivamente invocare makepkg
come segue:
$ linux32 makepkg -src --config ~/.makepkg.i686.conf
Chroot
Per utilizzare un chroot i686 (Un modo veloce e raccomandato è quello di effettuare una installazione con una iso i686 "QuickInstall" all'interno Arch64 o vedere Arch64 Install bundled 32bit system), installare il corrente pacchetto "linux32" per il wrapper per fare il chroot e si comporterà come un vero e proprio sistema i686. Quindi utilizzare questo script per il login nell'ambiente chroot come root:
#!/bin/bash mount --bind /dev /path-to-your-chroot/dev mount --bind /dev/pts /path-to-your-chroot/dev/pts mount --bind /dev/shm /path-to-your-chroot/dev/shm mount -t proc none /path-to-your-chroot/proc mount -t sysfs none /path-to-your-chroot/sys linux32 chroot /path-to-your-chroot
Se si mantengono i sorgenti sul sistema host x86_64 si può aggiungere
mount --bind /percorso-dei-sorgenti-d'origine /percorso-del-chroot/percorso-dei-sorgenti-di-destinazione
per poter condividere i sorgenti dal sistema host al sistema chroot per poter compilare i pacchetti utilizzando /etc/makepkg.conf
.
Posso aggiornare/migrare il mio sistema da i686 a x86_64 senza reinstallare?
No. In senso stretto alcun tipo di migrazione implica che tutti i pacchetti o quasi tutti i pacchetti devono essere reinstallati per l'architettura più recente. Tuttavia, è possibile spostare il sistema senza eseguire una nuova installazione, anche all'interno dell'installazione corrente . Una discussione sul forum è stata creata e che delinea misure adottate per migrare con successo un'installazione 32/64-bit, senza perdere alcun file di configurazione/impostazioni/dati. Nota: un grande disco esterno è stato utilizzato per il trasferimento.
Tuttavia, è anche possibile avviare il sistema con l'installazione Arch64 CD, montare il disco, è consigliato effettuare un backup di qualsiasi cosa che non sia un binario a 32-bit (ad esempio: /home
e /etc
), e installare.
Si consiglia inoltre di leggere Migrazione tra architetture senza dover reinstallare.