У меня установлена 32-битная версия Ubuntu на 64-битном оборудовании. Теперь, когда реализована функция multi-arch , я бы хотел перейти на 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 на Launchpad - разверните последнюю версию в разделе «The Oneiric Ocelot», который помечен как выпуск, безопасность и / или обновления (но вы, вероятно, не хотите, чтобы версия отмечалась только предлагаемые и / или обратные порты, если таковые имеются). Затем загрузите.deb
файлы с пометкойamd64
. В частности, вам понадобятся следующие файлы: этот дляdpkg
(и другие, перечисленные тоже, если у вас установлены эти пакеты), и это, и это, и это, и этои это дляapt
.Прежде чем что-либо делать с этими файлами, вы должны обязательно сделать резервную копию всех важных документов в установленной вами системе Ubuntu и любых других важных файлов (например, музыки, электронных книг, видео), потому что весьма вероятно, что попытка этого метода будет иметь неприятные последствия и оставьте вашу систему Ubuntu полностью непригодной для использования.
Вы можете установить все эти пакеты, поместив их в папку, которая больше ничего не содержит (предположим, что папка вызывается
debs
и находится внутри вашегоDownloads
каталога), а затем выполните следующую команду:Конечно, после того, как вы их установили, они фактически не будут работать, потому что их исполняемые файлы являются 64-битными, а ваша 32-битная система Ubuntu работает с 32-битным ядром (которое будет запускать только 32-битные исполняемые файлы). На самом деле, они могут даже не завершить установку, поскольку у них могут быть сценарии после установки, которые вызывают их неуправляемые 64-разрядные исполняемые файлы.
Существуют различные способы установки 64-разрядного ядра на 32-разрядную систему, но все они чрезвычайно сложны, поэтому вместо этого я рекомендую загружаться с 64-разрядного Live CD Oneiric (который сам работает на 64-разрядной версии). ядро), загрузитесь в установленную систему Ubuntu и используйте недавно установленную 64-разрядную версию
apt
иdpkg
установите 64-разрядное ядро.Вот конкретные инструкции для этого ... но, пожалуйста, не принимайте это, чтобы означать, что я говорю, что это будет работать. Я не пытался это сделать. (Я подключился к установленным системам Ubuntu с живых компакт-дисков и выполнил управление пакетами и другие операции, но я не пытался выполнять операции меж архитектурой, предложенные здесь.)
В установленной вами системе Ubuntu откройте окно терминала ( Ctrl+ Alt+ T) и запустите
mount | grep ' on / '
(вставив его в терминал и нажав клавишу ввода). Вы должны увидеть что-то вроде/dev/sda2 on / type ext4 (rw,errors=remount-ro,commit=0)
. Интересующая вас часть - это имя устройства ранееon
(в данном примере это/dev/sda2
). Помните это или запишите это.Шаг 1 дал вам имя устройства
/
раздела. Если у вас есть отдельный/boot
раздел, вам также необходимо знать имя устройства для этого. Так что в таком случае бегиmount | grep ' on /boot '
. Вы увидите что-то подобное/dev/sda1 on /boot type ext2 (rw)
. Запомните или запишите это.Загрузитесь с живого компакт-диска Oneiric amd64 (т.е. 64-разрядного) и выберите «Try Ubuntu», а не «Install Ubuntu».
Зайдите в веб-браузер и убедитесь, что подключение к Интернету полностью функционально. Если это не так, настройте его.
Откройте окно терминала и запустите
sudo mount /dev/sda2 /mnt
(замените/dev/sda2
на имя устройства, полученное на шаге 1, если оно отличается).Если ваша установленная система имеет отдельный
/boot
раздел, запуститеsudo mount /dev/sda1 /mnt/boot
(замените/dev/sda1
на имя устройства, которое вы получили в шаге 2, если оно отличается).Теперь, запустите эти команды для chroot в вашей установленной системе:
Запустите,
ping -c 4 launchpad.net
чтобы увидеть, работает ли интернет-соединение полностью из chroot. Вы надеетесь на что-то вроде этого:Если вместо этого вы не можете передавать или получать пакеты, то вам придется настроить подключение к Интернету в chroot. Для этого выполните следующие команды (чтобы выйти из chroot, скопируйте соответствующие файлы конфигурации из системы live CD в chroot и заново введите chroot):
Хотя обычно вы должны остановить этот процесс при возникновении ошибки, не беспокойтесь, если первая и / или вторая из этих четырех команд потерпят неудачу, при условии, что конкретный способ, которым она не работает, - это сказать вам, что
/mnt/etc/resolv.conf
(или/mnt/etc/hosts
) не существует ,Вернитесь к chroot и попробуйте снова:
Запустите эти команды, чтобы ваша среда chroot была полностью готова к использованию:
Если вы не установили
.deb
файлы для 64-битных версийdpkg
иapt
, сделайте это сейчас. Если вы установили их, но были ошибки конфигурации, запустите их,dpkg --configure -a
чтобы исправить. (Надеюсь, это сработает ... может быть лучше подождать, чтобы попытаться установить их, пока вы не окажетесь в среде live CD, в случае, если установка 64-разряднойdpkg
версии при загрузке в установленную систему оставляетdpkg
в непригодном для использования состоянии.)Установив 64-разрядные версии
dpkg
иapt
установив, что они автоматически установят 64-разрядные пакеты, вы теперь можете удалить все 32-разрядные ядра и установить 64-разрядное ядро. Чтобы удалить 32-битные ядра, запуститеdpkg -l | grep linux-
. Это список установленных пакетов, которые начинаются сlinux-
. Вы более конкретно заинтересованы в пакеты , которые начинаются , какlinux-generic
,linux-image
,linux-server
и / илиlinux-headers
. Удалите эти файлы,apt-get purge ...
где...
вместо них будет указан разделенный пробелами список удаляемых пакетов.Теперь переустановите пакеты, которые вы удалили. ( На самом деле, для пакетов , которые содержат номер версии в имени пакета, как, например
linux-image-3.0.0-13-generic
, вам нужно только установить последние версированы имена пакетов.) Сделайте это работает ,apt-get install ...
где...
заменяется разделенных пробелами список пакетов вы устанавливаете ,Обновите конфигурацию загрузчика, размонтируйте некоторые устройства и оставьте chroot:
Если ты побежал
sudo cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.old
и он не подвел, то теперь бегиsudo cp /mnt/etc/resolv.conf.old /mnt/etc/resolv.conf
.Если ты побежал
sudo cp /mnt/etc/hosts /mnt/etc/hosts.old
и он не подвел, то теперь бегиsudo cp /mnt/etc/hosts.old /mnt/etc/hosts
.Если ваша установленная система имеет отдельный
/boot
раздел, размонтируйте, что:sudo umount /mnt/boot
Размонтируйте
/
раздел установленной системы :sudo umount /mnt
Выйдите из окна терминала (запустите
exit
), затем перезагрузите (или выключите) систему live CD и загрузитесь в установленную систему.Посмотрите, работоспособна ли система и работает ли она на 64-битном ядре (
uname -m
следует сказать, что это архитектураx86_64
).Для этого могут потребоваться дополнительные пакеты, такие как
ia32_libs
и / или 64-разрядная версияlibc6
. Для некоторых из них вам может быть сообщено, что они вам нужны при попытке установить 64-разрядную версиюdpkg
и / илиapt
. Для других вас могут не проинформировать.(Вышеприведенные инструкции для chroot и работы в среде chrooted в значительной степени основаны на этой связанной, но другой процедуре, а также на некоторых моих постах Ответов на Launchpad , особенно на № 6 здесь и № 6 здесь . И особая благодарность Cesium за указание что 64-битные
dpkg
иapt
исполняемые файлы не будут работать в системе с 32-битным ядром.)источник
apt
иdpkg
все еще 32-битные и (предположительно) откажутся устанавливать 64-битный пакет ядра. (Сборка ядра из исходного кода и использование кросс-компиляции работали бы, но это очень сложно, и я не хочу рекомендовать его. Я уверен, что есть лучший, более простой способ. Если вы знаете это, пожалуйста, не стесняйтесь отредактировать мой или ваш пост или комментарий об этом.)Как указано выше, я сделал:
Это сработало. Я могу запустить свое 32-битное пользовательское пространство с 64-битным ядром в Ubuntu 12.04.
источник
sudo dpkg --add-architecture amd64
вместо этого. Он будет кричать на тебя, если ты сделаешь это по-другому. Мне нужно было сделать это, чтобы я мог получить доступ к 64-битной установке с (ранее) 32-битной, и она работала точно так, как ожидалось, без заминок.linux-image-generic:amd64
в Ubuntu 16.04. Это работало нормально даже без последних двух команд.Хотя вопрос похож на Возможно ли «обновить» 32-битную 64-битную установку? (Если вы не читали его до того, как я призываю вас попробовать его. Ответ при условии, что он хороший.) Я также рекомендую прочитать следующие ссылки:
Для лучшей производительности я должен установить 32-битную или 64-битную?
Как я могу переключить 32-битную установку на 64-битную?
Каковы различия между 32-разрядным и 64-разрядным, и что я должен выбрать?
Возможно ли это: да
Это легко: НЕТ!
Если ваша проблема связана с памятью, вы должны знать, что Ubuntu 32 Bit может считывать более 4 ГБ ОЗУ (до 64 ГБ). Таким образом, использование последней 32-битной версии Ubuntu с компьютером с 32-битной или 64-битной архитектурой и добавление большего объема оперативной памяти не будет проблемой. Он будет просто читать лишнюю оперативную память и работать.
источник
Эти ответы несколько устарели. Кросс-градация теперь задокументирована для Debian в вики Debian , но по-прежнему не рекомендуется.
Установка ядра из другой архитектуры теперь так же проста, как описано там, но новый «apt» не распознает пакеты из предыдущей архитектуры, и поэтому все его внешние интерфейсы могут сообщать о множестве поврежденных пакетов. Для этого необходимо либо изменить все зависимости на другую архитектуру, либо вернуть apt и dpkg в 32-битный режим.
Поэтому наилучшим подходом может быть сначала сохранить результаты
dpkg --get-selections
, убрать из него i386 и загрузить пакет amd64 для каждой из зависимостей в кеш:В лучшем случае это может быть медленным и трудоемким разрешением зависимостей.
источник
Эти инструкции заставляют вашу систему загружаться с 64-битным ядром, но не изменяют большинство пользовательских программ.
После обновления моей системы с 64-разрядным процессором, я также хотел установить 64-разрядное ядро на мою 32-разрядную версию Ubuntu 14.04.2 (кодовое имя: Trusty). Для этого я ввел следующие команды от имени пользователя root :
Примечания:
Это может удалить ваше 32-битное ядро как надежное - по умолчанию - поставляется с обновленным ядром (ядро из utopic), см. 14.04 Замечания к выпуску . В этом случае ваше текущее ядро конфликтует с 64-битным ядром, которое будет установлено, и, следовательно, будет удалено. Если вам не нравится эта идея, вы можете попробовать использовать более старый 64-битный пакет ядра "linux-generic-lts-trusty: amd64".
Команда «--add-architecure» очень важна. Без этого система пакетов не поддерживает пакеты из разных архитектур, см. Multiarch-HowTo
Чтобы увидеть, что
apt-get
будет с вашей системой, запустите ее с параметрами,-Vs
которые включают «режим подробного моделирования». Это напечатает все пакеты, которые будут установлены и удалены.Загрузка системы с использованием нового ядра зависит от
grub
конфигурации. Как суперпользователь , бегите ,update-grub
чтобы сделать потайное обновление и распечатать текущую конфигурацию загрузки. Первое изображение в списке будет загружено по умолчанию.Чтобы выбрать другое ядро, я удалил строку
GRUB_HIDDEN_TIMEOUT=0
с/etc/default/grub
и побежал как корневой пользовательupdate-grub
. Во время загрузки вы можете выбрать другое ядро (у вас есть 10 секунд, чтобы нажать любую клавишу, иначе grub продолжит работу с ядром по умолчанию).Ответ, набравший наибольшее количество голосов, относится к 2011 году и, на мой взгляд, безнадежно устарел. Multiarch позволяет устанавливать библиотечные пакеты из нескольких архитектур на одном компьютере без лишних сложностей.
источник
apt-get install linux-generic:amd64
что не должно быть очень важным для эксперимента)! Если я пройду через опцию «rescue», система запустится, но X не используетnouveau
видеодрайвер и все такое. Если я загружаюсь нормально, запуск в какой-то момент прерывается, и система перезагружается. (Но в самый первый раз я смог успешно загрузиться.) Я не уверен, что проблема с видео драйвером во время «нормальной» загрузки или что-то еще.Возможно, поскольку я сталкиваюсь с той же проблемой, это будет работать, это то, что я планировал сделать:
Получите 64-разрядную версию ОС, установите в раздел, когда завершите копирование документов и прочего из 32-разрядной установки, когда все будет безопасно скопировано, вы можете отформатировать оставшуюся часть диска и использовать его.
источник
Да, линейка сторонней архитектуры очень важна для установки ЛЮБОГО кросс-арочного пакета. Но после этого сделайте так, как упомянули несколько других пользователей:
Это должно вот-вот сделать ...
источник
Мой рецепт для Ubuntu 16.04 Xenial, протестированный на недавно установленной 32-битной виртуальной машине Ubuntu со стандартной системой и сервером SSH, но без графического интерфейса:
(иначе он установит thermald: amd64 и не сможет перезапустить его под 32-битным ядром)
после перезагрузки с 64-битным ядром:
типа "Да, делай, как я говорю!" когда спросят, это будет безопасно
в приведенном выше цикле мы удаляем файлы .deb, которые были успешно установлены и получили статус 'ii' в списке dpkg.
нам нужно повторить
dpkg -i
прогоны, так как это не удается с первой попыткитеперь, как с 64-битным ядром, так и с пользовательским пространством, остальные пакеты i386 могут быть удалены:
список, который вы сохранили в
pkgs1
файле, который вы можете использовать для любых ваших дальнейших нужд.источник
Хороший вопрос. У меня была охота, и кроме пользовательской истории, которую вы цитируете, я не могу найти подробностей о том, как это сделать. Во всей документации указано, что она предназначена только для запуска 32-разрядных приложений в уже 64-разрядной ОС.
Однако, если вы хотите экспериментировать, вы можете попробовать следующее (взято из моей ссылки на [1])
Я думаю, вам придется начинать с ядра 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
источник
Crossgrading (обновление до другой архитектуры) пока не поддерживается.
источник