Как сменить архитектуру 32 на 64 linux

Обновлено: 04.07.2024

У меня установлена ​​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 в вашей установленной системе:

Если вместо этого вы не можете передавать или получать пакеты, то вам придется настроить подключение к Интернету в chroot. Для этого выполните следующие команды (чтобы выйти из chroot, скопируйте соответствующие файлы конфигурации из системы live CD в chroot и заново введите chroot):

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

Вернитесь к chroot и попробуйте снова:

Запустите эти команды, чтобы ваша среда chroot была полностью готова к использованию:

Установив 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 . Для других вас могут не проинформировать.

У меня установлена Linux Mint 17 32-битная. Могу ли я без переустановки системы поменять его на 64-битный?



Угадай с одного раза.



Поставь два раза 32-битную версию.

А 96-битную систему так можно получить?


разогнал так до 128 бит, теперь все летает, рекомендую.

фу, фигня, у меня 256 давно.


Нет. Нет-нет-нет. Нееет!



Ну чисто гипотетически может и можно, но практически нереально.

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

После установки 64 битного ядра и загрузки системы с ним можно попробовать подключить 64 битную архитектуру ветки репозитория и пробовать устанавливать пакеты 64 битной архитектуры.

Но, по сути, проще переустановить систему, если вам уж так нужна 64 битная архитектура и вы понимаете зачем.

kostik87 ★★★★★ ( 04.11.14 11:49:13 )
Последнее исправление: kostik87 04.11.14 11:51:27 (всего исправлений: 1)


Сохраняешь список пакетов, создаешь новый lvm-том, ставишь на него 64битную систему с указанным списком пакетов, переносишь туда /etc и /home, перегружаешься в новую систему, удаляешь старый диск и добавляешь его к новому lvm-тому.
Как-то так.

redgremlin ★★★★★ ( 04.11.14 12:01:07 )
Последнее исправление: redgremlin 04.11.14 12:01:28 (всего исправлений: 1)


С gentoo это вообще не проблема.

Могу ли я без переустановки системы поменять его на 64-битный?

Я тебе разрешаю это сделать.


будто было вчера

кажется, там больше пстов было, но может только кажется

wakuwaku ★★★★ ( 04.11.14 12:09:04 )
Последнее исправление: wakuwaku 04.11.14 12:09:44 (всего исправлений: 1)

Не, я слышал про 128 бит и легенды насчет того, что Windows будет с версией на 128. Тут стеб кагбэ. Так что не в теме ты =)

У меня 32-разрядная система, которая работает на 64-битном процессоре. Как преобразовать его в 64-битный, без повторной установки? Я где-то видел, что это выполнимо в результате новой структуры Multiarch .

TL; DR: Это выполнимо, но сложно. Я изложил альтернативу внизу.

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

Возможно, и вот что я сделал за последние две ночи: Существует вики-запись, описывающая путь старой школы без поддержки многократного использования. Это полезно для исправления сломанных пакетов.

Чтобы перенести базовую систему, сделайте это :

Использование dpkg --get-selections | grep :i386 вернет все ваши пакеты, которые вам все равно придется переносить.

Моя следующая идея заключалась в следующем:

Но это оказалось плохой идеей: некоторые пакеты недоступны в amd64 (например, libc6-i686), apt-get будет запутан, и в обеих версиях будет установлено много пакетов. Должно быть сделано много ручной работы в aptitude.

Что бы я сделал вместо этого

При каждом переключении систем я выполнял следующее:

Резервное копирование /home , /etc (и, возможно, /var , /usr/local , некоторые другие файлы, которые вы изменили, /root , . YMMV).

Получить список установленных пакетов с помощью dpkg --get-selections > packagelist и скопировать полученный файл packagelist .

Затем выполните чистую переустановку Debian, снова создайте всех пользователей, возможно роли и т. д.

Переустановите все пакеты с помощью dpkg --set-selections < packagelist; apt-get -f install .

Скопируйте резервные копии каталогов, файлов и в основном сделайте.

Один недостаток этого подхода: все ваши пакеты, включая библиотеки, будут помечены как установленные вручную, поэтому они не будут удалены, если пакет больше не будет зависеть от них.

