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

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

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

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

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

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

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

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

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

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

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

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

sudo dpkg -Ri ~/Downloads/debs

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

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

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

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

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

  3. Загрузитесь с Oneiric amd64 (т.е. 64-разрядного) live CD и выберите "Попробовать 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/dev  sudo chroot /mnt  mount -t proc none /proc  mount -t sysfs none /sys  mount -t devpts none /dev/pts  
  8. Бежать ping -c 4 launchpad.net чтобы проверить, полностью ли работает подключение к Интернету из chroot. Вы надеетесь на что-то подобное:

    PING launchpad.net (91.189.89.223) 56(84) bytes of data.64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=1 ttl=41 time=141 ms64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=2 ttl=41 time=143 ms64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=3 ttl=41 time=142 ms64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=4 ttl=41 time=140 ms--- launchpad.net ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 3003ms
  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  ping -c 4 launchpad.net  
  10. Выполните эти команды, чтобы сделать вашу chrooted среду полностью готовой к использованию:

    export HOME=/root  export LC_ALL=C  
  11. Если вы еще не установили .deb файлы для 64-разрядных версий dpkg и apt, так и поступай сейчас. Если вы установили их, но возникли ошибки конфигурации, запустите dpkg --configure -a чтобы исправить их. (Надеюсь, это поможет work...it возможно, было бы лучше подождать с попыткой их установки, пока вы не окажетесь в среде 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  exit  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.

  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 и/или 64-разрядная версия libc6, чтобы это сработало. Для некоторых из них вам может быть сообщено, что они вам понадобятся при попытке установить 64-разрядную версию dpkg и/или apt. Что касается других, то вы можете быть не проинформированы.

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

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

echo foreign-architecture amd64 | sudo tee /etc/dpkg/dpkg.cfg.d/multiarchsudo apt-get updatesudo apt-get install linux-image:amd64sudo apt-get install gcc-multilibsudo update-grub

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

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

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

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

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

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

Легко ли это: НЕТ!

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

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

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

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

Записи:

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

  2. Очень важна команда "--add-architecture". Без этого система пакетов не поддерживает пакеты из разных архитектур, см. 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 позволяет устанавливать пакеты библиотек из нескольких архитектур на одном компьютере без особых усилий.

Эти ответы несколько устарели. Перекрестная сортировка теперь задокументирована для 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...

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

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

sudo -sdpkg --get-selections > pkg1dpkg --add-architecture amd64apt updateapt install linux-image-generic:amd64 thermald 

(в противном случае он установит thermald: amd64 и не сможет перезапустить его под 32-разрядным ядром)

reboot

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

sudo -sunset LANGapt install apt:amd64 apt-utils:amd64

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

mkdir /tmp/upgrade cd /tmp/upgradepkgs() { dpkg -l | awk '$4=="'$1'"{print $2}' | awk -F: '{print $1}' | sort -u}apt download $(comm -23 <(pkgs i386) <(pkgs amd64))while ls *amd64*debdo 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   donedone

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

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

reboot

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

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

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

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

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

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

sudo apt-get updatesudo apt-get install linux-image:amd64sudo apt-get install linux-modules:amd64sudo init 6 #reboot into new kernelsudo apt-get install apt:amd64sudo apt-get install ubuntu-desktop:amd64

Этого должно быть достаточно...

Хороший вопрос. У меня была охота, и, кроме истории пользователя, которую вы цитируете, я не могу найти никаких подробностей о том, как это сделать. Вся документация указывает, что он предназначен только для запуска 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, затем следуйте инструкциям пользователя, как указано ранее, ubuntu-minimal, ubuntu-desktop и т.д.

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

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

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

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

Я понимаю, что этот вопрос уже был задан на 64 bit - Is it possible to "upgrade" from a 32bit to a 64bit installation? - Ask Ubuntu , но это было до того, как была реализована мультиархивация, поэтому ответ должен быть другим.