32 비트 (x86) 데비안 기반 시스템을 64 비트로 변환하는 방법


36

64 비트 프로세서에서 실행되는 32 비트 시스템이 있습니다. 다시 설치하지 않고 어떻게 64 비트로 변환합니까? 나는 새로운 Multiarch 프레임 워크 의 결과로 그것이 가능하다는 것을 어딘가에서 보았다 .


5
이 질문에 대한 답변에 관심이 있습니다. 64 비트 지원 시스템 (현재 6 세 이상이지만 여전히 진행 중)에 32 비트 시스템이 있습니다. 2007 년에이 컴퓨터를 처음 설치할 때 32 비트를 사용한 유일한 이유는 32 비트 응용 프로그램을 실행하려고했기 때문입니다. 새로운 멀티 아키 텍을 사용하면 올바르게 이해하면 64 비트 컴퓨터에 32 비트 앱을 쉽게 설치할 수 있습니다. 따라서 어지럽게 64 비트로 변환하는 것이 좋지만 얼마나 힘들지는 모르겠습니다. @bahamat의 VM 사용 제안은 좋습니다. 성공적인 전환을 관리하면 여기에 답변 해 드리겠습니다.
Faheem Mitha


AU와 비슷한 질문 : askubuntu.com/q/5018/178596
Wilf

답변:


8

TL; DR : 그것은 가능하지만 복잡합니다. 나는 바닥에 대안을 제시했다.

이제 가장 긴 길을 가지지 않았으므로 긴 설명 을 소금 알갱이로 가져 가십시오.

그것은 가능하며, 지난 2 박 동안 내가 한 일이 있습니다 . 다단계 지원없이 구식 방식설명하는 위키 항목이 있습니다 . 손상된 패키지를 수정하는 데 도움이됩니다.

기본 시스템을 마이그레이션하려면 다음을 수행하십시오 .

$ 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)에서 사용할 수 없으며 apt-get은 혼란 스러우며 많은 패키지가 두 버전 모두에 설치됩니다. 적시에 많은 수동 작업을 수행해야합니다.

