64-bit FAQ (Українська)
Нижче наведений список запитання що часто задаються про Arch Linux на x86_64 сумісних процесорах.
Contents
- 1 Як мені визначити чи мій процесор сумісний з x86_64?
- 2 Яку версію Arch мені слід використовувати, 32 чи 64?
- 3 Як я можу встановити Arch64?
- 4 Наскільки повноцінний порт?
- 5 Чи будуть доступними всі пакети до яких я звик з мого 32-бітного Arch'у?
- 6 Чому 64-bit?
- 7 Як я можу повідомити про баги?
- 8 Які репозиторії повинен використовувати pacman?
- 9 Як змінити існуючі PKGBUILDи для використанні в Arch64?
- 10 Чого мені не вистачатиме у Arch64?
- 11 Чи зможу я запустити 32-бітні програми на Arch64?
- 12 Чи можна зібрати 32-бітні пакети для i686 в Arch64?
- 13 Чи можу я оновити/змінити мою систему з i686 на x86_64 без перевстановлення?
Як мені визначити чи мій процесор сумісний з x86_64?
Користувачі GNU/Linux
Виконати наступну команду:
$ less /proc/cpuinfo
Шукати значення flags
. Якщо присутній lm
- значить твій процесор x86_64-сумісний.
Або можна просто виконати цю команду:
$ grep -q "^flags.*\blm\b" /proc/cpuinfo && echo "x86_64" || echo "not x86_64"
Користувачі Windows
Використавши безкоштовну програму CPU-Z можна визначити чи твій процесор x86_64 сумісний. Центральні процесори AMD з позначкою "AMD64" або процесори Intel з "EM64T" повинні бути сумісними з x86_64 випусками і бінарними пакетами.
Яку версію Arch мені слід використовувати, 32 чи 64?
Якщо твій процесор x86_64-сумісний, слід використовувати Arch64.
Як я можу встановити Arch64?
Просто використай наші офіційні інсталяційні образи дисків.
Наскільки повноцінний порт?
Порт готовий для щоденного використання на домашніх або серверних комп'ютерах.
Чи будуть доступними всі пакети до яких я звик з мого 32-бітного Arch'у?
Репозиторії повністю портовані і все повинно працювати як очікується.
Рідко зустрічаються старі пакунки з AUR які описані тільки як 'i686'
, але зазвичай вони працюють і для 64-бітних систем також. Просто спробуй додати 'x86_64'
.
Чому 64-bit?
У більшості випадків він швидший і по суті безпечніший завдяки природі Address space layout randomization (ASLR) в комбінації з Position-independent code (PIC) і NX Bit які не є доступними в ядрі i686 через відключене PAE. Якщо твій комп'ютер має 4 ГБ або більше оперативної пам'яті, рекомендується використовувати 64-бітний випуск оскільки 32-бітні операційні системи не можуть розпізнати будь-яку додаткову оперативну пам'ять. Більше деталей можна дізнатись у наших звітах відмінностей. Це список в якому наведено порівняння версій 32-/64-бітних пакетів.
Як я можу повідомити про баги?
Просто використовуй Flyspray але вибирай x86_64 в полі "Architecture" якщо ти думає що ця проблема має відношення до портування.
Які репозиторії повинен використовувати pacman?
Всі репозиторії підтримуються портом.
Як змінити існуючі PKGBUILDи для використанні в Arch64?
Додати наступну змінну до всіх портованих пакетів:
arch=('i686' 'x86_64')
Внести зміни прямо у секції що відповідають за вихідний код і md5-суми і використати інший вихідний код:
[ "$CARCH" = "x86_64" ] && source=(${source[@]} 'other source') [ "$CARCH" = "x86_64" ] && md5sums=(${md5sums[@]} 'other md5sum')
Для невеликих змін внеси в секцію build:
[ "$CARCH" = "x86_64" ] && (patch -Np0 -i ../foo_x86_64.patch)
Або коли потрібно більше змін:
if [ "$CARCH" = "x86_64" ]; then configure/patch/sed # for x86_64 else configure/patch/sed # for i686 fi
Чого мені не вистачатиме у Arch64?
Нічого, справді. Практично всі програми зараз підтримують 64-bit або перебувають у стадії розробки сумісності з 64-bit.
Найбільшою проблемою є або пакети з закритим вихідним кодом або які мають x86-специфічну структуру, яка надто громіздка для портування на 64-bit (типово для емуляторів).
Ці програми раніше були проблематичними, проте зараз доступні в AUR і чудово працюють:
- Acrobat Reader не має 64-бітної версії, але можна запустити 32-бітну в режимі сумісності. Також існує багато альтернативних програм з відкритим вихідним кодом для перегляду pdf-файлів.
Все інше повинно працювати цілком нормально. Якщо бракує якогось Arch32-пакету в нашому порті і тобі відомо що він компілюється на x86_64 (наприклад ти знайшов цей пакет у іншому 64-bit дистрибутиві), просто зв'яжись з розробниками або зроби запит про новий пакет на форумах.
Чи зможу я запустити 32-бітні програми на Arch64?
Так!
- Можна встановити
lib32-*
бібліотеки з [multilib] репозиторію. Щоб використовувати цей репозиторій, потрібно додати наступні рядки до/etc/pacman.conf
:
[multilib] SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist
Зараз (Грудень 2011), [multilib] включає Wine і Skype. Крім того, там знаходиться мультибібліотечний компілятор gcc-multilib.
- Або можна створити інший chroot з 32-бітною системою (детальніше в Arch64 Install bundled 32bit system):
Завантажитись в Arch64, запустити Xorg(команда startx), відкрити термінал.
$ xhost +local: $ su # mount /dev/sda1 /mnt/arch32 # mount --bind /proc /mnt/arch32/proc # chroot /mnt/arch32 # su ім'я_32_бітного_користувача $ /usr/bin/command-you want # or eg: /opt/mozilla/bin/firefox
Деякі 32-бітні програми (наприклад OpenOffice) можуть вимагати додаткових звязків. Наступні рядки потрібно додати в /etc/rc.local
щоб забезпечити все що потрібно 32-бітним програмам (припускається що /mnt/arch32
монтується в /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 #закоментувати наступний рядок якщо не використовується спільний домашній каталог mount --bind /home /mnt/arch32/home
Потім можна набрати в терміналі:
$ xhost +localhost $ sudo chroot /mnt/arch32 su ім'я_32_бітного_користувача /opt/openoffice/program/soffice
Чи можна зібрати 32-бітні пакети для i686 в Arch64?
Так. Можна використати:
- multilib-верісії відповідних пакунків з репозиторію [multilib] або
- i686 chroot.
Репозиторій multilib - Multilib Project
Щоб використовувати [multilib] репозиторій, потрібно внести зміни в /etc/pacman.conf
і розкоментувати наступні рядки:
[multilib] SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist
оновити систему pacman -Syu
і встановити пакет gcc-multilib.
# 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]
Компіляція пакетів на x86_64 для i686 вимагає лише заміни наступних значень у файлі (наприклад ~/.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}"
і виклику makepkg наступною командою:
$ linux32 makepkg -src --config ~/.makepkg.i686.conf
Чи можу я оновити/змінити мою систему з i686 на x86_64 без перевстановлення?
Так. Існує стаття на форумі в якій покроково описується процес необхідний для успішної міграції встановленої 32-бітної системи на 64-бітну без втрати конфігураційних файлів/налаштувань/інформації. Зауважте: Великий зовнішній жорсткий диск був використаний для перенесення.
Однак, можна запустити Arch64 з інсталяційного диску, змонтувати диск, зберегти все що необхідно і не є 32-бітним бінарним пакетом (наприклад: /home
& /etc
), і встановити систему.
Також може знадобитись Migrating Between Architectures Without Reinstalling.