64-bit FAQ (Italiano)

From ArchWiki
Revision as of 18:19, 7 December 2011 by Veleno77 (Talk | contribs) (Perché 64 bit?: corretta forma e aggiunti tag wikipedia per maggiori informazioni esterne su ASLR e PIC)

Jump to: navigation, search

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.


Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어


External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

Di seguito è riportato un elenco di domande frequenti su Arch Linux a 64bit. Nel caso di problemi utilizzare la versione "dual" è una scelta consigliata.

Come posso determinare se il mio processore è compatibile con un sistema x86_64?

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 "^flags.*\blm\b" /proc/cpuinfo

Devo utilizzare una versione a 32 o a 64 bit di Arch Linux?

Se il vostro processore è x86_64 compatibile, è necessario utilizzare Arch64 a meno che non si prevede di utilizzare software non supportato. Si noti che la versione Arch32 non supporta più di 3GB di ram fisica senza l'utilizzo di un kernel personalizzato che includa PAE-enabled. Si consiglia di utilizzare Arch64 se il sistema ha più memoria.

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 quasi tutto è stato aggiornato. Potrebbe capitare che la versione x86_64 sia indietro di qualche ora rispetto alla versione i686.

Occasionalmente potrebbe imbattersi in pacchetti su AUR che contengono solo l'architettura 'i686', ma spesso sono in grado di compilare anche sui sistemi a 64-bit, basta aggiungere 'x86_64'.

Perché 64 bit?

È solitamente più veloce (specialmente durante l'encoding audio/video o con applicazioni scientifiche eccetera) ed inoltre è leggermente più sicuro a causa della natura dell'Address space layout randomization (ASLR) e del Position-independent code (PIC). Limitarsi a 32bit e gli svantaggi che vengono con esso ha poco senso di questi tempi a meno che non fatto per una ragione molto buona. Anche i programmatori tendono sempre più a prendersi cura dei sistemi 64bit, in quanto quasi tutte le CPU tradizionali X86 che sono venuti fuori stanno facendo uso del prolungamento a 64 bit.

Per ulteriori dettagli si può consultare la nostra Arch64_ToDoS. Dove potrete trovare una lista di comparazione della versione dei pacchetti 32/64bit..

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 aggiungere le seguenti lineee al proprio /etc/pacman.conf.
[multilib]
Include = /etc/pacman.d/mirrorlist

Attualmente (dicembre 2011) contiene wine e skype. Inoltre è disponibile un compilatore in multilib.

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 rc.local per essere sicuri di ottenere tutto il necessario per le applicazioni a 32-bit (si presuppone che /mnt/arch32 sia montato in 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

Multilib Repository - Multilib_Project

Per utilizzare il repository multilib, editare il proprio /etc/pacman.conf e aggiungere quanto segue:

[multilib]
Include = /etc/pacman.d/mirrorlist

Aggiornare i database

# pacman -Sy

E installare gcc-multilib e le sue dipendenze

# pacman -S gcc-multilib gcc-libs-multilib binutils-multilib libtool-multilib lib32-glibc
Nota: Se nel sistema è installato il pacchetto base-devel, gli utenti devono sostituire le versioni [extra] con le versioni presenti in [multilib], come mostrato in seguito.
Nota: gcc-multilib è in grado di costruire codice a 32bit e 64bit. Si può tranquillamente installare multilib-devel e rimuovere la base-devel su x86_64. Vedere https://bbs.archlinux.org/viewtopic.php?id=102828 per ulteriori informazioni.
# pacman -S gcc-multilib gcc-libs-multilib binutils-multilib libtool-multilib lib32-glibc
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 al file ~/.makepkg.conf.

CARCH="i686"
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=i686 -O2 -pipe -m32"
CXXFLAGS="${CFLAGS}"

E successivamente invocare makepkg come segue:

$ linux32 makepkg -src

Si ricordi di rimuovere o modificare il file ~/.makepkg.conf quando la compilazione del pacchetto i686 è terminata!

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?

Sì. Sul forum è stata creata una discussione 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.