Как я могу переключить 32-разрядную установку на 64-разрядной?

У меня есть 32-разрядная установка Ubuntu, работающая на 64-разрядных аппаратных средствах. Теперь, когда мультидуга была реализована, я хотел бы переключиться на 64-разрядный, не имея необходимость переустанавливать ОС.

Это - одна из пользовательских историй, обращенных спецификацией:

Shawn установил свою систему с помощью 32-разрядной версии Ubuntu, но его аппаратные средства являются 64-разрядными, и он хочет переключиться. Он вручную устанавливает amd64 версии dpkg и склонный, заменяя i386 версии и изменяясь, какая архитектура используется в качестве значения по умолчанию; затем он устанавливает amd64 минимальный человечностью пакет; затем он устанавливает amd64 настольный человечностью пакет. Со временем остающиеся i386 пакеты заменяются автоматически на обновлении.

Однако при попытке следовать инструкциям там, я не могу найти 64-разрядную версию dpkg или склонный.

Эта пользовательская история была реализована по-другому в заключительной спецификации, или я должен сделать что-то по-другому?

Короче говоря, как я могу переключить свою 32-разрядную установку на 64-разрядном?

57
задан 2 December 2013 в 08:01

10 ответов

Такой подход вряд ли когда-либо будет очень сложным. в результате все ваши пакеты будут иметь версию amd64 вместо версии i386 . Только пакеты, которые действительно получают обновления, вероятно, будут изменены в архитектуре, и, вероятно, только в том случае, если никакие другие пакеты, которые не обновляются, не полагаются на свою архитектуру i386 . Поскольку некоторые пакеты не будут получать никаких обновлений на протяжении всего цикла поддержки вашего выпуска Ubuntu, вы, вероятно, никогда не получите полностью amd64 систему, использующую такой метод. Более того, такой подход, безусловно, не имеет официальной поддержки.

Вам было бы целесообразно вместо этого заменить существующую систему Ubuntu на новую,64-разрядная установка.

Однако, если вы все же хотите попробовать этот метод, вам придется вручную загрузить файлы .deb для dpkg и APT . Вы можете найти их на страницах dpkg в Ubuntu и apt в Ubuntu на Launchpad - разверните последнюю версию в разделе «Оцелот Oneiric», который отмечен как выпуск, безопасность и / или обновления (но вам, вероятно, не нужна версия, помеченная только как предлагаемая и / или резервные, если она когда-либо существует). Затем загрузите файлы .deb с пометкой amd64 . В частности, вам понадобятся следующие файлы: этот для dpkg (и другие перечисленные также, если у вас установлены эти пакеты) и this и this и this и this и this для apt .

Прежде чем что-либо делать с этими файлами, вы должны обязательно сделайте резервную копию всех важных документов в вашей установленной системе Ubuntu и любых других важных файлов (например, музыки, электронных книг, видео), потому что весьма вероятно, что попытка этой техники приведет к обратным результатам и оставит вашу систему Ubuntu полностью непригодной для использования.

Вы можете установить все эти пакеты, поместив их в папку, в которой больше ничего не содержится (предположим, что папка называется debs и находится внутри вашего каталога Downloads ), а затем запустив следующую команду:

sudo dpkg -Ri ~/Downloads/debs

Конечно, после того, как вы их установили, они не будут запускаться, потому что их исполняемые файлы 64-битные. а ваша 32-разрядная система Ubuntu работает под управлением 32-разрядного ядра (которое будет запускать только 32-разрядные исполняемые файлы). Фактически, они могут даже не завершить установку, поскольку у них могут быть сценарии после установки, которые вызывают их невыполнимые 64-разрядные исполняемые файлы.

Существуют различные способы попытки установить 64-разрядное ядро ​​в 32-разрядную систему, но все они чрезвычайно сложны, поэтому вместо этого я рекомендую вам загрузиться с 64-битного Live CD Oneiric (который сам работает с 64-битным ядром), chroot в установленную систему Ubuntu и использовать недавно установил 64-битные apt и dpkg для установки 64-битного ядра.