더 어려운 점 : 일부 필수 패키지를 교체 할 수 있으므로 설치를 위해 항상 바이너리를 설치해야하지만 일부 패키지를 제거했다가 다시 설치해야합니다 (예 : tar에서이 문제가 발생했습니다). 다른 시스템에서 패키지를 가져 와서 패키지를 통해 추출한 ar p package.deb data.tar.gz | tar zx다음 scp추출 된 파일을 통해을 통해 scp -r ./* root@other_computer:/바이너리를 다시 사용할 수 있습니다. 헹구고 반복하면 scped 파일을 덮어 씁니다.

내가 대신 할 것

시스템을 전환 할 때마다 다음을 수행했습니다.

백업 /home, /etc(그리고 어쩌면 /var, /usr/local일부 다른 파일을 변경 한, /root, ..., YMMV).

설치된 패키지 목록을 dpkg --get-selections > packagelist가져 와서 결과 파일 packagelist도 복사하십시오 .

그런 다음 데비안을 완전히 다시 설치하고 모든 사용자를 다시 만들고 역할 등을 만드십시오.

로 모든 패키지를 다시 설치하십시오 dpkg --set-selections < packagelist; apt-get -f install.

백업 된 디렉토리, 파일을 다시 복사하면 대부분 완료됩니다.

이러한 접근 방식의 한 가지 단점 : 라이브러리를 포함한 모든 패키지는 수동으로 설치된 것으로 표시되므로 더 이상 종속 패키지가없는 경우 제거되지 않습니다.


1
/ : "나는 대신 할 것이 무엇"... 사람, 나는 영업 이익은 다시 설치하지 않고 물었다 확신했다
Braiam

@Braiam OP는 다시 설치하지 않고 그 작업을 원했을 것입니다. 나는 단지 내 개인적인 경험을보고했습니다. 대체 경로는 나에게 더 간단하며 시스템을 변환하는 동안 실수를 한 것일 수 있습니다.
Residuum

6
자동으로 설치된 패키지를 표시하기 위해 자동 설치 apt-mark showauto목록을 내보내고 apt-mark auto새 설치에서이를 표시하는 데 사용할 수 있습니다 .
Adrien Clerc 10

당신의 경험을 작성해 주셔서 감사합니다. "이 문제를 해결하려면 까다로운 부분을 건너 뛰십시오;)"내 목표가 소프트웨어를 개발할 수 x86_64있고 시스템 패키지가 64 비트 프로세서를 최적으로 사용하지 않는지 신경 쓰지 않는다면 어떨까요? ? 32 비트 OS도 실행 중입니다. 처음 설치했을 때 프로세서가 32 비트라고 생각했습니다. (
jberryman

7

다른 답변은 이론적으로는 가능하지만 매우 복잡하고 노력할 가치가 없다는 것을 보여줍니다. 그러나 $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 < package.list 
    sudo apt-get update
    sudo apt-get dist-upgrade
    sudo apt-mark auto $(cat auto.list)
    
  4. $ HOME을 복원하십시오. tgz 파일을 복사하여 $ HOME 디렉토리에서 추출하십시오.

    tar xvzf home_backup.tgz
    

Mint가 제공 하는 도구 를 살펴보면 이 작업을 쉽게 할 수 있습니다. 그들은 모두 우분투에도 설치 가능해야합니다.


4

이론 상으로는 가능하지만 위험한 것 같습니다. 현재 데비안 multiarch는 multiarch lib를 지원하지만 바이너리는 지원하지 않습니다. 그게 있습니다.

이 시스템은 주로 자체 아키텍처 dpkg-architecture(실제로는 펄 스크립트이지만 아치 정보를 추출하여 표시)를 이해 하며 아키텍처 를 설정할 수 있다고 주장합니다 .


경고 : 나는이 심지어도 그것을하지 않은 IT !!!


대략적인 과정은 다음과 같습니다.

  1. 모든 라이브러리의 다중 아키텍처를 설치하십시오 (가장 중요합니다 libgcc1)
  2. dpkg-architecture -aamd64아치를 이동하는 데 사용 합니다 (참고 : GCC에 대해 불평 할 수 있음)
  3. 필요한 모든 구성 요소를 다운로드하여 준비합니다 (다음 참조).
  4. amd64 변형 dpkg및 종속성 강제 설치
  5. apt-get커널과 커널을 포함한 필수 기본 시스템 패키지의 amd64 변형을 강제 설치 합니다 (많은 불만이있을 수 있습니다)
  6. 재부팅
  7. 아마도 나머지 시스템을 apt-get

이 단계들은 지난 12 년 동안 리눅스 배포판들 (거의 사용했던 것 포함) 중에서 거의 독점적으로 사용한 데비안의 디자인 debtakeover과 내가 취할 접근법에 대해 알고 있습니다. 따라서이 모든 책임은 귀하에게 있습니다 . 4 단계를 시도한 후 언제든지 시스템을 사용할 수 없게 될 수 있습니다 . 4 단계와 5 단계의 대체 단계 다음과 같습니다 debbootstrap.

가장 중요한 것은 관심있는 작업을 수행하기 전에 VM에서 시도해 보는 것이 좋습니다.

행운을 빕니다. 그리고 힘이 당신과 함께 있기를 바랍니다 .


3

질문에 대한 대답은 아니지만 x86에서 amd64로 모든 패키지를 업그레이드하는 것은 어려울 수 있지만 적어도 64 비트 응용 프로그램과 가상 시스템 및 컨테이너를 실행할 수있는 amd64 커널 패키지를 최소한 쉽게 설치할 수 있습니다 ( 필요한 것으로 충분할 수 있습니다).

로 amd64 linux-image 패키지를 설치하십시오 dpkg -i --force-architecture.


1
--force-architecture필요하지 않으며 amd64 커널은 i386에서 apt를 통해 설치할 수 있습니다.
jordanm

3

거기에는 꽤 많은 매뉴얼이 있지만, 실제로 어떤 것이 실제로 기대되는지는 거의 보여주지 않습니다. 32 비트에서 64 비트로 업그레이드를 완료 한 데비안 Wheezy 노트북에서 이것을 작성하고 있으며 실제로 작동합니다.

나는이 지시를 따랐으며 실제로 당신이 직면하게 될 것에 대해 정확했습니다.

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

권장 사항은 전체 프로세스를 통해 시스템 전원을 유지하는 것입니다. 모든 항목을 마이그레이션했으며 제거 된 모든 항목이 다시 설치되었는지 (특히 필수 패키지) 확실하지 않은 경우 재부팅하지 마십시오. 그렇지 않으면 시스템이 다시 실행되지 않습니다.


1
실제로 관련된 내용을 읽는 데 관심이 있지만 이것을 읽은 후에는 다시 설치하는 것이 좋습니다. 감사.
Faheem Mitha

해당 링크가 작동하지 않습니다. 리소스가 이동 되었습니까?
Toby Speight

네, 데이트 봤어요? 필자는 2013 년에 6 년 안에 웹에서 종종 사라지는 것을 썼습니다. 안타깝게도 웹에는 여전히 기본적인 기능이 없습니다. 링크를 클릭하기 전에 깨진 링크 표시.
nigratruo

1

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내부에서 수행 하십시오 while.


-1

나는 그 문제에 대해 거의 경험이 없지만 32에서 64로 변환하면 다중 아키텍처를 사용할 수 있어야한다고 말했을 때 정확하다고 생각합니다. 이 새로운 시스템이 얼마나 잘 지원되는지에 대해서는 신중해야합니다.

다음은 내가 읽은 문서 중 하나입니다. 아마 도움이 될 것입니다 : https://wiki.ubuntu.com/MultiarchSpec

세 번째 사용자 사례를 확인하십시오. 동일한 주제와 관련된 또 다른 링크는 다음과 같습니다. https://help.ubuntu.com/community/MultiArch

데비안과 우부 누투 사이에는 다소 차이가있을 수 있지만 이것은 핵심 기능입니다. 우분투와 데비안은 우분투가 떠나기 전에이 구조가 제대로 작동하도록하기 위해 긴밀히 협력 할 것이라고 생각합니다.

행운을 빕니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.