Другие ответы здесь показывают, что, хотя это теоретически возможно, это очень сложно и, вероятно, не стоит усилий. Тем не менее, вы можете выполнить чистую установку и сделать процесс относительно безболезненным, если вы сохраните свой код $HOME .

Общий процесс будет

Сделайте резервную копию списка установленных пакетов и списка автоматически установленных пакетов.

Обратите внимание, что вы также можете удалить архитектуру из любых имен пакетов, которые вы установили, используя multiarch :

Если ваш /home - это отдельный раздел, просто убедитесь, что он не форматирует его во время процесса установки. Если он не находится на отдельном разделе, сделайте резервную копию, которую вы можете восстановить позже:

После установки новой системы установите отсутствующие пакеты

Восстановите свой $ HOME. Скопируйте файл tgz и извлеките его в каталог $ HOME:

Вы также можете посмотреть инструменты , которые Mint предоставляет для создания это проще. Все они должны быть установлены на Ubuntu.

Это теоретически возможно, но, вероятно, предательски. Debian multiarch в настоящее время поддерживает многоархивные библиотеки, но не двоичные файлы. Так что есть.

Система в основном понимает свою собственную архитектуру из dpkg-architecture (которая на самом деле является скриптом perl, но она извлекает информацию о свопе и отображает ее ), который также утверждает, что может установить архитектуру.

Грубым процессом будет:

  1. Установите многоархивный вариант всех ваших библиотек (самое главное libgcc1 )
  2. Используйте dpkg-architecture -aamd64 , чтобы сместить арку (обратите внимание, что она может жаловаться на GCC)
  3. Загрузите и скомпилируйте все необходимые компоненты (см. далее)
  4. Принудительно установить вариант amd64 dpkg и зависимости
  5. Принудительно установить amd64 варианты базовых базовых системных пакетов, включая apt-get и ядро ​​(обратите внимание, что он может жаловаться на LOT)
  6. Reboot
  7. Предположительно установите остальную часть системы с помощью apt-get

Эти шаги основаны на том, что я знаю о дизайне Debian, который использовал его почти исключительно среди дистрибутивов Linux за последние 12 лет (включая использование debtakeover ) и подход, который я бы взял. Поэтому рассмотрите этот на свой страх и риск . Ваша система может стать непригодной в любое время после попытки шага 4. Альтернативный для шагов 4 и amp; 5 может быть debbootstrap .

Самое главное, я настоятельно рекомендую попробовать это на виртуальной машине, прежде чем делать это над чем угодно.

Удачи, и Пусть Сила с вами .

Не ответ на вопрос, но может быть сложно обновить все пакеты с x86 до amd64, но вы можете по крайней мере легко установить пакет ядра amd64, который, по крайней мере, позволит вам запускать 64-разрядные приложения и виртуальные машины и контейнеров (которых может быть достаточно для того, что вам нужно).

Просто установите пакет linux-изображений amd64 с помощью dpkg -i --force-architecture .

Существует немало руководств, но вряд ли можно показать, чего действительно ожидать. Я пишу это на ноутбуке Debian Wheezy, который я только что закончил с 32 бит до 64, и он действительно работает.

Я следил за этими инструкциями, и они были действительно точны в том, с чем вы столкнетесь:

Рекомендация состоит в том, чтобы поддерживать работу системы в течение всего процесса, не перезагружайтесь, если вы не уверены, что вы все мигрировали и что все, что было удалено, было снова установлено (особенно важные пакеты), или вы не получите систему снова запускается.

Следуя идее с использованием awk , я закончил использование:

Мне пришлось запускать его несколько раз. dpkg --get-selections - это просто алфавитный список, поэтому пакеты сверху, которые требуют пакетов внизу, будут переданы. Если вы хотите посмотреть, сколько из них установлено, выполните dpkg --get-selections | grep amd64 | wc -l внутри while .

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

Хотя это может быть немного отличается от Debian и Ubunutu, это основная функция. Я бы предположил, что Ubuntu и Debian будут тесно работать, чтобы заставить эту структуру функционировать на земле, прежде чем Ubuntu отдержит и сделает что-то по своему вкусу.

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