Вот конкретные инструкции для этого ... но, пожалуйста, не воспринимайте это как то, что я Я говорю, что это сработает. Я не пробовал этого. (Я подключился к установленным системам Ubuntu с live CD и выполнил управление пакетами и другие операции, но я не пытался использовать предложенные здесь кросс-архитектурные операции.)

  1. В вашей установленной системе Ubuntu откройте окно терминала ( Ctrl + Alt + T ) и запустите mount | grep 'on /' (вставив его в Терминал и нажав Enter). Вы должны увидеть что-то вроде / dev / sda2 на / type ext4 (rw, errors = remount-ro, commit = 0) . Вас интересует имя устройства перед на (в этом примере это / dev / sda2 ). Запомните это или запишите.

  2. Шаг 1 дал вам имя устройства раздела / . Если у вас есть отдельный раздел / boot , вам также необходимо знать имя устройства для него. В этом случае запустите mount | grep 'на / boot' . Вы увидите что-то вроде / dev / sda1 на / boot type ext2 (rw) . Запомните или запишите это также.

  3. Загрузитесь с Live CD Oneiric amd64 (т. Е. 64-разрядной версии) и выберите «Попробовать Ubuntu», а не «Установить Ubuntu».

  4. Зайдите в веб-браузер и убедитесь, что Подключение к Интернету полностью функционально. Если это не так, настройте его.

  5. Откройте окно терминала и запустите sudo mount / dev / sda2 / mnt (замените / dev / sda2 на имя устройства, которое вы получил на шаге 1, если отличается).

  6. Если в вашей установленной системе есть отдельный раздел / boot , запустите sudo mount / dev / sda1 / mnt / boot (замените ] / dev / sda1 с именем устройства, которое вы получили на шаге 2, если оно другое).

  7. Теперь запустите эти команды для chroot в вашей установленной системе:

     sudo mount --bind / dev / mnt /  разработчик
    sudo chroot / mnt
    mount -t proc none / proc
    монтировать -t sysfs none / sys
    монтировать -t devpts нет / dev / pts
     
  8. Запустите ping -c 4 launchpad.net , чтобы проверить, полностью ли работает подключение к Интернету из chroot. Вы надеетесь на что-то вроде этого:

     PING launchpad.net (91.189.89.223) 56 (84) байтов данных.
    64 байта с launchpad-net.banana.canonical.com (91.189.89.223): icmp_req = 1 ttl = 41 time = 141 мс
    64 байта с launchpad-net.banana.canonical.com (91.189.89.223): icmp_req = 2 ttl = 41 time = 143 мс
    64 байта с launchpad-net.banana.canonical.com (91.189.89.223): icmp_req = 3 ttl = 41 time = 142 мс
    64 байта с launchpad-net.banana.canonical.com (91.189.89.223): icmp_req = 4 ttl = 41 time = 140 мс
    
     --- панель запуска.чистая статистика пинга ---
    4 пакета переданы, 4 получены, потеря пакетов 0%, время 3003 мс
     
  9. Если вместо этого вы не смогли передать или получить пакеты, вам придется настроить подключение к Интернету в chroot. Для этого выполните следующие команды (чтобы выйти из chroot, скопируйте соответствующие файлы конфигурации из системы live CD в chroot и повторно введите chroot):

     sudo cp /mnt/etc/resolv.conf / mnt  /etc/resolv.conf.old
    sudo cp / mnt / etc / hosts /mnt/etc/hosts.old
    sudo cp /etc/resolv.conf /mnt/etc/resolv.conf
    sudo cp / etc / hosts / mnt / etc / hosts
     

    Хотя обычно вам следует остановить этот процесс в случае ошибки, не беспокойтесь, если первая и / или вторая из этих четырех команд не сработает, при условии, что конкретный способ, которым он терпит неудачу, заключается в сообщении вам, что /mnt/etc/resolv.conf (или / mnt / etc / hosts ) не существует.

    Снова введите chroot и повторите попытку:

     sudo chroot / mnt
    пинг -c 4 launchpad.net
     
  10. Выполните следующие команды, чтобы полностью подготовить chrooted-среду к использованию:

     export HOME = / root
    экспорт LC_ALL = C
     
  11. Если вы не установили файлы .deb для 64-битных версий dpkg и apt , то сделайте это сейчас. Если вы установили их, но при этом возникли ошибки конфигурации, запустите dpkg --configure -a , чтобы исправить их. (Надеюсь, это сработает ... может быть лучше подождать, чтобы попытаться установить их, пока вы не окажетесь в среде live CD, в случае установки 64-битного dpkg при загрузке в установленную систему оставляет dpkg в непригодном для использования состоянии.)

  12. С установленными 64-разрядными версиями dpkg и apt , предполагая, что они автоматически установят 64-разрядные пакеты , теперь вы можете удалить все 32-битные ядра и установить 64-битное ядро. Чтобы удалить 32-разрядные ядра, выполните dpkg -l | grep linux- . Здесь перечислены установленные пакеты, которые начинаются с linux- . Вас более конкретно интересуют пакеты, которые начинаются как linux-generic , linux-image , linux-server и / или linux-headers. . Удалите эти файлы с помощью apt-get purge ... где ... заменяется разделенным пробелами списком пакетов, которые вы удаляете.

  13. Теперь переустановите удаленные пакеты. (На самом деле, для пакетов, которые содержат номера версий в имени пакета, например, linux-image-3.0.0-13-generic , вам нужно только установить имена пакетов с последней версией.) Сделайте это с помощью выполняется apt-get install ... где ... заменяется списком пакетов, которые вы устанавливаете через пробел.

  14. Обновите конфигурацию загрузчика, отключите некоторые устройства и оставьте chroot:

     update-grub
    umount / proc ||  umount -lf / proc
    umount / sys
    umount / dev / pts
    Выход
    sudo umount mnt / dev
     
  15. Если вы выполнили sudo cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.old и не завершились ошибкой, то теперь запустите sudo cp / mnt / etc /resolv.conf.old /mnt/etc/resolv.conf[11110163 impression.

  16. Если вы выполнили sudo cp / mnt / etc / hosts /mnt/etc/hosts.old, а это не так сбой, то теперь запустите sudo cp /mnt/etc/hosts.old /mnt/etc/hosts .

  17. Если в вашей установленной системе есть отдельный раздел / boot , отключите его : sudo umount / mnt / boot

  18. Отключите раздел / установленной системы: sudo umount / mnt

  19. Покиньте окно терминала (запустите exit ) , затем перезагрузите (или выключите) систему Live CD и загрузитесь в установленную систему.

  20. Проверьте, можно ли использовать систему, и при запуске 64-битного ядра ( uname -m должно быть указано, что архитектура x86_64 ).

Вам вполне могут потребоваться дополнительные пакеты, например ia32_libs [111 09804] и / или 64-битная версия libc6 , чтобы это работало. Некоторые из них могут быть проинформированы о том, что они вам понадобятся при попытке установить 64-разрядную версию dpkg и / или apt . Для других вы можете не быть проинформированы.

(Приведенные выше инструкции по chroot и работе в chrooted среде в значительной степени основаны на этой связанной, но другой процедуре , а также на некоторых Launchpad Answers моих сообщений, особенно №6 здесь и №6 здесь . И особая благодарность Цезию за то, что он указал, что 64-битный Исполняемые файлы dpkg и apt не будут работать в системе с 32-разрядным ядром.)

38
ответ дан 22 November 2019 в 23:46

Хороший вопрос. У меня была охота, и кроме той пользовательской истории, которую вы цитируете, я не могу найти никаких подробностей о том, как это сделать. Во всей документации указано, что это только для запуска 32-битных приложений на уже 64-битной ОС.

Однако, если вы готовы поэкспериментировать, вы можете попробовать следующее (получено из моей ссылки в [1])

 echo foreign-architecture amd64 | sudo tee /etc/dpkg/dpkg.cfg.d/multiarch
 sudo apt-get install linux-image:amd64

Я думаю, вам придется начать с ядра amd64, так как 32-битное ядро ​​не сможет запускать 64-битные двоичные файлы. Однако 64-битный должен запускать 32-битные двоичные файлы (если установлена ​​ia32-libs?).

Если вы установили и загрузили 64-битное ядро, вы можете перейти оттуда, чтобы установить apt: amd64, а затем следовать за пользователем -story, как указано ранее, ubuntu-minimal, ubuntu-desktop и т. д.

После установки apt: amd64, я думаю, вы можете удалить строку с внешней архитектурой, поскольку в этот момент вы по существу переключились.

Отказ от ответственности : У меня нет 32-битной системы для тестирования, так что это все предположения. Удачи!

[1] https://wiki.ubuntu.com/OneiricOcelot/TechnicalOverview/Beta1#Improved_handling_of_32-bit_compatibility_on_amd64_systems

1
ответ дан 22 November 2019 в 23:46

Перекрестная оценка (обновление до другой архитектуры) пока не поддерживается.

1
ответ дан 22 November 2019 в 23:46

Как указано выше,Я сделал:

echo foreign-architecture amd64 | sudo tee /etc/dpkg/dpkg.cfg.d/multiarch
sudo apt-get update
sudo apt-get install linux-image:amd64
sudo apt-get install gcc-multilib
sudo update-grub

Это сработало. Я могу запустить 32-разрядную среду пользователя с 64-разрядным ядром в Ubuntu 12.04.

26
ответ дан 22 November 2019 в 23:46

Возможно, поскольку я столкнулся с той же проблемой, это сработает, это то, что я планировал сделать:

Получить 64-битную версию ОС, установить в раздел, после завершения копирования документов и другого материала из 32-разрядной установки, когда все будет безопасно скопировано, вы можете отформатировать остальную часть диска и использовать ее.

2
ответ дан 22 November 2019 в 23:46

Хотя вопрос похож на Можно ли «обновить» 32-битную до 64-битной установки? (Если вы не читали это, я рекомендую вам попробовать Это хороший ответ.) Я также рекомендую прочитать следующие ссылки:

Для лучшей производительности я должен установить 32-разрядную или 64-разрядную версию?

Как я могу переключить 32-разрядную установку на 64-разрядную. -bit one?

В чем разница между 32-битной и 64-битной системами и что мне следует выбрать?

Возможно ли это: Да

Это просто: НЕТ!

Если ваша проблема в с памятью, то вы должны знать, что Ubuntu 32 Bit может читать более 4 ГБ ОЗУ (до 64 ГБ). Таким образом, использование последней 32-битной версии Ubuntu на компьютере с 32-битной или 64-битной архитектурой и добавление большего объема оперативной памяти не будет проблемой. Он просто прочитает дополнительную оперативную память и будет работать.

6
ответ дан 22 November 2019 в 23:46

Да, линия с иностранной архитектурой определенно жизненно важна для установки ЛЮБЫХ пакетов с кросс-архитектурой. Но после этого сделайте так, как упомянули несколько других пользователей:

sudo apt-get update
sudo apt-get install linux-image:amd64
sudo apt-get install linux-modules:amd64
sudo init 6 #reboot into new kernel
sudo apt-get install apt:amd64
sudo apt-get install ubuntu-desktop:amd64

Вот и все ...

2
ответ дан 22 November 2019 в 23:46

Эти инструкции заставляют вашу систему загружаться с 64-битным ядром, но не изменить большинство пользовательских программ.

После обновления моей системы с 64-битным процессором я также хотел установить 64-битное ядро ​​на 32-битный 14.04.2 Ubuntu (кодовое имя: Trusty). Для этого я ввел следующие команды как пользователь root :

dpkg --add-architecture amd64   
apt-get update
apt-get install linux-generic-lts-utopic:amd64

Примечания:

  1. Это может удалить ваше 32-битное ядро ​​как надежное - по умолчанию - поставляемое с обновленным ядром (ядро из utopic ), см. Примечания к выпуску 14.04 . В этом случае ваше текущее ядро ​​конфликтует с 64-битным ядром, которое будет установлено, и поэтому будет удалено. Если вам не нравится эта идея, вы можете вместо этого попробовать более старый пакет 64-битного ядра «linux-generic-lts-trusty: amd64».

  2. Команда "--add-architecure" необходима. Без него система пакетов не поддерживает пакеты с разных архитектур, см. Multiarch-HowTo

  3. . Чтобы узнать, что apt-get сделает с вашей системой, запустите его с параметрами -Vs , который включает «режим подробного моделирования». Это напечатает все пакеты, которые нужно установить и удалить.

  4. Будет ли ваша система загружаться с использованием нового ядра, зависит от конфигурации grub . От имени пользователя root запустите update-grub , чтобы произвести обновление grub и распечатать текущую конфигурацию загрузки. Первый образ в списке будет загружен по умолчанию.

  5. Чтобы выбрать другой образ ядра, я удалил строку GRUB_HIDDEN_TIMEOUT = 0 из / etc / default / grub и запустил как пользователь root update-grub . Теперь во время загрузки вы можете выбрать другое ядро ​​(у вас есть 10 секунд, чтобы нажать любую клавишу, иначе grub продолжит работу с ядром по умолчанию).

  6. Ответ с наибольшим количеством голосов относится к 2011 году и безнадежно устарел в мое мнение. Multiarch позволяет без особых усилий устанавливать пакеты библиотек с разных архитектур на одном компьютере.

5
ответ дан 22 November 2019 в 23:46

Эти ответы несколько устарели. Перекрестная оценка теперь задокументирована для Debian в вики-странице Debian , но это все еще не рекомендуется.

Установить ядро ​​из другой архитектуры теперь так же просто, как описано там, но новый 'apt' не распознает пакеты из предыдущей архитектуры, и поэтому все его интерфейсы могут сообщать о большом количестве неработающих пакетов. Это требует либо изменения всех зависимостей на другую архитектуру, либо возврата apt и dpkg к 32-битным.

Таким образом, лучшим подходом может быть сначала сохранить результаты dpkg --get-selections , удалить из них: i386 и загрузить пакет amd64 для каждой зависимости в кэш:

apt-get --download-only install perl:amd64 python3:amd64 python3-gi:amd64 xorg:amd64...

В лучшем случае разрешение зависимостей будет медленным и трудоемким.

5
ответ дан 22 November 2019 в 23:46

Мой рецепт для Ubuntu 16.04 Xenial, протестирован на недавно установленной 32-битной виртуальной машине Ubuntu со стандартной системой и SSH-сервером, но без графического интерфейса:

sudo -s
dpkg --get-selections > pkg1
dpkg --add-architecture amd64
apt update
apt install linux-image-generic:amd64 thermald 

(в противном случае он установил бы thermd: amd64 и завершился ошибкой чтобы перезапустить его под 32-битным ядром)

reboot

после перезагрузки с 64-битным ядром:

sudo -s
unset LANG
apt install apt:amd64 apt-utils:amd64

введите «Да, делайте, как я говорю!» когда его спросят, это будет безопасно

mkdir /tmp/upgrade 
cd /tmp/upgrade
pkgs() { dpkg -l | awk '$4=="'$1'"{print $2}' | awk -F: '{print $1}' | sort -u
}
apt download $(comm -23 <(pkgs i386) <(pkgs amd64))
while ls *amd64*deb
do dpkg -i *amd64*deb
   dpkg -l | awk '$1=="ii" && $4=="amd64" {print $2}' | awk -F: '{print $1}' |
   while read a
   do [ -f ${a}_*amd64*deb ] && rm ${a}_*amd64*deb
   done
done

в приведенном выше цикле мы удаляем файлы .deb, которые были успешно установлены и получили статус «ii» в списке dpkg.

нам нужно повторить запуски dpkg -i , так как это не удалось с самой первой попытки

reboot

сейчас, как с 64-битным ядром, так и с пользовательским пространством, оставшиеся пакеты i386 можно удалить:

dpkg --purge $(dpkg -l | awk '$4=="i386"{print $2}')

список, который вы сохранили в файле pkgs1 , который вы можете использовать для любых дальнейших нужд.

2
ответ дан 22 November 2019 в 23:46

Другие вопросы по тегам:

Похожие вопросы: