Как преобразовать 32-разрядную (x86) находящуюся в Debian систему в 64-разрядный

Хорошо, конечно, это не будет, потому что у Вас больше не будет библиотеки C.

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

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

37
24.11.2015, 14:53
7 ответов

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

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


ПРЕДУПРЕЖДЕНИЕ: Я НЕ СДЕЛАЛ ЭТОГО NOR, ДАЖЕ ДЕЛАЛ ПОПЫТКУ ЕГО!!!


Грубый процесс был бы:

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

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

Самое главное я высоко предлагаю пробовать это на VM прежде, чем сделать его на чем-либо, о чем Вы заботитесь.

Удача, и Да пребудет с вами Сила.

4
27.01.2020, 19:36

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

Просто установите amd64 пакет изображения Linux с dpkg -i --force-architecture.

3
27.01.2020, 19:36
  • 1
    --force-architecture не нужно, и amd64 ядро может быть установлено через Кв. на i386. –  jordanm 26.08.2012, 23:59

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

Вот один из документов, что я считал, что обсудил вопрос, возможно, это поможет Вам: https://wiki.ubuntu.com/MultiarchSpec

Заметьте третьи Пользовательские Истории. Вот другая ссылка вокруг той же темы: https://help.ubuntu.com/community/MultiArch

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

Удачи!

-1
27.01.2020, 19:36

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

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

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

Для миграции основной системы сделайте это:

$ dpkg --print-architecture
i386
# dpkg --add-architecture amd64
$ dpkg --print-foreign-architectures
amd64
# apt-get update
# apt-get download gcc-4.6-base:amd64 libgcc1:amd64 libc6:amd64 \
          libselinux1:amd64 zlib1g:amd64 libbz2-1.0:amd64 dpkg:amd64
# dpkg -i gcc-4.6-base*.deb libgcc*.deb libc*.deb libselinux*.deb \
          libbz2*.deb zlib*.deb dpkg*.deb
$ dpkg --print-architecture
amd64
$ dpkg --print-foreign-architectures
i386

Некоторые Ваши пакеты затем amd64, но большинство останется i386. apt-get upgrade будет заботиться о некоторых пакетах, apt-get -f install восстановит некоторые ошибки, но все еще большинство пакетов останется i386. Если Вы хотите справиться с этим, то пропустите хитрую часть ;)

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

Моя следующая идея состояла в том, чтобы сделать:

# apt-get install `dpkg --get-selections \
  | grep i386 \
  | awk {'gsub(/:i386/, ":amd64"); print $1'}`

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

Больше трудности: Некоторые существенные пакеты могут быть заменены, так, чтобы Вам всегда устанавливали двоичные файлы для установки, но некоторые пакеты должны будут быть удалены и установлены снова, например, у Меня была эта проблема с tar. Я wgot пакеты в другой системе, извлеченной пакеты через ar p package.deb data.tar.gz | tar zx и затем scpредактор извлеченные файлы через scp -r ./* root@other_computer:/, таким образом, двоичные файлы доступны снова. Промывка и повторение, и scpфайлы редактора будут перезаписаны.

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

Я сделал следующее, каждый раз, когда я переключил системы:

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

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

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

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

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

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

9
27.01.2020, 19:36
  • 1
    , "Что я сделал бы вместо этого"... человека, я был уверен, что OP спросила без, переустанавливают:/ –  Braiam 03.09.2013, 21:28
  • 2
    @Braiam OP, скорее всего, хотел сделать это без переустанавливания. Я просто сообщал о своем личном опыте, делающем это. Альтернативный маршрут более прост мне, и возможно я сделал некоторые ошибки при преобразовании системы. –  Residuum 23.11.2013, 14:51
  • 3
    Для маркировки автоматически установленных пакетов Вы, возможно, использовали apt-mark showauto экспортировать автоустановленный список и apt-mark auto отметить их в новой установке. А-ч –  Adrien Clerc 21.12.2013, 12:26
  • 4
    Спасибо за то, что описали Ваш опыт. "Если Вы хотите справиться с этим, затем пропустите хитрую часть ;)", Что, если моя цель состоит в том, чтобы только смочь разработать программное обеспечение для x86_64, и не заботьтесь, не используют ли мои системные пакеты 64-разрядный процессор оптимально? Я также выполняю 32-разрядную ОС. Я предполагаю, что думал, что мой процессор был 32-разрядным, когда я сначала сделал :( –  jberryman 05.06.2015, 00:29

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

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

http://blog.zugschlus.de/archives/972-How-to-amd64-an-i386-Debian-installation-with-multiarch.html

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

3
27.01.2020, 19:36
  • 1
    Интересный считать, что на самом деле включено, но считавший это, я думаю, что я более обеспечен с переустановкой.Спасибо. –  Faheem Mitha 26.06.2013, 12:07

Следуется Идея, используя awk , я оказался использовать:

dpkg --get-selections \               # get the list
 | grep -v deinstall \                # throw away deselected packages
 | grep ':i386' \                     # get the i386 arch packages
 | sed 's/install//g' \               # drop 'install' to get list
 | sed 's/:i386/:amd64/g' \           # replace i386 with amd64
 | while read package; do \           # iterate over the result
      apt-get -yf install $package; \ # install each one and fix dependencies
   done

мне пришлось управлять его несколькими временами. DPKG - Get-Selections - это просто алфавитный список, поэтому пакеты в верхней части, которые требуют пакетов внизу, будут переданы. Если вы хотите посмотреть, сколько устанавливаются, делайте DPKG - Get-Selections | grep amd64 |. WC -L внутри пока цикла.

1
27.01.2020, 19:36

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

Общий процесс будет выглядеть так:

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

     dpkg --get-selections '*'> package.list 
    apt-mark showauto> auto.list 
     

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

     dpkg --get-selections '*' | sed -e 's /: \ (i386 \ | amd64 \) //'> package.list 
     
  2. Если ваш / home является отдельным разделом, просто убедитесь, что отформатируйте его в процессе установки. Если он не находится в отдельном разделе, сделайте резервную копию, которую вы сможете восстановить позже:

     tar cvzf home_backup.tgz $ HOME / 
     
  3. После установки новой системы установите недостающие пакеты

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

     tar xvzf home_backup.tgz 
     

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

7
27.01.2020, 19:36

Теги

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