Если Вы не понимаете, о чем идет речь в данной статье, НЕ ПРЕДПРИНИМАЙТЕ ОПИСАННЫХ ЗДЕСЬ ДЕЙСТВИЙ! И еще раз: Вам потребуются глубокие знания об устройстве системы, решении проблем и многом другом. Вы все еще хотите продолжить? Тогда читайте далее. Данное трюкачество окажется значительно проще, если Вы заранее запасетесь срезом репозитория amd64. Очень хорошей идеей будет скоприровать его на жесткий диск и прописать в /etc/apt/sources.list

Шаг 0: Список пакетов

Сохраните список всех установленных на вашей машине пакетов, например, такой командой:

Будет очень хорошей идеей заранее скачать 64-битные версии всех этих пакетов и поместить их в удобное для Вас место (пусть это будет

/pkgs). Помните: пакетная система Вам сейчас не помошник!

Шаг 1: Ядро

Одним из ключевых компонентов системы является ядро. Поэтому в первую очередь необходимо установить именно новое ядро. Вы можете собрать его сами - или взять готовое из репозитория. Второй вариант проще, поэтому я рекомендую использовать его.

Внимание: следующая команда необратимо сломает работу высокоуровневых пакетных инструментов, и восстановлена она будет лишь в самом конце. В Ваших руках останется только dpkg. На 32битной версии 16.04.2 после установки 64битного ядра пакетная система не страдает! Так как пакетная система сломана, все операции по конфигурированию ядра прийдется выполнять вручную. Запустите команду

, где вместо версия подставьте версию только что установленного ядра - для нашего примера это будет 2.6.32-22-generic.

Теперь нужно получить возможность загружаться с выбранным нами ядром. Можете сделать это вручную, а можете использовать скрипт Перезагрузите систему, используя только что установленное ядро. Если Вы все сделали правильно, система должна загрузиться как ни в чем не бывало. Вы можете возразить - как же так, разве может 32-битная система работать под управлением 64-битного ядра? Я отвечу - может, и прекрасно работает. У такой конфигурации даже есть специальное название - химера

Шаг 2: Установка статически собранного Shell

Обратите внимание: команды, встроенные в busybox, будут иметь приоритет над утилитами, имеющимися в системе. Поэтому, например, dpkg -i *.deb вызовет встроенную утилиту. Если Вам необходимо вызвать системный dpkg, указывайте это явно: /usr/bin/dpkg -i *.deb

Шаг 3: Загрузка необходимых пакетов

Для того, чтобы 32-битные программы продолжали нормально работать после того, как мы заменим основные системные библиотеки на 64-битные, необходимо установить пакеты совместимости. Названия большинства пакетов начинаются с lib32. Вот неполный их список:

Скачайте также пакеты, содержащие все необходимые утилиты и 64-битные версии библиотек:

А также все их зависимости.

Шаг 4: Перезагрузка

Перезагрузите систему, задав в качестве init busybox. Для этого обычно достаточно указать ядру параметр init=/bin/busybox в файле /boot/grub/grub.cfg или непосредственно в командной строке GRUB2. Вы оказались в 64-битной системе, поздравляю Но до окончания необходимо проделать еще много работы.

Шаг 5: Установка библиотек совместимости

Установите пакет libc6-i686:

Установите все остальные пакеты:

Установите пакет libc6-amd64. После этого уже не будет пути к отступлению:

Шаг 6: Установка системных утилит

Установите оставшиеся пакеты, загруженные на шаге 3, все тем же

Шаг 7: Обновляем список пакетов APT

, смотрите на выводимые ошибки и исправляйте те из них, которые говорят «библиотека не найдена», «Wrong ELFCLASS» (неправильная разрядность библиотеки) и сообщают о недостаче чего-либо еще (например, python и его модулей, необходимых для работы apt-get).

Шаг 8: Поднимаем систему

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

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

Шаг 9: Перезагрузка

Перезагрузитесь в Вашу новую (или лучше сказать, старую новую?) 64-битную систему. Если у Вас есть доступ в Интернет - можете обновиться командами

Читайте также: